- Reorder JSX and update layout in TaskCard component
- Update dashboard styles for new TaskCard layout
- Add TaskCard unit tests with vitest
- Add vitest config and test dependencies to dashboard package
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
- 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
- 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
- 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
- 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