Commit graph

49 commits

Author SHA1 Message Date
Brad Groux
8facd82b04 US-709: Add merge conflict resolution UI
- ConflictService: detect, list, resolve conflicts
- Parse conflict markers, get ours/theirs/base versions
- API endpoints: conflicts status, file details, resolve, abort, continue
- ConflictResolver slide-out panel with:
  - File list sidebar
  - Side-by-side comparison (Ours vs Theirs)
  - Manual edit tab
  - Accept ours/theirs/manual resolution
  - Abort and continue actions
- Conflict warning banner in GitSection
2026-01-26 06:22:08 -06:00
Brad Groux
edc23f700b US-706: Add auto-archive suggestions for completed projects
- TaskService: getArchiveSuggestions(), archiveProject() methods
- Server-side detection of projects where all tasks are done
- API endpoints: GET /archive/suggestions, POST /archive/project/:project
- ArchiveSuggestionBanner component with confirmation dialog
- Activity logging for project_archived events
- Replaced client-side detection with server-side approach
2026-01-26 06:18:03 -06:00
Brad Groux
a9ee3d16da US-708: Add preview mode with embedded dev server
- DevServerConfig type for repo settings (command, port, readyPattern)
- PreviewService to manage dev server processes per task
- Auto-detect port and ready state from server output
- API endpoints for preview start/stop/status/output
- PreviewPanel slide-out with iframe, terminal output toggle
- Preview button in TaskDetailPanel for code tasks
2026-01-26 06:13:40 -06:00
Brad Groux
4eb6fa01c4 US-707: Add GitHub PR creation from task detail UI
- GitHubService using gh CLI for PR operations
- Added prUrl/prNumber to TaskGit type
- API endpoints for status check and PR creation
- Create PR dialog with title, description, draft option
- View PR button when PR exists
- Auto-opens new PR in browser
2026-01-26 06:09:20 -06:00
Brad Groux
e46a9f06e9 feat(US-706): Auto-archive suggestions for completed projects 2026-01-26 06:01:23 -06:00
Brad Groux
5dd3d1b3b1 feat(US-705): Multiple task attempts
- Added New Attempt button for completed/failed tasks
- Added attempt history list with status indicators
- Click attempt to view its log
- Supports selecting different agent for retries
- Previous attempts preserved and viewable
2026-01-26 05:53:35 -06:00
Brad Groux
dfff667490 feat(US-704): Task dependencies with blocking
- Added blockedBy field to Task type
- Added blocking status API endpoint
- Added server-side validation for blocked tasks
- Created DependenciesSection component
- Added blocked indicator badge on task cards
- Tooltip shows blocker names on hover
- Cannot move blocked task to In Progress
2026-01-26 05:52:12 -06:00
Brad Groux
d952e1aa5c feat(US-703): Subtasks with progress tracking
- Added Subtask type to shared types
- Added subtask routes: add, update, delete
- Added subtask hooks: useAddSubtask, useUpdateSubtask, useDeleteSubtask
- Created SubtasksSection component with:
  - Progress bar (X/Y complete)
  - Checkbox completion
  - Inline add/delete
  - Auto-complete parent option
- Added Checkbox and Switch UI components
2026-01-26 05:49:28 -06:00
Brad Groux
cf725c5eff feat(US-702): Restore from archive
- Added restoreTask() to TaskService
- Added POST /api/tasks/:id/restore endpoint
- Added useRestoreTask() hook
- Added restore button (hover) to ArchiveSidebar items
- Tasks restore to Done column with all data preserved
2026-01-26 05:46:27 -06:00
Brad Groux
db802ed56d feat(US-701): Archive sidebar with search/filter
- Added listArchivedTasks() to TaskService
- Added GET /api/tasks/archived endpoint
- Added useArchivedTasks() hook
- Created ArchiveSidebar component with:
  - Search by title/description/tags
  - Filter by task type
  - Filter by project
  - Click to view task details
