Commit Graph

1851 Commits

Author SHA1 Message Date
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
Dustin Byrne
41f2b0f3b5 feat(HAI-004): extend config schema and store helpers for settings 2026-03-25 20:02:41 -04:00
Dustin Byrne
51099fc52a feat(HAI-003): clear status and worktree in moveTask when moving to done 2026-03-25 20:01:24 -04:00
Dustin Byrne
158c0ceb59 feat(HAI-003): clear task status in completeTask before moving to done 2026-03-25 20:01: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
b445e93dc1 feat(HAI-002): mark task complete 2026-03-25 19:58:48 -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
fecae65a1d feat(HAI-001): move new task creation to triage column with button in column header
- Remove create task button from global Header component
- Add create task button to Column header for triage column
- Update InlineCreateCard to support triage column context
- Thread onCreateTask callback through Board and Column components
- Simplify App.tsx wiring for task creation flow
2026-03-25 19:58:08 -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
8e7ba81d34 feat(HAI-003): replace CreateTaskModal with inline card creation in Todo column
- Remove CreateTaskModal component and its modal-based task creation flow
- Add InlineCreateCard component for inline task creation directly in the Todo column
- Update Column component to support inline card creation
- Simplify App.tsx by removing modal state management
- Add supporting styles for inline card creation UI
2026-03-25 19:52: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
020cca3399 feat(HAI-002): add task status tracking and display
- Add status field to Task type and store with persistence support
- Set status at engine lifecycle points (triage, scheduler, executor, merger)
- Render status badge on dashboard TaskCard component
2026-03-25 19:30:48 -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
ada968512e feat(HAI-002): set status at engine processor lifecycle points 2026-03-25 19:24:11 -04:00
Dustin Byrne
dc36ad1d57 feat(HAI-002): add status field to Task type and store 2026-03-25 19:23:07 -04:00
Dustin Byrne
8e84832505 feat(HAI-001): make task title optional and description required
- Make Task.title optional and description required in types and TaskCreateInput
- Update CLI task create to prompt for description instead of title, with updated help text
- Update REST API and dashboard CreateTaskModal to require description instead of title
- Handle optional/missing title across TaskCard, TaskDetailModal, and engine components
- Add description validation in TaskStore and update generateSpecifiedPrompt
2026-03-25 19:16:20 -04:00
Dustin Byrne
f57b87f7d3 feat(HAI-001): handle optional title in engine components 2026-03-25 19:15:35 -04:00
Dustin Byrne
62dc06b2f1 feat(HAI-001): handle missing title in TaskDetailModal 2026-03-25 19:15:19 -04:00
Dustin Byrne
07248db6b2 feat(HAI-001): update help text for task create command 2026-03-25 19:15:11 -04:00
Dustin Byrne
495a2eaa81 feat(HAI-001): update CLI task list to handle missing title 2026-03-25 19:15:05 -04:00
Dustin Byrne
eeaa5b457c feat(HAI-001): add description validation and make title optional in store 2026-03-25 19:14:59 -04:00
Dustin Byrne
67af835ce6 feat(HAI-001): make Task.title optional in type definition 2026-03-25 19:14:53 -04:00
Dustin Byrne
87f9cee792 revert: drop vite middleware, add watch build instead 2026-03-25 19:08:04 -04:00
Dustin Byrne
4a7a9041c1 feat: vite dev server with HMR for dashboard 2026-03-25 19:06:14 -04:00
Dustin Byrne
609662dd75 feat(HAI-001): handle empty title in TaskCard display 2026-03-25 19:04:45 -04:00
Dustin Byrne
5a9fc24900 feat(HAI-001): update CreateTaskModal to require description and make title optional 2026-03-25 19:04:38 -04:00
Dustin Byrne
20b7b8e562 feat(HAI-001): update REST API to require description instead of title 2026-03-25 19:04:19 -04:00
Dustin Byrne
2451e72bf9 feat(HAI-001): update CLI task create to prompt for description instead of title 2026-03-25 19:04:12 -04:00
Dustin Byrne
1aa317565f feat(HAI-001): handle optional title in TaskStore createTask and generateSpecifiedPrompt 2026-03-25 19:04:01 -04:00
Dustin Byrne
1ab3d6c558 feat(HAI-001): make title optional and description required in TaskCreateInput 2026-03-25 19:03:46 -04:00