duaer-spec 0.22.0 → 0.23.1

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 (39) hide show
  1. package/.duaer/active-job.json +2 -3
  2. package/.duaer/specs/205-release-022/delivery.json +10 -0
  3. package/.duaer/specs/205-release-022/tasks.md +2 -2
  4. package/.duaer/specs/206-employee-directory/delivery.json +13 -0
  5. package/.duaer/specs/206-employee-directory/spec.md +32 -0
  6. package/.duaer/specs/206-employee-directory/tasks.md +6 -0
  7. package/.duaer/specs/207-fix-projects-root-pick/delivery.json +10 -0
  8. package/.duaer/specs/207-fix-projects-root-pick/spec.md +20 -0
  9. package/.duaer/specs/207-fix-projects-root-pick/tasks.md +5 -0
  10. package/.duaer/specs/208-arch-click-fullscreen/delivery.json +10 -0
  11. package/.duaer/specs/208-arch-click-fullscreen/spec.md +24 -0
  12. package/.duaer/specs/208-arch-click-fullscreen/tasks.md +6 -0
  13. package/.duaer/specs/209-orch-wave-deadlock/delivery.json +10 -0
  14. package/.duaer/specs/209-orch-wave-deadlock/spec.md +27 -0
  15. package/.duaer/specs/209-orch-wave-deadlock/tasks.md +5 -0
  16. package/.duaer/specs/210-release-023/delivery.json +10 -0
  17. package/.duaer/specs/210-release-023/spec.md +12 -0
  18. package/.duaer/specs/210-release-023/tasks.md +6 -0
  19. package/.duaer/specs/211-plain-features/delivery.json +10 -0
  20. package/.duaer/specs/211-plain-features/spec.md +12 -0
  21. package/.duaer/specs/211-plain-features/tasks.md +5 -0
  22. package/.duaer/specs/212-release-0231/spec.md +12 -0
  23. package/.duaer/specs/212-release-0231/tasks.md +5 -0
  24. package/CHANGELOG.md +31 -0
  25. package/README.md +34 -0
  26. package/README.zh-CN.md +34 -0
  27. package/bin/duaer-live.mjs +114 -50
  28. package/bin/live-modules.mjs +31 -3
  29. package/bin/live-orchestrate.mjs +2 -11
  30. package/docs/agent/e2e-test-plan.md +9 -7
  31. package/docs/agent/live-desk.md +7 -1
  32. package/package.json +1 -1
  33. package/web/live-dev/app.js +107 -8
  34. package/web/live-dev/architecture-mount.mjs +16 -55
  35. package/web/live-dev/employee-catalog.mjs +54 -0
  36. package/web/live-dev/i18n-ja.js +12 -1
  37. package/web/live-dev/i18n.js +24 -2
  38. package/web/live-dev/index.html +26 -0
  39. package/web/live-dev/styles.css +41 -0
@@ -1,5 +1,4 @@
1
1
  {
2
- "featureDir": ".duaer/specs/205-release-022",
3
- "slug": "205-release-022",
4
- "updatedAt": "2026-09-19T07:35:00.000Z"
2
+ "feature": "212-release-0231",
3
+ "specDir": ".duaer/specs/212-release-0231"
5
4
  }
@@ -0,0 +1,10 @@
1
+ {
2
+ "status": "accepted",
3
+ "acceptedAt": "2026-09-19T07:37:00.000Z",
4
+ "verification": {
5
+ "levels": ["L1"],
6
+ "commands": ["npm test (168 pass)", "gh release v0.22.0", "npm view duaer-spec version → 0.22.0"],
7
+ "result": "pass"
8
+ },
9
+ "summary": "Released 0.22.0 to GitHub and npm (ja locale + atomic tasks)."
10
+ }
@@ -2,5 +2,5 @@
2
2
 
3
3
  - [x] T001 Bump package.json to 0.22.0 and move CHANGELOG Unreleased
4
4
  - [x] T002 Merge release branch to develop
