- Rewrote README with current features and Clawdbot integration
- Added CHANGELOG.md covering all 7 sprints
- Cleaner structure and better organization
Added pr-8 to header flex containers in:
- ArchiveSidebar
- ActivitySidebar
- ConflictResolver
- PreviewPanel
The Sheet component's close button is positioned absolute at right-4,
which was overlapping with action buttons (refresh, trash, etc.)
- Created ClawdbotAgentService that delegates to Veritas main session
- Agent requests written to .veritas-kanban/agent-requests/ as JSON
- Added /api/agents/pending endpoint for Veritas to poll
- Added /api/agents/:taskId/complete callback endpoint
- CLI commands: agents:pending, agents:complete, agents:status
- Removed PTY process management - Clawdbot handles it
Flow:
1. Kanban UI → POST /api/agents/:taskId/start
2. Server writes request to agent-requests/{taskId}.json
3. Veritas polls agents:pending or checks manually
4. Veritas calls sessions_spawn with task prompt
5. Sub-agent works in worktree, commits changes
6. Veritas calls /api/agents/:taskId/complete
7. Task updated, notifications sent
- Blue glow effect (ring + shadow) when agent is running
- Running badge with spinning loader icon
- Shows agent name in badge and tooltip
- Pulsing animation for easy visibility
- Sprint 7: All 11 stories complete
- TimeEntry and TimeTracking types
- TaskService: startTimer, stopTimer, addTimeEntry, deleteTimeEntry, getTimeSummary
- API endpoints for time operations
- TimeTrackingSection component with:
- Start/stop timer with live elapsed display
- Manual entry dialog (1h 30m format)
- Entries list with delete
- Time indicator on TaskCard with animated icon when running
- formatDuration/parseDuration utilities
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- task-service: add missing review field to parseTaskFile return
- TaskDetailPanel: useDebouncedSave now tracks changed fields only
(prevents overwriting server state with stale local data)
- 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
- 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
- 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
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
- 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