- Added Archive button to Header toolbar
2026-01-26 05:42:53 -06:00
Brad Groux
6810aa5cdf docs: add Sprint 7 plan with backlog items
10 stories covering archive management, subtasks, dependencies,
and advanced features (PR creation, preview, time tracking)
2026-01-26 05:24:42 -06:00
Brad Groux
8e48ee3a49 fix: resolve infinite render loop in Sprint 6 features
- Use refs instead of state for keyboard callback setters
- Simplify FilterBar to remove problematic useEffect sync
- Make useBulkActions safe when used outside provider (DragOverlay)
- Remove unnecessary useEffect wrappers for ref-based callbacks
2026-01-26 05:13:28 -06:00
Brad Groux
3df4414b11 feat(US-605): activity log
- Add ActivityService for logging task events
- Activity sidebar with filter, refresh, clear
- Log task create, update, status change, archive, delete
- Relative timestamps in activity feed
- Add ScrollArea UI component

Sprint 6 complete!
2026-01-26 05:03:26 -06:00
Brad Groux
7bc5e9a0ff wip(US-605): activity log backend
- Add ActivityService for logging task events
- Add /api/activity endpoint
- Start integrating activity logging into task routes
2026-01-26 04:59:45 -06:00
Brad Groux
61991fc59a feat(US-604): bulk actions
- Add BulkActionsProvider context for selection state
- BulkActionsBar with select all, move to status, archive, delete
- Checkbox selection on task cards in selection mode
- Add useArchiveTask hook
2026-01-26 04:55:45 -06:00
Brad Groux
ac91ccb83d feat(US-603): task templates
- Add TemplateService with markdown file storage
- API endpoints for template CRUD
- Template selector in create task dialog
- Template management in settings
- Templates pre-fill type, priority, project, description
2026-01-26 04:53:51 -06:00
Brad Groux
bf11dec7d9 feat(US-602): filter and search
- Add FilterBar component with search, project, and type filters
- Debounced search (300ms) on title + description
- Project dropdown auto-populated from tasks
- Type dropdown with icons
- Active filter count badge
- URL sync for filter persistence
- Add Badge UI component
2026-01-26 04:50:43 -06:00
Brad Groux
b46f62ccc0 feat(US-601): keyboard shortcuts
- Add KeyboardProvider context for global shortcut handling
- c: create task, j/k: navigate, Enter: open, Esc: close
- 1-4: move task to status columns
- ?: toggle keyboard shortcuts help dialog
- Visual selection indicator on task cards
2026-01-26 04:49:19 -06:00
Brad Groux
e34edf90b4 docs: add type fix commit to sprint-5 log 2026-01-26 04:39:25 -06:00
Brad Groux
59fcafbc19 fix: add automation field to UpdateTaskInput type
Fixes TypeScript build error where automation field was used in
automation.ts but not defined in UpdateTaskInput interface.
2026-01-26 04:39:04 -06:00
Brad Groux
425eeddff6 docs: update sprint-5 tracking - complete 2026-01-26 04:35:12 -06:00
Brad Groux
809bf4d94e feat(US-505): Teams notification integration
- New /api/notifications endpoints (create, list, pending, mark-sent, check, clear)
- Notification types: agent_complete, agent_failed, needs_review, task_done, high_priority, error, milestone, info
- CLI commands: notify, notify:check, notify:pending, notify:list, notify:clear
- MCP tools: create_notification, get_pending_notifications, check_notifications
- Notifications stored in .veritas-kanban/notifications.json
- Teams-formatted output with icons and task links
2026-01-26 04:34:41 -06:00
Brad Groux
4d855f3cce docs: update sprint-5 tracking - US-504 complete 2026-01-26 04:29:29 -06:00
Brad Groux
7d7e92e2ce feat(US-504): Memory system sync
- New /api/summary endpoint (status counts, projects, high-priority)
- New /api/summary/recent endpoint (recently completed tasks)
- New /api/summary/memory endpoint (markdown formatted for memory files)
- CLI: vk summary - show kanban overview
- CLI: vk memory - get memory-formatted summary
- CLI: vk memory -o <file> - append to memory file
- MCP: get_summary, get_memory_summary tools
2026-01-26 04:29:03 -06:00
Brad Groux
f53c907026 docs: update sprint-5 tracking - US-503 complete 2026-01-26 04:26:52 -06:00
Brad Groux
6112517ee7 feat(US-503): Veritas sub-agent integration
- Added 'veritas' agent type for automation tasks
- New automation field on tasks (sessionKey, spawnedAt, completedAt, result)
- New API endpoints:
  - POST /api/automation/:id/start - start automation task
  - POST /api/automation/:id/complete - complete automation task
  - GET /api/automation/pending - list pending automation tasks
  - GET /api/automation/running - list running automation tasks