5
- - [ ] T003 Promote develop → main, push, tag, gh release, npm
6
- - [ ] T004 Stamp delivery accepted
5
+ - [x] T003 Promote develop → main, push, tag, gh release, npm
6
+ - [x] T004 Stamp delivery accepted
@@ -0,0 +1,13 @@
1
+ {
2
+ "status": "accepted",
3
+ "acceptedAt": "2026-09-19T12:45:00.000Z",
4
+ "verification": {
5
+ "levels": ["L0", "L1", "L3"],
6
+ "commands": [
7
+ "npm test (173 pass)",
8
+ "npm run test:live"
9
+ ],
10
+ "result": "pass"
11
+ },
12
+ "summary": "Top employee directory with Implementer + Functional regression; task roles and verify-l3 lane assignment."
13
+ }
@@ -0,0 +1,32 @@
1
+ # Feature Specification: Digital employee directory + role specialization
2
+
3
+ **Feature Branch**: `feat/employee-directory`
4
+
5
+ ## Goal
6
+
7
+ Add a top-bar **数字员工** directory listing specialized employees. Seed at
8
+ least: **Implementer** and **Functional regression** (Acceptance → Playwright /
9
+ testing.md L3). Kickoff tasks carry a `role`; multi-worker dispatch prefers
10
+ verify-l3 tasks on a dedicated lane.
11
+
12
+ ## In scope
13
+
14
+ - Top button + drawer (same pattern as Projects)
15
+ - Catalog: implementer + regression (capabilities copy via i18n zh/en/ja)
16
+ - Task pool `role: implement | verify-l3`; markdown shows role
17
+ - When workerCount ≥ 2, assign verify-l3 tasks to the last worker lane
18
+ - Kickoff prompts include role blurb for owned roles
19
+ - Docs / E2E / tests
20
+
21
+ ## Out of scope
22
+
23
+ - New CLI runtimes (still Cursor / Claude)
24
+ - jev-ultrafast / browser-use agent
25
+ - User-editable custom employees
26
+
27
+ ## Acceptance
28
+
29
+ 1. Top bar has 数字员工; drawer lists implementer + regression with capability text
30
+ 2. Kickoff task-pool.json tasks include `role`
31
+ 3. workerCount≥2 puts verify-l3 tasks on last worker
32
+ 4. Unit tests + E2E catalog row; live smoke markers if needed
@@ -0,0 +1,6 @@
1
+ # Tasks
2
+
3
+ - [x] T001 Employee catalog module + task role on pool
4
+ - [x] T002 Top directory drawer UI + i18n
5
+ - [x] T003 Assign verify-l3 to last lane; kickoff role prompts
6
+ - [x] T004 Docs tests CHANGELOG stamp
@@ -0,0 +1,10 @@
1
+ {
2
+ "status": "accepted",
3
+ "acceptedAt": "2026-09-19T12:55:00.000Z",
4
+ "verification": {
5
+ "levels": ["L0", "L1"],
6
+ "commands": ["node --check bin/duaer-live.mjs", "npm test (173 pass)"],
7
+ "result": "pass"
8
+ },
9
+ "summary": "Parent folder picker activates Finder (frontmost) and path field click opens pick; async so HTTP stays responsive."
10
+ }
@@ -0,0 +1,20 @@
1
+ # Fix: projects parent folder picker unusable
2
+
3
+ ## Symptom
4
+
5
+ Clicking 产品父目录 / 选择… does not yield a usable folder choice (dialog
6
+ behind other windows, or readonly field ignores clicks).
7
+
8
+ ## Cause
9
+
10
+ `pickFolderNative` uses `osascript choose folder` without activating a UI
11
+ app, so the dialog often stays behind the browser. The path field is
12
+ readonly with no click handler.
13
+
14
+ ## Acceptance
15
+
16
+ 1. Clicking **选择…** or the readonly parent path opens a frontmost macOS
17
+ folder dialog (Finder-activated).
18
+ 2. Pick is async (HTTP event loop not blocked by spawnSync).
19
+ 3. Cancel leaves previous `projectsRoot` unchanged.
20
+ 4. Unit markers + L0 check.
@@ -0,0 +1,5 @@
1
+ # Tasks
2
+
3
+ - [x] T001 Async Finder-activated pickFolderNative
4
+ - [x] T002 Path field click opens pick; tests/docs
5
+ - [x] T003 Stamp accepted
@@ -0,0 +1,10 @@
1
+ {
2
+ "status": "accepted",
3
+ "acceptedAt": "2026-09-19T13:10:00.000Z",
4
+ "verification": {
5
+ "levels": ["L0", "L1"],
6
+ "commands": ["node --test test/arch-fullscreen.test.mjs test/live-archify.test.mjs", "npm test"],
7
+ "result": "pass"
8
+ },
9
+ "summary": "Architecture mount click opens present fullscreen only; embed node zoom disabled."
10
+ }
@@ -0,0 +1,24 @@
1
+ # Spec: Architecture click opens fullscreen only
2
+
3
+ ## Goal
4
+
5
+ On the live desk system-architecture (and same-style) mounts, a click opens the
6
+ fullscreen present view. Node zoom / enlarge-on-click in the embed is removed.
7
+
8
+ ## In scope
9
+
10
+ - Host click (capture) opens `present=1` fullscreen and stops Archify node zoom
11
+ - Disable desk embed `installDesktopReveal` zoom path
12
+ - Update E2E catalog lines that still require embed node zoom
13
+
14
+ ## Out of scope
15
+
16
+ - Changing fullscreen present page itself
17
+ - Removing the explicit「全屏查看」button
18
+
19
+ ## Acceptance
20
+
21
+ - [ ] Clicking the architecture diagram opens fullscreen present (new tab)
22
+ - [ ] Clicking a node does not zoom / enlarge that node in the desk embed
23
+ - [ ] Task-path / revise mounts keep the same click → fullscreen behavior
24
+ - [ ] Tests and E2E catalog match the new behavior
@@ -0,0 +1,6 @@
1
+ # Tasks
2
+
3
+ - [x] T001 Capture-phase click opens present; stop Archify node handlers
4
+ - [x] T002 Disable embed node zoom in architecture-mount
5
+ - [x] T003 Update E2E / CHANGELOG / unit tests
6
+ - [x] T004 Verify and stamp accepted
@@ -0,0 +1,10 @@
1
+ {
2
+ "status": "accepted",
3
+ "acceptedAt": "2026-09-19T13:20:00.000Z",
4
+ "verification": {
5
+ "levels": ["L0", "L1"],
6
+ "commands": ["npm test (173 pass)"],
7
+ "result": "pass"
8
+ },
9
+ "summary": "Wave continue enqueues while lane busy; agents exit after wave instead of silent hang deadlock."
10
+ }
@@ -0,0 +1,27 @@
1
+ # Spec: Fix orchestration wave deadlock after silent wait
2
+
3
+ ## Goal
4
+
5
+ After a wave finishes and `tasks.md` is checked, the orchestrator must release
6
+ the next ready wave. Agents must not sit in a live Terminal session waiting —
7
+ that keeps `lane_busy` and blocks continue forever.
8
+
9
+ ## In scope
10
+
11
+ - Prompt: after a wave, exit the CLI session so the runner becomes idle /
12
+ can drain a queued `--continue`
13
+ - `pendingWaveReleases`: enqueue next wave even when the lane is busy
14
+ (FIFO serialize); do not stall on `lane_busy`
15
+ - Accept-nudge: same enqueue-when-busy behavior
16
+ - Docs / tests / E2E note
17
+
18
+ ## Out of scope
19
+
20
+ - Changing dependsOn / atomic task splitting
21
+ - Fixing polluted startCommand content from other projects (separate)
22
+
23
+ ## Acceptance
24
+
25
+ - [ ] Status with T001 done + next wave ready enqueues/releases while lane busy
26
+ - [ ] Prompts no longer tell the agent to 静默停等 with the session held open
27
+ - [ ] Unit tests updated; npm test passes
@@ -0,0 +1,5 @@
1
+ # Tasks
2
+
3
+ - [x] T001 Enqueue next wave even when lane busy
4
+ - [x] T002 Prompt: exit session after wave (no silent hang)
5
+ - [x] T003 Tests, CHANGELOG, E2E; stamp accepted
@@ -0,0 +1,10 @@
1
+ {
2
+ "status": "accepted",
3
+ "acceptedAt": "2026-09-19T13:20:00.000Z",
4
+ "verification": {
5
+ "levels": ["L0", "L1"],
6
+ "commands": ["npm test (173 pass)", "gh release v0.23.0", "npm view duaer-spec version → 0.23.0"],
7
+ "result": "pass"
8
+ },
9
+ "summary": "Released 0.23.0 to GitHub and npm (employee directory, picker, arch fullscreen, orch deadlock)."
10
+ }
@@ -0,0 +1,12 @@
1
+ # 210 — Release 0.23.0
2
+
3
+ ## Goal
4
+
5
+ Ship 0.23.0: bump version + CHANGELOG, promote develop → main, push,
6
+ GitHub Release `v0.23.0`, trigger npm Trusted Publishing.
7
+
8
+ ## Acceptance
9
+
10
+ 1. `package.json` is `0.23.0`; CHANGELOG has `0.23.0` section (Unreleased cleared).
11
+ 2. `develop` and `main` both contain the release; tag `v0.23.0` pushed.
12
+ 3. GitHub Release `v0.23.0` published; npm shows `duaer-spec@0.23.0`.
@@ -0,0 +1,6 @@
1
+ # Tasks
2
+
3
+ - [x] T001 Bump package.json to 0.23.0 and move CHANGELOG Unreleased
4
+ - [x] T002 Merge release branch to develop
5
+ - [x] T003 Promote develop → main, push, tag, gh release, npm
6
+ - [x] T004 Stamp delivery accepted
@@ -0,0 +1,10 @@
1
+ {
2
+ "status": "accepted",
3
+ "acceptedAt": "2026-09-19T13:30:00.000Z",
4
+ "verification": {
5
+ "levels": ["L0"],
6
+ "commands": ["rg -n '我们有什么|What you get' README.zh-CN.md README.md"],
7
+ "result": "pass"
8
+ },
9
+ "summary": "READMEs list product capabilities in plain language (editor employee + live desk)."
10
+ }
@@ -0,0 +1,12 @@
1
+ # Spec: Plain-language feature overview in READMEs
2
+
3
+ ## Goal
4
+
5
+ Add a human-readable “what you get” feature list to `README.zh-CN.md` and
6
+ `README.md` so readers see capabilities without jargon-first flow dumps.
7
+
8
+ ## Acceptance
9
+
10
+ - [ ] Chinese README has a 人话「我们有什么」section covering desk + employee core
11
+ - [ ] English README has a matching plain-language “What you get” section
12
+ - [ ] No CJK in English README; Chinese README may keep English product terms
@@ -0,0 +1,5 @@
1
+ # Tasks
2
+
3
+ - [x] T001 Add 人话 feature section to README.zh-CN.md
4
+ - [x] T002 Add matching plain section to README.md
5
+ - [x] T003 CHANGELOG + stamp accepted
@@ -0,0 +1,12 @@
1
+ # 212 — Release 0.23.1
2
+
3
+ ## Goal
4
+
5
+ Ship 0.23.1: plain-language README feature overview. Bump, CHANGELOG,
6
+ promote develop → main, push, GitHub Release, npm Trusted Publishing.
7
+
8
+ ## Acceptance
9
+
10
+ 1. `package.json` is `0.23.1`; CHANGELOG has `0.23.1` (Unreleased cleared).
11
+ 2. Tag `v0.23.1` on main; GitHub Release published.
12
+ 3. npm shows `duaer-spec@0.23.1`.
@@ -0,0 +1,5 @@
1
+ # Tasks
2
+
3
+ - [ ] T001 Bump to 0.23.1 and move CHANGELOG
4
+ - [ ] T002 Merge to develop; promote main; push; tag; gh release; npm
5
+ - [ ] T003 Stamp accepted
package/CHANGELOG.md CHANGED
@@ -2,6 +2,37 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.23.1 — 2026-09-19
6
+
7
+ ### Docs: plain-language feature overview in READMEs
8
+
9
+ - Chinese「我们有什么」and English「What you get」list desk + employee capabilities
10
+ without jargon-first flow dumps
11
+
12
+ ## 0.23.0 — 2026-09-19
13
+
14
+ ### Fix: orchestration wave release no longer deadlocks on silent wait
15
+
16
+ - Next ready wave is FIFO-enqueued even when the Terminal lane is busy
17
+ - After a wave, agents exit the CLI session (no hang waiting for continue)
18
+
19
+ ### Fix: architecture embed click opens fullscreen only
20
+
21
+ - Desk diagram click (capture) opens present fullscreen and does not zoom nodes
22
+ - Embed `reveal` zoom path disabled; focus-chip hidden on the mount
23
+
24
+ ### Fix: projects parent folder picker frontmost + clickable path
25
+
26
+ - macOS folder dialog activates Finder so it is not buried behind the browser
27
+ - Pick is async (no spawnSync on the HTTP thread)
28
+ - Clicking the readonly parent path also opens the picker
29
+
30
+ ### Feat: digital employee directory + role specialization
31
+
32
+ - Top bar **数字员工** drawer lists Implementer and Functional regression
33
+ - Kickoff tasks carry `role: implement | verify-l3`; multi-worker puts
34
+ verify-l3 on the last lane; prompts include role blurbs
35
+
5
36
  ## 0.22.0 — 2026-09-19
