duaer-spec 0.27.2 → 0.27.3

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 (55) hide show
  1. package/.duaer/active-job.json +3 -3
  2. package/.duaer/specs/281-release-0272/delivery.json +8 -0
  3. package/.duaer/specs/281-release-0272/tasks.md +1 -1
  4. package/.duaer/specs/282-dispatch-confirm-lock/delivery.json +12 -0
  5. package/.duaer/specs/282-dispatch-confirm-lock/spec.md +26 -0
  6. package/.duaer/specs/282-dispatch-confirm-lock/tasks.md +5 -0
  7. package/.duaer/specs/283-desk-theme-compact/delivery.json +12 -0
  8. package/.duaer/specs/283-desk-theme-compact/spec.md +26 -0
  9. package/.duaer/specs/283-desk-theme-compact/tasks.md +5 -0
  10. package/.duaer/specs/284-dispatch-graph-regen/delivery.json +12 -0
  11. package/.duaer/specs/284-dispatch-graph-regen/spec.md +33 -0
  12. package/.duaer/specs/284-dispatch-graph-regen/tasks.md +5 -0
  13. package/.duaer/specs/285-desk-light-compact/delivery.json +11 -0
  14. package/.duaer/specs/285-desk-light-compact/spec.md +13 -0
  15. package/.duaer/specs/285-desk-light-compact/tasks.md +5 -0
  16. package/.duaer/specs/286-modules-bug-theme/delivery.json +10 -0
  17. package/.duaer/specs/286-modules-bug-theme/spec.md +26 -0
  18. package/.duaer/specs/286-modules-bug-theme/tasks.md +5 -0
  19. package/.duaer/specs/287-progress-modules-ux/delivery.json +10 -0
  20. package/.duaer/specs/287-progress-modules-ux/spec.md +31 -0
  21. package/.duaer/specs/287-progress-modules-ux/tasks.md +5 -0
  22. package/.duaer/specs/288-settings-close-compact/delivery.json +10 -0
  23. package/.duaer/specs/288-settings-close-compact/spec.md +17 -0
  24. package/.duaer/specs/288-settings-close-compact/tasks.md +5 -0
  25. package/.duaer/specs/289-settings-close-click/delivery.json +10 -0
  26. package/.duaer/specs/289-settings-close-click/spec.md +16 -0
  27. package/.duaer/specs/289-settings-close-click/tasks.md +4 -0
  28. package/.duaer/specs/290-remove-quicknav/delivery.json +10 -0
  29. package/.duaer/specs/290-remove-quicknav/spec.md +11 -0
  30. package/.duaer/specs/290-remove-quicknav/tasks.md +4 -0
  31. package/.duaer/specs/291-release-0273/spec.md +12 -0
  32. package/.duaer/specs/291-release-0273/tasks.md +4 -0
  33. package/CHANGELOG.md +56 -0
  34. package/bin/duaer-live.mjs +11 -20
  35. package/bin/live-modules.mjs +23 -3
  36. package/docs/agent/e2e-test-plan.md +16 -5
  37. package/docs/agent/live-desk.md +24 -11
  38. package/package.json +1 -1
  39. package/web/live-dev/app.js +329 -167
  40. package/web/live-dev/dispatch-center.html +29 -1
  41. package/web/live-dev/dispatch-center.js +25 -1
  42. package/web/live-dev/i18n-de.js +5 -0
  43. package/web/live-dev/i18n-es.js +5 -0
  44. package/web/live-dev/i18n-fr.js +5 -0
  45. package/web/live-dev/i18n-ja.js +5 -0
  46. package/web/live-dev/i18n-ko.js +5 -0
  47. package/web/live-dev/i18n-pt-BR.js +5 -0
  48. package/web/live-dev/i18n-ru.js +5 -0
  49. package/web/live-dev/i18n-vi.js +5 -0
  50. package/web/live-dev/i18n-zh-TW.js +5 -0
  51. package/web/live-dev/i18n.js +10 -0
  52. package/web/live-dev/index.html +31 -32
  53. package/web/live-dev/styles.css +296 -315
  54. package/web/live-dev/task-graph.mjs +4 -1
  55. package/web/live-dev/theme.mjs +63 -0
