@sugar-crash-studios/vibe-forge 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/clear-attention.md +63 -0
- package/.claude/commands/compact-context.md +52 -0
- package/.claude/commands/configure-vcs.md +102 -0
- package/.claude/commands/forge.md +171 -0
- package/.claude/commands/need-help.md +77 -0
- package/.claude/commands/update-status.md +64 -0
- package/.claude/commands/worker-loop.md +106 -0
- package/.claude/hooks/worker-loop.js +198 -0
- package/.claude/scripts/setup-worker-loop.sh +45 -0
- package/.claude/settings.local.json +46 -0
- package/LICENSE +21 -0
- package/README.md +238 -0
- package/agents/aegis/personality.md +294 -0
- package/agents/anvil/personality.md +276 -0
- package/agents/architect/personality.md +258 -0
- package/agents/crucible/personality.md +360 -0
- package/agents/ember/personality.md +291 -0
- package/agents/forge-master/capabilities.md +144 -0
- package/agents/forge-master/context-template.md +128 -0
- package/agents/forge-master/personality.md +138 -0
- package/agents/furnace/personality.md +340 -0
- package/agents/herald/personality.md +247 -0
- package/agents/loki/personality.md +108 -0
- package/agents/oracle/personality.md +283 -0
- package/agents/pixel/personality.md +113 -0
- package/agents/planning-hub/personality.md +320 -0
- package/agents/scribe/personality.md +251 -0
- package/agents/temper/personality.md +218 -0
- package/bin/cli.js +375 -0
- package/bin/dashboard/api/agents.js +333 -0
- package/bin/dashboard/api/dispatch.js +483 -0
- package/bin/dashboard/api/tasks.js +416 -0
- package/bin/dashboard/frontend/index.html +13 -0
- package/bin/dashboard/frontend/package.json +16 -0
- package/bin/dashboard/frontend/src/App.svelte +222 -0
- package/bin/dashboard/frontend/src/app.css +1777 -0
- package/bin/dashboard/frontend/src/lib/components/AgentCard.svelte +60 -0
- package/bin/dashboard/frontend/src/lib/components/AgentsPanel.svelte +57 -0
- package/bin/dashboard/frontend/src/lib/components/DispatchModal.svelte +180 -0
- package/bin/dashboard/frontend/src/lib/components/Footer.svelte +33 -0
- package/bin/dashboard/frontend/src/lib/components/Header.svelte +84 -0
- package/bin/dashboard/frontend/src/lib/components/IssueCard.svelte +33 -0
- package/bin/dashboard/frontend/src/lib/components/IssuesPanel.svelte +73 -0
- package/bin/dashboard/frontend/src/lib/components/KeyboardShortcutsModal.svelte +108 -0
- package/bin/dashboard/frontend/src/lib/components/MobileTabs.svelte +52 -0
- package/bin/dashboard/frontend/src/lib/components/NotificationCard.svelte +60 -0
- package/bin/dashboard/frontend/src/lib/components/NotificationsPanel.svelte +44 -0
- package/bin/dashboard/frontend/src/lib/components/TaskCard.svelte +63 -0
- package/bin/dashboard/frontend/src/lib/components/TasksPanel.svelte +82 -0
- package/bin/dashboard/frontend/src/lib/components/Toast.svelte +45 -0
- package/bin/dashboard/frontend/src/lib/stores/agents.js +34 -0
- package/bin/dashboard/frontend/src/lib/stores/issues.js +54 -0
- package/bin/dashboard/frontend/src/lib/stores/notifications.js +48 -0
- package/bin/dashboard/frontend/src/lib/stores/tasks.js +63 -0
- package/bin/dashboard/frontend/src/lib/stores/theme.js +33 -0
- package/bin/dashboard/frontend/src/lib/stores/toast.js +35 -0
- package/bin/dashboard/frontend/src/lib/stores/ui.js +25 -0
- package/bin/dashboard/frontend/src/lib/stores/voice.js +275 -0
- package/bin/dashboard/frontend/src/lib/stores/websocket.js +295 -0
- package/bin/dashboard/frontend/src/lib/utils/api.js +101 -0
- package/bin/dashboard/frontend/src/lib/utils/formatters.js +54 -0
- package/bin/dashboard/frontend/src/main.js +9 -0
- package/bin/dashboard/frontend/svelte.config.js +5 -0
- package/bin/dashboard/frontend/vite.config.js +20 -0
- package/bin/dashboard/public/assets/index-DnfVj9Ce.css +1 -0
- package/bin/dashboard/public/assets/index-Ze5h0kXQ.js +2 -0
- package/bin/dashboard/public/index.html +14 -0
- package/bin/dashboard/server.js +566 -0
- package/bin/forge-daemon.sh +463 -0
- package/bin/forge-setup.sh +645 -0
- package/bin/forge-spawn.sh +164 -0
- package/bin/forge.cmd +83 -0
- package/bin/forge.sh +533 -0
- package/bin/lib/agents.sh +177 -0
- package/bin/lib/colors.sh +44 -0
- package/bin/lib/config.sh +347 -0
- package/bin/lib/constants.sh +241 -0
- package/bin/lib/daemon/display.sh +128 -0
- package/bin/lib/daemon/notifications.sh +263 -0
- package/bin/lib/daemon/routing.sh +77 -0
- package/bin/lib/daemon/state.sh +115 -0
- package/bin/lib/daemon/sync.sh +95 -0
- package/bin/lib/database.sh +310 -0
- package/bin/lib/heimdall-setup.js +113 -0
- package/bin/lib/heimdall.js +265 -0
- package/bin/lib/json.sh +264 -0
- package/bin/lib/terminal.js +451 -0
- package/bin/lib/util.sh +126 -0
- package/bin/lib/vcs.js +349 -0
- package/config/agent-manifest.yaml +203 -0
- package/config/agents.json +168 -0
- package/config/task-template.md +159 -0
- package/config/task-types.yaml +106 -0
- package/context/agent-status/aegis.json +7 -0
- package/context/agent-status/anvil.json +7 -0
- package/context/agent-status/architect.json +7 -0
- package/context/agent-status/crucible.json +7 -0
- package/context/agent-status/ember.json +7 -0
- package/context/agent-status/furnace.json +7 -0
- package/context/agent-status/loki.json +7 -0
- package/context/agent-status/oracle.json +7 -0
- package/context/agent-status/pixel.json +7 -0
- package/context/agent-status/planning-hub.json +7 -0
- package/context/agent-status/scribe.json +7 -0
- package/context/agent-status/temper.json +7 -0
- package/context/feature-brainstorm.md +426 -0
- package/context/forge-state.yaml +19 -0
- package/context/modern-conventions.md +129 -0
- package/context/project-context-template.md +122 -0
- package/context/project-context.md +122 -0
- package/docs/TODO.md +150 -0
- package/docs/agents.md +409 -0
- package/docs/architecture/decisions/ADR-001-daemon-modularization.md +122 -0
- package/docs/architecture/vibe-lab-integration.md +684 -0
- package/docs/architecture.md +194 -0
- package/docs/bmad-gap-analysis-2026-03-31.md +444 -0
- package/docs/cleanup-workflow.md +329 -0
- package/docs/commands.md +451 -0
- package/docs/dashboard-mockup.html +989 -0
- package/docs/getting-started.md +261 -0
- package/docs/integration/forge-ownership-policy.md +112 -0
- package/docs/npm-publishing.md +132 -0
- package/docs/roadmap-2026.md +519 -0
- package/docs/security.md +144 -0
- package/docs/wireframes/dashboard-mvp.md +1164 -0
- package/docs/workflows/README.md +32 -0
- package/docs/workflows/azure-devops.md +108 -0
- package/docs/workflows/bitbucket.md +104 -0
- package/docs/workflows/git-only.md +130 -0
- package/docs/workflows/gitea.md +168 -0
- package/docs/workflows/github.md +103 -0
- package/docs/workflows/gitlab.md +105 -0
- package/docs/workflows.md +454 -0
- package/package.json +73 -0
- package/tasks/completed/ARCH-001-duplicate-agent-config.md +121 -0
- package/tasks/completed/ARCH-002-mixed-bash-node-implementation.md +88 -0
- package/tasks/completed/ARCH-003-worker-loop-hook-duplication.md +77 -0
- package/tasks/completed/ARCH-009-test-organization.md +78 -0
- package/tasks/completed/ARCH-011-jq-vs-nodejs-json.md +94 -0
- package/tasks/completed/ARCH-012-tmp-files-in-root.md +71 -0
- package/tasks/completed/ARCH-013-exit-code-constants.md +65 -0
- package/tasks/completed/ARCH-014-sed-incompatibility.md +96 -0
- package/tasks/completed/ARCH-015-docs-todo-tracking.md +83 -0
- package/tasks/completed/BUG-dash-001-tasks-filter-error.md +31 -0
- package/tasks/completed/BUG-dash-002-agents-unknown.md +41 -0
- package/tasks/completed/CLEAN-001.md +38 -0
- package/tasks/completed/CLEAN-002.md +43 -0
- package/tasks/completed/CLEAN-003.md +47 -0
- package/tasks/completed/CLEAN-004.md +56 -0
- package/tasks/completed/CLEAN-005.md +75 -0
- package/tasks/completed/CLEAN-006.md +47 -0
- package/tasks/completed/CLEAN-007.md +34 -0
- package/tasks/completed/CLEAN-008.md +49 -0
- package/tasks/completed/CLEAN-012.md +58 -0
- package/tasks/completed/CLEAN-013.md +45 -0
- package/tasks/completed/FEATURE-001a-dashboard-wireframes.md +162 -0
- package/tasks/completed/IMPL-007a-daemon-notifications-module.md +82 -0
- package/tasks/completed/IMPL-007b-daemon-sync-module.md +71 -0
- package/tasks/completed/IMPL-007c-daemon-state-module.md +80 -0
- package/tasks/completed/IMPL-007d-daemon-routing-module.md +77 -0
- package/tasks/completed/IMPL-007e-daemon-display-module.md +77 -0
- package/tasks/completed/IMPL-007f-daemon-integration.md +124 -0
- package/tasks/completed/PLAT-1-heimdall.md +420 -0
- package/tasks/completed/SEC-001-sql-injection-fix.md +58 -0
- package/tasks/completed/SEC-002-notification-injection-fix.md +45 -0
- package/tasks/completed/SEC-003-eval-injection-fix.md +54 -0
- package/tasks/completed/SEC-004-pid-race-condition-fix.md +49 -0
- package/tasks/completed/SEC-005-worker-loop-path-fix.md +51 -0
- package/tasks/completed/SEC-006-eval-agent-names.md +55 -0
- package/tasks/completed/SEC-007-spawn-escaping.md +67 -0
- package/tasks/completed/TASK-DASH-001-server-infrastructure.md +185 -0
- package/tasks/completed/TASK-anvil-001-dashboard-frontend.md +133 -0
- package/tasks/completed/review-bmad-aegis.md +89 -0
- package/tasks/completed/review-bmad-anvil.md +80 -0
- package/tasks/completed/review-bmad-crucible.md +81 -0
- package/tasks/completed/review-bmad-ember.md +90 -0
- package/tasks/completed/review-bmad-furnace.md +79 -0
- package/tasks/completed/review-bmad-pixel.md +82 -0
- package/tasks/completed/review-bmad-scribe.md +92 -0
- package/tasks/completed/review-bmad-sentinel.md +83 -0
- package/tasks/pending/ARCH-004-git-bash-detection-duplication.md +72 -0
- package/tasks/pending/ARCH-005-missing-src-directory.md +95 -0
- package/tasks/pending/ARCH-006-task-template-location.md +64 -0
- package/tasks/pending/ARCH-008-forge-master-vs-hub.md +81 -0
- package/tasks/pending/ARCH-010-missing-index-files.md +84 -0
- package/tasks/pending/CLEAN-009.md +31 -0
- package/tasks/pending/CLEAN-010.md +30 -0
- package/tasks/pending/CLEAN-011.md +30 -0
- package/tasks/pending/CLEAN-014.md +32 -0
- package/tasks/pending/DESIGN-dash-001-layout-review.md +45 -0
- package/tasks/pending/FEATURE-001-dashboard-mvp.md +268 -0
- package/tasks/review/ARCH-007-daemon-monolith.md +162 -0
- package/tasks/review/bmad-review-aegis.md +349 -0
- package/tasks/review/bmad-review-anvil.md +259 -0
- package/tasks/review/bmad-review-crucible.md +277 -0
- package/tasks/review/bmad-review-ember.md +307 -0
- package/tasks/review/bmad-review-furnace.md +285 -0
- package/tasks/review/bmad-review-pixel.md +329 -0
- package/tasks/review/bmad-review-scribe.md +361 -0
- package/tasks/review/bmad-review-sentinel.md +242 -0
- package/tasks/review/task-001.md +78 -0
|
@@ -0,0 +1,1164 @@
|
|
|
1
|
+
# Dashboard MVP - Wireframes and UX Specification
|
|
2
|
+
|
|
3
|
+
**Created by:** Pixel (UX Designer)
|
|
4
|
+
**Date:** 2026-01-16
|
|
5
|
+
**Version:** 1.0
|
|
6
|
+
**Status:** Final
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Table of Contents
|
|
11
|
+
|
|
12
|
+
1. [User Stories](#user-stories)
|
|
13
|
+
2. [Design Principles](#design-principles)
|
|
14
|
+
3. [Main Dashboard Wireframe](#main-dashboard-wireframe)
|
|
15
|
+
4. [Component Specifications](#component-specifications)
|
|
16
|
+
5. [Interaction Flows](#interaction-flows)
|
|
17
|
+
6. [State Documentation](#state-documentation)
|
|
18
|
+
7. [Actionable Items UX](#actionable-items-ux---the-killer-feature)
|
|
19
|
+
8. [Dark Mode Specification](#dark-mode-specification)
|
|
20
|
+
9. [Accessibility](#accessibility)
|
|
21
|
+
10. [Responsive Design](#responsive-design)
|
|
22
|
+
11. [Keyboard Shortcuts](#keyboard-shortcuts)
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## User Stories
|
|
27
|
+
|
|
28
|
+
### Primary User: The Developer
|
|
29
|
+
|
|
30
|
+
**Morning Check-in Flow:**
|
|
31
|
+
> "As a developer starting my day, I open the dashboard and within 3 seconds I know exactly what needs my attention. No cognitive overload, just clarity."
|
|
32
|
+
|
|
33
|
+
**Dispatch Flow:**
|
|
34
|
+
> "As a developer, I see a stale documentation warning. One click on 'Dispatch Scribe' and the task is created. I watch the agent pick it up and start working. Satisfying."
|
|
35
|
+
|
|
36
|
+
**Monitor Progress Flow:**
|
|
37
|
+
> "As a developer, I glance at the agents panel and see Anvil is working on my frontend task. The status updates in real-time. I feel informed without having to context-switch."
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Design Principles
|
|
42
|
+
|
|
43
|
+
1. **Progressive Disclosure** - Summary first, details on demand
|
|
44
|
+
2. **Immediate Feedback** - Every action confirms within 100ms
|
|
45
|
+
3. **Error Prevention** - Dangerous actions require confirmation
|
|
46
|
+
4. **Accessibility First** - WCAG 2.1 AA, keyboard nav, screen reader support
|
|
47
|
+
5. **Mobile Responsive** - Check status from anywhere
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Main Dashboard Wireframe
|
|
52
|
+
|
|
53
|
+
### Desktop Layout (1200px+)
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
+-----------------------------------------------------------------------------------+
|
|
57
|
+
| |
|
|
58
|
+
| VIBE FORGE DASHBOARD [Settings] [Dark/Light] |
|
|
59
|
+
| |
|
|
60
|
+
+-----------------------------------------------------------------------------------+
|
|
61
|
+
| |
|
|
62
|
+
| +-------------------------+ +-------------------------+ +---------------------+|
|
|
63
|
+
| | | | | | ||
|
|
64
|
+
| | TASKS | | AGENTS | | NOTIFICATIONS ||
|
|
65
|
+
| | | | | | ||
|
|
66
|
+
| | [Pending] [Progress] | | | | Today ||
|
|
67
|
+
| | [Review] [Done] | | +-------------------+ | | ||
|
|
68
|
+
| | | | | [*] Planning Hub | | | [!] Task completed ||
|
|
69
|
+
| | +-------------------+ | | | idle | | | TASK-042 ||
|
|
70
|
+
| | | TASK-042 | | | +-------------------+ | | 2 min ago ||
|
|
71
|
+
| | | Fix login bug | | | | | ||
|
|
72
|
+
| | | @anvil | urgent | | | +-------------------+ | | [i] PR merged ||
|
|
73
|
+
| | +-------------------+ | | | [*] Anvil | | | #127 ||
|
|
74
|
+
| | | | | working | | | 15 min ago ||
|
|
75
|
+
| | +-------------------+ | | | TASK-041 | | | ||
|
|
76
|
+
| | | TASK-041 | | | +-------------------+ | | [!] Attention ||
|
|
77
|
+
| | | Dashboard UI | | | | | TASK-039 ||
|
|
78
|
+
| | | @anvil | high | | | +-------------------+ | | 1 hour ago ||
|
|
79
|
+
| | +-------------------+ | | | [*] Furnace | | | ||
|
|
80
|
+
| | | | | idle | | | Yesterday ||
|
|
81
|
+
| | +-------------------+ | | +-------------------+ | | ||
|
|
82
|
+
| | | TASK-040 | | | | | [i] Deploy success ||
|
|
83
|
+
| | | API endpoints | | | +-------------------+ | | v1.2.0 ||
|
|
84
|
+
| | | @furnace | medium | | | | [*] Crucible | | | ||
|
|
85
|
+
| | +-------------------+ | | | idle | | +---------------------+|
|
|
86
|
+
| | | | +-------------------+ | |
|
|
87
|
+
| +-------------------------+ +-------------------------+ |
|
|
88
|
+
| |
|
|
89
|
+
| +-------------------------------------------------------------------------------+|
|
|
90
|
+
| | ||
|
|
91
|
+
| | ISSUES (Actionable) [Refresh] ||
|
|
92
|
+
| | ||
|
|
93
|
+
| | +-------------------------------------------------------------------------+ ||
|
|
94
|
+
| | | [DOC] Stale Docs: README.md | ||
|
|
95
|
+
| | | Last updated 45 days ago [Dispatch Scribe >>] | ||
|
|
96
|
+
| | +-------------------------------------------------------------------------+ ||
|
|
97
|
+
| | ||
|
|
98
|
+
| | +-------------------------------------------------------------------------+ ||
|
|
99
|
+
| | | [TEST] Failing Test: auth.test.js | ||
|
|
100
|
+
| | | 2 tests failing since yesterday [Dispatch Crucible >>]| ||
|
|
101
|
+
| | +-------------------------------------------------------------------------+ ||
|
|
102
|
+
| | ||
|
|
103
|
+
| | +-------------------------------------------------------------------------+ ||
|
|
104
|
+
| | | [SEC] Security: lodash vulnerability | ||
|
|
105
|
+
| | | CVE-2021-23337 (high severity) [Dispatch Aegis >>] | ||
|
|
106
|
+
| | +-------------------------------------------------------------------------+ ||
|
|
107
|
+
| | ||
|
|
108
|
+
| | +-------------------------------------------------------------------------+ ||
|
|
109
|
+
| | | [COV] Low Coverage: utils.js | ||
|
|
110
|
+
| | | 34% coverage (threshold: 80%) [Dispatch Crucible >>]| ||
|
|
111
|
+
| | +-------------------------------------------------------------------------+ ||
|
|
112
|
+
| | ||
|
|
113
|
+
| +-------------------------------------------------------------------------------+|
|
|
114
|
+
| |
|
|
115
|
+
+-----------------------------------------------------------------------------------+
|
|
116
|
+
| Connected | Last updated: just now Vibe Forge v0.1.0 |
|
|
117
|
+
+-----------------------------------------------------------------------------------+
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Panel Proportions (Desktop)
|
|
121
|
+
|
|
122
|
+
- **Header:** 60px fixed
|
|
123
|
+
- **Main Content Area:** Remaining height, min-height 600px
|
|
124
|
+
- **Top Row (Tasks, Agents, Notifications):** 60% of content area
|
|
125
|
+
- Tasks Panel: 40% width
|
|
126
|
+
- Agents Panel: 30% width
|
|
127
|
+
- Notifications Panel: 30% width
|
|
128
|
+
- **Bottom Row (Issues):** 40% of content area, full width
|
|
129
|
+
- **Footer:** 32px fixed
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Component Specifications
|
|
134
|
+
|
|
135
|
+
### 1. Header Component
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
+-----------------------------------------------------------------------------------+
|
|
139
|
+
| |
|
|
140
|
+
| [Logo] VIBE FORGE DASHBOARD [Settings] [Dark/Light] |
|
|
141
|
+
| |
|
|
142
|
+
+-----------------------------------------------------------------------------------+
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**Elements:**
|
|
146
|
+
- **Logo:** 24x24px icon + text, clickable (refreshes dashboard)
|
|
147
|
+
- **Title:** "VIBE FORGE DASHBOARD" - font-size: 18px, font-weight: 600
|
|
148
|
+
- **Settings Button:** Gear icon, opens settings modal
|
|
149
|
+
- **Theme Toggle:** Sun/Moon icon, instant switch with 200ms transition
|
|
150
|
+
|
|
151
|
+
**Behavior:**
|
|
152
|
+
- Logo click: Refresh all panels
|
|
153
|
+
- Settings: Opens modal with port config, auto-refresh interval, notification preferences
|
|
154
|
+
- Theme: Toggle between light and dark mode, persisted in localStorage
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
### 2. Tasks Panel
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
+---------------------------+
|
|
162
|
+
| |
|
|
163
|
+
| TASKS |
|
|
164
|
+
| |
|
|
165
|
+
| [Pending] [Progress] |
|
|
166
|
+
| [Review] [Done] |
|
|
167
|
+
| |
|
|
168
|
+
| +---------------------+ |
|
|
169
|
+
| | [Priority] TASK-042 | |
|
|
170
|
+
| | Fix login bug | |
|
|
171
|
+
| | @anvil | 2h ago | |
|
|
172
|
+
| +---------------------+ |
|
|
173
|
+
| |
|
|
174
|
+
| +---------------------+ |
|
|
175
|
+
| | [Priority] TASK-041 | |
|
|
176
|
+
| | Dashboard UI | |
|
|
177
|
+
| | @anvil | 5h ago | |
|
|
178
|
+
| +---------------------+ |
|
|
179
|
+
| |
|
|
180
|
+
+---------------------------+
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
**Filter Tabs:**
|
|
184
|
+
- Pending (default selected)
|
|
185
|
+
- In Progress
|
|
186
|
+
- In Review
|
|
187
|
+
- Done (last 24h only)
|
|
188
|
+
|
|
189
|
+
**Task Card Elements:**
|
|
190
|
+
- Priority indicator (colored dot: red=critical, orange=high, yellow=medium, blue=low)
|
|
191
|
+
- Task ID (monospace font)
|
|
192
|
+
- Task title (truncate at 30 chars with ellipsis)
|
|
193
|
+
- Assigned agent badge
|
|
194
|
+
- Time since last update
|
|
195
|
+
|
|
196
|
+
**Interactions:**
|
|
197
|
+
- Click card: Expand inline to show full details + actions
|
|
198
|
+
- Hover: Subtle highlight (2px elevation change)
|
|
199
|
+
- Filter tab click: Filter tasks, update count badges
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
### 3. Agents Panel
|
|
204
|
+
|
|
205
|
+
```
|
|
206
|
+
+-------------------------+
|
|
207
|
+
| |
|
|
208
|
+
| AGENTS |
|
|
209
|
+
| |
|
|
210
|
+
| +-------------------+ |
|
|
211
|
+
| | [Avatar] Hub | |
|
|
212
|
+
| | Status: idle | |
|
|
213
|
+
| | Ready for work | |
|
|
214
|
+
| +-------------------+ |
|
|
215
|
+
| |
|
|
216
|
+
| +-------------------+ |
|
|
217
|
+
| | [Avatar] Anvil | |
|
|
218
|
+
| | Status: working | |
|
|
219
|
+
| | TASK-041 | |
|
|
220
|
+
| | [-----=====> ] | |
|
|
221
|
+
| +-------------------+ |
|
|
222
|
+
| |
|
|
223
|
+
| +-------------------+ |
|
|
224
|
+
| | [Avatar] Furnace | |
|
|
225
|
+
| | Status: idle | |
|
|
226
|
+
| | Ready for work | |
|
|
227
|
+
| +-------------------+ |
|
|
228
|
+
| |
|
|
229
|
+
+-------------------------+
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
**Agent Status Types:**
|
|
233
|
+
| Status | Color | Icon | Description |
|
|
234
|
+
|--------|-------|------|-------------|
|
|
235
|
+
| idle | Green | Circle | Ready for work |
|
|
236
|
+
| working | Blue | Spinning | Currently on a task |
|
|
237
|
+
| blocked | Yellow | Warning | Waiting on something |
|
|
238
|
+
| error | Red | X | Needs attention |
|
|
239
|
+
| offline | Gray | Dash | Not connected |
|
|
240
|
+
|
|
241
|
+
**Agent Card Elements:**
|
|
242
|
+
- Avatar: Colored circle with first letter of agent name
|
|
243
|
+
- Agent name
|
|
244
|
+
- Status badge with color
|
|
245
|
+
- Current task (if working)
|
|
246
|
+
- Progress bar (if available)
|
|
247
|
+
|
|
248
|
+
**Interactions:**
|
|
249
|
+
- Hover: Show full agent details in tooltip (specialty, last 3 tasks)
|
|
250
|
+
- Click: Expand to show task history, assign task option
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
### 4. Notifications Panel
|
|
255
|
+
|
|
256
|
+
```
|
|
257
|
+
+---------------------+
|
|
258
|
+
| |
|
|
259
|
+
| NOTIFICATIONS |
|
|
260
|
+
| |
|
|
261
|
+
| Today |
|
|
262
|
+
| |
|
|
263
|
+
| [!] Task completed |
|
|
264
|
+
| TASK-042 |
|
|
265
|
+
| 2 min ago |
|
|
266
|
+
| [Dismiss]|
|
|
267
|
+
| |
|
|
268
|
+
| [i] PR merged |
|
|
269
|
+
| #127 |
|
|
270
|
+
| 15 min ago |
|
|
271
|
+
| [Dismiss]|
|
|
272
|
+
| |
|
|
273
|
+
| [!] Attention |
|
|
274
|
+
| TASK-039 |
|
|
275
|
+
| needs review |
|
|
276
|
+
| [View] [Dispatch] |
|
|
277
|
+
| |
|
|
278
|
+
+---------------------+
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
**Notification Types:**
|
|
282
|
+
| Type | Icon | Color | Sound |
|
|
283
|
+
|------|------|-------|-------|
|
|
284
|
+
| success | Checkmark | Green | Optional chime |
|
|
285
|
+
| info | Info circle | Blue | None |
|
|
286
|
+
| warning | Warning | Yellow | None |
|
|
287
|
+
| attention | Bell | Orange | Optional ping |
|
|
288
|
+
| error | X circle | Red | Alert sound |
|
|
289
|
+
|
|
290
|
+
**Notification Elements:**
|
|
291
|
+
- Type icon (color-coded)
|
|
292
|
+
- Title
|
|
293
|
+
- Description (max 2 lines)
|
|
294
|
+
- Timestamp (relative: "2 min ago", "Yesterday")
|
|
295
|
+
- Action buttons (contextual)
|
|
296
|
+
|
|
297
|
+
**Interactions:**
|
|
298
|
+
- Dismiss: Remove single notification
|
|
299
|
+
- View: Navigate to related task
|
|
300
|
+
- Dispatch: Open dispatch flow for actionable notifications
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
### 5. Issues Panel (The Killer Feature)
|
|
305
|
+
|
|
306
|
+
```
|
|
307
|
+
+-------------------------------------------------------------------------------+
|
|
308
|
+
| |
|
|
309
|
+
| ISSUES (Actionable) [Refresh] [Collapse] |
|
|
310
|
+
| |
|
|
311
|
+
| +-------------------------------------------------------------------------+ |
|
|
312
|
+
| | [DOC] Stale Docs: README.md | |
|
|
313
|
+
| | Last updated 45 days ago | |
|
|
314
|
+
| | Threshold: 30 days | Severity: Medium | |
|
|
315
|
+
| | [Dispatch Scribe] | |
|
|
316
|
+
| +-------------------------------------------------------------------------+ |
|
|
317
|
+
| |
|
|
318
|
+
| +-------------------------------------------------------------------------+ |
|
|
319
|
+
| | [TEST] Failing Test: auth.test.js | |
|
|
320
|
+
| | 2 tests failing: testLogin, testLogout | |
|
|
321
|
+
| | First failed: yesterday 3:45 PM | |
|
|
322
|
+
| | [Dispatch Crucible] | |
|
|
323
|
+
| +-------------------------------------------------------------------------+ |
|
|
324
|
+
| |
|
|
325
|
+
+-------------------------------------------------------------------------------+
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
**Issue Types and Categories:**
|
|
329
|
+
|
|
330
|
+
| Category | Icon | Color | Agent | Priority |
|
|
331
|
+
|----------|------|-------|-------|----------|
|
|
332
|
+
| DOC | Document | Purple | Scribe | Medium |
|
|
333
|
+
| TEST | Flask | Red | Crucible | High |
|
|
334
|
+
| SEC | Shield | Red | Aegis | Critical |
|
|
335
|
+
| COV | Chart | Yellow | Crucible | Medium |
|
|
336
|
+
| TODO | Checkbox | Blue | Varies | Low |
|
|
337
|
+
| REVIEW | Eye | Orange | Sentinel | High |
|
|
338
|
+
|
|
339
|
+
**Issue Card Elements:**
|
|
340
|
+
- Category badge (colored icon)
|
|
341
|
+
- Issue title
|
|
342
|
+
- Detail line 1: Specific information
|
|
343
|
+
- Detail line 2: Context/threshold
|
|
344
|
+
- Severity indicator
|
|
345
|
+
- Dispatch button with agent name
|
|
346
|
+
|
|
347
|
+
**Interactions:**
|
|
348
|
+
- Hover over issue: Show full details in expanded state
|
|
349
|
+
- Click dispatch button: Open dispatch confirmation modal
|
|
350
|
+
- Refresh: Re-scan for issues
|
|
351
|
+
- Collapse: Minimize panel to header only
|
|
352
|
+
|
|
353
|
+
---
|
|
354
|
+
|
|
355
|
+
## Interaction Flows
|
|
356
|
+
|
|
357
|
+
### Flow 1: Morning Check-in
|
|
358
|
+
|
|
359
|
+
```
|
|
360
|
+
User opens dashboard
|
|
361
|
+
|
|
|
362
|
+
v
|
|
363
|
+
+-------------------+
|
|
364
|
+
| Dashboard loads |
|
|
365
|
+
| Shows loading |
|
|
366
|
+
| skeleton (300ms) |
|
|
367
|
+
+-------------------+
|
|
368
|
+
|
|
|
369
|
+
v
|
|
370
|
+
+-------------------+
|
|
371
|
+
| Data populated |
|
|
372
|
+
| Panels animate in |
|
|
373
|
+
| (150ms stagger) |
|
|
374
|
+
+-------------------+
|
|
375
|
+
|
|
|
376
|
+
v
|
|
377
|
+
User sees at a glance:
|
|
378
|
+
- 3 pending tasks
|
|
379
|
+
- 2 agents working
|
|
380
|
+
- 1 attention notification
|
|
381
|
+
- 2 issues to address
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
### Flow 2: Dispatch Agent (Primary Flow)
|
|
385
|
+
|
|
386
|
+
```
|
|
387
|
+
User sees issue in Issues panel
|
|
388
|
+
|
|
|
389
|
+
v
|
|
390
|
+
+-------------------+
|
|
391
|
+
| User clicks |
|
|
392
|
+
| [Dispatch Scribe] |
|
|
393
|
+
+-------------------+
|
|
394
|
+
|
|
|
395
|
+
v
|
|
396
|
+
+-------------------+
|
|
397
|
+
| Confirmation |
|
|
398
|
+
| Modal appears |
|
|
399
|
+
| (200ms fade in) |
|
|
400
|
+
+-------------------+
|
|
401
|
+
|
|
|
402
|
+
+-----------+
|
|
403
|
+
| User |
|
|
404
|
+
| reviews |
|
|
405
|
+
| details |
|
|
406
|
+
+-----------+
|
|
407
|
+
|
|
|
408
|
+
+----+----+
|
|
409
|
+
| |
|
|
410
|
+
v v
|
|
411
|
+
[Cancel] [Confirm]
|
|
412
|
+
| |
|
|
413
|
+
v v
|
|
414
|
+
Modal +-------------------+
|
|
415
|
+
closes | POST /api/dispatch|
|
|
416
|
+
| shows spinner |
|
|
417
|
+
+-------------------+
|
|
418
|
+
|
|
|
419
|
+
v
|
|
420
|
+
+-------------------+
|
|
421
|
+
| Success toast |
|
|
422
|
+
| "Task AUTO-001 |
|
|
423
|
+
| dispatched to |
|
|
424
|
+
| Scribe" |
|
|
425
|
+
+-------------------+
|
|
426
|
+
|
|
|
427
|
+
v
|
|
428
|
+
+-------------------+
|
|
429
|
+
| Issue removed |
|
|
430
|
+
| from panel |
|
|
431
|
+
| (slide out 200ms) |
|
|
432
|
+
+-------------------+
|
|
433
|
+
|
|
|
434
|
+
v
|
|
435
|
+
+-------------------+
|
|
436
|
+
| Task appears in |
|
|
437
|
+
| Tasks panel |
|
|
438
|
+
| (slide in 200ms) |
|
|
439
|
+
+-------------------+
|
|
440
|
+
|
|
|
441
|
+
v
|
|
442
|
+
+-------------------+
|
|
443
|
+
| Agent status |
|
|
444
|
+
| updates to |
|
|
445
|
+
| "working" |
|
|
446
|
+
+-------------------+
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
### Flow 3: Task Card Expansion
|
|
450
|
+
|
|
451
|
+
```
|
|
452
|
+
User clicks task card
|
|
453
|
+
|
|
|
454
|
+
v
|
|
455
|
+
+-------------------+
|
|
456
|
+
| Card expands |
|
|
457
|
+
| inline (200ms) |
|
|
458
|
+
| Other cards shift |
|
|
459
|
+
+-------------------+
|
|
460
|
+
|
|
|
461
|
+
v
|
|
462
|
+
Expanded view shows:
|
|
463
|
+
+--------------------------------+
|
|
464
|
+
| TASK-042 |
|
|
465
|
+
| Fix login bug |
|
|
466
|
+
| |
|
|
467
|
+
| Status: In Progress |
|
|
468
|
+
| Assigned: @anvil |
|
|
469
|
+
| Priority: High |
|
|
470
|
+
| Created: 2h ago |
|
|
471
|
+
| |
|
|
472
|
+
| Description: |
|
|
473
|
+
| Users report intermittent |
|
|
474
|
+
| login failures... |
|
|
475
|
+
| |
|
|
476
|
+
| [View File] [Reassign] [Close] |
|
|
477
|
+
+--------------------------------+
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
### Flow 4: Theme Toggle
|
|
481
|
+
|
|
482
|
+
```
|
|
483
|
+
User clicks theme toggle
|
|
484
|
+
|
|
|
485
|
+
v
|
|
486
|
+
+-------------------+
|
|
487
|
+
| Icon rotates |
|
|
488
|
+
| (200ms) |
|
|
489
|
+
+-------------------+
|
|
490
|
+
|
|
|
491
|
+
v
|
|
492
|
+
+-------------------+
|
|
493
|
+
| CSS variables |
|
|
494
|
+
| transition |
|
|
495
|
+
| (300ms ease) |
|
|
496
|
+
+-------------------+
|
|
497
|
+
|
|
|
498
|
+
v
|
|
499
|
+
+-------------------+
|
|
500
|
+
| Preference saved |
|
|
501
|
+
| to localStorage |
|
|
502
|
+
+-------------------+
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
---
|
|
506
|
+
|
|
507
|
+
## State Documentation
|
|
508
|
+
|
|
509
|
+
### Loading States
|
|
510
|
+
|
|
511
|
+
**Initial Page Load:**
|
|
512
|
+
```
|
|
513
|
+
+-----------------------------------------------------------------------------------+
|
|
514
|
+
| |
|
|
515
|
+
| VIBE FORGE DASHBOARD [Settings] [Dark/Light] |
|
|
516
|
+
| |
|
|
517
|
+
+-----------------------------------------------------------------------------------+
|
|
518
|
+
| |
|
|
519
|
+
| +-------------------------+ +-------------------------+ +---------------------+|
|
|
520
|
+
| | TASKS | | AGENTS | | NOTIFICATIONS ||
|
|
521
|
+
| | | | | | ||
|
|
522
|
+
| | [==================] | | [==================] | | [================] ||
|
|
523
|
+
| | [==================] | | [==================] | | [================] ||
|
|
524
|
+
| | [================] | | [==================] | | [================] ||
|
|
525
|
+
| | [================] | | [==================] | | ||
|
|
526
|
+
| | | | | | ||
|
|
527
|
+
| +-------------------------+ +-------------------------+ +---------------------+|
|
|
528
|
+
| |
|
|
529
|
+
| +-------------------------------------------------------------------------------+|
|
|
530
|
+
| | ISSUES (Actionable) ||
|
|
531
|
+
| | [====================================================================] ||
|
|
532
|
+
| | [====================================================================] ||
|
|
533
|
+
| +-------------------------------------------------------------------------------+|
|
|
534
|
+
| |
|
|
535
|
+
+-----------------------------------------------------------------------------------+
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
**Skeleton Animation:**
|
|
539
|
+
- Use shimmer effect (gradient animation left to right)
|
|
540
|
+
- Duration: 1.5s per cycle
|
|
541
|
+
- Show for minimum 300ms even if data loads faster (prevents flash)
|
|
542
|
+
|
|
543
|
+
**Panel-Specific Loading:**
|
|
544
|
+
```
|
|
545
|
+
+-------------------------+
|
|
546
|
+
| TASKS [Spin] |
|
|
547
|
+
| |
|
|
548
|
+
| Loading tasks... |
|
|
549
|
+
| |
|
|
550
|
+
+-------------------------+
|
|
551
|
+
```
|
|
552
|
+
- Small spinner in panel header
|
|
553
|
+
- "Loading [items]..." text
|
|
554
|
+
|
|
555
|
+
---
|
|
556
|
+
|
|
557
|
+
### Empty States
|
|
558
|
+
|
|
559
|
+
**No Pending Tasks:**
|
|
560
|
+
```
|
|
561
|
+
+-------------------------+
|
|
562
|
+
| |
|
|
563
|
+
| TASKS |
|
|
564
|
+
| |
|
|
565
|
+
| [Checkmark] |
|
|
566
|
+
| |
|
|
567
|
+
| All caught up! |
|
|
568
|
+
| No pending tasks |
|
|
569
|
+
| |
|
|
570
|
+
| [Create Task] |
|
|
571
|
+
| |
|
|
572
|
+
+-------------------------+
|
|
573
|
+
```
|
|
574
|
+
|
|
575
|
+
**No Active Agents:**
|
|
576
|
+
```
|
|
577
|
+
+-------------------------+
|
|
578
|
+
| |
|
|
579
|
+
| AGENTS |
|
|
580
|
+
| |
|
|
581
|
+
| [Moon icon] |
|
|
582
|
+
| |
|
|
583
|
+
| All agents idle |
|
|
584
|
+
| Ready when you are |
|
|
585
|
+
| |
|
|
586
|
+
+-------------------------+
|
|
587
|
+
```
|
|
588
|
+
|
|
589
|
+
**No Notifications:**
|
|
590
|
+
```
|
|
591
|
+
+---------------------+
|
|
592
|
+
| |
|
|
593
|
+
| NOTIFICATIONS |
|
|
594
|
+
| |
|
|
595
|
+
| [Bell icon] |
|
|
596
|
+
| |
|
|
597
|
+
| Quiet day! |
|
|
598
|
+
| No notifications |
|
|
599
|
+
| |
|
|
600
|
+
+---------------------+
|
|
601
|
+
```
|
|
602
|
+
|
|
603
|
+
**No Issues (Celebration State!):**
|
|
604
|
+
```
|
|
605
|
+
+-------------------------------------------------------------------------------+
|
|
606
|
+
| |
|
|
607
|
+
| ISSUES (Actionable) |
|
|
608
|
+
| |
|
|
609
|
+
| [Party emoji or confetti icon] |
|
|
610
|
+
| |
|
|
611
|
+
| Everything looks great! |
|
|
612
|
+
| No stale docs, failing tests, or security issues |
|
|
613
|
+
| |
|
|
614
|
+
+-------------------------------------------------------------------------------+
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
---
|
|
618
|
+
|
|
619
|
+
### Error States
|
|
620
|
+
|
|
621
|
+
**Connection Lost:**
|
|
622
|
+
```
|
|
623
|
+
+-----------------------------------------------------------------------------------+
|
|
624
|
+
| |
|
|
625
|
+
| [!] Connection Lost [Retry] |
|
|
626
|
+
| Dashboard cannot reach the forge server. Check if the daemon is running. |
|
|
627
|
+
| |
|
|
628
|
+
+-----------------------------------------------------------------------------------+
|
|
629
|
+
```
|
|
630
|
+
- Full-width banner at top
|
|
631
|
+
- Orange background
|
|
632
|
+
- Shows retry button
|
|
633
|
+
- Auto-retry every 5 seconds
|
|
634
|
+
|
|
635
|
+
**API Error (Panel-specific):**
|
|
636
|
+
```
|
|
637
|
+
+-------------------------+
|
|
638
|
+
| |
|
|
639
|
+
| TASKS [Retry] |
|
|
640
|
+
| |
|
|
641
|
+
| [Warning icon] |
|
|
642
|
+
| |
|
|
643
|
+
| Failed to load tasks |
|
|
644
|
+
| Error: Timeout |
|
|
645
|
+
| |
|
|
646
|
+
| [Retry Now] |
|
|
647
|
+
| |
|
|
648
|
+
+-------------------------+
|
|
649
|
+
```
|
|
650
|
+
- Retry button in panel header
|
|
651
|
+
- Error details shown
|
|
652
|
+
- Other panels remain functional
|
|
653
|
+
|
|
654
|
+
**Dispatch Failed:**
|
|
655
|
+
```
|
|
656
|
+
+------------------------------------+
|
|
657
|
+
| |
|
|
658
|
+
| [X] Dispatch Failed |
|
|
659
|
+
| |
|
|
660
|
+
| Could not create task for Scribe |
|
|
661
|
+
| |
|
|
662
|
+
| Error: Agent currently offline |
|
|
663
|
+
| |
|
|
664
|
+
| [Try Again] [Cancel] |
|
|
665
|
+
| |
|
|
666
|
+
+------------------------------------+
|
|
667
|
+
```
|
|
668
|
+
- Modal with error details
|
|
669
|
+
- Option to retry or cancel
|
|
670
|
+
|
|
671
|
+
---
|
|
672
|
+
|
|
673
|
+
### Success States
|
|
674
|
+
|
|
675
|
+
**Task Dispatched:**
|
|
676
|
+
```
|
|
677
|
+
Toast notification (bottom-right):
|
|
678
|
+
+--------------------------------+
|
|
679
|
+
| [Checkmark] |
|
|
680
|
+
| Task dispatched! |
|
|
681
|
+
| AUTO-047 assigned to Scribe |
|
|
682
|
+
| |
|
|
683
|
+
| [View Task] [Dismiss] |
|
|
684
|
+
+--------------------------------+
|
|
685
|
+
```
|
|
686
|
+
- Auto-dismiss after 5 seconds
|
|
687
|
+
- Click to view task
|
|
688
|
+
- Slide-in animation from right
|
|
689
|
+
|
|
690
|
+
**Task Completed:**
|
|
691
|
+
```
|
|
692
|
+
Toast notification:
|
|
693
|
+
+--------------------------------+
|
|
694
|
+
| [Checkmark] |
|
|
695
|
+
| Task completed! |
|
|
696
|
+
| TASK-042 marked as done |
|
|
697
|
+
| |
|
|
698
|
+
| [View] [Dismiss] |
|
|
699
|
+
+--------------------------------+
|
|
700
|
+
```
|
|
701
|
+
|
|
702
|
+
---
|
|
703
|
+
|
|
704
|
+
## Actionable Items UX - The Killer Feature
|
|
705
|
+
|
|
706
|
+
### Issue Detection and Display
|
|
707
|
+
|
|
708
|
+
Issues are automatically detected from multiple sources and displayed with clear, actionable information.
|
|
709
|
+
|
|
710
|
+
**Issue Card Anatomy:**
|
|
711
|
+
|
|
712
|
+
```
|
|
713
|
+
+-------------------------------------------------------------------------+
|
|
714
|
+
| [Icon] Category Label: Specific Item |
|
|
715
|
+
| |
|
|
716
|
+
| Detail line with context |
|
|
717
|
+
| Additional info (threshold, severity, time) |
|
|
718
|
+
| |
|
|
719
|
+
| [Dispatch AgentName >>] |
|
|
720
|
+
+-------------------------------------------------------------------------+
|
|
721
|
+
```
|
|
722
|
+
|
|
723
|
+
### Dispatch Button UX
|
|
724
|
+
|
|
725
|
+
**Button States:**
|
|
726
|
+
|
|
727
|
+
| State | Appearance | Cursor |
|
|
728
|
+
|-------|------------|--------|
|
|
729
|
+
| Default | Outlined, accent color | Pointer |
|
|
730
|
+
| Hover | Filled, accent color | Pointer |
|
|
731
|
+
| Active | Filled, darker accent | Pointer |
|
|
732
|
+
| Loading | Spinner replacing text | Wait |
|
|
733
|
+
| Disabled | Grayed out | Not-allowed |
|
|
734
|
+
|
|
735
|
+
**Button Label Format:**
|
|
736
|
+
- "Dispatch [AgentName]" with arrow icon
|
|
737
|
+
- Uses agent's signature color
|
|
738
|
+
- Shows agent avatar on hover
|
|
739
|
+
|
|
740
|
+
### Dispatch Confirmation Modal
|
|
741
|
+
|
|
742
|
+
```
|
|
743
|
+
+------------------------------------------------+
|
|
744
|
+
| |
|
|
745
|
+
| Dispatch Task to Scribe |
|
|
746
|
+
| [X] |
|
|
747
|
+
|------------------------------------------------|
|
|
748
|
+
| |
|
|
749
|
+
| Issue: Stale documentation |
|
|
750
|
+
| Target: README.md |
|
|
751
|
+
| Reason: Last updated 45 days ago |
|
|
752
|
+
| |
|
|
753
|
+
| This will create a new task: |
|
|
754
|
+
| +------------------------------------------+ |
|
|
755
|
+
| | AUTO-047 | |
|
|
756
|
+
| | Update README.md documentation | |
|
|
757
|
+
| | Assigned to: Scribe | |
|
|
758
|
+
| | Priority: Medium | |
|
|
759
|
+
| +------------------------------------------+ |
|
|
760
|
+
| |
|
|
761
|
+
| [Cancel] [Confirm Dispatch] |
|
|
762
|
+
| |
|
|
763
|
+
+------------------------------------------------+
|
|
764
|
+
```
|
|
765
|
+
|
|
766
|
+
**Modal Behavior:**
|
|
767
|
+
- Opens centered with overlay (0.5 opacity black)
|
|
768
|
+
- Escape key or overlay click cancels
|
|
769
|
+
- Tab cycles through interactive elements
|
|
770
|
+
- Focus trapped inside modal
|
|
771
|
+
- Auto-focus on Cancel button (safer default)
|
|
772
|
+
|
|
773
|
+
### Post-Dispatch Feedback
|
|
774
|
+
|
|
775
|
+
1. **Immediate** (0ms): Button shows loading spinner
|
|
776
|
+
2. **Success** (typically 200-500ms):
|
|
777
|
+
- Modal closes with fade out
|
|
778
|
+
- Success toast appears
|
|
779
|
+
- Issue card slides out of Issues panel
|
|
780
|
+
- New task card slides into Tasks panel
|
|
781
|
+
- Agent status updates (if they pick it up quickly)
|
|
782
|
+
3. **Failure**: Modal stays open, shows error message, allows retry
|
|
783
|
+
|
|
784
|
+
---
|
|
785
|
+
|
|
786
|
+
## Dark Mode Specification
|
|
787
|
+
|
|
788
|
+
### Color Palette
|
|
789
|
+
|
|
790
|
+
**Dark Mode (Default):**
|
|
791
|
+
|
|
792
|
+
| Token | Hex | Usage |
|
|
793
|
+
|-------|-----|-------|
|
|
794
|
+
| `--bg-primary` | #0D1117 | Page background |
|
|
795
|
+
| `--bg-secondary` | #161B22 | Panel backgrounds |
|
|
796
|
+
| `--bg-tertiary` | #21262D | Card backgrounds |
|
|
797
|
+
| `--bg-hover` | #30363D | Hover states |
|
|
798
|
+
| `--bg-active` | #484F58 | Active/selected states |
|
|
799
|
+
| `--border-default` | #30363D | Default borders |
|
|
800
|
+
| `--border-muted` | #21262D | Subtle borders |
|
|
801
|
+
| `--text-primary` | #F0F6FC | Primary text |
|
|
802
|
+
| `--text-secondary` | #8B949E | Secondary text |
|
|
803
|
+
| `--text-muted` | #6E7681 | Muted text |
|
|
804
|
+
| `--text-link` | #58A6FF | Links |
|
|
805
|
+
| `--accent-primary` | #238636 | Primary accent (green) |
|
|
806
|
+
| `--accent-secondary` | #1F6FEB | Secondary accent (blue) |
|
|
807
|
+
| `--danger` | #F85149 | Error/danger |
|
|
808
|
+
| `--warning` | #D29922 | Warning |
|
|
809
|
+
| `--success` | #3FB950 | Success |
|
|
810
|
+
| `--info` | #58A6FF | Info |
|
|
811
|
+
|
|
812
|
+
**Agent Colors (Dark Mode Optimized):**
|
|
813
|
+
|
|
814
|
+
| Agent | Color | Hex |
|
|
815
|
+
|-------|-------|-----|
|
|
816
|
+
| Planning Hub | Purple | #A371F7 |
|
|
817
|
+
| Anvil | Blue | #58A6FF |
|
|
818
|
+
| Furnace | Orange | #F0883E |
|
|
819
|
+
| Crucible | Green | #3FB950 |
|
|
820
|
+
| Scribe | Cyan | #56D4DD |
|
|
821
|
+
| Sentinel | Yellow | #D29922 |
|
|
822
|
+
| Ember | Red | #F85149 |
|
|
823
|
+
| Architect | Pink | #DB61A2 |
|
|
824
|
+
| Aegis | Gold | #E3B341 |
|
|
825
|
+
| Pixel | Magenta | #F778BA |
|
|
826
|
+
|
|
827
|
+
### Light Mode Colors
|
|
828
|
+
|
|
829
|
+
| Token | Hex | Usage |
|
|
830
|
+
|-------|-----|-------|
|
|
831
|
+
| `--bg-primary` | #FFFFFF | Page background |
|
|
832
|
+
| `--bg-secondary` | #F6F8FA | Panel backgrounds |
|
|
833
|
+
| `--bg-tertiary` | #FFFFFF | Card backgrounds |
|
|
834
|
+
| `--bg-hover` | #F3F4F6 | Hover states |
|
|
835
|
+
| `--bg-active` | #EAEEF2 | Active/selected states |
|
|
836
|
+
| `--border-default` | #D0D7DE | Default borders |
|
|
837
|
+
| `--border-muted` | #D8DEE4 | Subtle borders |
|
|
838
|
+
| `--text-primary` | #1F2328 | Primary text |
|
|
839
|
+
| `--text-secondary` | #656D76 | Secondary text |
|
|
840
|
+
| `--text-muted` | #8C959F | Muted text |
|
|
841
|
+
| `--text-link` | #0969DA | Links |
|
|
842
|
+
| `--accent-primary` | #1A7F37 | Primary accent (green) |
|
|
843
|
+
| `--accent-secondary` | #0969DA | Secondary accent (blue) |
|
|
844
|
+
| `--danger` | #CF222E | Error/danger |
|
|
845
|
+
| `--warning` | #9A6700 | Warning |
|
|
846
|
+
| `--success` | #1A7F37 | Success |
|
|
847
|
+
| `--info` | #0969DA | Info |
|
|
848
|
+
|
|
849
|
+
### Contrast Ratios (WCAG AA Compliant)
|
|
850
|
+
|
|
851
|
+
| Combination | Ratio | Status |
|
|
852
|
+
|-------------|-------|--------|
|
|
853
|
+
| text-primary on bg-secondary | 14.2:1 | Pass |
|
|
854
|
+
| text-secondary on bg-secondary | 6.1:1 | Pass |
|
|
855
|
+
| text-muted on bg-secondary | 4.6:1 | Pass (large text) |
|
|
856
|
+
| accent-primary on bg-tertiary | 5.2:1 | Pass |
|
|
857
|
+
| danger on bg-tertiary | 5.8:1 | Pass |
|
|
858
|
+
|
|
859
|
+
### CSS Variable Implementation
|
|
860
|
+
|
|
861
|
+
```css
|
|
862
|
+
:root {
|
|
863
|
+
/* Default: Dark Mode */
|
|
864
|
+
--bg-primary: #0D1117;
|
|
865
|
+
--bg-secondary: #161B22;
|
|
866
|
+
--bg-tertiary: #21262D;
|
|
867
|
+
/* ... other tokens */
|
|
868
|
+
|
|
869
|
+
/* Animation */
|
|
870
|
+
--transition-fast: 150ms;
|
|
871
|
+
--transition-normal: 200ms;
|
|
872
|
+
--transition-slow: 300ms;
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
[data-theme="light"] {
|
|
876
|
+
--bg-primary: #FFFFFF;
|
|
877
|
+
--bg-secondary: #F6F8FA;
|
|
878
|
+
--bg-tertiary: #FFFFFF;
|
|
879
|
+
/* ... other tokens */
|
|
880
|
+
}
|
|
881
|
+
|
|
882
|
+
/* Theme transition */
|
|
883
|
+
* {
|
|
884
|
+
transition: background-color var(--transition-normal),
|
|
885
|
+
color var(--transition-normal),
|
|
886
|
+
border-color var(--transition-normal);
|
|
887
|
+
}
|
|
888
|
+
```
|
|
889
|
+
|
|
890
|
+
---
|
|
891
|
+
|
|
892
|
+
## Accessibility
|
|
893
|
+
|
|
894
|
+
### Keyboard Navigation
|
|
895
|
+
|
|
896
|
+
**Global Shortcuts:**
|
|
897
|
+
| Key | Action |
|
|
898
|
+
|-----|--------|
|
|
899
|
+
| `Tab` | Move to next interactive element |
|
|
900
|
+
| `Shift+Tab` | Move to previous interactive element |
|
|
901
|
+
| `Escape` | Close modal/dropdown, deselect |
|
|
902
|
+
| `?` | Show keyboard shortcuts help |
|
|
903
|
+
|
|
904
|
+
**Panel Navigation:**
|
|
905
|
+
| Key | Action |
|
|
906
|
+
|-----|--------|
|
|
907
|
+
| `1` | Focus Tasks panel |
|
|
908
|
+
| `2` | Focus Agents panel |
|
|
909
|
+
| `3` | Focus Notifications panel |
|
|
910
|
+
| `4` | Focus Issues panel |
|
|
911
|
+
| `j/k` or `Arrow Down/Up` | Navigate items in focused panel |
|
|
912
|
+
| `Enter` | Expand/select current item |
|
|
913
|
+
| `d` | Dispatch (when on an issue) |
|
|
914
|
+
|
|
915
|
+
### Focus Indicators
|
|
916
|
+
|
|
917
|
+
```
|
|
918
|
+
+-------------------------+
|
|
919
|
+
| |
|
|
920
|
+
| +-------------------+ |
|
|
921
|
+
| | TASK-042 *| | <-- Focus ring (2px solid accent color)
|
|
922
|
+
| | Fix login bug | |
|
|
923
|
+
| | @anvil | 2h ago | |
|
|
924
|
+
| +-------------------+ |
|
|
925
|
+
| |
|
|
926
|
+
+-------------------------+
|
|
927
|
+
|
|
928
|
+
Focus ring styles:
|
|
929
|
+
- 2px solid outline
|
|
930
|
+
- 2px offset (so it doesn't overlap content)
|
|
931
|
+
- High contrast color (accent-secondary in dark mode)
|
|
932
|
+
- No outline on mouse focus (:focus-visible)
|
|
933
|
+
```
|
|
934
|
+
|
|
935
|
+
### Screen Reader Announcements
|
|
936
|
+
|
|
937
|
+
**ARIA Live Regions:**
|
|
938
|
+
```html
|
|
939
|
+
<!-- Toast notifications -->
|
|
940
|
+
<div role="status" aria-live="polite" aria-atomic="true">
|
|
941
|
+
<!-- Toast content announced when added -->
|
|
942
|
+
</div>
|
|
943
|
+
|
|
944
|
+
<!-- Error messages -->
|
|
945
|
+
<div role="alert" aria-live="assertive">
|
|
946
|
+
<!-- Errors announced immediately -->
|
|
947
|
+
</div>
|
|
948
|
+
|
|
949
|
+
<!-- Loading states -->
|
|
950
|
+
<div aria-busy="true" aria-describedby="loading-message">
|
|
951
|
+
<span id="loading-message" class="sr-only">Loading tasks</span>
|
|
952
|
+
</div>
|
|
953
|
+
```
|
|
954
|
+
|
|
955
|
+
**Semantic Landmarks:**
|
|
956
|
+
```html
|
|
957
|
+
<header role="banner">...</header>
|
|
958
|
+
<main role="main">
|
|
959
|
+
<section aria-labelledby="tasks-heading">...</section>
|
|
960
|
+
<section aria-labelledby="agents-heading">...</section>
|
|
961
|
+
<section aria-labelledby="notifications-heading">...</section>
|
|
962
|
+
<section aria-labelledby="issues-heading">...</section>
|
|
963
|
+
</main>
|
|
964
|
+
<footer role="contentinfo">...</footer>
|
|
965
|
+
```
|
|
966
|
+
|
|
967
|
+
### Color Independence
|
|
968
|
+
|
|
969
|
+
All information conveyed by color is also conveyed by:
|
|
970
|
+
- **Icons** (status icons for agents, category icons for issues)
|
|
971
|
+
- **Text labels** (status text, category labels)
|
|
972
|
+
- **Patterns** (error states have different borders)
|
|
973
|
+
|
|
974
|
+
Example: Agent status
|
|
975
|
+
- Green circle + "idle" text
|
|
976
|
+
- Blue spinning icon + "working" text
|
|
977
|
+
- Red X icon + "error" text
|
|
978
|
+
|
|
979
|
+
### Skip Links
|
|
980
|
+
|
|
981
|
+
```html
|
|
982
|
+
<a href="#main-content" class="skip-link">Skip to main content</a>
|
|
983
|
+
<a href="#tasks-panel" class="skip-link">Skip to tasks</a>
|
|
984
|
+
<a href="#issues-panel" class="skip-link">Skip to issues</a>
|
|
985
|
+
```
|
|
986
|
+
|
|
987
|
+
Skip links visible on focus, hidden otherwise.
|
|
988
|
+
|
|
989
|
+
---
|
|
990
|
+
|
|
991
|
+
## Responsive Design
|
|
992
|
+
|
|
993
|
+
### Breakpoints
|
|
994
|
+
|
|
995
|
+
| Breakpoint | Width | Layout |
|
|
996
|
+
|------------|-------|--------|
|
|
997
|
+
| Desktop | 1200px+ | 3-column top, full-width bottom |
|
|
998
|
+
| Tablet | 768px - 1199px | 2-column stacked |
|
|
999
|
+
| Mobile | 320px - 767px | Single column, collapsible panels |
|
|
1000
|
+
|
|
1001
|
+
### Tablet Layout (768px - 1199px)
|
|
1002
|
+
|
|
1003
|
+
```
|
|
1004
|
+
+------------------------------------------+
|
|
1005
|
+
| VIBE FORGE DASHBOARD [Settings] [T] |
|
|
1006
|
+
+------------------------------------------+
|
|
1007
|
+
| |
|
|
1008
|
+
| +------------------+ +----------------+ |
|
|
1009
|
+
| | TASKS | | AGENTS | |
|
|
1010
|
+
| | | | | |
|
|
1011
|
+
| | [Cards...] | | [Cards...] | |
|
|
1012
|
+
| | | | | |
|
|
1013
|
+
| +------------------+ +----------------+ |
|
|
1014
|
+
| |
|
|
1015
|
+
| +--------------------------------------+|
|
|
1016
|
+
| | NOTIFICATIONS ||
|
|
1017
|
+
| | [Cards...] ||
|
|
1018
|
+
| +--------------------------------------+|
|
|
1019
|
+
| |
|
|
1020
|
+
| +--------------------------------------+|
|
|
1021
|
+
| | ISSUES (Actionable) ||
|
|
1022
|
+
| | [Cards...] ||
|
|
1023
|
+
| +--------------------------------------+|
|
|
1024
|
+
| |
|
|
1025
|
+
+------------------------------------------+
|
|
1026
|
+
```
|
|
1027
|
+
|
|
1028
|
+
### Mobile Layout (320px - 767px)
|
|
1029
|
+
|
|
1030
|
+
```
|
|
1031
|
+
+------------------------+
|
|
1032
|
+
| VIBE FORGE [M] [T] |
|
|
1033
|
+
+------------------------+
|
|
1034
|
+
| |
|
|
1035
|
+
| [Tasks] [Agents] [Notif] <- Tab bar
|
|
1036
|
+
| |
|
|
1037
|
+
| +--------------------+ |
|
|
1038
|
+
| | TASKS | |
|
|
1039
|
+
| | | |
|
|
1040
|
+
| | +----------------+ | |
|
|
1041
|
+
| | | TASK-042 | | |
|
|
1042
|
+
| | | Fix login bug | | |
|
|
1043
|
+
| | +----------------+ | |
|
|
1044
|
+
| | | |
|
|
1045
|
+
| | +----------------+ | |
|
|
1046
|
+
| | | TASK-041 | | |
|
|
1047
|
+
| | | Dashboard UI | | |
|
|
1048
|
+
| | +----------------+ | |
|
|
1049
|
+
| | | |
|
|
1050
|
+
| +--------------------+ |
|
|
1051
|
+
| |
|
|
1052
|
+
| +--------------------+ |
|
|
1053
|
+
| | ISSUES | |
|
|
1054
|
+
| | +----------------+ | |
|
|
1055
|
+
| | | [DOC] README | | |
|
|
1056
|
+
| | | [Dispatch >>] | | |
|
|
1057
|
+
| | +----------------+ | |
|
|
1058
|
+
| +--------------------+ |
|
|
1059
|
+
| |
|
|
1060
|
+
+------------------------+
|
|
1061
|
+
| [Status] | [Refresh] |
|
|
1062
|
+
+------------------------+
|
|
1063
|
+
```
|
|
1064
|
+
|
|
1065
|
+
**Mobile Adaptations:**
|
|
1066
|
+
- Tab bar for panel switching
|
|
1067
|
+
- Issues always visible at bottom (sticky)
|
|
1068
|
+
- Compact task cards
|
|
1069
|
+
- Bottom navigation bar
|
|
1070
|
+
- Hamburger menu for settings
|
|
1071
|
+
- Swipe gestures for panel navigation
|
|
1072
|
+
|
|
1073
|
+
---
|
|
1074
|
+
|
|
1075
|
+
## Keyboard Shortcuts
|
|
1076
|
+
|
|
1077
|
+
### Quick Reference Card (shown with `?`)
|
|
1078
|
+
|
|
1079
|
+
```
|
|
1080
|
+
+------------------------------------------------+
|
|
1081
|
+
| |
|
|
1082
|
+
| Keyboard Shortcuts [X] |
|
|
1083
|
+
| |
|
|
1084
|
+
| Navigation |
|
|
1085
|
+
| ---------------------------------------- |
|
|
1086
|
+
| 1 2 3 4 Focus panels (Tasks, Agents, etc.) |
|
|
1087
|
+
| j / k Move down / up in list |
|
|
1088
|
+
| Enter Expand / select item |
|
|
1089
|
+
| Escape Close / deselect |
|
|
1090
|
+
| |
|
|
1091
|
+
| Actions |
|
|
1092
|
+
| ---------------------------------------- |
|
|
1093
|
+
| d Dispatch (on issue) |
|
|
1094
|
+
| r Refresh current panel |
|
|
1095
|
+
| t Toggle theme |
|
|
1096
|
+
| / Focus search (future) |
|
|
1097
|
+
| |
|
|
1098
|
+
| General |
|
|
1099
|
+
| ---------------------------------------- |
|
|
1100
|
+
| ? Show this help |
|
|
1101
|
+
| Tab Next element |
|
|
1102
|
+
| Shift+Tab Previous element |
|
|
1103
|
+
| |
|
|
1104
|
+
+------------------------------------------------+
|
|
1105
|
+
```
|
|
1106
|
+
|
|
1107
|
+
---
|
|
1108
|
+
|
|
1109
|
+
## Implementation Notes for Anvil
|
|
1110
|
+
|
|
1111
|
+
### Priority Order
|
|
1112
|
+
|
|
1113
|
+
1. **Core Layout** - Header, 3 panels, footer
|
|
1114
|
+
2. **Dark Mode** - CSS variables, theme toggle
|
|
1115
|
+
3. **Tasks Panel** - Cards, filters, expansion
|
|
1116
|
+
4. **Agents Panel** - Status display, avatars
|
|
1117
|
+
5. **Issues Panel** - Issue cards, dispatch buttons
|
|
1118
|
+
6. **Dispatch Flow** - Modal, confirmation, feedback
|
|
1119
|
+
7. **Notifications** - Toast system, panel
|
|
1120
|
+
8. **Loading/Error States** - Skeletons, error handling
|
|
1121
|
+
9. **Responsive** - Tablet, then mobile
|
|
1122
|
+
10. **Accessibility** - Keyboard nav, ARIA, skip links
|
|
1123
|
+
|
|
1124
|
+
### Component Library Suggestions
|
|
1125
|
+
|
|
1126
|
+
Keep it simple for MVP:
|
|
1127
|
+
- No framework (vanilla JS) or lightweight (Alpine.js)
|
|
1128
|
+
- CSS custom properties for theming
|
|
1129
|
+
- Semantic HTML for accessibility
|
|
1130
|
+
- Web Components if reuse needed
|
|
1131
|
+
|
|
1132
|
+
### Animation Guidelines
|
|
1133
|
+
|
|
1134
|
+
| Element | Duration | Easing |
|
|
1135
|
+
|---------|----------|--------|
|
|
1136
|
+
| Hover effects | 150ms | ease-out |
|
|
1137
|
+
| Panel transitions | 200ms | ease-in-out |
|
|
1138
|
+
| Modal open/close | 200ms | ease-out |
|
|
1139
|
+
| Toast slide-in | 200ms | ease-out |
|
|
1140
|
+
| Skeleton shimmer | 1500ms | linear |
|
|
1141
|
+
| Card expansion | 200ms | ease-in-out |
|
|
1142
|
+
|
|
1143
|
+
### Testing Checklist
|
|
1144
|
+
|
|
1145
|
+
- [ ] All states tested (loading, empty, error, success)
|
|
1146
|
+
- [ ] Keyboard-only navigation works end-to-end
|
|
1147
|
+
- [ ] Screen reader announces important changes
|
|
1148
|
+
- [ ] Color contrast passes WCAG AA
|
|
1149
|
+
- [ ] Dark/light mode transitions smoothly
|
|
1150
|
+
- [ ] Mobile layout is usable
|
|
1151
|
+
- [ ] Dispatch flow completes successfully
|
|
1152
|
+
- [ ] WebSocket reconnects on disconnect
|
|
1153
|
+
|
|
1154
|
+
---
|
|
1155
|
+
|
|
1156
|
+
## Revision History
|
|
1157
|
+
|
|
1158
|
+
| Version | Date | Author | Changes |
|
|
1159
|
+
|---------|------|--------|---------|
|
|
1160
|
+
| 1.0 | 2026-01-16 | Pixel | Initial specification |
|
|
1161
|
+
|
|
1162
|
+
---
|
|
1163
|
+
|
|
1164
|
+
*"The best interface is no interface. The second best is one that just works." - Pixel*
|