- CLI commands: automation:pending, automation:start, automation:complete, automation:running
- MCP tools: list_pending_automation, list_running_automation, start_automation, complete_automation
2026-01-26 04:26:28 -06:00
Brad Groux
51f9610c79 docs: update sprint-5 tracking - US-502 complete 2026-01-26 04:22:10 -06:00
Brad Groux
751a3bcd2c feat(US-502): MCP server for external clients
- Tools: list_tasks, get_task, create_task, update_task, start_agent, stop_agent, archive_task, delete_task
- Resources: kanban://tasks, kanban://tasks/active, kanban://task/{id}
- Stdio transport for Claude Desktop integration
- Updated README with CLI and MCP documentation
2026-01-26 04:21:47 -06:00
Brad Groux
c578f0a357 docs: add sprint-5 tracking 2026-01-26 04:18:10 -06:00
Brad Groux
bec40a05de feat(US-501): CLI for task management
- vk list: list tasks with filters (status, type, project)
- vk show: display task details
- vk create: create new tasks
- vk update: modify task fields
- vk start: start agent on task
- vk stop: stop running agent
- vk archive: archive completed task
- vk delete: delete task
- JSON output option for all commands
- Partial ID matching support
2026-01-26 04:17:52 -06:00
Brad Groux
08eda69369 docs: update sprint-4 tracking - complete 2026-01-26 04:13:22 -06:00
Brad Groux
b4e4472df4 fix(US-403/404): review state sync bugs
- task-service: add missing review field to parseTaskFile return
- TaskDetailPanel: useDebouncedSave now tracks changed fields only
  (prevents overwriting server state with stale local data)
2026-01-26 04:13:04 -06:00
Brad Groux
ae94df4cdc feat(US-404): merge and close integration
- Merge & Close button in ReviewPanel when approved
- Confirmation dialog with branch details
- Merge worker that merges to base, deletes worktree, marks done
- Loading state during merge operation
- Panel auto-closes on successful merge
2026-01-26 03:36:13 -06:00
Brad Groux
44ff0d7fe9 feat(US-403): approval workflow with review decisions
- ReviewState type with decision, timestamp, summary
- ReviewPanel component with approve/changes/reject buttons
- Summary input for changes-requested and rejected
- Current review status display with clear option
- Review tab in task detail panel
- Comment count display in review panel
2026-01-26 03:34:45 -06:00
Brad Groux
a210a2d287 feat(US-402): line-level review comments
- Add review comments to task schema
- Inline comment input on diff lines
- Comment display with amber highlighting
- Comment counts in file tree and headers
- Remove comment with X button
- Auto-save comments with debounced update
2026-01-26 03:33:05 -06:00
Brad Groux
32b2a7b070 chore: ignore worktrees directory 2026-01-26 03:30:29 -06:00
Brad Groux
6fbbce09ce feat(US-401): diff viewer component
- DiffService for git diff operations
- Diff API routes (summary, file, full)
- DiffViewer component with file tree
- Unified diff display with line numbers
- Syntax highlighting by file extension
- Added/removed line counts
- Tabs UI in task detail panel (Details, Git, Agent, Changes)
2026-01-26 03:30:24 -06:00
Brad Groux
88bf96a77f fix: add git and attempt fields to zod validation schema
The updateTaskSchema was missing git and attempt fields,
causing them to be stripped during validation.
2026-01-26 03:21:58 -06:00
Brad Groux
66c2e4feba docs: update sprint-3 tracking - complete 2026-01-26 03:12:43 -06:00
Brad Groux
6b7a2f56ca feat(US-301-307): agent orchestration
US-301: Agent configuration
- Settings UI for enabling/disabling agents
- Default agent selection
- Shows command and args for each agent

US-302: Start agent on task
- AgentService for process management
- POST /api/agents/:taskId/start
- Spawns agent in worktree directory
- Creates attempt record in task

US-303: Real-time agent output streaming
- WebSocket subscription for agent output
- useAgentStream hook with reconnection
- Terminal-style output panel with colors
- Auto-scroll with manual override

US-304: Agent conversation log persistence
- Logs saved to .veritas-kanban/logs/
- Markdown format with task metadata
- Full stdin/stdout/stderr capture

