@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.
Files changed (201) hide show
  1. package/.claude/commands/clear-attention.md +63 -0
  2. package/.claude/commands/compact-context.md +52 -0
  3. package/.claude/commands/configure-vcs.md +102 -0
  4. package/.claude/commands/forge.md +171 -0
  5. package/.claude/commands/need-help.md +77 -0
  6. package/.claude/commands/update-status.md +64 -0
  7. package/.claude/commands/worker-loop.md +106 -0
  8. package/.claude/hooks/worker-loop.js +198 -0
  9. package/.claude/scripts/setup-worker-loop.sh +45 -0
  10. package/.claude/settings.local.json +46 -0
  11. package/LICENSE +21 -0
  12. package/README.md +238 -0
  13. package/agents/aegis/personality.md +294 -0
  14. package/agents/anvil/personality.md +276 -0
  15. package/agents/architect/personality.md +258 -0
  16. package/agents/crucible/personality.md +360 -0
  17. package/agents/ember/personality.md +291 -0
  18. package/agents/forge-master/capabilities.md +144 -0
  19. package/agents/forge-master/context-template.md +128 -0
  20. package/agents/forge-master/personality.md +138 -0
  21. package/agents/furnace/personality.md +340 -0
  22. package/agents/herald/personality.md +247 -0
  23. package/agents/loki/personality.md +108 -0
  24. package/agents/oracle/personality.md +283 -0
  25. package/agents/pixel/personality.md +113 -0
  26. package/agents/planning-hub/personality.md +320 -0
  27. package/agents/scribe/personality.md +251 -0
  28. package/agents/temper/personality.md +218 -0
  29. package/bin/cli.js +375 -0
  30. package/bin/dashboard/api/agents.js +333 -0
  31. package/bin/dashboard/api/dispatch.js +483 -0
  32. package/bin/dashboard/api/tasks.js +416 -0
  33. package/bin/dashboard/frontend/index.html +13 -0
  34. package/bin/dashboard/frontend/package.json +16 -0
  35. package/bin/dashboard/frontend/src/App.svelte +222 -0
  36. package/bin/dashboard/frontend/src/app.css +1777 -0
  37. package/bin/dashboard/frontend/src/lib/components/AgentCard.svelte +60 -0
  38. package/bin/dashboard/frontend/src/lib/components/AgentsPanel.svelte +57 -0
  39. package/bin/dashboard/frontend/src/lib/components/DispatchModal.svelte +180 -0
  40. package/bin/dashboard/frontend/src/lib/components/Footer.svelte +33 -0
  41. package/bin/dashboard/frontend/src/lib/components/Header.svelte +84 -0
  42. package/bin/dashboard/frontend/src/lib/components/IssueCard.svelte +33 -0
  43. package/bin/dashboard/frontend/src/lib/components/IssuesPanel.svelte +73 -0
  44. package/bin/dashboard/frontend/src/lib/components/KeyboardShortcutsModal.svelte +108 -0
  45. package/bin/dashboard/frontend/src/lib/components/MobileTabs.svelte +52 -0
  46. package/bin/dashboard/frontend/src/lib/components/NotificationCard.svelte +60 -0
  47. package/bin/dashboard/frontend/src/lib/components/NotificationsPanel.svelte +44 -0
  48. package/bin/dashboard/frontend/src/lib/components/TaskCard.svelte +63 -0
  49. package/bin/dashboard/frontend/src/lib/components/TasksPanel.svelte +82 -0
  50. package/bin/dashboard/frontend/src/lib/components/Toast.svelte +45 -0
  51. package/bin/dashboard/frontend/src/lib/stores/agents.js +34 -0
  52. package/bin/dashboard/frontend/src/lib/stores/issues.js +54 -0
  53. package/bin/dashboard/frontend/src/lib/stores/notifications.js +48 -0
  54. package/bin/dashboard/frontend/src/lib/stores/tasks.js +63 -0
  55. package/bin/dashboard/frontend/src/lib/stores/theme.js +33 -0
  56. package/bin/dashboard/frontend/src/lib/stores/toast.js +35 -0
  57. package/bin/dashboard/frontend/src/lib/stores/ui.js +25 -0
  58. package/bin/dashboard/frontend/src/lib/stores/voice.js +275 -0
  59. package/bin/dashboard/frontend/src/lib/stores/websocket.js +295 -0
  60. package/bin/dashboard/frontend/src/lib/utils/api.js +101 -0
  61. package/bin/dashboard/frontend/src/lib/utils/formatters.js +54 -0
  62. package/bin/dashboard/frontend/src/main.js +9 -0
  63. package/bin/dashboard/frontend/svelte.config.js +5 -0
  64. package/bin/dashboard/frontend/vite.config.js +20 -0
  65. package/bin/dashboard/public/assets/index-DnfVj9Ce.css +1 -0
  66. package/bin/dashboard/public/assets/index-Ze5h0kXQ.js +2 -0
  67. package/bin/dashboard/public/index.html +14 -0
  68. package/bin/dashboard/server.js +566 -0
  69. package/bin/forge-daemon.sh +463 -0
  70. package/bin/forge-setup.sh +645 -0
  71. package/bin/forge-spawn.sh +164 -0
  72. package/bin/forge.cmd +83 -0
  73. package/bin/forge.sh +533 -0
  74. package/bin/lib/agents.sh +177 -0
  75. package/bin/lib/colors.sh +44 -0
  76. package/bin/lib/config.sh +347 -0
  77. package/bin/lib/constants.sh +241 -0
  78. package/bin/lib/daemon/display.sh +128 -0
  79. package/bin/lib/daemon/notifications.sh +263 -0
  80. package/bin/lib/daemon/routing.sh +77 -0
  81. package/bin/lib/daemon/state.sh +115 -0
  82. package/bin/lib/daemon/sync.sh +95 -0
  83. package/bin/lib/database.sh +310 -0
  84. package/bin/lib/heimdall-setup.js +113 -0
  85. package/bin/lib/heimdall.js +265 -0
  86. package/bin/lib/json.sh +264 -0
  87. package/bin/lib/terminal.js +451 -0
  88. package/bin/lib/util.sh +126 -0
  89. package/bin/lib/vcs.js +349 -0
  90. package/config/agent-manifest.yaml +203 -0
  91. package/config/agents.json +168 -0
  92. package/config/task-template.md +159 -0
  93. package/config/task-types.yaml +106 -0
  94. package/context/agent-status/aegis.json +7 -0
  95. package/context/agent-status/anvil.json +7 -0
  96. package/context/agent-status/architect.json +7 -0
  97. package/context/agent-status/crucible.json +7 -0
  98. package/context/agent-status/ember.json +7 -0
  99. package/context/agent-status/furnace.json +7 -0
  100. package/context/agent-status/loki.json +7 -0
  101. package/context/agent-status/oracle.json +7 -0
  102. package/context/agent-status/pixel.json +7 -0
  103. package/context/agent-status/planning-hub.json +7 -0
  104. package/context/agent-status/scribe.json +7 -0
  105. package/context/agent-status/temper.json +7 -0
  106. package/context/feature-brainstorm.md +426 -0
  107. package/context/forge-state.yaml +19 -0
  108. package/context/modern-conventions.md +129 -0
  109. package/context/project-context-template.md +122 -0
  110. package/context/project-context.md +122 -0
  111. package/docs/TODO.md +150 -0
  112. package/docs/agents.md +409 -0
  113. package/docs/architecture/decisions/ADR-001-daemon-modularization.md +122 -0
  114. package/docs/architecture/vibe-lab-integration.md +684 -0
  115. package/docs/architecture.md +194 -0
  116. package/docs/bmad-gap-analysis-2026-03-31.md +444 -0
  117. package/docs/cleanup-workflow.md +329 -0
  118. package/docs/commands.md +451 -0
  119. package/docs/dashboard-mockup.html +989 -0
  120. package/docs/getting-started.md +261 -0
  121. package/docs/integration/forge-ownership-policy.md +112 -0
  122. package/docs/npm-publishing.md +132 -0
  123. package/docs/roadmap-2026.md +519 -0
  124. package/docs/security.md +144 -0
  125. package/docs/wireframes/dashboard-mvp.md +1164 -0
  126. package/docs/workflows/README.md +32 -0
  127. package/docs/workflows/azure-devops.md +108 -0
  128. package/docs/workflows/bitbucket.md +104 -0
  129. package/docs/workflows/git-only.md +130 -0
  130. package/docs/workflows/gitea.md +168 -0
  131. package/docs/workflows/github.md +103 -0
  132. package/docs/workflows/gitlab.md +105 -0
  133. package/docs/workflows.md +454 -0
  134. package/package.json +73 -0
  135. package/tasks/completed/ARCH-001-duplicate-agent-config.md +121 -0
  136. package/tasks/completed/ARCH-002-mixed-bash-node-implementation.md +88 -0
  137. package/tasks/completed/ARCH-003-worker-loop-hook-duplication.md +77 -0
  138. package/tasks/completed/ARCH-009-test-organization.md +78 -0
  139. package/tasks/completed/ARCH-011-jq-vs-nodejs-json.md +94 -0
  140. package/tasks/completed/ARCH-012-tmp-files-in-root.md +71 -0
  141. package/tasks/completed/ARCH-013-exit-code-constants.md +65 -0
  142. package/tasks/completed/ARCH-014-sed-incompatibility.md +96 -0
  143. package/tasks/completed/ARCH-015-docs-todo-tracking.md +83 -0
  144. package/tasks/completed/BUG-dash-001-tasks-filter-error.md +31 -0
  145. package/tasks/completed/BUG-dash-002-agents-unknown.md +41 -0
  146. package/tasks/completed/CLEAN-001.md +38 -0
  147. package/tasks/completed/CLEAN-002.md +43 -0
  148. package/tasks/completed/CLEAN-003.md +47 -0
  149. package/tasks/completed/CLEAN-004.md +56 -0
  150. package/tasks/completed/CLEAN-005.md +75 -0
  151. package/tasks/completed/CLEAN-006.md +47 -0
  152. package/tasks/completed/CLEAN-007.md +34 -0
  153. package/tasks/completed/CLEAN-008.md +49 -0
  154. package/tasks/completed/CLEAN-012.md +58 -0
  155. package/tasks/completed/CLEAN-013.md +45 -0
  156. package/tasks/completed/FEATURE-001a-dashboard-wireframes.md +162 -0
  157. package/tasks/completed/IMPL-007a-daemon-notifications-module.md +82 -0
  158. package/tasks/completed/IMPL-007b-daemon-sync-module.md +71 -0
  159. package/tasks/completed/IMPL-007c-daemon-state-module.md +80 -0
  160. package/tasks/completed/IMPL-007d-daemon-routing-module.md +77 -0
  161. package/tasks/completed/IMPL-007e-daemon-display-module.md +77 -0
  162. package/tasks/completed/IMPL-007f-daemon-integration.md +124 -0
  163. package/tasks/completed/PLAT-1-heimdall.md +420 -0
  164. package/tasks/completed/SEC-001-sql-injection-fix.md +58 -0
  165. package/tasks/completed/SEC-002-notification-injection-fix.md +45 -0
  166. package/tasks/completed/SEC-003-eval-injection-fix.md +54 -0
  167. package/tasks/completed/SEC-004-pid-race-condition-fix.md +49 -0
  168. package/tasks/completed/SEC-005-worker-loop-path-fix.md +51 -0
  169. package/tasks/completed/SEC-006-eval-agent-names.md +55 -0
  170. package/tasks/completed/SEC-007-spawn-escaping.md +67 -0
  171. package/tasks/completed/TASK-DASH-001-server-infrastructure.md +185 -0
  172. package/tasks/completed/TASK-anvil-001-dashboard-frontend.md +133 -0
  173. package/tasks/completed/review-bmad-aegis.md +89 -0
  174. package/tasks/completed/review-bmad-anvil.md +80 -0
  175. package/tasks/completed/review-bmad-crucible.md +81 -0
  176. package/tasks/completed/review-bmad-ember.md +90 -0
  177. package/tasks/completed/review-bmad-furnace.md +79 -0
  178. package/tasks/completed/review-bmad-pixel.md +82 -0
  179. package/tasks/completed/review-bmad-scribe.md +92 -0
  180. package/tasks/completed/review-bmad-sentinel.md +83 -0
  181. package/tasks/pending/ARCH-004-git-bash-detection-duplication.md +72 -0
  182. package/tasks/pending/ARCH-005-missing-src-directory.md +95 -0
  183. package/tasks/pending/ARCH-006-task-template-location.md +64 -0
  184. package/tasks/pending/ARCH-008-forge-master-vs-hub.md +81 -0
  185. package/tasks/pending/ARCH-010-missing-index-files.md +84 -0
  186. package/tasks/pending/CLEAN-009.md +31 -0
  187. package/tasks/pending/CLEAN-010.md +30 -0
  188. package/tasks/pending/CLEAN-011.md +30 -0
  189. package/tasks/pending/CLEAN-014.md +32 -0
  190. package/tasks/pending/DESIGN-dash-001-layout-review.md +45 -0
  191. package/tasks/pending/FEATURE-001-dashboard-mvp.md +268 -0
  192. package/tasks/review/ARCH-007-daemon-monolith.md +162 -0
  193. package/tasks/review/bmad-review-aegis.md +349 -0
  194. package/tasks/review/bmad-review-anvil.md +259 -0
  195. package/tasks/review/bmad-review-crucible.md +277 -0
  196. package/tasks/review/bmad-review-ember.md +307 -0
  197. package/tasks/review/bmad-review-furnace.md +285 -0
  198. package/tasks/review/bmad-review-pixel.md +329 -0
  199. package/tasks/review/bmad-review-scribe.md +361 -0
  200. package/tasks/review/bmad-review-sentinel.md +242 -0
  201. 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*