@@ -143,7 +143,7 @@ the table for their app.
143
143
  | E2E-171 | Creating or switching project ignores a stale status poll so 派工进度 does not pollute the new desk | `npm test` |
144
144
  | E2E-172 | Desk sessions use SQLite; legacy project-chats JSON imports on first open; schema_version migrations run | `npm test` |
145
145
  | E2E-173 | Config, repos, and live jobs import into desk.sqlite; live data is local-only (not packaged) | `npm test` |
146
- | E2E-174 | After architecture confirm: atomic task list with parallel marks; recommend 1–4 workers; confirm builds 派工图; revise same gate | `npm test` |
146
+ | E2E-174 | After architecture confirm: atomic task list with parallel marks; recommend 1–4 workers; confirm builds 派工图 then locks; each improve wave forces a new graph (regen button) | `npm test` |
147
147
  | E2E-175 | Confirm workers → Archify accepts task IR (edge ≥24px); render failure shows in chat | `npm test` + manual |
148
148
  | E2E-176 | FDE desk only on :8787; LaunchAgent sets DUAER_LIVE_NO_BROWSER; no alternate desk ports | `npm test` |
149
149
  | E2E-177 | 「查看派工图」opens Archify present=1 fullscreen with clickable nodes (same as architecture) | `npm test` + manual |
@@ -161,8 +161,8 @@ the table for their app.
161
161
  | E2E-189 | Result bar sticks to the bottom of the middle column (below revise) | `npm test` + manual |
162
162
  | E2E-190 | Sticky result bar uses an opaque fill (no scroll bleed-through) | `npm test` + manual |
163
163
  | E2E-191 | Bug chat / validate autofill project delivery facts (no re-ask URL/start/env) | `npm test` + `npm run test:live` + manual |
164
- | E2E-192 | Project timeline merges initial/revise/bug by time; chat quick-nav jumps to 4 anchors | `npm test` + `npm run test:live` + manual |
165
- | E2E-193 | Chat quick-nav stays visible inside chat column (not clipped/covered) | `npm run test:live` + manual |
164
+ | E2E-192 | Project timeline merges initial/revise/bug by time | `npm test` + `npm run test:live` + manual |
165
+ | E2E-193 | _(removed)_ Chat quick-nav control removed from desk | `npm run test:live` |
166
166
  | E2E-194 | After deploy, result bar still offers 再改一版 and 修 bug | `npm run test:live` + manual |
167
167
  | E2E-195 | Architecture claim-ready without IR rewrites the same chat bubble (no leftover false “diagram ready”) + regenerate | `npm run test:live` + manual |
168
168
  | E2E-196 | Dispatch center per-project view switch: Dispatch graph | Architecture (saved architecture.url) | `npm test` + manual |
@@ -184,7 +184,12 @@ the table for their app.
184
184
  | E2E-212 | Creating a new project refuses when the target directory already exists; open from the project list still works | `npm test` + `npm run test:live` |
185
185
  | E2E-213 | Create project accepts only a short folder name under the parent; absolute paths, duplicate folders, and duplicate titles are refused | `npm test` + `npm run test:live` |
186
186
  | E2E-214 | Architecture edges that would cross unrelated boxes get a clear corridor via; vertical labels use gap `labelAt`; Archify render succeeds | `npm test` |