US-305: Send follow-up message to agent
- stdin input to running process
- Message input field in UI
- Displays with 'You:' prefix

US-306: Stop agent
- POST /api/agents/:taskId/stop
- SIGTERM then SIGKILL after timeout
- Confirmation dialog
- Marks attempt as failed

US-307: Agent completion handling
- Detects process exit
- Updates attempt status (complete/failed)
- Updates task status to 'review'
- WebSocket notification
2026-01-26 03:12:26 -06:00
Brad Groux
4d8ae16969 docs: update sprint-2 tracking - complete 2026-01-26 03:05:10 -06:00
Brad Groux
5977acc828 feat(US-203,204,205,206): git worktree integration
US-203: Git worktree creation
- WorktreeService with simple-git
- POST /api/tasks/:id/worktree creates worktree
- Creates feature branch from base branch
- Updates task with worktree path

US-204: Worktree status display
- GET /api/tasks/:id/worktree returns status
- Shows branch, ahead/behind commits, changed files
- 'Create Worktree' button when none exists
- 'Open in VS Code' button via vscode:// protocol

US-205: Branch operations (rebase, merge)
- POST /api/tasks/:id/worktree/rebase
- POST /api/tasks/:id/worktree/merge
- Confirmation dialogs for merge
- Task auto-moves to Done on merge

US-206: Worktree cleanup
- DELETE /api/tasks/:id/worktree
- Warns about uncommitted changes
- Force delete option
- Manual delete button in UI
2026-01-26 03:04:51 -06:00
Brad Groux
e52aab2b3f feat(US-202): git fields for code tasks
- GitSection component for task detail panel
- Repo dropdown from configured repos
- Base branch dropdown (fetched from repo)
- Auto-generated feature branch from task title
- Git fields saved to task file via debounced save
- Only shows for code task type
2026-01-26 03:02:32 -06:00
Brad Groux
c7834299f6 feat(US-201): project/repo configuration
- ConfigService for managing repos and agents
- Config API routes (CRUD for repos, validate path, get branches)
- Settings dialog with repo management UI
- Path validation against actual git repos
- Default agent configuration (Claude Code, Amp, Copilot, Gemini)
2026-01-26 03:01:14 -06:00
Brad Groux
f504b7383b docs: update sprint tracking - US-104 to US-108 complete 2026-01-26 02:55:01 -06:00
Brad Groux
b8cc446b6b feat: complete US-104 to US-108 (Kanban UI)
US-104: Kanban board UI shell
- Loading skeleton while fetching
- 4 columns with task counts
- Empty state with drop zone highlight

US-105: Task card component
- Type icons and color-coded borders
- Priority badges
- Project tags
- Tooltip on hover for full title
- Click opens detail panel

US-106: Create task dialog
- All fields working
- Validation and defaults

US-107: Task detail panel (new)
- Slide-out sheet from right
- Inline editing for all fields
- Debounced auto-save (500ms)
- Delete with confirmation dialog
- Escape key to close
- Metadata display (created/updated)

US-108: Drag and drop
- Visual feedback (ring highlight, ghost card)
- Status update on drop
- Persists to file via API

Added shadcn components: sheet, skeleton, tooltip, alert-dialog
2026-01-26 02:54:25 -06:00
Brad Groux
45a5c37612 feat: complete US-102 (task parser) and US-103 (REST API)
- Task schema with full types in shared package
- TaskService with injectable paths for testing
- gray-matter for markdown frontmatter parsing
- 15 unit tests for parser/service
- Full CRUD API with zod validation
- Fixed undefined value handling in frontmatter
- Updated sprint tracking
2026-01-26 02:49:09 -06:00
Brad Groux
95e758337f fix: TypeScript errors in server and web packages
- Remove slugify dependency, use custom makeSlug function
- Add explicit Router type annotation
- Remove unused ChevronUp import
- Build shared package for type exports
2026-01-26 02:37:17 -06:00
Brad Groux
a489c5358f feat: initial project scaffolding
- Dev container with Node.js 22
- pnpm workspace monorepo structure
- Express + WebSocket server
- React + Vite + shadcn/ui frontend
- Shared TypeScript types package
- Kanban board with drag-and-drop
- Task CRUD with file-based persistence
- Dark mode styling

Sprint 1 - US-101: Project scaffolding with dev container
2026-01-26 02:34:54 -06:00