Commit Graph

158 Commits

Author SHA1 Message Date
Dustin Byrne
1dfd70757a feat(HAI-053): add responsive mobile horizontal scroll for board
- Add responsive horizontal scroll CSS styles for mobile viewports
- Ensure board columns scroll horizontally on smaller screens
- Add Board component tests verifying responsive scroll behavior
2026-03-25 23:36:55 -04:00
Dustin Byrne
133fc59297 feat(HAI-051): add column flash animation on count increase
- Create useFlashOnIncrease hook to detect count increases
- Wire useFlashOnIncrease hook into Column component
- Add CSS flash animation keyframes and styles
- Add unit tests for useFlashOnIncrease hook
- Add Column component flash behavior tests
2026-03-25 23:31:16 -04:00
Dustin Byrne
b0d3492530 feat(HAI-049): add recycleWorktrees checkbox to Settings modal
- Add recycleWorktrees toggle to the Worktrees section in SettingsModal
- Wire checkbox state to settings store
- Add unit tests for recycleWorktrees setting behavior
2026-03-25 23:22:54 -04:00
Dustin Byrne
d557e90a5b fix(HAI-048): fix checkbox input styling in Settings modal
- Exclude checkbox inputs from full-width text input styles using :not([type="checkbox"])
- Add dedicated checkbox styling with proper size, accent color, and cursor
- Add test verifying groupOverlappingFiles input renders as a checkbox
2026-03-25 23:20:56 -04:00
Dustin Byrne
30f6e902cb feat(HAI-045): normalize queued status for file-scope-deferred tasks
- Set status to queued in scheduler for file-scope-deferred tasks
- Normalize queued badge display in TaskCard component
- Add TaskCard unit tests for queued status rendering
- Add scheduler tests for file-scope-deferred task queuing
- Move logo.svg to correct public directory
2026-03-25 23:17:00 -04:00
Dustin Byrne
397716f370 fix(HAI-039): eliminate duplicate description in prompts and modal heading
- Fix prompt heading to use only task ID when title is absent, preventing description duplication
- Strip leading markdown heading from TaskDetailModal since the modal has its own header
- Add store tests covering prompt generation for tasks with and without titles
- Update TaskDetailModal tests to verify heading stripping and single description rendering
2026-03-25 22:58:09 -04:00
Dustin Byrne
5ccbefaa1d feat(HAI-032): add image paste support to inline create card
- Add paste handler to extract and preview images from clipboard
- Track pending images with object URL previews and cleanup on unmount
- Upload pasted images as attachments on task creation
- Add styled image preview strip with remove button
- Add CSS for preview thumbnails with hover-to-delete overlay
2026-03-25 22:43:24 -04:00
Dustin Byrne
67c3caf239 feat(HAI-031): add sidebar navigation to settings modal
- Add sidebar navigation structure with section links to SettingsModal
- Implement sidebar and form layout styles in styles.css
- Add SettingsModal sidebar navigation tests for section switching
- Update SettingsModal component with multi-section support
2026-03-25 22:43:12 -04:00
Dustin Byrne
edd42c269d feat(HAI-027): add configurable test and build commands to settings
- Add testCommand and buildCommand optional fields to Settings type
- Inject configured commands into triage agent context for task specs
- Add test/build command input fields to the settings modal UI
- Remove legacy executor-level command handling in favor of triage injection
- Add triage tests covering command injection behavior
2026-03-25 22:19:47 -04:00
Dustin Byrne
0a43742aec feat(HAI-027): complete Step 3 — add test/build command fields to settings modal 2026-03-25 22:18:26 -04:00
Dustin Byrne
a1380e8637 feat(HAI-026): complete Step 3 — add worktreeInitCommand UI field to SettingsModal 2026-03-25 22:12:35 -04:00
Dustin Byrne
bbe2ed2166 feat(HAI-023): add file attachments support for tasks
- Add core types and store methods for attachment CRUD operations
- Add dashboard API routes for upload, download, and delete of attachments
- Add attachment UI in TaskDetailModal with upload and management controls
- Add CLI 'attach' command for attaching files to tasks
- Update documentation with attachment feature usage details
2026-03-25 22:06:58 -04:00
Dustin Byrne
2750d4b262 feat(HAI-023): complete Step 3 — dashboard UI view and upload screenshots 2026-03-25 22:03:42 -04:00
Dustin Byrne
239ec0a537 test(HAI-025): complete Step 2 — add column-based agent-active test cases 2026-03-25 22:02:45 -04:00
Dustin Byrne
f6c5c62f93 feat(HAI-025): complete Step 1 — add column-based agent-active glow for in-progress cards 2026-03-25 22:02:27 -04:00
Dustin Byrne
27c8744c46 feat(HAI-024): complete Step 1 — remove PROMPT.md header from TaskDetailModal 2026-03-25 22:01:29 -04:00
Dustin Byrne
e7d964f9d2 feat(HAI-013): add markdown rendering styles and TaskDetailModal tests
- Add markdown-body base styles in dashboard styles.css
- Remove backdrop and enable scroll on task detail prompt rendering
- Add TaskDetailModal unit tests with vitest jsdom environment
- Update vitest config with globals and jsdom support
- Clean up unused test files and legacy concurrency module
2026-03-25 21:45:05 -04:00
Dustin Byrne
dbea81c67e feat(HAI-015): add agent-active glow effect to TaskCard
- Add agent-active CSS with animated purple border glow using in-progress theme color
- Apply agent-active class conditionally in TaskCard component
- Add TaskCard agent-active unit tests
- Move TaskCard tests to __tests__ directory
2026-03-25 21:44:26 -04:00
Dustin Byrne
6f1cc2cb48 fix(HAI-018): complete Step 2 — add client-side retry for fetchTaskDetail
- Added withRetry wrapper in api.ts (1 retry, 200ms delay)
- fetchTaskDetail now retries transient 500s transparently
- TaskCard shows 'Failed to load task details' instead of raw error
- Added api.test.ts with success, retry-success, and exhaustion tests
2026-03-25 21:32:11 -04:00
Dustin Byrne
43cc7e7f05 test(HAI-015): complete Step 3 — add TaskCard agent-active tests 2026-03-25 21:11:07 -04:00
Dustin Byrne
19b12a4770 test(HAI-014): complete Step 2 — add TaskCard tests and vitest config 2026-03-25 21:10:51 -04:00
Dustin Byrne
4777ae5dcb feat(HAI-014): complete Step 1 — reorder JSX and update layout 2026-03-25 21:10:10 -04:00
Dustin Byrne
cf79ae52d4 test(HAI-013): complete Step 2 — add TaskDetailModal tests and vitest config 2026-03-25 21:10:05 -04:00
Dustin Byrne
ebbc6d479a feat(HAI-015): complete Step 2 — apply agent-active class conditionally 2026-03-25 21:09:26 -04:00
Dustin Byrne
428362a6fd feat(HAI-013): complete Step 1 — drop detail-prompt backdrop and scroll for markdown rendering 2026-03-25 21:09:00 -04:00
Dustin Byrne
06a6046950 feat(HAI-012): add activity timeline to TaskDetailModal
- Add formatTimestamp helper for relative time display
- Add Activity section rendering task log entries in reverse chronological order
- Display log action, timestamp, and optional outcome per entry
- Add timeline-style CSS with scrollable list, dot indicators, and styled outcome blocks
2026-03-25 21:04:03 -04:00
Dustin Byrne
c8aacc3622 feat(HAI-012): complete Steps 1-2 — add activity timeline to TaskDetailModal with styling 2026-03-25 21:03:12 -04:00
Dustin Byrne
1d1fc8dbe1 feat(HAI-011): complete Step 1+2 — add progress indicator to TaskCard with styles 2026-03-25 20:59:22 -04:00
Dustin Byrne
58bc6a0677 fix(HAI-008): wrap text in inline create card textarea
- Replace input with auto-resizing textarea in InlineCreateCard
- Add dynamic height adjustment on content change
- Style textarea with no resize handle, hidden overflow, and proper line-height
2026-03-25 20:54:24 -04:00
Dustin Byrne
224cbe1c0c fix(HAI-008): wrap text in inline create card textarea 2026-03-25 20:52:52 -04:00
Dustin Byrne
64b28a012e feat(HAI-007): complete Step 1 — set specifying status during triage 2026-03-25 20:52:01 -04:00
Dustin Byrne
f6dc070bd8 feat(HAI-005): add auto-merge functionality for in-review tasks
- Add autoMerge boolean to Settings model with default false
- Add auto-merge toggle UI to the In Review column header
- Implement server-side auto-merge behavior in dashboard command
- Fix pre-existing build errors in types, executor, and dashboard server
- Update README with auto-merge documentation
2026-03-25 20:48:34 -04:00
Dustin Byrne
8b94136b37 feat(HAI-005): complete Step 4 — fix typecheck and verify all tests pass 2026-03-25 20:46:59 -04:00
Dustin Byrne
12eb31bc0d feat(HAI-006): complete Step 4 — add groupOverlappingFiles toggle to Settings UI 2026-03-25 20:44:38 -04:00
Dustin Byrne
8fcc425433 feat(HAI-005): complete Step 2 — add auto-merge toggle UI to In Review column 2026-03-25 20:43:41 -04:00
Dustin Byrne
1f31cc22fa feat(HAI-004): complete Step 1 — close modal immediately on merge 2026-03-25 20:35:46 -04:00
Dustin Byrne
e946a34c59 feat(HAI-003): render task descriptions as markdown in dashboard
- Add react-markdown and remark-gfm dependencies
- Replace pre element with ReactMarkdown in TaskDetailModal
- Add markdown prose styles optimized for dark theme
- Regenerate pnpm-lock.yaml to resolve merge conflicts
2026-03-25 20:34:49 -04:00
Dustin Byrne
0e18987a70 feat(HAI-001): add API rate limiting and replace emojis with Lucide icons
- Add rate limiting middleware to dashboard API endpoints
- Install lucide-react and replace emoji usage with Lucide icons across dashboard components
- Add rate limiter unit tests
- Document API rate limiting in README
- Refactor engine executor/triage and remove unused reviewer module
2026-03-25 20:33:37 -04:00
Dustin Byrne
1d3e10df27 feat(HAI-003): complete Step 2 — replace pre with ReactMarkdown in TaskDetailModal 2026-03-25 20:33:23 -04:00
Dustin Byrne
6fbf3519b5 feat(HAI-002): add maxWorktrees setting to limit total git worktrees
- Add maxWorktrees field to Settings interface with default of 4
- Enforce worktree limit in Scheduler.schedule() alongside maxConcurrent
- Wire setting through dashboard startup from persisted settings
- Include maxWorktrees in /api/config response
- Add Max Worktrees input to Settings Modal UI
- Backward compatible: existing configs without maxWorktrees use default
2026-03-25 20:32:07 -04:00
Dustin Byrne
d8ac565f85 feat(HAI-001): complete Step 2 — replace emojis with Lucide icons 2026-03-25 20:31:58 -04:00
Dustin Byrne
daafab1b17 feat(HAI-004): add settings trigger to Header and wire into App 2026-03-25 20:03:42 -04:00
Dustin Byrne
46aae5728b feat(HAI-004): create SettingsModal component 2026-03-25 20:03:16 -04:00
Dustin Byrne
7066770c0f fix(HAI-002): handle undefined title and dependencies to prevent crashes
- Guard against undefined dependencies with fallback to empty array in worktreeGrouping
- Handle missing task title in InlineCreateCard by falling back to description or id
- Update package-lock.json
2026-03-25 19:59:05 -04:00
Dustin Byrne
3807b0ae0f fix(HAI-002): handle undefined title and dependencies to prevent crashes 2026-03-25 19:58:19 -04:00
Dustin Byrne
003f16f285 feat(HAI-001): move new task creation to triage column with button in column header 2026-03-25 19:57:02 -04:00
Dustin Byrne
28ee12d3c8 feat(HAI-003): replace CreateTaskModal with inline card creation in Todo column
- Create InlineCreateCard component with auto-focused input, dependency
  dropdown, Enter to submit, Escape to cancel
- Update Column to render InlineCreateCard at top of Todo column body
- Update Board to pass through inline-create props to Todo column
- Update App to use isCreating state instead of createModalOpen
- Add CSS styles for inline create card, dependency dropdown
- Delete CreateTaskModal component
2026-03-25 19:37:01 -04:00
Dustin Byrne
6bb5f27b44 feat(HAI-002): render status badge on dashboard task cards 2026-03-25 19:24:29 -04:00
Dustin Byrne
62dc06b2f1 feat(HAI-001): handle missing title in TaskDetailModal 2026-03-25 19:15:19 -04:00
Dustin Byrne
609662dd75 feat(HAI-001): handle empty title in TaskCard display 2026-03-25 19:04:45 -04:00