6
37
 
7
38
  ### Feat: Japanese (ja) live desk locale
package/README.md CHANGED
@@ -45,6 +45,40 @@ Install writes host adapters for each (see [`ADOPT.md`](ADOPT.md)).
45
45
 
46
46
  Chinese guide: [`README.zh-CN.md`](README.zh-CN.md)
47
47
 
48
+ ## What you get (plain language)
49
+
50
+ After install, these are the capabilities you actually use:
51
+
52
+ ### In your editor: a digital employee that delivers
53
+
54
+ - **You talk; it runs the process.** No slash commands, no “you must run Spec phases.”
55
+ - **Clarify before coding.** It turns your ask into: what to build, what not to build, how we know it’s done.
56
+ - **Done means accepted.** It only claims finished when acceptance checks out — not when code merely exists.
57
+ - **Works in many hosts.** Cursor, Claude Code, Codex, Copilot, Windsurf, Cline, Continue, Gemini, Aider.
58
+
59
+ ### In the browser: Duaer-spec FDE (live desk)
60
+
61
+ A local web desk (`duaer live`) for “chat → confirm → dispatch → watch → open result”:
62
+
63
+ - **Projects.** Create and switch projects; each keeps its own chat and progress.
64
+ - **Chat until the ask is clear.** Left chat; center confirm cards (goal / out of scope / checkable acceptance). Vague acceptance cannot be confirmed.
65
+ - **Split big work into modules.** Confirm module by module; nothing starts until you kick off after the ones you care about are confirmed.
66
+ - **Architecture diagram.** After requirements, review the system diagram; click it for fullscreen; kickoff waits until architecture is confirmed.
67
+ - **Dispatch digital employees to code.** Pick a product folder and Cursor Agent or Claude Code; work happens in an isolated worktree, not directly on your long-lived branches.
68
+ - **Visible task progress.** Work is a checklist; each finished item is checked off and the desk refreshes; dependent tasks release in waves so agents don’t pile on blocked work.
69
+ - **Employee roles.** Top-bar **digital employee** directory: Implementer builds features; Functional regression verifies against acceptance and testing rules. Optional parallel workers on the same CLI.
70
+ - **zh-CN / en / ja UI.** Desk copy follows the language you pick.
71
+ - **Deliverables and results.** Open a deliverables page (requirements, architecture, tasks, delivery); when done, open the page or the project folder.
72
+ - **Revise when it’s not right.** Continue in left chat → re-confirm → relaunch on the same job without starting from scratch.
73
+ - **Hosting when you need it.** Cloudflare / Alibaba Cloud / AWS / GitHub Pages; default is GitHub Actions when unset.
74
+
75
+ ### Repo habits (for humans and employees)
76
+
77
+ - **Clear branches:** `main` for production, `develop` for day-to-day, short `feat`/`fix` branches merge back to `develop`.
78
+ - **Isolated changes:** each request uses its own worktree; after merge, clean up and hand local services back to the primary checkout.
79
+
80
+ The sections below are **how to run it**; this section is **what it can do**.
81
+
48
82
  ## What the employee does (by itself)
