Replaces CLI-based progress reporting (hai task update/log/create)
with custom tools registered on the worker's pi session. No PATH
dependency, no shell overhead, works in any worktree.
- task_update(step, status) — update step lifecycle
- task_log(message) — log actions and decisions
- task_create(description) — create tasks for out-of-scope work
- review_step unchanged (already a tool)
- System prompt and execution prompt updated to reference tools
- Add serialized merge queue to prevent concurrent git merge operations
- Enqueue in-review tasks on startup so pre-existing tasks are not missed
- Add periodic retry interval to re-attempt failed merges automatically
- Re-check autoMerge setting and task column before each merge attempt
- Clean up merge retry interval on SIGINT for graceful shutdown
- 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
- 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
- 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
- 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
- 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
- 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
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
- 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
- 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
- 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
- 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