Commit Graph

2380 Commits

Author SHA1 Message Date
Dustin Byrne
c31893ce18 feat(HAI-011): add progress indicator to TaskCard
- Add step completion progress bar to TaskCard component
- Color progress fill dynamically based on column status
- Add card-progress, card-progress-bar, card-progress-fill, and card-progress-label styles
- Show completed/total step count label beside progress bar
2026-03-25 21:00:36 -04:00
Dustin Byrne
a7b225d096 fix(HAI-010): complete Step 1 — serialize auto-merge, startup sweep, periodic retry
- Add serialized merge queue preventing concurrent git merge operations
- Startup sweep enqueues existing in-review tasks when autoMerge is enabled
- Periodic retry interval catches failed merges on each poll cycle
- All three paths (event-driven, startup, periodic) use the same queue
- Reset task status on merge failure so tasks don't appear stuck
- Re-check autoMerge setting before each dequeue
2026-03-25 21:00:01 -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
32d1210f01 fix(HAI-009): move queued tasks to Up Next group and add tests
- Fix worktreeGrouping to place queued tasks in Up Next group only
- Add unit tests for worktreeGrouping utility (120+ lines)
- Clean up InlineCreateCard component styling
- Remove unused code from triage engine
- Fix TaskCard status display
2026-03-25 20:59:05 -04:00
Dustin Byrne
424cc9acbd test(HAI-009): complete Step 2 — add unit tests for worktreeGrouping 2026-03-25 20:57:20 -04:00
Dustin Byrne
a205674c1a fix(HAI-009): complete Step 1 — move queued tasks to Up Next group only 2026-03-25 20:55:06 -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
0f00cb9aac feat(HAI-007): set specifying status during triage
- Set task status to 'specifying' when triage specification begins
- Clear status back to null before moving task to todo on success
- Clear status on specification error with safe catch
- Add 'specifying' to active statuses in dashboard TaskCard
2026-03-25 20:54:11 -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
2713176190 fix: simplify triage testing requirements — rules only, no prereq check 2026-03-25 20:47:39 -04:00
Dustin Byrne
ac6302ac23 feat(HAI-005): complete Step 5 — update README with auto-merge documentation 2026-03-25 20:47:17 -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
92154b70b6 feat(HAI-006): add groupOverlappingFiles setting for file-scope-aware task scheduling
- Add groupOverlappingFiles toggle to Settings types and store with default enabled
- Parse File Scope sections from PROMPT.md to extract per-task file lists
- Implement overlap detection in scheduler to group tasks sharing files
- Add groupOverlappingFiles toggle to the Settings UI modal
- Update README and remove obsolete triage overlap logic
2026-03-25 20:46:07 -04:00
Dustin Byrne
c19fab34d1 feat(HAI-006): complete Step 5 & 6 — verification and documentation 2026-03-25 20:45:40 -04:00
Dustin Byrne
dbb577ff0d feat(HAI-005): complete Step 3 — implement server-side auto-merge behavior 2026-03-25 20:45:25 -04:00
Dustin Byrne
7c39f325e2 fix: triage agent must require real tests, create test infra task if missing
Triage prompt now explicitly:
- Checks for test framework before writing spec
- Creates a prerequisite task if no test framework exists
- Adds it as a dependency on the current task
- Forbids typecheck-only or manual-only testing steps
2026-03-25 20:45:07 -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
c3a785a3fb feat(HAI-006): complete Step 3 — implement overlap detection in scheduler 2026-03-25 20:43:19 -04:00
Dustin Byrne
dd3ebe9148 feat(HAI-005): complete Step 1 — add autoMerge to Settings model 2026-03-25 20:41:43 -04:00
Dustin Byrne
f63e5cb92e feat(HAI-006): complete Step 2 — parse File Scope from PROMPT.md 2026-03-25 20:41:35 -04:00
Dustin Byrne
7f3cf51c19 fix(HAI-005): fix pre-existing build errors in types, executor, and dashboard server 2026-03-25 20:41:06 -04:00
Dustin Byrne
ba95694189 feat(HAI-006): complete Step 1 — add groupOverlappingFiles to Settings 2026-03-25 20:40:21 -04:00
Dustin Byrne
c44af7962a feat(HAI-004): close modal immediately on merge action
- Close TaskDetailModal before awaiting merge result
- Show interim 'Merging...' toast for immediate feedback
- Convert handleMerge from async/await to fire-and-forget promise chain
- Display success/error toast after merge completes in background
2026-03-25 20:37:11 -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
9988470ac3 feat(HAI-003): complete Step 3 — add markdown prose styles for dark theme 2026-03-25 20:33:41 -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
5e796383e0 feat(HAI-003): complete Step 1 — add react-markdown and remark-gfm dependencies 2026-03-25 20:33:05 -04:00
Dustin Byrne
f9c9df1311 feat(HAI-002): add maxWorktrees setting to limit total git worktrees
- Add maxWorktrees field to Settings type with default of 4
- Enforce worktree limit in scheduler counting in-progress and in-review tasks
- Add maxWorktrees input to SettingsModal with min/max validation
- Expose maxWorktrees in config API route
- Read maxWorktrees from stored settings in dashboard command
2026-03-25 20:32:37 -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
db2b84c231 feat(HAI-001): complete Step 1 — install lucide-react 2026-03-25 20:30:51 -04:00
Dustin Byrne
93651835b6 fix: executor prompt gives agent concrete CLI examples and review_step instructions
- System prompt explains review_step tool with review level table
- Execution prompt injects real task ID in all CLI examples
- Execution prompt parses review level from PROMPT.md and tells agent exactly when to call review_step
- Removed {TASK_ID} placeholders that agent saw as literal text
2026-03-25 20:24:32 -04:00
Dustin Byrne
040409041a feat: cross-model review via review_step tool
- reviewer.ts: spawns separate pi agent with read-only tools
  and reviewer system prompt (taskplane's review format/verdicts)
- Executor registers review_step as a custom tool on the worker session
- Worker calls review_step(step, type, step_name) at step boundaries
  based on review level (0=none, 1=plan, 2=plan+code, 3=full)
- Reviewer returns APPROVE/REVISE/RETHINK with structured feedback
- REVISE feedback returned inline to worker for immediate action
- Review calls logged to task via hai task log
2026-03-25 20:22:20 -04:00
Dustin Byrne
66a62b9bcb refactor: drop discover command, agents create new tasks instead 2026-03-25 20:17:38 -04:00
Dustin Byrne
6fc7fc86e8 docs(HAI-001): document API rate limiting in README 2026-03-25 20:16:03 -04:00
Dustin Byrne
669dc3d1da test(HAI-001): add rate limiter unit tests 2026-03-25 20:15:51 -04:00
Dustin Byrne
a1397d9eb7 feat(HAI-001): add rate limiting middleware to API endpoints 2026-03-25 20:15:11 -04:00
Dustin Byrne
8a2a5ac14b feat: taskplane-style specs + CLI step tracking
- Triage agent generates full PROMPT.md (mission, steps, file scope,
  review level, docs requirements, commit conventions, guardrails)
- Executor agent reports progress via hai task CLI
- hai task update <id> <step> <status> — step lifecycle
- hai task log <id> <message> — execution log
- hai task discover <id> <what> <disp> — record discoveries
- hai task show <id> — display steps, progress, discoveries, log
- Steps auto-parsed from PROMPT.md headings into task.json
- Task types extended with steps, reviews, discoveries, log
2026-03-25 20:14:04 -04:00
Dustin Byrne
e142e049d3 feat(HAI-004): add settings modal with GET/PUT API endpoints
- Extend config schema and store helpers to support settings persistence
- Add GET/PUT /settings REST API endpoints in dashboard routes
- Create SettingsModal component with frontend API wiring
- Add settings trigger button to Header and integrate into App
- Add CSS styles for settings modal and header actions
2026-03-25 20:06:02 -04:00
Dustin Byrne
22ef0aaf5b feat(HAI-004): add CSS styles for settings modal and header actions 2026-03-25 20:04:10 -04:00
Dustin Byrne
fdae0c325e feat(HAI-003): clear transient task fields when moving to done
- Clear status and worktree in moveTask when target column is done
- Clear transient status in completeTask before moving task to done
- Ensures done tasks don't retain stale status or worktree references
2026-03-25 20:04:05 -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
6ab434ccaf feat(HAI-004): add frontend API functions for settings 2026-03-25 20:03:01 -04:00
Dustin Byrne
e112a6bad1 feat(HAI-004): add GET/PUT /settings REST API endpoints 2026-03-25 20:02:50 -04:00