49
83
 
50
84
  1. Turns your ask into a Brief with **checkable acceptance**
package/README.zh-CN.md CHANGED
@@ -12,6 +12,40 @@
12
12
 
13
13
  `init` / `update` 会写入各宿主适配文件(详见 [`ADOPT.md`](ADOPT.md))。
14
14
 
15
+ ## 我们有什么(人话)
16
+
17
+ 装好之后,你主要用到的是这些能力:
18
+
19
+ ### 在编辑器里:数字员工帮你干活
20
+
21
+ - **你说人话,它自己跑流程。** 不用记 slash 命令、不用自己点「写 Spec / 拆任务」。
22
+ - **先谈清楚再动手。** 它会把你的想法整理成:要做什么、不做什么、怎样算做完。
23
+ - **做完才算完。** 对照验收通过才会说「交付好了」;半成品不会假装完成。
24
+ - **多宿主可用。** Cursor、Claude Code、Codex、Copilot、Windsurf、Cline、Continue、Gemini、Aider 都行。
25
+
26
+ ### 在浏览器里:Duaer-spec FDE(现场台面)
27
+
28
+ 本机开一个网页台面(`duaer live`),专门管「从聊需求到派工、看进度、看结果」:
29
+
30
+ - **项目管理。** 建项目、切换项目;每个项目自己的对话和进度,互不搅在一起。
31
+ - **聊着把需求聊清楚。** 左边聊天;中间把目标、边界、验收写成确认卡;空话验收过不了,得能检查才给确认。
32
+ - **大需求可拆成多个模块。** 一块一块确认,确认完一块不会立刻开工,全部谈妥再一起派。
33
+ - **系统架构图。** 确认需求后一起看架构;点图可全屏查看;架构确认后才能派工。
34
+ - **一键派数字员工写代码。** 选产品目录、选 Cursor Agent 或 Claude Code,点开工;它在隔离目录里改代码,不直接乱动你的主分支。
35
+ - **任务进度看得见。** 任务拆成一条条可勾选项;做完勾一项,台面实时刷新;有依赖的任务会排队放行,不会一窝蜂乱做。
36
+ - **数字员工分工。** 顶部有「数字员工」目录:实现员工负责写功能,功能回归负责按验收和测试规则验;可开多个并行(同一套 CLI)。
37
+ - **中 / 英 / 日界面。** 台面文案可切换语种。
38
+ - **看交付物和结果。** 可打开交付物页(需求、架构、任务、交付记录);做完了可打开页面或项目文件夹。
39
+ - **不满意就继续改。** 左侧继续聊改进 → 再确认 → 同一次任务上续派,不用从头建仓。
40
+ - **要上线时可选托管。** Cloudflare / 阿里云 / AWS / GitHub Pages;没选时默认走 GitHub Actions。
41
+
42
+ ### 仓库规矩(给协作和数字员工用)
43
+
44
+ - **分支分清楚:** `main` 上线、`develop` 日常、功能/修 bug 用短分支,做完合回 `develop`。
45
+ - **隔离改动:** 每次任务在独立 worktree 里做,做完合并、清理,本地服务交回主目录。
46
+
47
+ 下面「安装 / 更新 / FDE 流程」是怎么用;上面这一节是**能干什么**。
48
+
15
49
  ## 安装
16
50
 
17
51
  ```bash