sillyspec 3.20.3 → 3.20.5

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 (225) hide show
  1. package/.claude/skills/sillyspec-archive/SKILL.md +21 -17
  2. package/.claude/skills/sillyspec-auto/SKILL.md +83 -77
  3. package/.claude/skills/sillyspec-brainstorm/SKILL.md +44 -17
  4. package/.claude/skills/sillyspec-commit/SKILL.md +106 -105
  5. package/.claude/skills/sillyspec-continue/SKILL.md +45 -44
  6. package/.claude/skills/sillyspec-doctor/SKILL.md +31 -22
  7. package/.claude/skills/sillyspec-execute/SKILL.md +30 -17
  8. package/.claude/skills/sillyspec-explore/SKILL.md +109 -96
  9. package/.claude/skills/sillyspec-knowledge/SKILL.md +270 -0
  10. package/.claude/skills/sillyspec-plan/SKILL.md +21 -52
  11. package/.claude/skills/sillyspec-propose/SKILL.md +21 -17
  12. package/.claude/skills/sillyspec-quick/SKILL.md +21 -17
  13. package/.claude/skills/sillyspec-resume/SKILL.md +68 -111
  14. package/.claude/skills/sillyspec-scan/SKILL.md +21 -17
  15. package/.claude/skills/sillyspec-state/SKILL.md +54 -54
  16. package/.claude/skills/sillyspec-status/SKILL.md +21 -17
  17. package/.claude/skills/sillyspec-verify/SKILL.md +21 -17
  18. package/.claude/skills/sillyspec-workspace/SKILL.md +157 -149
  19. package/.husky/pre-push +13 -0
  20. package/CLAUDE.md +18 -0
  21. package/README.md +198 -186
  22. package/SKILL.md +90 -87
  23. package/bin/sillyspec.js +2 -2
  24. package/docs/brainstorm-plan-contract.md +64 -0
  25. package/docs/plan-execute-contract.md +123 -0
  26. package/docs/platform-scan-protocol.md +298 -0
  27. package/docs/revision-mode.md +115 -0
  28. package/docs/sillyspec/file-lifecycle/known-implementation-gaps.md +99 -0
  29. package/docs/sillyspec/file-lifecycle/platform-workflows-sync.md +218 -0
  30. package/docs/sillyspec/file-lifecycle/stage-artifacts.md +167 -0
  31. package/docs/sillyspec/file-lifecycle/storage-and-state.md +148 -0
  32. package/docs/sillyspec/file-lifecycle/worktree-and-guard.md +211 -0
  33. package/docs/sillyspec/file-lifecycle.md +131 -0
  34. package/docs/workflow-contract-regression.md +106 -0
  35. package/docs/worktree-isolation.md +252 -0
  36. package/package.json +40 -34
  37. package/packages/dashboard/dist/assets/{index-D1EVTLmc.js → index-Bq_Z2hne.js} +7446 -7446
  38. package/packages/dashboard/dist/assets/index-O2W5RV4z.css +1 -0
  39. package/packages/dashboard/dist/index.html +16 -16
  40. package/packages/dashboard/dist/prototype-dashboard.html +836 -0
  41. package/packages/dashboard/dist/prototype-overview.html +256 -0
  42. package/packages/dashboard/index.html +15 -15
  43. package/packages/dashboard/package-lock.json +2384 -2384
  44. package/packages/dashboard/package.json +25 -25
  45. package/packages/dashboard/public/prototype-dashboard.html +836 -0
  46. package/packages/dashboard/public/prototype-overview.html +256 -0
  47. package/packages/dashboard/server/executor.js +86 -86
  48. package/packages/dashboard/server/index.js +588 -508
  49. package/packages/dashboard/server/parser.js +526 -458
  50. package/packages/dashboard/server/watcher.js +350 -342
  51. package/packages/dashboard/src/App.vue +558 -325
  52. package/packages/dashboard/src/components/ActionBar.vue +93 -84
  53. package/packages/dashboard/src/components/CommandPalette.vue +96 -92
  54. package/packages/dashboard/src/components/DetailPanel.vue +137 -137
  55. package/packages/dashboard/src/components/DocPreview.vue +105 -8
  56. package/packages/dashboard/src/components/DocTree.vue +75 -19
  57. package/packages/dashboard/src/components/HResizeHandle.vue +48 -0
  58. package/packages/dashboard/src/components/LogStream.vue +65 -65
  59. package/packages/dashboard/src/components/PipelineStage.vue +95 -75
  60. package/packages/dashboard/src/components/PipelineView.vue +156 -129
  61. package/packages/dashboard/src/components/ProjectCard.vue +187 -0
  62. package/packages/dashboard/src/components/ProjectList.vue +210 -210
  63. package/packages/dashboard/src/components/ProjectOverview.vue +113 -139
  64. package/packages/dashboard/src/components/StageBadge.vue +67 -53
  65. package/packages/dashboard/src/components/StepCard.vue +94 -89
  66. package/packages/dashboard/src/components/VResizeHandle.vue +61 -0
  67. package/packages/dashboard/src/components/detail/DocsDetail.vue +48 -48
  68. package/packages/dashboard/src/components/detail/GitDetail.vue +61 -61
  69. package/packages/dashboard/src/components/detail/TechDetail.vue +43 -43
  70. package/packages/dashboard/src/composables/useDashboard.js +192 -164
  71. package/packages/dashboard/src/composables/useKeyboard.js +119 -119
  72. package/packages/dashboard/src/composables/useLayout.js +131 -0
  73. package/packages/dashboard/src/composables/useWebSocket.js +129 -129
  74. package/packages/dashboard/src/main.js +8 -8
  75. package/packages/dashboard/src/style.css +132 -132
  76. package/packages/dashboard/vite.config.js +18 -18
  77. package/src/brainstorm-postcheck.js +158 -0
  78. package/src/change-list.js +52 -0
  79. package/src/change-risk-profile.js +352 -0
  80. package/src/classify-change.js +73 -0
  81. package/src/constants.js +70 -0
  82. package/src/contract-matrix.js +278 -0
  83. package/src/db.js +201 -0
  84. package/src/endpoint-extractor.js +315 -0
  85. package/src/hooks/claude-pre-tool-use.cjs +125 -0
  86. package/src/hooks/worktree-guard.js +761 -0
  87. package/src/index.js +922 -252
  88. package/src/init.js +470 -375
  89. package/src/knowledge-match.js +130 -0
  90. package/src/migrate.js +117 -117
  91. package/src/modules.js +482 -0
  92. package/src/progress.js +1734 -508
  93. package/src/run.js +3465 -652
  94. package/src/scan-postcheck.js +387 -0
  95. package/src/setup.js +398 -460
  96. package/src/stage-contract.js +700 -0
  97. package/src/stages/archive.js +160 -54
  98. package/src/stages/brainstorm-auto.js +229 -0
  99. package/src/stages/brainstorm.js +645 -239
  100. package/src/stages/doctor.js +365 -312
  101. package/src/stages/execute.js +634 -264
  102. package/src/stages/explore.js +34 -0
  103. package/src/stages/index.js +29 -35
  104. package/src/stages/knowledge.js +498 -0
  105. package/src/stages/plan-postcheck.js +518 -0
  106. package/src/stages/plan.js +582 -279
  107. package/src/stages/propose.js +174 -115
  108. package/src/stages/quick.js +102 -63
  109. package/src/stages/scan.js +558 -141
  110. package/src/stages/status.js +65 -65
  111. package/src/stages/verify.js +322 -135
  112. package/src/sync.js +497 -0
  113. package/src/task-review.js +346 -0
  114. package/src/workflow.js +785 -0
  115. package/src/worktree-apply.js +549 -0
  116. package/src/worktree-deps.js +185 -0
  117. package/src/worktree.js +982 -0
  118. package/templates/workflows/archive-impact.yaml +79 -0
  119. package/templates/workflows/scan-docs.yaml +132 -0
  120. package/test/brainstorm-plan-contract.test.mjs +273 -0
  121. package/test/check-syntax.mjs +26 -0
  122. package/test/cli-top-level-aliases.test.mjs +174 -0
  123. package/test/contract-artifacts.test.mjs +323 -0
  124. package/test/decision-supersede.test.mjs +277 -0
  125. package/test/knowledge-match.test.mjs +231 -0
  126. package/test/plan-execute-contract.test.mjs +357 -0
  127. package/test/plan-optimization.test.mjs +572 -0
  128. package/test/platform-artifacts.test.mjs +190 -0
  129. package/test/platform-failure-samples.test.mjs +199 -0
  130. package/test/platform-recovery-chain.test.mjs +179 -0
  131. package/test/platform-recovery.test.mjs +167 -0
  132. package/test/platform-scan-p0.test.mjs +175 -0
  133. package/test/revision-v1.test.mjs +1145 -0
  134. package/test/run-sanitize-project-name.test.mjs +51 -0
  135. package/test/run-scan-postcheck-fail.test.mjs +64 -0
  136. package/test/run-scan-project-parse.test.mjs +200 -0
  137. package/test/run-tests.mjs +48 -0
  138. package/test/runtime-cleanup-keeps-worktree.test.mjs +107 -0
  139. package/test/scan-docs-yaml-placeholders.test.mjs +84 -0
  140. package/test/scan-knowledge.test.mjs +175 -0
  141. package/test/scan-paths.test.mjs +68 -0
  142. package/test/scan-postcheck-project-priority.test.mjs +85 -0
  143. package/test/scan-postcheck.test.mjs +197 -0
  144. package/test/scan-workflow-anyfailed-block.test.mjs +52 -0
  145. package/test/spec-dir.test.mjs +206 -0
  146. package/test/stage-contract-failed-post-check.test.mjs +102 -0
  147. package/test/stage-contract.test.mjs +299 -0
  148. package/test/stage-definitions.test.mjs +39 -0
  149. package/test/wait-gates.test.mjs +501 -0
  150. package/test/workflow-spec-base.test.mjs +142 -0
  151. package/test/worktree-deps-provision.test.mjs +148 -0
  152. package/test/worktree-guard.test.mjs +136 -0
  153. package/test/worktree-native-overlay.test.mjs +188 -0
  154. package/.sillyspec/changes/archive/2026-04-08-derive-state/design.md +0 -97
  155. package/.sillyspec/changes/archive/2026-04-08-derive-state/plan.md +0 -51
  156. package/.sillyspec/changes/archive/2026-04-08-derive-state/proposal.md +0 -29
  157. package/.sillyspec/changes/archive/2026-04-08-derive-state/requirements.md +0 -34
  158. package/.sillyspec/changes/archive/2026-04-08-derive-state/tasks.md +0 -13
  159. package/.sillyspec/changes/archive/2026-04-08-derive-state/verify-result.md +0 -43
  160. package/.sillyspec/changes/auto-mode/design.md +0 -50
  161. package/.sillyspec/changes/auto-mode/proposal.md +0 -19
  162. package/.sillyspec/changes/auto-mode/requirements.md +0 -21
  163. package/.sillyspec/changes/auto-mode/tasks.md +0 -7
  164. package/.sillyspec/changes/brainstorm-archive/2026-04-05-dashboard-design.md +0 -206
  165. package/.sillyspec/changes/brainstorm-archive/2026-04-05-unified-docs-design.md +0 -199
  166. package/.sillyspec/changes/dashboard/design.md +0 -219
  167. package/.sillyspec/changes/dashboard/design.md.braindraft +0 -206
  168. package/.sillyspec/changes/run-command-design/design.md +0 -1230
  169. package/.sillyspec/changes/unified-docs-design/design.md +0 -199
  170. package/.sillyspec/docs/sillyspec/scan/.gitkeep +0 -0
  171. package/.sillyspec/knowledge/INDEX.md +0 -8
  172. package/.sillyspec/knowledge/uncategorized.md +0 -3
  173. package/.sillyspec/plans/2026-04-05-dashboard.md +0 -737
  174. package/.sillyspec/projects/sillyspec.yaml +0 -3
  175. package/dist/steps/brainstorm/01-load-context.md +0 -30
  176. package/dist/steps/brainstorm/02-reuse-check.md +0 -6
  177. package/dist/steps/brainstorm/03-prototype-analysis.md +0 -11
  178. package/dist/steps/brainstorm/04-module-split.md +0 -23
  179. package/dist/steps/brainstorm/05-dialog-explore.md +0 -8
  180. package/dist/steps/brainstorm/06-propose-approaches.md +0 -3
  181. package/dist/steps/brainstorm/07-present-design.md +0 -3
  182. package/dist/steps/brainstorm/08-write-design.md +0 -21
  183. package/dist/steps/brainstorm/09-self-review.md +0 -15
  184. package/dist/steps/brainstorm/10-user-confirm.md +0 -3
  185. package/dist/steps/brainstorm/11-output-spec.md +0 -7
  186. package/dist/steps/brainstorm/manifest.yaml +0 -26
  187. package/dist/steps/execute/01-load-context.md +0 -41
  188. package/dist/steps/execute/02-scan-conventions.md +0 -47
  189. package/dist/steps/execute/03-skill-mcp.md +0 -19
  190. package/dist/steps/execute/04-assign-task.md +0 -22
  191. package/dist/steps/execute/04b-prompt-template.md +0 -54
  192. package/dist/steps/execute/05-write-test.md +0 -7
  193. package/dist/steps/execute/06-write-code.md +0 -8
  194. package/dist/steps/execute/07-run-test.md +0 -26
  195. package/dist/steps/execute/08-fix-issues.md +0 -28
  196. package/dist/steps/execute/09-next-task.md +0 -33
  197. package/dist/steps/execute/manifest.yaml +0 -28
  198. package/dist/steps/plan/01-load-context.md +0 -22
  199. package/dist/steps/plan/02-anchor-confirm.md +0 -1
  200. package/dist/steps/plan/03-expand-tasks.md +0 -33
  201. package/dist/steps/plan/04-mark-order.md +0 -15
  202. package/dist/steps/plan/05-e2e-planning.md +0 -17
  203. package/dist/steps/plan/06-self-check.md +0 -16
  204. package/dist/steps/plan/07-save.md +0 -1
  205. package/dist/steps/plan/manifest.yaml +0 -18
  206. package/dist/steps/scan/01-env-detect.md +0 -51
  207. package/dist/steps/scan/02-tech-stack.md +0 -16
  208. package/dist/steps/scan/03-conventions.md +0 -16
  209. package/dist/steps/scan/04-structure.md +0 -19
  210. package/dist/steps/scan/05-quality.md +0 -18
  211. package/dist/steps/scan/06-complete.md +0 -49
  212. package/dist/steps/scan/manifest.yaml +0 -16
  213. package/dist/steps/verify/01-load-specs.md +0 -28
  214. package/dist/steps/verify/02-check-tasks.md +0 -1
  215. package/dist/steps/verify/03-check-design.md +0 -6
  216. package/dist/steps/verify/04-run-tests.md +0 -7
  217. package/dist/steps/verify/05-e2e-tests.md +0 -27
  218. package/dist/steps/verify/05b-e2e-fix.md +0 -33
  219. package/dist/steps/verify/06-code-quality.md +0 -25
  220. package/dist/steps/verify/07-lint-check.md +0 -27
  221. package/dist/steps/verify/08-output-report.md +0 -14
  222. package/dist/steps/verify/manifest.yaml +0 -22
  223. package/packages/dashboard/dist/assets/index-DGe8CqeP.css +0 -1
  224. package/src/derive.js +0 -147
  225. package/src/step.js +0 -543
