- Replace proximity-based auto-scroll with scroll-direction detection
- Track last scroll position via ref to determine up/down direction
- Scrolling up disables auto-scroll, scrolling down re-enables it
- Add tests for auto-scroll default behavior and direction toggling
- Add includeTaskIdInCommit boolean to Settings type with default true
- Refactor merger to dynamically build system prompt based on setting
- Update fallback commit message to respect the toggle
- Add checkbox to Settings UI under Merge section
- Add unit tests for merger and SettingsModal behavior
- Add logo.svg image element to Header component before the h1 title
- Add header-logo CSS class with sizing and flex-shrink styles
- Update header-left alignment from baseline to center
- Add Header component tests covering logo rendering and position
- Extend AgentLogEntry type with optional detail field for tool metadata
- Thread tool args through engine executor callbacks to populate detail
- Render tool detail (name, args) in AgentLogViewer component
- Add unit tests for store, executor, and AgentLogViewer changes
- Add taskPrefix field to Settings type and use it in allocateId
- Update store listTasks and handleFsChange to support any task prefix
- Update triage duplicate regex to match configurable prefix
- Add Task Prefix input to dashboard SettingsModal UI
- Add tests for prefix-aware task allocation and settings modal
- Add agent log persistence layer with JSONL append/read and event emission in core store
- Add server-side SSE log streaming endpoint and REST route for fetching logs
- Create AgentLogViewer component and useAgentLogs hook for real-time log display
- Integrate log viewer into TaskDetailModal
- Fix pre-existing build and test errors
- Add dependencies field support to store updateTask method
- Wire dependencies through PATCH route and client API
- Add dependency editing UI (add/remove) to TaskDetailModal
- Pass tasks prop from App to TaskDetailModal for dependency picker
- Add tests for dependency CRUD in modal and API layer
- Extract uploadFile helper from file input handler for reuse
- Add clipboard paste listener to upload pasted images automatically
- Add drag-over and drop handlers on modal for drag-and-drop image upload
- Add comprehensive tests for paste upload, non-image paste skip, uploading state, and drop upload
- Add blockedBy field to Task type and core store
- Update scheduler to set blockedBy when deferring tasks due to file-scope overlap
- Render file-scope overlap badge on TaskCard in dashboard
- Add tests for blockedBy store logic, scheduler deferral, and TaskCard badge
- Simplify and refactor existing executor, triage, and CLI command code
- Add position: relative and z-index: 1 to .card-meta so dep tooltip renders above .card-title
- Change tooltip background from var(--bg-card) to var(--surface) for correct theming
- Add test asserting data-tooltip attribute contains dependency IDs as readable string
- Add focusout listener that cancels InlineCreateCard when focus leaves with empty input
- Preserve card when focus moves between elements inside the card
- Treat whitespace-only input as empty for cancel purposes
- Add comprehensive tests for blur-to-cancel behavior
- Update board grid to use minmax(260px, 1fr) for minimum column widths
- Replace overflow: hidden with overflow-x: auto for horizontal scrolling
- Add min-width: 260px to column class for consistent sizing
- Add Board test verifying id='board' attribute for scroll targeting
- Update TaskCard and TaskDetailModal to display description as fallback instead of repeating the task ID
- Remove unused hooks (useFlashOnIncrease), routes, assets, and dead CSS
- Clean up engine modules (executor, scheduler, triage, worktree-names) removing unused code
- Update and add tests for title fallback behavior in TaskDetailModal
- Fix pre-existing type error in test helper (types.ts)
- Set task status to 'failed' on execution failure in engine executor
- Add failed indicator styling on TaskCard component
- Add POST /tasks/:id/retry API endpoint and client function
- Add retry button in TaskDetailModal for failed tasks
- Add tests for failed indicator, retry endpoint, and modal behavior
- Add recycleWorktrees toggle to the Worktrees section in SettingsModal
- Wire checkbox state to settings store
- Add unit tests for recycleWorktrees setting behavior
- Exclude checkbox inputs from full-width text input styles using :not([type="checkbox"])
- Add dedicated checkbox styling with proper size, accent color, and cursor
- Add test verifying groupOverlappingFiles input renders as a checkbox
- Set status to queued in scheduler for file-scope-deferred tasks
- Normalize queued badge display in TaskCard component
- Add TaskCard unit tests for queued status rendering
- Add scheduler tests for file-scope-deferred task queuing
- Move logo.svg to correct public directory
- Fix prompt heading to use only task ID when title is absent, preventing description duplication
- Strip leading markdown heading from TaskDetailModal since the modal has its own header
- Add store tests covering prompt generation for tasks with and without titles
- Update TaskDetailModal tests to verify heading stripping and single description rendering
- Add sidebar navigation structure with section links to SettingsModal
- Implement sidebar and form layout styles in styles.css
- Add SettingsModal sidebar navigation tests for section switching
- Update SettingsModal component with multi-section support
- Add markdown-body base styles in dashboard styles.css
- Remove backdrop and enable scroll on task detail prompt rendering
- Add TaskDetailModal unit tests with vitest jsdom environment
- Update vitest config with globals and jsdom support
- Clean up unused test files and legacy concurrency module