Activity Dashboard 2.0 - Design Update
Date: November 27, 2025 Version: 2.0 Status: Final Design Package Meeting: Will-Hal Design Review
Table of Contentsβ
- Executive Summary
- Key Design Insights from Meeting
- Design Philosophy
- Documentation Package
- Implementation Roadmap
Executive Summaryβ
The Activity Dashboard 2.0 represents a fundamental shift from machinery metrics to journey navigation. Based on stakeholder analysis from the November 27, 2025 design review meeting with Will and Hal, this update transforms the dashboard from showing "how the engine works" to "where we're going and what's in the way."
Core Transformationβ
From Engine Diagnostics:
- Message counts, session durations, token usage
- "How is it doing it?"
- Machinery-focused interface
To GPS Navigation:
- Task progress, blocked features, route to completion
- "What has it made?"
- Journey-focused interface
Critical Quote from Stakeholderβ
"The gold isn't in how is it doing it... the real stuff is features, deliverables, targets reached. What you want is: How do I get from A to B? What are my obstacles? And what's my route?" β Will, Design Review Meeting, November 27, 2025
Key Design Insightsβ
1. The Navigation Metaphorβ
The dashboard should function like a car's GPS navigation system, not its engine diagnostics panel.
GPS Dashboard Elements:
- Where am I? β Current task progress
- Where going? β Project milestones
- What route? β Task β Commit β Done
- What obstacles? β Blocked tasks only
Not Shown (Engine Metrics):
- RPM, fuel injection rate, engine temperature
- Similarly: Message counts, session duration, token usage
2. Exception-Based Displayβ
"If it's 40, 40, 40, 40, 40 every time, don't show it."
Rule: Only show deviations from baseline. Hide uniform data.
| Metric | Baseline | Display Rule |
|---|---|---|
| QA Score | 40 (passing) | Show only if β 40 |
| Task Status | Normal flow | Show only if blocked |
| Build Status | Success | Show only if failed |
3. Task-Centric Architectureβ
Everything flows toward tasks as the primary entity:
TASK (Primary)
βββ β Checkbox (source of truth for completion)
βββ Status (pending/in_progress/blocked/done)
βββ Linked Sessions (evidence)
βββ Linked Commits (evidence)
Sessions and commits are supporting evidence, not primary metrics.
4. Three-Level Information Hierarchyβ
LEVEL 1: Primary View (Non-scrolling - "actual information on a non-scrolling screen")
βββ Portfolio summary (all projects)
βββ Task Kanban (selected project)
βββ 5 activity highlights
βββ Blocked tasks panel
βββ Work distribution chart
LEVEL 2: Drill-Down (On-demand)
βββ Full task list with details
βββ Commit timeline
βββ Session summaries
βββ Progress burndown
LEVEL 3: Deep Inspection (Hidden - "we can have it in the details")
βββ Session message history
βββ Commit diffs
βββ Task change history
βββ Raw activity logs
5. The 5-Second Testβ
Users must answer these questions in < 5 seconds without scrolling:
- Which project needs attention?
- What tasks are in progress?
- What is blocking progress?
- What completed recently?
- Am I on track?
Design Philosophyβ
GPS Not Engine: What to Remove vs Keepβ
Remove from Primary Viewβ
| Engine Metric | Why Remove |
|---|---|
| Message counts | "Nobody cares" - no actionable signal |
| Session duration | Shows process, not progress |
| Token usage | Engine internals |
| Word counts | Machinery metric |
| Uniform QA scores | Repeating data = no information |
| Version numbers | Unless different from expected |
Keep in Primary Viewβ
| Navigation Element | Why Keep |
|---|---|
| Task checkboxes | Source of truth for completion |
| Project progress bars | High-level position indicator |
| Blocked tasks | "Obstacles in the way" |
| Linked commits | Evidence of progress |
| Activity highlights (5 max) | Recent journey milestones |
| Kanban board | "Has value because you can see features moving from left to right" |
Sessions as Journey Segmentsβ
"Sessions are segments of the journey... we need to connect them into the map."
Sessions are not primary information. They are:
- Context for understanding what was worked on
- Evidence linking to tasks
- Memory for continuity
Display Rule: Show session count as badge/metadata on tasks. Full session details available on drill-down only.
Assumptive Baseline Principleβ
Principle: Uniform data provides no signal.
Implementation:
- Detect repeating values
- Hide anything that's consistently the same
- Only highlight/show deviations
- Mark anomalies prominently
Documentation Packageβ
This design update includes the following comprehensive documents:
Core Design Documentsβ
-
Software Design Document (SDD)
- System architecture
- Data model & ERD
- API specifications
- Component design
-
Technical Design Document (TDD)
- Task linking algorithms (CommitβTask, SessionβTask)
- Progress calculation logic
- Activity feed prioritization
- Real-time update mechanisms
- Frontend implementation details
-
Architecture Decision Records (ADRs)
- ADR-001: Task-Centric Architecture
- ADR-002: Checkbox as Source of Truth
- ADR-003: Exception-Based Display
- ADR-004: Session-to-Task Linking
- ADR-005: Real-Time Updates (WebSocket)
- ADR-006: Three-Level Hierarchy
- ADR-007: Activity Feed Prioritization
- ADR-008: Multi-Project Portfolio
-
UI Component Specifications
- ProjectSummaryBar
- KanbanBoard
- TaskCard
- ActivityFeed
- BlockerPanel
- WorkDistributionChart
- ProjectSelector
- Unified Dashboard Layout
-
Meeting Transcript
- Full Will-Hal design review (November 27, 2025)
- Key stakeholder quotes
- Design decisions and rationale
Multi-Project Dashboard Designβ
Complete integrated design package combining:
- Software architecture
- Technical implementation
- UI specifications
- Component prompts
Implementation Roadmapβ
Phase 1: Foundation (Week 1-2)β
Priority: P0 - Critical Path
-
Multi-project data model
- Projects, ProjectPlans, TaskLists, Tasks
TASK.checkedas source of truth- Status enum: pending/in_progress/review/blocked/done
-
Task Kanban Board
- 4 columns: Pending | In Progress | Review | Done
- Blocked tasks highlighted within In Progress
- Task cards with checkbox, title, complexity badge
-
Blocked Task Detection
- Filter
status='blocked' - Days blocked calculation
- Blocker panel UI (orange/amber styling)
- Filter
-
Progress Calculation
progress_pct = (COUNT(checked=true) / COUNT(*)) Γ 100
Phase 2: Linking (Week 3-4)β
Priority: P1 - High Value
-
CommitβTask Linking
- Explicit references (#TASK-123 in commit message)
- Title similarity matching (threshold: 0.7)
- File path overlap analysis
- Confidence scoring
-
SessionβTask Linking
- Keyword extraction (NLP)
- Entity recognition (file paths, identifiers)
- Match score calculation
- Top 5 matches with confidence
-
Link Management
- Confidence indicators in UI
- User confirm/reject interface
- Link evidence display
Phase 3: Dashboard Assembly (Week 5-6)β
Priority: P1 - Core Experience
-
Project Summary Bar
- All projects with progress bars
- Task counts (N/M completed)
- Commit counts (last 7 days)
- Blocker indicators (red dot)
-
Activity Feed (5 items max)
- Weighted prioritization algorithm
- Task completed: weight 100
- Task blocked: weight 90
- Commit: weight 50
- Session: weight 30
-
Work Distribution Chart
weighted_score = commitsΓ3 + sessionsΓ1 + tasksΓ5
percentage = project_score / total_score Γ 100
Phase 4: Real-Time Updates (Week 7)β
Priority: P2 - Enhanced Experience
-
WebSocket Infrastructure
- Connection management
- Project subscription model
- Event broadcasting
-
Event Types
task.updated,task.completed,task.blockedprogress.changedcommit.new,session.ended
-
Optimistic Updates
- Immediate UI response
- Rollback on failure
- Conflict resolution
Phase 5: Polish & Optimization (Week 8)β
Priority: P3 - Production Ready
-
Caching Strategy
- Portfolio summary: 60s TTL
- Kanban board: 30s TTL
- Activity feed: 60s TTL
- Work distribution: 300s TTL
-
Performance
- Query optimization
- Materialized views
- Batch loading
-
Responsive Design
- Mobile: Single column, horizontal Kanban scroll
- Tablet: 2-column layout
- Desktop: Full layout, non-scrolling
-
Accessibility
- ARIA labels
- Keyboard navigation
- Focus management
- Screen reader support
Data Modelβ
Core Entitiesβ
CREATE TABLE projects (
id UUID PRIMARY KEY,
name VARCHAR(255) NOT NULL,
status VARCHAR(50) DEFAULT 'active'
);
CREATE TABLE task_lists (
id UUID PRIMARY KEY,
plan_id UUID REFERENCES project_plans(id),
name VARCHAR(255) NOT NULL,
category VARCHAR(100)
);
CREATE TABLE tasks (
id UUID PRIMARY KEY,
list_id UUID REFERENCES task_lists(id),
title VARCHAR(500) NOT NULL,
checked BOOLEAN DEFAULT FALSE, -- SOURCE OF TRUTH
status VARCHAR(50) DEFAULT 'pending',
complexity VARCHAR(10),
blocked_reason TEXT
);
CREATE TABLE llm_sessions (
id UUID PRIMARY KEY,
project_id UUID REFERENCES projects(id),
started_at TIMESTAMP,
ended_at TIMESTAMP,
message_count INTEGER,
summary TEXT
);
CREATE TABLE git_commits (
sha VARCHAR(40) PRIMARY KEY,
repo_id UUID REFERENCES git_repos(id),
message TEXT NOT NULL,
author VARCHAR(255),
timestamp TIMESTAMP,
additions INTEGER,
deletions INTEGER
);
CREATE TABLE task_commit_links (
task_id UUID REFERENCES tasks(id),
commit_sha VARCHAR(40) REFERENCES git_commits(sha),
confidence DECIMAL(3,2),
link_type VARCHAR(20), -- 'explicit' | 'inferred'
evidence TEXT
);
CREATE TABLE task_session_links (
task_id UUID REFERENCES tasks(id),
session_id UUID REFERENCES llm_sessions(id),
confidence DECIMAL(3,2),
link_type VARCHAR(20),
evidence TEXT
);
API Designβ
REST Endpointsβ
GET /api/v1/dashboard
β DashboardResponse (portfolio + kanban + activity + blockers)
GET /api/v1/dashboard/portfolio
β ProjectSummary[] (all projects with progress)
GET /api/v1/dashboard/activity?limit=5
β ActivityHighlight[] (top 5 prioritized events)
GET /api/v1/projects/{id}/kanban
β KanbanBoard (tasks by status columns)
PATCH /api/v1/tasks/{id}
β Task (update checked/status)
WebSocket Eventsβ
// Server β Client
{
"type": "task.completed",
"project_id": "proj-1",
"task_id": "t-123",
"changes": { "checked": true, "status": "done" }
}
{
"type": "progress.changed",
"project_id": "proj-1",
"progress_pct": 67.5,
"tasks_completed": 27,
"tasks_total": 40
}
// Client β Server
{
"type": "subscribe",
"project_ids": ["proj-1", "proj-2", "proj-3"]
}
UI Layout Specificationβ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CODITECT [All Projects βΌ] [β Settings] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββ PROJECT SUMMARY BAR βββββββββββββββββββββββββββββββββββββββ β
β β Auth System ββββββββββββββββββ 58% 7/12 3 commits β β
β β Payment Gateway ββββββββββββββββββ 40% 4/10 1 commit β β
β β User Dashboard ββββββββββββββββββ 70% 14/20 5 commits β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββ TASK JOURNEY ββββββββββββββββββββββββββββββββββββββββββββββββ β
β β PENDING IN PROGRESS REVIEW DONE β β
β β ββββββββ ββββββββββββ ββββββββββ βββββββββββββ β β
β β ββRate β ββRefresh β β β ββJWT β β β
β β β Limitβ β Token β β Empty β ββAuth β β β
β β ββββββββ β 60%ββββ β β β ββLogin β β β
β β ββ Blocked β ββββββββββ βββββββββββββ β β
β β ββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββ RECENT ACTIVITY ββββββ ββ ATTENTION REQUIRED βββββββββββ β
β β β JWT complete 2h β β β οΈ MFA Setup β β
β β 3 commits, 2 sess β β Blocked: API spec β β
β β β abc123: +45/-12 3h β β Blocked for: 3 days β β
β β β Login merged 5h β β [View] [Resolve] β β
β β π¬ Rate limit 6h β β β β
β β β οΈ MFA blocked 8h β β No other blockers β β
β βββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββ β
β β
β ββ WORK DISTRIBUTION (This Week) βββββββββββββββββββββββββββββββ β
β β Auth System ββββββββββββββββββββββββββββββββ 45% β β
β β Payment Gateway βββββββββββββββββββββββββββββββ 25% β β
β β User Dashboard βββββββββββββββββββββββββββββββ 20% β β
β β Documentation βββββββββββββββββββββββββββββββ 10% β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Key Success Metricsβ
The 5-Second Test Resultsβ
β Question 1: Which project needs attention? β Answer: Auth System (58%, has blocker) β Source: Project Summary Bar, red dot indicator
β Question 2: What tasks are in progress? β Answer: Refresh Token Logic (60% complete), MFA Setup (blocked) β Source: Kanban Board, In Progress column
β Question 3: What is blocking progress? β Answer: MFA Setup, blocked for 3 days, awaiting API spec β Source: Blocker Panel (orange highlighted)
β Question 4: What completed recently? β Answer: JWT tokens (2h ago), Login form merged (5h ago) β Source: Activity Feed, top 2 items
β Question 5: Am I on track? β Answer: Auth System 58% (7/12 tasks), trending positive β Source: Project Summary Bar, progress visualization
Result: All questions answerable in < 5 seconds without scrolling.
Migration from 1.0 to 2.0β
Data Transformation Requiredβ
-
Session Data
- Extract session summaries for activity feed
- Link sessions to tasks via NLP
- Hide message-level details from primary view
-
Task Data
- Ensure all tasks have
checkedboolean - Migrate status to new enum
- Identify blocked tasks and reasons
- Ensure all tasks have
-
Commit Data
- Parse commit messages for task references
- Calculate file overlap with tasks
- Generate link confidence scores
UI Migrationβ
-
Remove from Primary View
- Message count displays
- Session duration metrics
- Token usage charts
- Verbose AI summaries
-
Add to Primary View
- Project summary bar
- Kanban board (if not present)
- Blocker panel
- Work distribution chart
-
Reorganize
- Session details β Level 3 (deep inspection)
- Commit timeline β Level 2 (drill-down)
- Task history β Level 2 (drill-down)
Appendix: Key Stakeholder Quotesβ
"The gold isn't in how is it doing it... the real stuff is features, deliverables, targets reached."
"What you want is: How do I get from A to B? What are my obstacles? And what's my route?"
"If it's 40, 40, 40, 40, 40 every time, don't show it."
"5 things that happened and a simple definition of these things."
"Sessions are segments of the journey... we need to connect them into the map."
"The thing you don't want to see [is] the neurons firing. We want to see what we're thinking about."
"A Kanban board has value because you can see features moving from left to right."
"Actual information on a non-scrolling screen."
"You see the map and your route and any obstacles in the way. Even gas and charge are secondary."
"As cars have gotten better, you focus less on the car. You're no longer looking at gauges... you're just looking at the map."
Document Historyβ
| Version | Date | Author | Changes |
|---|---|---|---|
| 2.0 | 2025-11-27 | Design Team | Complete design package based on Will-Hal meeting analysis |
| 1.0 | 2025-11-26 | Design Team | Initial dashboard specification |
References:
- sdd-activity-dashboard.md
- tdd-activity-dashboard.md
- ad-rs-activity-dashboard.md
- ui-prompts-activity-dashboard.md
- multi-project-dashboard-design.md
- Meeting Transcript: cuu-ewbn-jrj-2025-11-27T1040-WILL-HAL.txt
This document represents the authoritative 2.0 design update for the Coditect Activity Dashboard, incorporating stakeholder feedback from the November 27, 2025 design review meeting.