187
- | E2E-215 | Bottom-via edge labels stay under the floor (`labelAt` on via) so they do not overlap mid-row boxes (e.g. 改稿 / artifact) | `npm test` |
187
+ | E2E-216 | Desk shell is compact; light/dark theme toggle persists `duaer.live.theme` and applies on desk + dispatch center | `npm run test:live` |
188
+ | E2E-217 | After「改缺陷」, prior requirement module tabs stay visible/clickable; light wells use theme inset tokens | `npm test` + `npm run test:live` |
189
+ | E2E-218 | Bug confirm merges modules (keeps prior tabs); progress run-blocks use theme insets; denser progress column | `npm test` + `npm run test:live` |
190
+ | E2E-219 | Settings closes without model ready (关闭 / backdrop / gear / Escape); denser drawers | `npm test` + `npm run test:live` |
191
+ | E2E-220 | Settings「关闭」click works; asset cache-bust forces new close handler | `npm test` + `npm run test:live` |
192
+ | E2E-221 | Chat column has no「导航」quick-nav control | `npm run test:live` |
188
193
 
189
194
  | E2E-156 | Accepted chat bubble preview URL is a clickable `<a>` (http(s) or /api/…) | `npm test` + `npm run test:live` |
190
195
  | E2E-157 | `http://host/api/result/…` chat links render as one clean `<a>` (no nested HTML garble) | `npm test` |
@@ -412,7 +417,7 @@ the table for their app.
412
417
  | E2E-190 | `245-preview-opaque` | opaque sticky result bar |
413
418
  | E2E-191 | `246-bug-chat-autofill` | bug chat autofills delivery facts |
414
419
  | E2E-192 | `247-timeline-quicknav` | timeline sort + chat quick nav |
415
- | E2E-193 | `248-quicknav-visible` | quick-nav not clipped by overflow |
420
+ | E2E-193 | `290-remove-quicknav` | chat quick-nav removed |
416
421
  | E2E-194 | `249-result-cta-after-deploy` | result CTAs remain after deploy |
417
422
  | E2E-195 | `251-arch-claim-no-diagram` | rewrite claim-ready bubble when IR missing |
418
423
  | E2E-196 | `255-dispatch-arch-view` | dispatch center per-project architecture view |
@@ -427,4 +432,10 @@ the table for their app.
427
432
  | E2E-205 | `267-baseline-restore` | refresh keeps baseline confirm fields |
428
433
  | E2E-206 | `268-fde07-uat` | UAT pack on exception cases + kickoff |
429
434
  | E2E-207 | `271-fde04-compat` | browser matrix evidence + kickoff |
435
+ | E2E-216 | `283-desk-theme-compact` / `285-desk-light-compact` | compact shell + light/dark theme |
436
+ | E2E-217 | `286-modules-bug-theme` | bug path keeps module tabs; theme inset tokens |
437
+ | E2E-218 | `287-progress-modules-ux` | bug confirm merge + progress theme densify |
438
+ | E2E-219 | `288-settings-close-compact` | settings always closable + denser drawers |
439
+ | E2E-220 | `289-settings-close-click` | close button + asset cache bust |
440
+ | E2E-221 | `290-remove-quicknav` | no chat 导航 control |
430
441
 
@@ -8,7 +8,7 @@ inside the chosen product repo.
8
8
 
9
9
  `duaer live` starts the console on **port 8787** (`http://127.0.0.1:8787`). A missing
10
10
  model does not block startup — the Settings drawer opens so the operator can save
11
- credentials, then chat.
11
+ credentials (always dismissible via 关闭 / backdrop / gear / Escape), then chat.
12
12
 
13
13
  **Agents:** do not start a second console or use another port. Prefer LaunchAgent
14
14
  `com.duaer.live8787`. Interactive `duaer live` may open the browser once;
