- Multiple Boards: Support for ClawDeck, Pedrito, Misc (and custom boards)
- Board Tabs Navbar: Horizontal tab navigation with real-time task count badges
- Auto-Routing:
spawn_readyautomatically detects project from task name (e.g., "ClawDeck:" → ClawDeck board) - Move to Board: Context menu submenu to move tasks between boards with Turbo Stream updates
- Board Status API: New endpoint
/api/v1/boards/:id/statusfor fingerprint-based change detection
- Polling Refresh: Kanban board automatically refreshes every 15 seconds when changes detected
- Fingerprint-based: Server returns MD5 fingerprint, only refreshes if changed
- Tab Visibility: Pauses polling when tab not visible (battery-friendly)
- New Controller:
kanban_refresh_controller.jsfor Stimulus-based polling
- Tab Switching: Fixed - switch between pinned agent tasks, content persists
- Board Icons: Display board emoji (🦞🐕📋) next to task ID in terminal tabs
- X Button Fix: Close button properly unpins tasks
- Content Caching: localStorage caching prevents re-fetching on tab switch
- Type-safe Map keys: Fixed string/int mismatch in JavaScript Map
- Z-Index Stack: Proper layering - cards < preview (z-40) < dropdown (z-100) < modal (z-50)
- Dropdown Handling: Preview hides when context menu opens, returns on close
- Click Protection: Clicks inside preview don't trigger hide (pin button works)
POST /api/v1/tasks/spawn_ready- Create task ready for agent (in_progress, assigned)POST /api/v1/tasks/:id/link_session- Link session_id + session_key after spawnPOST /api/v1/tasks/:id/agent_complete- Save agent output, move to in_reviewGET /api/v1/tasks/:id/session_health- Check session status (no auth required)GET /api/v1/boards/:id/status- Board fingerprint for auto-refreshPATCH /boards/:board_id/tasks/:id/move_to_board- Move task to different board
- Session Auth Fallback: Browser requests can use session cookies for API endpoints
- Public Endpoints:
session_healthandagent_logdon't require API token
- Spinner Indicator: Animated spinner on task cards with active agent (in_progress + assigned + session_id)
- Auto-Done on Follow-up: Parent task automatically moves to "done" when follow-up created
- Parent Output in Follow-up Modal: See what the agent did before creating follow-up
- Fixed dropdown menu appearing below next task card
- Fixed terminal panel appearing above modals
- Fixed preview not returning after context menu closed
- Fixed pin button click being intercepted by hide handler
- Fixed done column ordering (Turbo Streams was using prepend for all updates)
- Now uses
replacefor in-place updates,prependonly for status changes
- Fixed tab switching losing content (Map key type mismatch)
- Fixed X button not working (event propagation)
- Fixed content not persisting across page reloads
- Fixed auto-done only working via API, not web UI form
- Fixed session_health requiring auth (browser fetch failed)
- Removed 9+ debug console.log statements
app/javascript/controllers/kanban_refresh_controller.jsapp/views/boards/tasks/move_to_board.turbo_stream.erbdb/migrate/20260205150700_create_default_boards.rb
app/controllers/api/v1/boards_controller.rb- status endpointapp/controllers/api/v1/tasks_controller.rb- spawn_ready, link_session, agent_complete, session_health, auto-routingapp/controllers/boards/tasks_controller.rb- move_to_board, auto-done fixapp/controllers/concerns/api/token_authentication.rb- session auth fallback
app/javascript/controllers/agent_modal_controller.js- board iconapp/javascript/controllers/agent_preview_controller.js- z-index, dropdown handling, click protectionapp/javascript/controllers/agent_terminal_controller.js- tab switching, caching, board icons, type fixesapp/javascript/controllers/dropdown_controller.js- z-index boost, close event
app/views/boards/_header.html.erb- board tabs navbarapp/views/boards/_task_card.html.erb- move to board submenu, spinnerapp/views/boards/show.html.erb- auto-refresh controller
app/models/task.rb- broadcast_update fix for ordering
config/routes.rb- all new routesconfig/initializers/rails_live_reload.rb- production fix