claude-os/docs/guides/REALTIME_KANBAN_GUIDE.md

453 lines
11 KiB
Markdown
Raw Normal View History

2025-11-05 11:12:24 -06:00
# Real-Time Kanban Board Guide
## Overview
Claude OS features a **real-time Kanban board** that automatically syncs with your agent-os spec files as they're created and updated. This provides live visibility into your development progress without any manual intervention.
## How It Works
The real-time Kanban system consists of three integrated components:
```
agent-os updates tasks.md
↓ (2 sec debounce)
Spec Watcher detects change
↓
Auto-syncs to database
↓ (within 3 seconds)
Kanban board auto-refreshes
↓
You see updated tasks in real-time! 🎉
```
### 1. Spec File Watcher
The **Spec Watcher** monitors your project's `agent-os/specs/` folder for file changes:
- **Watches**: All `tasks.md` and `spec.md` files in your specs folders
- **Triggers on**: File modifications and new file/folder creation
- **Debounce**: 2-second delay to batch rapid changes
- **Auto-starts**: Launches automatically when MCP server starts
**Technical Details:**
- Location: `app/core/spec_watcher.py`
- Uses: `watchdog` library for filesystem monitoring
- Monitors: `/path/to/project/agent-os/specs/**/*`
- Thread-safe: Uses locks for concurrent access
### 2. Automatic Database Sync
When the spec watcher detects changes, it:
1. Parses the updated `tasks.md` file
2. Extracts tasks in checkbox format:
```markdown
- [x] 1.0 Complete database layer
- [ ] 2.1 Write tests for services
```
3. Updates the SQLite database with new/modified tasks
4. Tracks task status (todo, in_progress, done, blocked)
**Supported Task Formats:**
The parser supports two formats:
**Checkbox Format** (recommended for agent-os):
```markdown
- [x] 1.0 Complete database layer
- [x] 1.1 Write 2-8 focused tests for database models
- [x] 1.2 Create migration: add_manual_time_slots_support
- [ ] 2.0 Complete service layer
- [ ] 2.1 Write 2-8 focused tests for services
```
**Classic Format** (legacy support):
```markdown
### PHASE1-TASK1: Database Setup
**Title:** Setup Database Schema
**Description:** Create all required database tables
**Estimated Time:** 2 hours
**Risk Level:** low
**Status:** ✅ COMPLETED
```
### 3. Frontend Auto-Refresh
The Kanban board frontend:
- **Polls**: Every 3 seconds for database updates
- **Refreshes**: Automatically when new data is detected
- **Smooth**: Uses React Query for optimistic updates
- **Animations**: Framer Motion for smooth task transitions
## Using the Kanban Board
### Accessing the Board
1. Open Claude OS web interface
2. Select your project from the sidebar
3. Click the **"Kanban Board"** tab
4. Board loads automatically with all specs and tasks
### Board Layout
The Kanban board displays:
**Top Section:**
- Summary statistics (total specs, total tasks, completed tasks)
- "Sync Specs" button (manual sync if needed)
- "Show Archived" toggle
**Spec Cards:**
Each spec shows:
- Spec name and status
- Progress bar
- Task counts by status
- Four columns: Todo, In Progress, Done, Blocked
**Task Cards:**
- Task code (e.g., PHASE1-TASK1)
- Title
- Risk level badge
- Estimated/actual time
- Dependencies
### Manual Sync Button
While the board updates automatically, you can manually trigger a sync:
1. Click **"Sync Specs"** button at the top
2. All spec files are re-parsed
3. Database updates immediately
4. Board refreshes within 3 seconds
Use this when:
- Testing the sync functionality
- Recovering from errors
- Adding a new spec folder manually
## Configuration
### Spec Watcher Management
The spec watcher starts automatically, but you can control it via API:
**Start watcher for a project:**
```bash
curl -X POST http://localhost:8051/api/spec-watcher/start/{project_id}
```
**Stop watcher for a project:**
```bash
curl -X POST http://localhost:8051/api/spec-watcher/stop/{project_id}
```
**Start all project watchers:**
```bash
curl -X POST http://localhost:8051/api/spec-watcher/start-all
```
**Check watcher status:**
```bash
curl http://localhost:8051/api/spec-watcher/status
```
Example status response:
```json
{
"status": {
"enabled": true,
"projects_watched": 1,
"projects": {
"1": {
"project_path": "/Users/you/Projects/myapp",
"specs_path": "/Users/you/Projects/myapp/agent-os/specs",
"watching": true
}
}
}
}
```
### Adjusting Refresh Rate
The default refresh rate is 3 seconds. To change it:
**File:** `frontend/src/components/KanbanBoard.tsx`
```typescript
const { data: kanbanData, isLoading } = useQuery({
queryKey: ['kanban', projectId, includeArchived],
queryFn: async () => {
// ... fetch logic
},
refetchInterval: 3000, // Change this value (milliseconds)
});
```
**Recommended values:**
- **3000ms (3s)**: Real-time updates, good UX
- **5000ms (5s)**: Balanced performance
- **10000ms (10s)**: Low-traffic, battery-saving
### Debounce Delay
The spec watcher waits 2 seconds after detecting a change before syncing. To adjust:
**File:** `app/core/spec_watcher.py`
```python
class SpecFileHandler(FileSystemEventHandler):
def __init__(self, project_id: int, project_path: str):
# ...
self.debounce_delay = 2.0 # Change this value (seconds)
```
**Why debounce?**
- Prevents sync spam during rapid file edits
- Batches related changes together
- Reduces database load
## Project Structure Requirements
For the Kanban board to work, your project must have this structure:
```
your-project/
└── agent-os/
└── specs/
├── 2025-10-29-feature-name/
│ ├── spec.md # Optional: Feature specification
│ └── tasks.md # Required: Task breakdown
└── 2025-11-01-another-feature/
├── spec.md
└── tasks.md
```
**Folder naming convention:**
- Format: `YYYY-MM-DD-feature-slug`
- Example: `2025-10-29-manual-appointment-times`
- Slug becomes the spec name (spaces replace hyphens)
## Troubleshooting
### Tasks Not Showing Up
**Check 1: Is the spec watcher running?**
```bash
curl http://localhost:8051/api/spec-watcher/status
```
If `"watching": false`, restart the watcher:
```bash
curl -X POST http://localhost:8051/api/spec-watcher/start/{project_id}
```
**Check 2: Are your tasks in the right format?**
Tasks must use the checkbox format with numeric prefixes:
```markdown
- [ ] 1.0 Task title
- [x] 2.1 Another task
```
Not this:
```markdown
- [ ] Task without number
- Some random text
```
**Check 3: Is tasks.md in the right location?**
```
✅ project/agent-os/specs/2025-10-29-feature/tasks.md
❌ project/specs/tasks.md
❌ project/agent-os/tasks.md
```
**Check 4: Check the MCP server logs**
```bash
tail -50 logs/mcp_server.log
```
Look for:
- `✅ Updated spec 'Feature Name' with X tasks`
- Any error messages about parsing
### Board Not Auto-Refreshing
**Check 1: Is polling enabled?**
Open browser DevTools → Network tab → Filter by "kanban"
You should see requests every 3 seconds to:
```
GET /api/projects/1/kanban?include_archived=false
```
If not, check that React Query is configured correctly.
**Check 2: Clear browser cache**
```
Ctrl+Shift+R (Windows/Linux)
Cmd+Shift+R (Mac)
```
**Check 3: Check frontend logs**
Open browser Console and look for errors related to:
- React Query
- Axios requests
- WebSocket connections (if applicable)
### Sync Taking Too Long
**Expected timings:**
- File change detected: < 1 second
- Debounce wait: 2 seconds
- Database sync: < 1 second
- Frontend refresh: 3 seconds
- **Total**: ~6 seconds max
**If slower:**
1. Check disk I/O (is your disk slow?)
2. Check database size (vacuum if needed):
```bash
sqlite3 data/claude-os.db "VACUUM;"
```
3. Check CPU usage (spec parsing is CPU-intensive for large specs)
### Parser Errors
**Common issues:**
**Issue:** "No tasks found"
- **Cause:** Tasks not in checkbox format
- **Fix:** Add `- [ ]` or `- [x]` before task lines
**Issue:** "Invalid task code"
- **Cause:** Missing numeric prefix (e.g., `1.0`, `2.1`)
- **Fix:** Add numbers: `- [ ] 1.0 Task title`
**Issue:** "Spec not found"
- **Cause:** Folder name doesn't match expected format
- **Fix:** Rename to `YYYY-MM-DD-feature-name`
## Advanced Usage
### Custom Task Status Updates
You can manually update task status via API:
```bash
curl -X PATCH http://localhost:8051/api/tasks/{task_id}/status \
-H "Content-Type: application/json" \
-d '{
"status": "in_progress",
"actual_minutes": 120
}'
```
Valid statuses: `todo`, `in_progress`, `done`, `blocked`
### Archiving Specs
Archive completed specs to declutter the board:
**Via UI:**
1. Click "Archive" button on spec card
2. Spec moves to archived view
**Via API:**
```bash
curl -X POST http://localhost:8051/api/specs/{spec_id}/archive
```
**To view archived specs:**
- Toggle "Show Archived" checkbox in the UI
### Bulk Operations
**Sync all specs for a project:**
```bash
curl -X POST http://localhost:8051/api/projects/{project_id}/specs/sync
```
Response:
```json
{
"project_id": 1,
"message": "Specs synced successfully",
"synced": 0,
"updated": 3,
"total": 3,
"errors": []
}
```
## Performance Considerations
### Database Size
Each task creates a database row. For large projects:
**Estimate storage:**
- 100 specs × 50 tasks = 5,000 rows
- SQLite handles this easily (millions of rows supported)
**Optimize periodically:**
```bash
sqlite3 data/claude-os.db "VACUUM; ANALYZE;"
```
### Frontend Performance
With many tasks, the Kanban board may slow down:
**Optimization tips:**
1. Archive old specs (reduces rendered tasks)
2. Increase refresh interval to 5-10 seconds
3. Filter by status (show only active tasks)
### File Watcher Overhead
The spec watcher uses minimal resources:
- CPU: < 1% idle, ~5% during sync
- Memory: ~20 MB per project
- Disk I/O: Only on file changes
**Disable if needed:**
```bash
curl -X POST http://localhost:8051/api/spec-watcher/stop/{project_id}
```
## API Reference
See full API documentation in `docs/API_REFERENCE.md`
**Key endpoints:**
- `GET /api/projects/{id}/kanban` - Get Kanban data
- `GET /api/projects/{id}/specs` - List all specs
- `POST /api/projects/{id}/specs/sync` - Manual sync
- `PATCH /api/tasks/{id}/status` - Update task status
- `POST /api/specs/{id}/archive` - Archive spec
- `GET /api/spec-watcher/status` - Watcher status
## Related Documentation
- **What is Claude OS**: `docs/guides/WHAT_IS_CLAUDE_OS.md`
- **Session Workflow**: `docs/guides/IDEAL_SESSION_WORKFLOW.md`
- **API Reference**: `docs/API_REFERENCE.md`
- **Quick Start**: `docs/QUICK_START_CLAUDE_OS.md`
## Support
If you encounter issues:
1. Check the logs: `tail -f logs/mcp_server.log`
2. Check watcher status: `curl http://localhost:8051/api/spec-watcher/status`
3. Try manual sync: Click "Sync Specs" button
4. Restart MCP server: `./scripts/restart_mcp.sh`
5. Open an issue: [GitHub Issues](https://github.com/anthropics/claude-os/issues)