@@ -1,219 +0,0 @@
1
- # SillySpec Dashboard — 技术方案
2
-
3
- ## 架构决策
4
-
5
- | 决策 | 选择 | 理由 |
6
- |---|---|---|
7
- | 前端框架 | Vue 3 + Vite | 轻量、打包快、SillySpec 用户已有 Node.js |
8
- | CSS | Tailwind CSS | 原子化、深色主题变量管理方便 |
9
- | 后端 | Node.js 原生 http + ws | 不引入 Express,零重依赖 |
10
- | 文件监听 | chokidar | 跨平台、成熟稳定 |
11
- | 数据库 | 无 | 纯文件系统,与 SillySpec 哲学一致 |
12
- | 包结构 | SillySpec 子包 packages/dashboard | 独立 package.json,可单独开发 |
13
-
14
- ## 文件变更清单
15
-
16
- ### 新增文件
17
-
18
- | 文件 | 说明 |
19
- |---|---|
20
- | `packages/dashboard/package.json` | 子包配置,依赖 vue/vite/tailwind/chokidar/ws |
21
- | `packages/dashboard/vite.config.js` | Vite 构建配置,构建产物输出到 dist/ |
22
- | `packages/dashboard/server/index.js` | HTTP + WebSocket 服务启动入口 |
23
- | `packages/dashboard/server/watcher.js` | chokidar 监听 .sillyspec/,解析文件变化,emit 事件 |
24
- | `packages/dashboard/server/api.js` | REST 路由:GET /api/projects, GET /api/project/:name/status |
25
- | `packages/dashboard/server/executor.js` | CLI 命令执行器(child_process.spawn + stdout 流式推送) |
26
- | `packages/dashboard/src/main.js` | Vue 应用入口 |
27
- | `packages/dashboard/src/App.vue` | 根组件,三栏布局 |
28
- | `packages/dashboard/src/components/ProjectList.vue` | 左栏项目列表 |
29
- | `packages/dashboard/src/components/PipelineView.vue` | 中栏阶段 pipeline + 时间线 |
30
- | `packages/dashboard/src/components/StepCard.vue` | 步骤卡片(三级信息密度) |
31
- | `packages/dashboard/src/components/DetailPanel.vue` | 右栏详情 + 日志 |
32
- | `packages/dashboard/src/components/LogStream.vue` | 终端风格日志流(等宽字体、语法高亮、搜索过滤) |
33
- | `packages/dashboard/src/components/CommandPalette.vue` | Cmd+K 命令面板 |
34
- | `packages/dashboard/src/components/StageBadge.vue` | 阶段状态标签组件 |
35
- | `packages/dashboard/src/components/ActionBar.vue` | CLI 操作按钮(下一步、阶段切换) |
36
- | `packages/dashboard/src/composables/useWebSocket.js` | WebSocket 连接管理(自动重连、心跳) |
37
- | `packages/dashboard/src/composables/useKeyboard.js` | 全局键盘快捷键 |
38
- | `packages/dashboard/src/styles/theme.css` | CSS 变量(配色、间距、动效) |
39
- | `packages/dashboard/index.html` | Vite HTML 入口 |
40
- | `packages/dashboard/tailwind.config.js` | Tailwind 配置(自定义颜色) |
41
-
42
- ### 修改文件
43
-
44
- | 文件 | 变更 |
45
- |---|---|
46
- | `src/index.js` | 新增 `dashboard` 命令分支 |
47
- | `package.json` | workspace 引用 packages/dashboard |
48
-
49
- ## 数据模型
50
-
51
- ### 前端状态(composable/store)
52
-
53
- ```javascript
54
- {
55
- projects: [
56
- {
57
- name: 'my-project',
58
- path: '/Users/x/my-project',
59
- currentStage: 'plan',
60
- stages: {
61
- brainstorm: { status: 'completed', steps: 10, completedSteps: 10, duration: '25min' },
62
- plan: { status: 'in-progress', steps: 5, completedSteps: 2, duration: '8min' },
63
- execute: { status: 'pending', steps: 0, completedSteps: 0 },
64
- verify: { status: 'pending', steps: 0, completedSteps: 0 }
65
- },
66
- lastActive: '2026-04-05T14:30:00Z'
67
- }
68
- ],
69
- activeProject: 'my-project', // 当前选中
70
- activeStep: 3, // 当前选中步骤
71
- logs: [], // 实时日志行
72
- isPanelOpen: true // 右侧面板是否展开
73
- }
74
- ```
75
-
76
- ### WebSocket 消息协议
77
-
78
- ```javascript
79
- // 服务端 → 客户端
80
- { type: 'project:updated', project: { name, stages, currentStage } }
81
- { type: 'step:updated', project: 'name', step: { id, status, summary } }
82
- { type: 'log:append', project: 'name', lines: ['> analyzing...', '> done ✅'] }
83
- { type: 'cli:output', project: 'name', data: 'stdout/stderr 流' }
84
- { type: 'cli:complete', project: 'name', exitCode: 0 }
85
-
86
- // 客户端 → 服务端
87
- { type: 'cli:execute', project: 'name', command: 'sillyspec next' }
88
- { type: 'project:select', name: 'my-project' }
89
- ```
90
-
91
- ### REST API
92
-
93
- ```
94
- GET /api/projects → 项目列表(扫描用户目录下的 .sillyspec/)
95
- GET /api/project/:name → 项目完整状态(STATE.md + progress.json 合并)
96
- GET /api/project/:name/logs → 最近日志(user-inputs.md)
97
- ```
98
-
99
- ## 关键组件实现
100
-
101
- ### StepCard.vue — 三级信息密度
102
-
103
- ```vue
104
- <template>
105
- <div class="step-card" :class="[statusClass]"
106
- @mouseenter="hovered = true" @mouseleave="hovered = false"
107
- @click="select">
108
- <!-- 低密度:始终显示 -->
109
- <div class="step-header">
110
- <span class="step-icon">{{ icon }}</span>
111
- <span class="step-title">{{ step.title }}</span>
112
- </div>
113
-
114
- <!-- 中密度:hover 显示 -->
115
- <transition name="fade">
116
- <div v-if="hovered && step.summary?.conclusion" class="step-summary">
117
- {{ step.summary.conclusion }}
118
- </div>
119
- </transition>
120
-
121
- <!-- 高密度:点击后在右侧 DetailPanel 展示 -->
122
- </div>
123
- </template>
124
- ```
125
-
126
- ### LogStream.vue — 终端风格日志
127
-
128
- - 等宽字体(JetBrains Mono / monospace)
129
- - 新行淡入动画(CSS transition opacity)
130
- - 搜索过滤:顶部搜索框,实时过滤匹配行
131
- - 自动滚动到底部,用户上翻时暂停自动滚动
132
- - ANSI 颜色码支持(使用 ansi-to-html)
133
-
134
- ### CommandPalette.vue
135
-
136
- - `Cmd/Ctrl+K` 打开,`Escape` 关闭
137
- - 模糊搜索项目名、阶段名
138
- - 选中后跳转视图
139
- - 参考 shadcn/ui 的 Command 组件风格
140
-
141
- ## CLI 集成
142
-
143
- ### src/index.js 新增命令
144
-
145
- ```javascript
146
- // 在现有 commander 配置中新增
147
- program
148
- .command('dashboard')
149
- .description('启动可视化仪表盘')
150
- .option('--port <number>', '端口号', 3456)
151
- .option('--no-open', '不自动打开浏览器')
152
- .action(async (options) => {
153
- const { startServer } = await import('../packages/dashboard/server/index.js');
154
- await startServer(options);
155
- });
156
- ```
157
-
158
- ### server/index.js 启动流程
159
-
160
- ```javascript
161
- async function startServer({ port = 3456, open = true }) {
162
- // 1. 启动 HTTP 服务,serve 前端静态文件
163
- const server = http.createServer(handler);
164
-
165
- // 2. 挂载 WebSocket
166
- const wss = new WebSocketServer({ server });
167
-
168
- // 3. 启动文件监听
169
- const watcher = new ProjectWatcher();
170
- watcher.on('change', (event) => wss.broadcast(event));
171
-
172
- // 4. 启动服务
173
- server.listen(port, () => {
174
- console.log(`🚀 SillySpec Dashboard: http://localhost:${port}`);
175
- if (open) openBrowser(`http://localhost:${port}`);
176
- });
177
- }
178
- ```
179
-
180
- ## 项目发现机制
181
-
182
- 扫描用户常用项目目录,查找包含 `.sillyspec/` 的目录:
183
-
184
- ```javascript
185
- // 优先级:
186
- // 1. 当前工作目录
187
- // 2. HOME 目录下第一层子目录
188
- // 3. 用户可通过设置文件配置额外路径 ~/.sillyspec/dashboard.json
189
- ```
190
-
191
- ## 构建与发布
192
-
193
- ### 开发模式
194
-
195
- ```bash
196
- cd packages/dashboard
197
- npm run dev # Vite dev server + 后端热重载
198
- ```
199
-
200
- ### 生产构建
201
-
202
- ```bash
203
- cd packages/dashboard
204
- npm run build # Vite 构建 → dist/
205
- ```
206
-
207
- 前端构建产物(dist/)嵌入 npm 包,`sillyspec dashboard` 启动时 serve 静态文件。
208
-
209
- ### 发布
210
-
211
- 作为 SillySpec 的子包,跟随主包版本一起发布。不需要独立版本号。
212
-
213
- ## 代码风格参照
214
-
215
- - Vue 3 Composition API(`<script setup>`)
216
- - Tailwind CSS utility-first
217
- - 组件命名:PascalCase
218
- - composable 命名:use 前缀
219
- - 不使用 Vuex/Pinia,composable 管理状态即可(项目规模不需要)
@@ -1,206 +0,0 @@
1
- # SillySpec Dashboard 设计
2
-
3
- ## 概述
4
-
5
- 为 SillySpec CLI 工具添加可视化仪表盘(`sillyspec dashboard`),用户通过浏览器直观查看和管理项目进度、阶段流程、任务详情和实时日志。
6
-
7
- ## 目标用户
8
-
9
- SillySpec 全部用户(官方功能,随 npm 包发布)。
10
-
11
- ## 分期计划
12
-
13
- ### 一期(MVP)
14
-
15
- 可视化仪表盘 + CLI 命令执行 + 实时日志流。
16
-
17
- ### 二期(进阶)
18
-
19
- Web Terminal(xterm.js)+ 自定义命令 + AI 交互(视需求而定)。
20
-
21
- ## 架构
22
-
23
- ```
24
- sillyspec dashboard
25
-
26
-
27
- Node.js HTTP Server (localhost:3456)
28
-
29
- ├─ chokidar: watch .sillyspec/ 目录
30
- ├─ WebSocket: 实时推送状态变更
31
- └─ REST API: 项目列表、状态、日志、CLI 执行
32
-
33
-
34
- Vue 3 SPA (浏览器)
35
- ```
36
-
37
- ### 文件结构
38
-
39
- ```
40
- sillyspec/packages/dashboard/
41
- ├── server/
42
- │ ├── index.js # HTTP + WebSocket 服务启动
43
- │ ├── watcher.js # chokidar 文件监听 + 增量解析
44
- │ └── api.js # REST 路由
45
- ├── src/
46
- │ ├── App.vue
47
- │ ├── components/
48
- │ │ ├── ProjectList.vue # 左栏:项目列表
49
- │ │ ├── PipelineView.vue # 中栏:阶段 pipeline
50
- │ │ ├── StepCard.vue # 步骤卡片(可展开折叠)
51
- │ │ ├── DetailPanel.vue # 右栏:详情 + 日志
52
- │ │ ├── LogStream.vue # 终端风格日志流
53
- │ │ ├── CommandPalette.vue # Cmd+K 命令面板
54
- │ │ └── StageBadge.vue # 阶段状态标签
55
- │ ├── composables/
56
- │ │ ├── useWebSocket.js # WebSocket 连接管理
57
- │ │ └── useKeyboard.js # 键盘快捷键
58
- │ └── styles/
59
- │ └── theme.css # 深色主题变量
60
- ├── package.json
61
- └── vite.config.js
62
- ```
63
-
64
- ## 核心页面设计
65
-
66
- ### 三栏布局
67
-
68
- ```
69
- ┌──────────┬─────────────────────────┬──────────────────┐
70
- │ 项目列表 │ Pipeline 视图(中) │ 详情+日志(右) │
71
- │ (200px) │ (flex-1) │ (320px,可收起) │
72
- │ │ │ │
73
- │ 📁 proj1 │ ✅ brainstorm │ Step 3 详情 │
74
- │ 📁 proj2 │ ⏳ plan ← 当前 │ 结论:选择React │
75
- │ 📁 proj3 │ ⬜ execute │ 决策:... │
76
- │ │ ⬜ verify │ 📋 实时日志 │
77
- └──────────┴─────────────────────────┴──────────────────┘
78
- ```
79
-
80
- ### 信息分层(三级密度)
81
-
82
- 1. **低密度(默认)**:阶段名 + 状态图标
83
- 2. **中密度(hover)**:步骤摘要(1-2 句话)
84
- 3. **高密度(点击)**:右侧面板展开完整详情 + 日志
85
-
86
- ### 异常高亮
87
-
88
- 失败/阻塞/超时步骤自动标红,视觉上突出,不需用户手动查找。
89
-
90
- ## 数据源与同步
91
-
92
- ### 数据文件
93
-
94
- | 文件 | 用途 |
95
- |---|---|
96
- | `STATE.md` | 当前阶段、状态、下一步命令 |
97
- | `.runtime/progress.json` | 步骤进度、摘要、时间戳 |
98
- | `.runtime/user-inputs.md` | 用户输入记录 |
99
- | `specs/*.md` | 设计文档 |
100
- | `changes/*/design.md` | 技术方案 |
101
-
102
- ### 同步方案
103
-
104
- - **启动时**:全量读取 `.sillyspec/` 目录,构建初始状态
105
- - **运行时**:chokidar watch 文件变化 → 解析 → WebSocket 增量推送
106
- - **不轮询,不做 diff**,文件变化直接读取推送
107
-
108
- ### CLI 命令执行(一期)
109
-
110
- 后端通过 `child_process.spawn` 执行 CLI 命令:
111
- - "下一步"按钮 → `sillyspec next`
112
- - 阶段切换按钮 → `sillyspec plan` / `sillyspec execute` 等
113
- - 执行结果通过 WebSocket 实时推送到前端日志面板
114
-
115
- ## 交互设计
116
-
117
- ### 键盘快捷键
118
-
119
- | 快捷键 | 功能 |
120
- |---|---|
121
- | `j/k` | 上下切换步骤 |
122
- | `Enter` | 展开详情 |
123
- | `Escape` | 收起面板 |
124
- | `/` | 搜索日志 |
125
- | `Cmd/Ctrl+K` | 命令面板 |
126
-
127
- ### 命令面板功能
128
-
129
- - 搜索项目名
130
- - 跳转到指定阶段
131
- - 切换深色/浅色主题
132
-
133
- ### CLI 命令
134
-
135
- ```bash
136
- sillyspec dashboard # 启动 + 自动开浏览器
137
- sillyspec dashboard --port 8080 # 自定义端口
138
- sillyspec dashboard --no-open # 不自动打开浏览器
139
- ```
140
-
141
- ## 视觉设计
142
-
143
- ### 配色
144
-
145
- | 用途 | 色值 |
146
- |---|---|
147
- | 背景 | `#0D1117` |
148
- | 主色(进行中) | `#00D4AA` |
149
- | 阻塞 | `#F59E0B` |
150
- | 失败 | `#F87171` |
151
- | 未开始 | `#6B7280` |
152
-
153
- ### 动效
154
-
155
- - 阶段完成:脉冲光效(CSS animation,200ms)
156
- - 日志新行:淡入
157
- - hover 过渡:100ms
158
- - 进度条:弹性缓动
159
-
160
- ## 技术选型
161
-
162
- | 层 | 技术 |
163
- |---|---|
164
- | 前端框架 | Vue 3 |
165
- | 构建工具 | Vite |
166
- | CSS | Tailwind CSS |
167
- | 后端 | Node.js 原生 http + ws |
168
- | 文件监听 | chokidar |
169
- | 数据库 | 无,纯文件系统 |
170
-
171
- ## 约束和假设
172
-
173
- - 用户本地已有 Node.js(SillySpec 前置依赖)
174
- - 仪表盘为本地工具,不考虑多用户并发
175
- - 前端构建产物嵌入 npm 包,无需额外 build
176
- - 不引入 Express、数据库等重依赖
177
-
178
- ## 状态历史时间线
179
-
180
- Pipeline 视图下方展示时间线,记录每个步骤的:
181
- - 开始时间 / 结束时间 / 耗时
182
- - 状态变化(进行中 → 完成/阻塞/失败)
183
- - 可按时间排序,快速定位耗时最长或异常步骤
184
-
185
- 数据来源:`progress.json` 中的 `summaries` 和时间戳。
186
-
187
- ## 不在范围内(一期)
188
-
189
- - 用户认证/权限
190
- - 多人协作
191
- - 数据持久化(纯文件系统)
192
- - AI 对话交互(二期)
193
- - Web Terminal(二期)
194
-
195
- ## 验收标准
196
-
197
- - [ ] `sillyspec dashboard` 一键启动,自动打开浏览器
198
- - [ ] 三栏布局正确渲染,响应式适配
199
- - [ ] 文件变化后前端实时更新(<1s 延迟)
200
- - [ ] 步骤卡片三级信息分层(默认/hover/点击)
201
- - [ ] 实时日志流正常显示,可搜索可过滤
202
- - [ ] 键盘快捷键可用(j/k/Enter/Escape/Cmd+K)
203
- - [ ] 命令面板可搜索项目名和阶段
204
- - [ ] CLI 命令执行按钮可用,结果实时显示
205
- - [ ] 异常步骤自动高亮
206
- - [ ] 深色/浅色主题切换