@@ -18,7 +18,13 @@ Also see root [`README.md`](../../README.md) (EN) / [`README.zh-CN.md`](../../RE
18
18
 
19
19
  ## Layout
20
20
 
21
- Three columns:
21
+ Three columns: chat | confirm/progress | delivery. Prefer a **compact** shell
22
+ (tighter gaps, smaller brand). Color themes are **dark** (default) and
23
+ **light** via `html[data-theme]`; the top bar toggles and persists
24
+ `duaer.live.theme` in `localStorage` (also on the dispatch-center page).
25
+ Palettes use a soft blue accent — avoid harsh orange glow and dense hatch
26
+ backgrounds that fatigue long sessions. Light theme keeps the same tokens
27
+ for inputs/composer/bubbles (no leftover dark hardcodes).
22
28
 
23
29
  | Column | Role |
24
30
  |---|---|
@@ -134,9 +140,12 @@ The middle column shows a **修 bug** button in the same bottom CTA row as
134
140
  **再改一版** (not a top kind switch). Before the first delivery it appears in
135
141
  the bottom strip under results; after delivery it sits beside「再改一版」.
136
142
 
137
- 1. One **defect card** (symptom / out of scope / fixed-when / env). No multi-module
138
- growth from chat. **Project delivery facts** (preview URL, start scripts,
139
- local path/port hints) are injected into chat + `assumptions` automatically —
143
+ 1. Appends a **defect module tab** (`bug`) beside prior requirement modules —
144
+ it does **not** wipe them. Confirming the defect **merges** into the existing
145
+ module list (API + client). Switching tabs shows that module’s card
146
+ (confirmed feature tabs are readonly). Chat merge updates only the defect
147
+ card. **Project delivery facts** (preview URL, start scripts, local
148
+ path/port hints) are injected into chat + `assumptions` automatically —
140
149
  do not re-ask the operator. Suspected cause defaults to「待复现定位」; online
141
150
  emergency defaults to **no** (fix from develop) unless the user says
142
151
  production/urgent.
@@ -144,14 +153,14 @@ the bottom strip under results; after delivery it sits beside「再改一版」.
144
153
  (sorted by time in deliverables). They are later iterations, not a parallel track.
145
154
  3. After confirm, **architecture is skipped by default** (operator may still
146
155
  design if contracts or security change).
147
- 4. Kickoff builds a short pool: reproduce → fix → acceptance atoms → regress →
148
- README → stamp.
156
+ 4. Kickoff builds a short pool from the **bug** module only: reproduce → fix →
157
+ acceptance atoms → regress → README → stamp.
149
158
  5. Worktree branch is **`fix/<name>`** from `develop`. Optional **production
150
159
  hotfix** checkbox bases the worktree on **`main`** when that branch exists.
151
- 6. Feature path (`deskKind=feature`) is unchanged.
160
+ 6. Feature path (`deskKind=feature`) drops the defect tab and keeps requirement
161
+ modules.
152
162
 
153
- The chat column’s right edge has a **导航** control that jumps to: chat bottom ·
154
- confirm card · result · progress.
163
+ The chat column no longer shows a floating「导航」control.
155
164
 
156
165
  See [ADR 003](../adr/003-bug-dispatch.md).
157
166
 
@@ -162,7 +171,11 @@ Kickoff owns Brief creation and dispatch. Order after architecture confirm:
162
171
  1. **Decompose** atomic tasks (one per acceptance line + impl / verify /
163
172
  shared steps). Parallelizable tasks (same dependency wave) are marked.
164
173
  2. **Recommend** digital-employee count (1–4) from parallel width; the operator
165
- may change it, then **confirm** to build the **派工图**.
174
+ may change it, then **confirm** to build the **派工图**. After a successful
175
+ build, the confirm button and worker-count chips **lock** until the graph
176
+ is invalidated. Each new wave (architecture confirm, including after
177
+ **改进**) **redecomposes** and requires a **new** graph — button shows
178
+ 「重新确认并生成派工图」when regenerating.
166
179
  3. Launch uses the confirmed pool and worker count.
167
180
 
168
181
  Additional notes:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "duaer-spec",
3
- "version": "0.27.2",
3
+ "version": "0.27.3",
4
4
  "description": "Norms → satisfactory delivery: digital employees for Cursor and Claude Code — talk in plain language, no Spec workflow required",
5
5
  "type": "module",
6
6
  "bin": {