@seanmars/tospec 0.13.0 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +233 -0
- package/README.md +20 -7
- package/assets/dashboard/app.js +6 -0
- package/assets/dashboard/style.css +34 -2
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +21 -7
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/dashboard.d.ts.map +1 -1
- package/dist/commands/dashboard.js +8 -4
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +44 -3
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/workflow/instructions.d.ts.map +1 -1
- package/dist/commands/workflow/instructions.js +1 -1
- package/dist/commands/workflow/instructions.js.map +1 -1
- package/dist/core/archive.d.ts +3 -3
- package/dist/core/archive.d.ts.map +1 -1
- package/dist/core/archive.js +41 -14
- package/dist/core/archive.js.map +1 -1
- package/dist/core/artifact-graph/instruction-loader.d.ts.map +1 -1
- package/dist/core/artifact-graph/instruction-loader.js +7 -4
- package/dist/core/artifact-graph/instruction-loader.js.map +1 -1
- package/dist/core/artifact-graph/resolver.d.ts +21 -1
- package/dist/core/artifact-graph/resolver.d.ts.map +1 -1
- package/dist/core/artifact-graph/resolver.js +35 -3
- package/dist/core/artifact-graph/resolver.js.map +1 -1
- package/dist/core/artifact-graph/schema.d.ts.map +1 -1
- package/dist/core/artifact-graph/schema.js +22 -0
- package/dist/core/artifact-graph/schema.js.map +1 -1
- package/dist/core/change-metadata/schema.d.ts +1 -0
- package/dist/core/change-metadata/schema.d.ts.map +1 -1
- package/dist/core/change-metadata/schema.js +7 -0
- package/dist/core/change-metadata/schema.js.map +1 -1
- package/dist/core/change-presenter.js +1 -1
- package/dist/core/change-presenter.js.map +1 -1
- package/dist/core/dashboard-data.d.ts +15 -9
- package/dist/core/dashboard-data.d.ts.map +1 -1
- package/dist/core/dashboard-data.js +20 -12
- package/dist/core/dashboard-data.js.map +1 -1
- package/dist/core/global-config.d.ts +59 -16
- package/dist/core/global-config.d.ts.map +1 -1
- package/dist/core/global-config.js +99 -41
- package/dist/core/global-config.js.map +1 -1
- package/dist/core/init.d.ts.map +1 -1
- package/dist/core/init.js +5 -1
- package/dist/core/init.js.map +1 -1
- package/dist/core/project-config.d.ts +12 -7
- package/dist/core/project-config.d.ts.map +1 -1
- package/dist/core/project-config.js +13 -8
- package/dist/core/project-config.js.map +1 -1
- package/dist/core/shared/skill-generation.d.ts +4 -4
- package/dist/core/shared/skill-generation.d.ts.map +1 -1
- package/dist/core/shared/skill-generation.js +2 -2
- package/dist/core/shared/skill-generation.js.map +1 -1
- package/dist/core/shared/tool-detection.d.ts +9 -3
- package/dist/core/shared/tool-detection.d.ts.map +1 -1
- package/dist/core/shared/tool-detection.js +9 -3
- package/dist/core/shared/tool-detection.js.map +1 -1
- package/dist/core/templates/skill-templates.d.ts +1 -1
- package/dist/core/templates/skill-templates.d.ts.map +1 -1
- package/dist/core/templates/skill-templates.js +1 -1
- package/dist/core/templates/skill-templates.js.map +1 -1
- package/dist/core/templates/workflows/archive.d.ts.map +1 -1
- package/dist/core/templates/workflows/archive.js +36 -22
- package/dist/core/templates/workflows/archive.js.map +1 -1
- package/dist/core/templates/workflows/propose.js +2 -2
- package/dist/core/templates/workflows/sync.d.ts +15 -0
- package/dist/core/templates/workflows/sync.d.ts.map +1 -0
- package/dist/core/templates/workflows/sync.js +104 -0
- package/dist/core/templates/workflows/sync.js.map +1 -0
- package/dist/core/templates/workflows/update.js +1 -1
- package/dist/core/update.d.ts.map +1 -1
- package/dist/core/update.js +4 -0
- package/dist/core/update.js.map +1 -1
- package/dist/core/user-state-migration.d.ts +58 -0
- package/dist/core/user-state-migration.d.ts.map +1 -0
- package/dist/core/user-state-migration.js +107 -0
- package/dist/core/user-state-migration.js.map +1 -0
- package/dist/core/validation/validator.d.ts +0 -7
- package/dist/core/validation/validator.d.ts.map +1 -1
- package/dist/core/validation/validator.js +50 -41
- package/dist/core/validation/validator.js.map +1 -1
- package/dist/utils/change-metadata.d.ts +18 -0
- package/dist/utils/change-metadata.d.ts.map +1 -1
- package/dist/utils/change-metadata.js +39 -0
- package/dist/utils/change-metadata.js.map +1 -1
- package/dist/utils/spec-files.d.ts +19 -0
- package/dist/utils/spec-files.d.ts.map +1 -0
- package/dist/utils/spec-files.js +44 -0
- package/dist/utils/spec-files.js.map +1 -0
- package/package.json +11 -2
- package/schemas/issue/schema.yaml +6 -3
- package/schemas/sdd/schema.yaml +15 -2
- package/dist/core/templates/workflows/reconcile.d.ts +0 -14
- package/dist/core/templates/workflows/reconcile.d.ts.map +0 -1
- package/dist/core/templates/workflows/reconcile.js +0 -94
- package/dist/core/templates/workflows/reconcile.js.map +0 -1
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
# 更新日誌
|
|
2
|
+
|
|
3
|
+
本文件記錄本專案所有值得注意的變更.
|
|
4
|
+
|
|
5
|
+
格式依循 [Keep a Changelog](https://keepachangelog.com/zh-TW/1.0.0/), 版本編號遵循 [語意化版本](https://semver.org/lang/zh-TW/).
|
|
6
|
+
|
|
7
|
+
tospec 是一套 spec-driven development CLI: 以 schema 定義文件結構與工作流程, 進度由檔案系統狀態推算, 開發方法則封裝於 Skill 之中, 使 AI 工具 (Claude Code / Codex) 得以循序完成需求釐清、規格撰寫、設計、任務拆解、實作到歸檔的完整流程.
|
|
8
|
+
|
|
9
|
+
## [0.14.0] - 2026-07-30
|
|
10
|
+
|
|
11
|
+
本版本主軸為修正**靜默失敗** (silent failure): 數條執行路徑雖然通過驗證、正常結束且 exit code 為 0, 實際上卻未完成應有的工作 (層級錯置的 delta spec、結構上無法觸發的 `--skip-specs`、指向不存在指令的提示訊息). 此外將使用者層級狀態統一至 `~/.config/tospec`, 使 archive 自動先執行一次 sync, 並將前一版更名為 reconcile 的工作流程還原為 sync.
|
|
12
|
+
|
|
13
|
+
### 新增
|
|
14
|
+
|
|
15
|
+
- **dashboard 新增 `ready` 階段**: 任務已完成但尚未歸檔的 change, 先前只能歸類為 `applying`, 否則就必須放寬 `archiving` 的定義. 後者並不可行 — 前端以階段名稱決定 checkbox 是否可編輯, 後端則以 sync-report 為判斷依據, 兩者目前一致純粹是因為 `archiving` 的觸發條件正是該份報告; 若改以較弱的訊號綁定, 所有已完成 change 的控制項都會停用, 但後端仍會接受寫入請求, 造成前後端狀態不一致. `ready` 不套用時效衰減 (recency decay): `applying` 主張「實作進行中」, 因此會隨時間過期; `ready` 主張「實作已完成」, 此一事實不隨時間改變.
|
|
16
|
+
- **`tospec schemas --json` 輸出每個 schema 的絕對路徑**: 原本僅以 `source: project | user | package` 標示「哪一層級的定義勝出」, 卻未指出「應開啟哪個檔案」. 這兩項資訊恰好會在最需要的時機產生分歧 — 使用者層級的覆寫可能位於舊的 data dir 或遷移後的新位置, 因此兩個 schema 可能同時回報 `source: "user"` 卻位於不同目錄, 此時該標籤無法定位任何實體檔案. `listSchemasWithInfo` 原本就需組合 `dir` 與 `name` 才能讀取 schema.yaml, 現在將同一組合結果保留為 `path` 欄位輸出, 既不需額外走訪檔案系統, 也不需新增指令. 輸出的是目錄而非 schema.yaml 本身, 因為 `templates/` 是相對該目錄解析的, 目錄才是作者實際編輯的單位.
|
|
17
|
+
|
|
18
|
+
### 變更
|
|
19
|
+
|
|
20
|
+
- **archive 自動先執行 sync, 不再詢問**: 當 change 帶有 delta spec 時, archive 原本會中斷並詢問是否先執行 spec/code sync. 此提問的答案實際上是固定的 — archive 會將這些 delta 永久合併進 `tospec/specs/`, 選擇「否」等同於明知規格描述可能與程式碼不符仍執行發佈; 該提示耗費使用者的注意力, 卻換不到任何實質決策. 現改為直接執行, 僅在偵測到 CODE-BUG 時中斷. 這與 0.13.0 將 verify 改為選配出自相同前提 (「每次詢問等同於以使用者的注意力成本換取 agent 的執行成本」), 卻導向相反結論, 原因在於兩軸審查確實屬於選配, 而 sync 守護的是一次不可逆的 merge 操作. 決策記錄: `tospec/decisions/20260729_161020-sync-runs-automatically-in-archive.md`.
|
|
21
|
+
- **sync 步驟 4 拆分為判定與寫入兩階段**: 移除提示後才發現它原本還兼具另一項功能 — 回答「是」的同時也授權 sync 改寫 delta spec, 而 archive 並未提供唯讀預覽. 現在判定階段不寫入任何檔案, 寫入階段則以「無任何 requirement 被判定為 defect」作為前置條件, 因此中途放棄歸檔不會變動工作目錄的內容. 此執行順序正是「不預先詢問即直接執行」得以安全的前提, 兩者互為配套, 缺一不可. 預告訊息與完整的 `--dry-run` 模式均經評估, 在執行順序確定後一併捨棄 — 它們原本要防範的風險已不復存在.
|
|
22
|
+
- **reconcile 更名還原為 sync (breaking change)**: 撤銷並取代 0.13.0 將 sync 更名為 reconcile 的決策. 該決策對 OpenSpec 命名衝突的描述仍然成立 (上游的 `sync-specs` 方向為 delta → main, tospec 則為 code → delta), 但有兩項權衡判斷錯誤: 其一, 它將「方向中性」視為優點, 然而本工作流程的定義性規則正是 code wins, 這本身即為一個明確方向, 對方向保持沉默的名稱屬於資訊不足而非精確描述; 其二, 它只計入命名衝突成本 (僅在並行閱讀兩個 codebase 時產生), 未計入名稱長度成本 (每次 archive 都需在 flag、檔名、skill id 與口頭溝通中付出). 更名涵蓋範圍與前一版相同 — workflow id、skill/command、`reconcile-report.md` → `sync-report.md`、`--require-reconcile` → `--require-sync`、error code 與各處欄位名稱. `LEGACY_SKILL_DIRS` 採「替換」而非「附加」策略: init/update 會先寫出所有 skill 目錄, 之後才清理該清單所列項目; 若將 `tospec-sync` 保留於清單中, 同一次執行會刪除自己剛寫出的 skill, 且刪除過程完全靜默, 事後只會以「skill 遺失」而非錯誤的形式浮現. 決策記錄: `tospec/decisions/20260729_164130-revert-reconcile-naming-to-sync.md`.
|
|
23
|
+
- **使用者層級目錄統一為 `~/.config/tospec` (Windows 平台為行為變更)**: tospec 的使用者層級狀態原本分散於三處, 在 Windows 上更是三個互不相干的位置 — config 位於 `%APPDATA%\tospec`, schema 覆寫位於 `%LOCALAPPDATA%\tospec`, 但 dashboard registry 早已硬編碼為 `~/.config/tospec/dashboards`. 這並非刻意遵循平台慣例, 而是 resolver 在兩個呼叫點依循 Windows 慣例、第三個呼叫點自行組合路徑所導致的結果. 現在三者統一由同一個 resolver 決定: 所有平台一律使用 `~/.config/tospec`, `XDG_CONFIG_HOME` 仍具最高優先權並成為唯一的搬遷手段; 獨立的 data dir 概念取消, schema 覆寫改置於 `<configDir>/schemas`, 當 `XDG_DATA_HOME` 有設定時採「取代」而非「並存」語意, 確保使用者層級永遠只有單一位置. macOS 與 Linux 的 config 路徑維持不變.
|
|
24
|
+
- **自動遷移**: `tospec init` / `tospec update` 會將平台預設舊路徑下的 `config.json` 與 `schemas/` 各遷移一次 (兩者獨立判斷). 遷移沿用 archive 既有的 helper, 因此保留 EPERM/EXDEV 的 copy 備援路徑與 `verbatimSymlinks` 設定; 目的地已存在時不覆寫也不刪除, 舊檔保留原地並輸出一行提示; `realpath` 相同時 (含手動建立 junction 的情形) 視為已完成遷移; 來源不存在時 (含並行執行造成的競爭條件) 靜默略過. 由 `XDG_DATA_HOME` 明確指定的 schema 目錄屬於使用者顯式宣告的位置, 絕不遷移.
|
|
25
|
+
- **遷移前後皆可正常讀取**: 遷移僅在 init/update 時觸發, 因此在此之前 config 與 schema 覆寫都會回退至舊位置. schema 的回退以名稱為單位個別生效 (`schemaSources()` 原本就逐一走訪各名稱), 且回報的 `source` 沿用 `user`, 不擴張提供給 agent 的 JSON 契約. 若缺少此機制, 升級後尚未執行 init/update 的使用者會靜默退回內建 schema — 這會改變 validation 的放行範圍, 比 profile 退回 core 更難察覺.
|
|
26
|
+
- **遷移失敗不阻擋指令執行**: 遷移失敗時 (檔案遭鎖定、權限不足、目的地被占用) 僅輸出一行警告, 並繼續從舊位置正常運作; copy 備援路徑中途失敗時會清除未完成的產物, 因為回退機制是以「新路徑是否存在內容」判斷, 殘留半份資料會被誤判為已完成遷移, 進而靜默截斷使用者的設定.
|
|
27
|
+
- **取捨**: `%APPDATA%` 屬於 Roaming 目錄, 在網域環境中會隨漫遊設定檔或資料夾重新導向同步至多台機器, `~/.config` 則不會. 由於設定內容僅包含 profile 與 workflows, 故接受此成本; 有漫遊需求的使用者可將 `XDG_CONFIG_HOME` 指向 `%APPDATA%`. 另外, 已設定 `XDG_CONFIG_HOME` 的使用者在升級當下, `dashboard --list` 與連接埠提示會遺漏升級前啟動的 dashboard (兩者僅讀取 registry), 但 `--stop` 與「一專案一 dashboard」的守衛讀取的是 registry 與各專案 pid 檔的聯集, 不受影響. 決策記錄: `tospec/decisions/20260729_140858-config-dir-under-home-config.md`.
|
|
28
|
+
|
|
29
|
+
### 修正
|
|
30
|
+
|
|
31
|
+
- **層級錯置的 delta spec 會在歸檔時遭到丟棄**: 唯一的 delta spec 位於 `specs/<area>/<capability>/spec.md` 的 change 能通過驗證、成功歸檔且 exit code 為 0, 但其 Requirement 從未寫入 `tospec/specs/` — 全程無錯誤亦無警告. 根本原因並非「不支援巢狀結構」, 而是四個子系統各自回答「此處是否存在 delta spec」且答案不一致: status (以 schema 的 `generates` 執行 fast-glob) 與 validate (遞迴走訪) 判定為有, show (change-parser) 與 archive (specs-apply) 僅讀取單一層級因而判定為無; schema 宣告的 `generates: specs/**/*.md` 與會遞迴的那兩者一致, 而 merge 路徑從未支援. 驗證器接受、merge 路徑卻無法套用的檔案配置, 依定義即屬於靜默的資料遺失. 修正方式是將 `specs/spec.md` 這條既有守衛向下延伸一層, 而非引入新機制: validator 明確拒絕不位於 `specs/<capability>/spec.md` 的檔案, 並直接輸出攤平後的建議路徑; 以點號開頭的 capability 目錄一併拒絕 (fast-glob 會略過而 merge 路徑的 readdir 不會, 屬於同一類分歧但方向相反); 兩套 schema 的 `generates` 收斂為 `specs/*/spec.md`; archive 則為 `--no-validate` 這條唯一繞過驗證的路徑補上 `archive_spec_merge_empty` 作為最後防線; `findSpecFiles` 抽離至 `src/utils/spec-files.ts`, 使 validator 與 archive 共用同一份定義. 未採用上游 OpenSpec 支援巢狀結構的解法: 該方案會使 archive 開始將巢狀路徑寫入 `tospec/specs/`, 但七個主 spec 讀取端皆不列舉此類路徑, 只實作一半比完全不實作更糟. 此為與上游的刻意分歧, 決策記錄: `tospec/decisions/20260730_014309-delta-spec-layout-one-level.md`.
|
|
32
|
+
- **`rules:` 的 artifact ID 僅對當前 schema 驗證**: `rules:` 是 `tospec/config.yaml` 中單一的全域 map, 但 instructions 永遠在單一 schema 之下載入, 而 `validateConfigRules` 只取得該套 schema 的 artifact ID. 因此同時為兩套 schema 設定 rules 的專案, 在另一套 schema 之下執行任何指令都會收到誤報警告 (`Unknown artifact ID in rules: "task"` — 而 `task` 是 issue schema 中拼寫完全正確的既有 artifact), 除了刪除有效設定之外無法消除. tospec 內建三套 schema 而上游僅有一套, 此問題在本專案的觸發頻率高出許多. 現改以 `collectAllArtifactIds()` 取所有可用 schema 的 ID 聯集進行檢查; 該函式建構於既有的 `listSchemasWithInfo` 之上, 而非自行重新走訪 schema 來源, 藉此繼承其優先序處理與「單一 schema 解析失敗仍可容錯」的行為 — 若重寫走訪邏輯, 一個損壞的自訂 schema 可能導致每個 rules 鍵都被判定為未知 ID, 等於以誤報換取更嚴重的誤報.
|
|
33
|
+
- **`--skip-specs` 結構上無法觸發, 改由 change 自行宣告**: 該 flag 自述適用於「infrastructure、tooling 或純文件變更」, 但此使用情境在結構上不可達 — archive 於 `archive.ts:335` 執行驗證, 至 `:418` 才讀取 `skipSpecs`, 而驗證器會拒絕任何不含 delta 的 change, 因此 sdd schema 下的純文件 change 會直接觸發 `archive_validation_failed`, 該 flag 根本沒有執行機會. 根本原因在於兩個機制回答的是不同問題: 「此 change 是否應包含 spec」屬於 change 的持久屬性, `--skip-specs` 卻是單次呼叫的屬性, 持久事實無處可存放. 現在 `.tospec.yaml` 支援 `skip_specs: true` 以豁免「至少一個 delta」的規則; 讀取器直接讀取此單一鍵值而不經過 `readChangeMetadata` (後者遇到任何 Zod 驗證失敗即拋出例外, 拼寫錯誤的標記會轉變為一則語意不明的 metadata 錯誤, 或更糟 — 轉變為此標記原本要抑制的「必須至少有一個 delta」訊息). 兩種矛盾情境一律回報錯誤而非靜默取捨: 非布林值以鍵名明確拒絕, 標記與實際 delta 檔案並存時列出檔案路徑並拒絕 (內容與自身宣告相互否定的 change, 在任何一種解讀之下都不應歸檔), 且此情境仍照常執行 delta 驗證. 該 flag 刻意不隱含設定此標記 — 否則 `tospec validate` 的結果將取決於某人上次對 archive 下達的 flag, 使 change 的固有屬性淪為 shell 歷史的副作用; 改為在 archive 確認阻擋原因確實是「缺少 delta」時, 於錯誤訊息中指向該標記.
|
|
34
|
+
- **相依檔案必須自磁碟重新讀取**: 相依區塊原本輸出的是「Read these files for context before creating this artifact:」. 對於先前已在對話中讀過 `spec.md` 的 agent 而言, 這句話讀來像是條件已滿足 — 它確實持有內容, 於是憑記憶撰寫 `design.md` 或 `tasks.md`. 此類失敗是靜默的, 且外觀近似成功: 使用者修改 spec、刪除 `design.md` 準備重新產生, 取回的卻是依據修改「之前」的 spec 推導出的設計, 不回報錯誤, 產物看似合理實則錯誤. 對話越長發生機率越高 — 越早讀取的檔案, 其內容越可能已被 context 壓縮替換為摘要. `apply.ts` 早已具備此防護, 措辭直接沿用而非另行撰寫, 使同一則指示在 agent 遇到的每個位置讀來完全一致; 新增的兩處正是交接相依項的兩個位置: CLI 自身的相依區塊, 以及 propose 的步驟 3 與其 guardrail.
|
|
35
|
+
- **`tospec show` 提示了不存在的指令**: 無參數執行時輸出 `Hint: use "tospec change list" to view available changes.`, 但 CLI 並無 `change` 這個指令群, 依提示操作只會得到 `error: unknown command 'change'`; 正確指令為 `tospec list`. 單行修正並非重點 — `template-cli-consistency.test.ts` 的存在目的正是攔截此類問題卻未能攔截, 因為 `extractSnippets` 僅解析反引號包覆的片段 (那是指令出現在 skill 說明文字中的形式, 從來不是它出現在原始碼中的形式). 範本受到檢查, 而對同一位使用者輸出訊息的程式碼則否. 現在抽取邏輯改為在兩份語料上分別執行, 各自使用不同的分隔符, 使片段搜尋與指令解析解耦, 原始碼提供的是字串字面值. 字面值的篩選需格外謹慎, 因為 "tospec" 同時也是產品名稱, 因此只認可兩種形態: 訊息中被引號包覆的執行指令, 或字面值本身即為一整條完整指令列; 且 sanity floor 改為逐語料各自斷言 — 若合併為單一總數, 原始碼掃描即使完全失效仍可能靠範本命中數通過檢查, 而掃描靜默失效正是此陳舊提示得以長期存活的原因.
|
|
36
|
+
- **`apply.requires` 未經驗證**: `parseSchema` 會檢查 `artifacts[].requires` 的懸空參照與循環相依, 但 schema 中另一處指名 artifact id 的欄位 — `apply.requires` — 從未受檢, 未知的 id 會直接穿透至 `tospec status --json` 的 `applyRequires`. 一旦不存在的 id 進入提供給 agent 的 JSON 契約, agent 唯一合理的反應就是去尋找一個 schema 根本未定義的 artifact. 此檢查置於既有三道守衛旁, 而非另立一個需要人為記得執行的指令. `tracks` 刻意不納入檢查: 它指向的是 change 目錄中的檔案而非 artifact id, 而該檔案在 change 完成 scaffold 之前本來就不存在, 若以 id 規則驗證將拒絕每一份正確的 schema.
|
|
37
|
+
|
|
38
|
+
### 其他
|
|
39
|
+
|
|
40
|
+
- **新增 `docs/`**: `docs/agent-contract.md` 記載 `--json` 的 envelope 契約 (以 `src/commands/shared-output.ts` 為準而非參照上游對應文件 — 兩者的 envelope 已經分歧; 對 agent 而言關鍵細節在於失敗時 data key 仍以 null 形式存在, 因此無需解析訊息內容即可判斷成敗); `docs/custom-schema.md` 記載 schema.yaml 的欄位定義、三層解析順序, 以及兩個容易誤解之處 (`generates` 為 glob 時 `resolvedOutputPath` 是 pattern 而非實際檔案; 過於寬鬆的 glob 會使無關檔案被計入完成狀態), 並明確載明 delta spec 恰好一層的限制.
|
|
41
|
+
- **README 修正與補齊**: verify 的描述與實際行為相反 — README 記載 apply「最後會自動執行 verify」, 而實際指示是兩軸審查「不會自動執行」, apply 以測試與 `tospec validate` 收尾; 這是最嚴重的一類文件錯誤, 讀者會誤信審查已經執行. 另補上未列出的 `tospec decision` 指令群、dashboard 遺漏的四個選項 (含會將 dashboard 暴露至網路的 `--allow-remote`), 以及 `new change --decisions`、`show` 的四個輸出過濾選項與 `--no-interactive`、`config` 的其餘子指令; 全部以 `--help` 逐一核對而非憑印象撰寫.
|
|
42
|
+
- **五個模組補上測試**: root-selection、update、show、instruction-loader、config 原本缺乏直接測試, 而這五者皆屬於「回歸缺陷為靜默」的類型 — 不拋出例外、不使建置失敗, 僅是輸出結果錯誤而無人察覺. 新增測試涵蓋 `allowImplicitRoot: false` 分支、monorepo 下最近祖先優先的解析規則、update 在「版本已為最新」時仍須重新產生檔案 (它同時是損壞 skill 的修復路徑, 提早 return 會在檔案已損毀時回報成功)、show 對名稱歧義時必須拒絕臆測, 以及 instruction-loader 須將空檔案回報為 `stub` 而非 `done`.
|
|
43
|
+
- **對齊 vendored 的 OpenSpec 參考副本**: 工作副本停留於 58dc806 (1.8.0), 而 `latest-git-ref.md` 宣稱比較基準為 19d4171, 兩者相差 46 個 commit; 由於相關物件已 fetch 過, `git show` 對較新的 commit 仍可正常運作, 使此落差完全無法察覺. 改為 checkout 至記錄中的 ref 而非 fetch 更新版本, 並將「delta spec 只允許一層」這項刻意分歧記入 `latest-git-ref.md` — 下一位進行版本比對的人是以此檔案為起點, 若缺少此註記, 每次比對都會重新發現該差異並誤判為缺陷回報.
|
|
44
|
+
|
|
45
|
+
## [0.13.0] - 2026-07-29
|
|
46
|
+
|
|
47
|
+
本版本主要調整開發流程的「收尾」階段: 兩軸 verify 由自動執行改為選配, sync 工作流程更名為 reconcile 以解除與 OpenSpec 的命名衝突, 修正 dashboard 生命週期與 CRLF 任務解析的缺陷, 並清除一批死碼與重複的 helper.
|
|
48
|
+
|
|
49
|
+
### 變更
|
|
50
|
+
|
|
51
|
+
- **verify 由強制改為選配**: apply 的完成條件改為「任務全數勾選完畢 + 測試全數通過 + `tospec validate` 通過」, 兩軸審查僅在使用者主動要求時執行, 且不主動詢問 (不再於收尾時出現「是否需要協助 review?」). `all_done` 狀態改為據實回報並停止 — change 已完成本身不構成啟動審查的理由; `tospec-archive` 亦移除「先確認 apply 的 verify 已執行」這項前置步驟. 同時將「何謂 blocking」明確定義為兩類: 違反本 repo 明文記載的慣例, 以及 spec 正確性問題 (需求缺漏、實作錯誤、與 `design.md` 記載的決策相衝突); 其餘一律僅回報不阻擋. 定義不明確時最保守的解讀是「全部都需修正」, 那會使「只重跑受影響的那一軸」退化為每一軸每次都重跑. 修正完成後只將修正的 hunk 送回原本回報它的那一軸, 不重送整軸, 也不觸及另一軸.
|
|
52
|
+
- **sync 工作流程更名為 reconcile (breaking change)**: tospec 的 `sync` 與 OpenSpec 的 `sync-specs` 名稱相近但方向相反 — 上游是將 delta spec 推進至主 spec (以意圖為準), tospec 則是讀取實作反向校準 change 的 Requirement (以程式碼為準); 並行閱讀兩個專案時會同時誤解雙方. 更名涵蓋 workflow id 及其產生的 skill/command (`sync` → `reconcile`)、產出物 (`sync-report.md` → `reconcile-report.md`)、archive flag (`--require-sync` → `--require-reconcile`)、error code (`SYNC_REPORT_*` → `RECONCILE_REPORT_*`), 以及 parser、reader 與 dashboard 階段推導所使用的欄位. 舊 skill 目錄加入 `LEGACY_SKILL_DIRS`, 升級時會被移除而非與新目錄並存. 舊 flag 採直接更名而非保留 alias: 它由產生的範本帶入而非手動輸入, 範本與 CLI 會在同一次 `tospec update` 中一併重新產生. 行為完全不變 (相同步驟、相同的 code-wins 規則、相同的報告語法與 gate 語意). 未沿用 `verify` 一詞, 因其已指涉 apply 的兩軸審查與 `change-verification` capability. 決策記錄: `tospec/decisions/20260728_140054-rename-sync-to-reconcile.md`. (註: 此更名已於 0.14.0 撤銷, 名稱還原為 sync.)
|
|
53
|
+
- **reconcile 新增反向的 scope creep 掃描**: 原本的比對方向是由 Requirement 走向程式碼, 只能找出「實作不足」的部分, 無法看見反方向的問題 — diff 中確實存在、卻無任何 Requirement 要求的行為. 新增一道步驟走訪 change 的 diff, 標示出 spec 從未要求的行為. 僅回報, 絕不補寫 spec: 「code wins」規範的是 Requirement 的措辭方式, 而非某段行為是否應該存在, 不能用來事後合理化無人要求的工作.
|
|
54
|
+
- **死碼與重複邏輯清理 (約 -1500 行)**: 移除在單一團隊建置情境下無人觸及的程式碼 — 依建構方式必然回傳空陣列的 referenced-store index、config 的 `references:` 解析 (含此欄位的舊設定檔仍可讀取, 僅是忽略該欄位)、已被 archive 自行組裝 spec 更新所取代的 `applySpecs`, 以及使 shell detection、marker-block 改寫與 `canWriteFile` 保持可存取的 `utils/index.ts` barrel. 可編譯的程式碼會被視為受支援的 API, 因而持續為無人使用的行為累積維護成本. 其餘為去重: frontmatter 的 `---` 切割、`getLastModified` / `extractNameFromPath`、`listActiveChangeDirs`、帶階層參數的 `findSection`, 以及 archive 的 confirm / `--yes` / JSON 拋錯 gate, 各自從數份已彼此漂移的私有副本收斂為單一 owner. 另為兩條熱路徑 (schema.yaml 解析、範本讀取) 加上以 mtime + size 為 key 的快取 — status 與 list 對每個 change 都會解析同一份 schema, dashboard 每次刷新亦重新解析一次, 而 yaml 解析 + Zod 驗證 + 循環檢查占了絕大部分成本; 以 mtime 而非 TTL 為 key 可使專案自訂的 schema 修改立即生效, 進出快取皆進行複製, 呼叫端修改其中一份不會污染後續的解析結果.
|
|
55
|
+
|
|
56
|
+
### 修正
|
|
57
|
+
|
|
58
|
+
- **CRLF 格式的 tasks.md 會被解析為零個任務**: `parseTasksFromContent` 以 `'\n'` 切分行, CRLF 檔案的每一行都會殘留結尾的 `'\r'`; 而 JavaScript 的 `.` 不匹配行結束字元, `'$'` 在未帶 `'m'` 旗標時錨定於整段輸入的結尾, 導致整份皆為 checkbox 的檔案解析出零個任務. 所有呼叫端都經過此函式, 因此症狀同時出現於多處: `tospec archive` 以 `archive_tasks_missing` 拒絕已全數完成的 change, apply 的 instructions 回報 tracks file 不存在, list 與 dashboard 皆顯示無任務; `setTaskDone` 另會拋出 "is not a task", 使 dashboard 的勾選操作回傳 409. 讀取路徑改以 `/\r?\n/` 切分行, 寫入路徑則在檢查前移除結尾的 `'\r'`, 但仍以 `'\n'` 切分並寫回原始行內容, 藉此在重組時保留檔案原有的 CRLF — 勾選單一 checkbox 不會重寫整份檔案.
|
|
59
|
+
- **dashboard `--stop` 可自任意目錄終止所有執行中的實例**: `--stop` 原本僅讀取全域 registry, 因此記錄已被回收但行程仍存活的 dashboard 無法終止, 即使其專案 pid 檔記錄正確; 在 tospec 專案之外執行時亦直接失敗, 而非列出目前執行中的實例. 現改為取 registry 與所有專案 pid 檔的聯集 (以 pid 為 key, 同時回收失效記錄), 當前專案的實例直接選定, 其餘則進入多選選單 (無互動終端時列出名稱並以非零 exit code 結束); `--list` 讀取同一份集合, 兩者不可能再相互矛盾.
|
|
60
|
+
- **dashboard `--detach` 會為已有 dashboard 的專案重複啟動**: `--detach` 的「已在執行」檢查僅讀取專案 pid 檔, 而前景 dashboard 從不寫入該檔, 背景實例的記錄也可能遺失. 現在 `shouldRefuseDetach()` 改為查詢 `--stop` / `--list` 所使用的同一份候選集合, `runDashboard()` 則無條件寫入 pid 記錄 (不再限於設有 `TOSPEC_DASHBOARD_PIDFILE` 的情況), 使前景 dashboard 得以被偵測. 此限制僅套用於 `--detach`: 第二個前景實例維持不阻擋, 依 `tospec/decisions/20260727_232950-one-dashboard-per-project.md` 的決議.
|
|
61
|
+
- **archive 跨裝置搬移不再導致 symlink 失效**: `moveDirectory` 的 EPERM/EXDEV 備援路徑改用 `fs.cp` 並帶入 `verbatimSymlinks` — 否則 Node 可能將連結改寫為指向來源目錄的絕對路徑, 後續刪除來源目錄即留下大量斷裂的連結 (在 Windows 上尤其明顯); `copyDir` 同步加上此選項.
|
|
62
|
+
- **dashboard 的 ticket 列改為換行而非截斷**: 過長的 ticket 摘要原本以單行加省略號裁切, 現在整列會隨內容換行增高; 採用 `overflow-wrap: anywhere` 而非 `break-word`, 使無法斷開的長 token 縮小 flex item 而非撐寬整列, 開頭的日期則維持不換行.
|
|
63
|
+
|
|
64
|
+
### 其他
|
|
65
|
+
|
|
66
|
+
- 新增 `CLAUDE.md`: 記載本 repo 的指令、架構與慣例, 供 AI 工具在此專案工作時參考.
|
|
67
|
+
- 相依套件更新: postcss 8.5.16 → 8.5.23 (間接相依).
|
|
68
|
+
|
|
69
|
+
## [0.12.0] - 2026-07-26
|
|
70
|
+
|
|
71
|
+
本版本的處理對象是「產生出來的 skill 本身」: 對全部 skill 執行一次稽核並修正實際缺陷, 使 skill 得以挾帶 sibling 參考檔以縮減每回合載入的內容量, 並將 explore/grill 談定的決策改為直接記錄而非再次詢問.
|
|
72
|
+
|
|
73
|
+
### 新增
|
|
74
|
+
|
|
75
|
+
- **skill 範本可挾帶 sibling 檔案**: `SkillTemplate` 新增 `extraFiles` 欄位, 三條寫出 skill 目錄的路徑 (init / update / `pnpm skills`) 統一改走新的 `writeSkillDir()`, 確保新增的 sibling 檔案不會只抵達其中一條路徑而在另一條被靜默遺漏. 首個使用者為 tospec-apply — 約 45 行的 verify 方法論移至 sibling `VERIFY.md`, 由本文以指標引用, 使仍在執行第 1 個任務的 agent 不必全程承載收尾階段才會用到的審查流程 (command 形式不支援 sibling 檔案, 維持內嵌; 兩者內容同源). 新增檢查: 每個宣告的 sibling 檔案都必須在本文中被引用.
|
|
76
|
+
|
|
77
|
+
### 變更
|
|
78
|
+
|
|
79
|
+
- **explore / grill 談定的決策直接記錄, 不再事先詢問**: 使用者確認 restatement 之後, 若確實談定 material decision, 直接以 `tospec-decision --status proposed` 記錄 — 剛確認的共識即代表同意, 而 `proposed` 本身就是仍可被否決的草稿狀態; 不再將 "(decision)" 列為下一步的選項之一. 未談定實質決策則不予記錄 (已確認的假設不構成決策); 說不出理由與已權衡的替代方案時不得杜撰, 應依 `tospec-decision` 自身規則回頭詢問使用者. 下一步選項因此收斂為 (propose)/(issue)/(grill), grill 另含 (update).
|
|
80
|
+
- **skill 描述改以觸發條件與路由為主**: 描述每回合都占用 context window, 因此只保留觸發詞與跨 skill 路由資訊, 不重述本文身分. archive 移除重複的開場句與已在 guardrails 中重複三次的禁令 (三條相鄰禁令合併為一條帶理由的正面規則), sync 移除 archive 已具備的路由資訊; explore 的描述改以 "Interview" 開頭 — 原先以 "Grill" 開頭, 與 tospec-grill 明確宣告的觸發詞衝突, 且 explore 與 grill 的分界原本寫在 grill 本文之中 (誤觸之後才會載入), 現移至兩者的描述 (可事前避免誤觸).
|
|
81
|
+
- **共用片段抽離為 fragment**: 訪談機制與下一步標籤規則原本分別是 2 份與 4 份需手動同步的副本, 現集中於 `templates/fragments/`; verify 文本一併自 `workflows/` 遷移至此 (它並不輸出 workflow 範本).
|
|
82
|
+
- **frontmatter 移除固定的 `metadata.version: "1.0"`**: 無任何程式讀取此欄位, 且 `generatedBy` 已帶有實際版本號.
|
|
83
|
+
|
|
84
|
+
### 修正
|
|
85
|
+
|
|
86
|
+
- **tospec-update 的 allowed-tools 缺少 `AskUserQuestion`**: 本文有兩處要求使用 `AskUserQuestion`, 但 allowed-tools 未列入, 在較嚴格的 harness 下其自身的「絕不臆測」步驟根本無法執行; 同時修正相隔四行原樣重複輸出的開場句.
|
|
87
|
+
- **每個 skill 只保留單一 Bash 授權**: 無限制的 `Bash` 已涵蓋 `Bash(tospec:*)`, 兩者同時列出等同於宣告一個實際不存在的限制; 合併為一項並補上檢查.
|
|
88
|
+
- **decision 步驟 4 的段落數不符**: 文字記載 "six sections" 但下方列出七個 bullet, 而其指向的範本實際有八個段落.
|
|
89
|
+
|
|
90
|
+
### 其他
|
|
91
|
+
|
|
92
|
+
- 新增 `report.md`: 針對產生出來的 skill 所做的稽核報告, 本版的修正即源自於此.
|
|
93
|
+
|
|
94
|
+
## [0.11.0] - 2026-07-24
|
|
95
|
+
|
|
96
|
+
本版本主軸為「與上游對齊、將 schema 改為英文」: 同步 OpenSpec 上游一批 archive/validate/config 修正, 將三套 workflow 的 schema 與範本由中文改為英文, 並使 workflow 的下一步選項標籤依情境動態生成.
|
|
97
|
+
|
|
98
|
+
### 變更
|
|
99
|
+
|
|
100
|
+
- **workflow schema 與範本改為英文**: sdd/issue/decision 三套 schema 的說明、描述、註解與「受驗證的段落標題」由正體中文改為英文, 並連帶更新引用這些段落名稱的 src 與測試. 這代表 schema 宣告要驗證的 section header 由中文改為英文 — 沿用舊有中文標題的文件將開始無法通過驗證, 需一併更新. 另新增 `pnpm templates` (`scripts/gen-templates.mjs`), 可將 sdd 文件範本輸出至 `./output/templates` 以便檢視.
|
|
101
|
+
- **workflow 下一步選項標籤依情境生成**: explore/grill/decision/update 收尾時的 next-step 選項標籤改為依當下情境產生的簡短敘述, 僅固定保留動作關鍵字 ((decision)/(propose)/(issue)/(grill)/(update)/(apply)/(archive)); 底層 `via tospec-*` 的路由參照維持不變 (skill 目標一致), 僅不再將原始 skill 名稱作為使用者可見的標籤.
|
|
102
|
+
|
|
103
|
+
### 修正
|
|
104
|
+
|
|
105
|
+
- **同步 OpenSpec 上游修正 (至 19d4171)**: 評估 OpenSpec `46a4d78..19d4171` 之間對本 fork 仍有影響的 commit 並全數套用, 追蹤 ref 一併更新至 19d4171. 主要修正:
|
|
106
|
+
- **config 防範 prototype pollution**: 設定鍵值加上 `__proto__` / `constructor` / `prototype` 防護, 且 `--allow-unknown` 不再繞過此檢查.
|
|
107
|
+
- **archive 的 scenario drift 檢查支援重複項**: MODIFIED 區塊移除兩個同名 scenario 其中之一時, 不再被靜默忽略.
|
|
108
|
+
- **archive 的 RENAMED/REMOVED 具備冪等性**: 已同步過的 RENAMED/REMOVED delta 視為 no-op 而非中止; 近似 REMOVED 的拼寫錯誤仍會中止; 同一需求同時被 RENAME 與 REMOVE 則直接拒絕.
|
|
109
|
+
- **validate 拒絕位於 change specs/ 根目錄的 delta spec**: 此類檔案原本可通過驗證卻在 merge 階段被丟棄.
|
|
110
|
+
- **config profile 變更改為 in-process 套用**: 不再依賴 `npx tospec update` 的 PATH 解析.
|
|
111
|
+
- **`created` 改以本地日期記錄**: 不再因 UTC 截斷而計算出錯誤日期.
|
|
112
|
+
- **ChangeParser 忽略非 `### Requirement:` 的 delta 標題**: `show <change> --json` 不再產生實際不存在的幻影需求.
|
|
113
|
+
- 同時採用上游數項改進: archive 保留新 capability 自行撰寫的 `## Purpose` (不再覆寫為 TBD)、schema 明確界定 design 與 proposal 的分界、validate 允許以數字開頭的 change 名稱、schema 探索可解析 symlink 目錄; 並為以上補上回歸測試.
|
|
114
|
+
|
|
115
|
+
## [0.10.0] - 2026-07-24
|
|
116
|
+
|
|
117
|
+
本版本聚焦於「工作流程交接」: apply 改由 CLI 統一驅動並解除強制撰寫測試的要求, explore/grill/decision 三者的下一步交接規則收緊, 不再自行決定後續動作.
|
|
118
|
+
|
|
119
|
+
### 變更
|
|
120
|
+
|
|
121
|
+
- **apply skill 改由 `tospec instructions apply --json` 驅動**: 不再手動組合 `tospec status` 與 applyRequires gate, 改由單一指令一次取回 `state` / `schemaName` / `contextFiles` / `progress` / `tasks` 與動態產生的 `instruction`, 並依 `state` (blocked / all_done / ready) 分流. 動工前先讀取 `contextFiles` 列出的實際路徑 (不再猜測檔名), 每個項目勾銷前重新讀取 design/specs 並確認覆蓋範圍; 進度一律以 tracks file 的 checkbox 為唯一來源, 不使用內建 todo 工具. change 的選擇順序改為: 使用者明確指定 > 自對話推斷 > 皆不明確時執行 `tospec list --json` 並以 `AskUserQuestion` 交由使用者選擇 (skill/command 的 allowedTools 補上 `AskUserQuestion`).
|
|
122
|
+
- **tospec-apply 不再強制撰寫測試**: 預設 apply loop 中的測試改為選配 (值得寫再寫), 強制先寫測試 (red → green) 屬於 `tospec-apply-with-tdd` 的職責; 兩個 skill 的描述收斂至剛好足以區分彼此. 既有測試仍必須維持全數通過, 為了通過而刪除、跳過或弱化既有測試明列為 guardrail 違規.
|
|
123
|
+
- **explore 一律以 AskUserQuestion 詢問下一步**: explore 不再自行挑選後續動作, 也不再無詢問即結束 — restate 共識後必定以 `AskUserQuestion` 將下一步 (decision / propose / issue / grill) 交由使用者決定, 推薦選項排列於首位並標註 "(Recommended)"; `tospec-decision` 僅在確實談定 material decision 時才出現於選項中.
|
|
124
|
+
- **grill 先確立目標再進行壓力測試, 收斂後交接**: 提問前先依序解析壓力測試的對象 (使用者明確指定 > 對話中唯一明確的主題 > 否則執行 `tospec list --json` 讓使用者自未完成的 change 中選擇 > 皆無則停止並建議改用 `tospec-explore`), 絕不自行挑選. 使用者確認 restatement 之後才進行交接: 若有 material decision 先交給 `tospec-decision`, 再依目標種類分流 (既有 proposal → `tospec-update`; 原始想法或 explore 產出 → `tospec-propose` / `tospec-issue`); grill 本身仍不寫入任何檔案.
|
|
125
|
+
- **decision 完成後回導既有 change**: 若決策源自對既有 change 的 grill/explore, 記錄後交回 `tospec-update` 合併至該 change 的產出物; 尚無對應 change 時才交給 `tospec-propose` / `tospec-issue`, 並將檔名帶入 `--decisions`.
|
|
126
|
+
|
|
127
|
+
## [0.9.0] - 2026-07-24
|
|
128
|
+
|
|
129
|
+
本版本主軸為「收緊契約」: 驗證規則趨嚴 (stub、code fence、scenario、REMOVED/RENAMED), CLI 的 `--json` 輸出統一為單一 envelope, dashboard 補上 DNS rebinding 防護, 同時清除一批死碼與過度抽象的設計.
|
|
130
|
+
|
|
131
|
+
### 新增
|
|
132
|
+
|
|
133
|
+
- **decision (ADR) 與 change 的結構化連結**: change metadata 新增選配的 `decisions` 欄位 (儲存 ADR 檔名), `tospec new change --decisions` 可於建立時一併記錄; explore → propose 的交接與 decision skill 同步更新以傳遞檔名; decision 範本新增選配的 `## 關聯變更` 段落; archive 時將 ADR 連結寫入歸檔 ticket 的 `## 關聯決策` 段落; dashboard 的 change 詳情頁顯示可點擊的關聯 ADR.
|
|
134
|
+
- **init 建立 decisions 目錄**: `tospec init` (含 extend 模式) 會一併建立 `tospec/decisions/`, 使決策記錄的存放位置自始即明確可見, 而非等到第一次執行 `tospec decision new` 才出現.
|
|
135
|
+
- **init 歡迎畫面列出全部六個入口 skill**: 初始化完成後的畫面補齊所有 entry skill, 不再只顯示其中一部分.
|
|
136
|
+
|
|
137
|
+
### 安全
|
|
138
|
+
|
|
139
|
+
- **dashboard 防範 DNS rebinding 並將遠端綁定改為 opt-in**: 所有 route 執行前先檢查 Host header, 僅接受 loopback 位址 (127.0.0.1 / localhost / [::1], 含連接埠與 IPv6 形式) 或明確綁定的位址, 其餘一律回傳 403; 以 `--host` 綁定非 loopback 位址需另外帶入新增的 `--allow-remote` flag (`--detach` 亦會轉傳), 否則拒絕啟動並說明風險.
|
|
140
|
+
|
|
141
|
+
### 變更
|
|
142
|
+
|
|
143
|
+
- **migrate 強化**: 改為兩階段寫入 (先寫入 staging 目錄, 全部成功才搬移至 target) — 中途失敗不留下半成品, 重新執行亦不會被 guard 阻擋; 主 spec 正規化時, RENAMED 區塊的內容以 MODIFIED 形式保留並警告列出, REMOVED 則記入輸出報告而不再靜默丟棄; migrated change 的 metadata 補上 `type` / `created` (取歸檔日期或當日) / `goal` (取 proposal Why 首行, 若無則標註 Migrated from OpenSpec).
|
|
144
|
+
- **死碼與過度抽象清理**: 移除 hard link 機制 (全部改用 copyDir)、cursor adapter 與 adapter registry、未生效的設定欄位 (`featureFlags` / `delivery` / `openers` / `agentsLinkMode` — 含這些欄位的舊設定檔仍可讀取, 僅是忽略), 以及 `ensureLink` 等無呼叫者的死碼. workflow 清單收斂為單一 registry (新增 workflow 只需修改一處; 順帶修正 COMMAND_IDS 遺漏 update 的既有 drift). 重複的 section walker 與 RENAMED 配對邏輯合併為單一實作.
|
|
145
|
+
- **flag 驗證與 root 解析統一**: `tospec show` 不再接受未知 flag (如拼錯的 `--josn` 會回報錯誤); `list --sort`、`validate --concurrency`、`decision list --status/--sort` 的無效值改為回報錯誤而非靜默忽略. 所有指令 (含 archive/templates/schemas) 改用同一套 root 解析邏輯 — 在子目錄執行 `templates` / `schemas` 現在能正確找到專案 root (bug 修正).
|
|
146
|
+
- **JSON envelope 統一 (breaking change)**: 所有指令的 `--json` 輸出遵循單一 envelope — 成功為 `{version, root?, <data>}`, 失敗為 `{version, root?, <dataKey>: null, status: [{severity, code, message, fix?}]}`. 具體變動: 全部指令均帶 `version`; `templates` 輸出改為巢狀於 `templates` 鍵之下並補上 `root`; `schemas` 輸出由陣列改為 `{schemas: [...]}` 並補上 `root`; show/validate 的 unknown/ambiguous 錯誤補上為 null 的資料鍵. 三套 error helper 收斂為 shared-output 的 `emitFailure` / `emitFailureStatus`; human 模式的錯誤前綴統一為 `Error:`; JSON 輸出後不再呼叫 `process.exit(1)` (改為設定 exitCode, 避免 stdout pipe 遭截斷).
|
|
147
|
+
- **archive skill 改用 `--json` 契約**: tospec-archive workflow 的兩個 archive 指令都改帶 `--json`, 並附上結構化結果的判讀指引 (`{archive, status: [{code, message, fix}]}`); archive human 模式的錯誤、警告與取消訊息改由 stderr 輸出, stdout 只保留資料.
|
|
148
|
+
- **stub 偵測 (檔案存在不等於完成)**: 空白或與範本 byte-identical 的 artifact 檔案不再視為完成 — status 以新的 `stub` 狀態標示 (JSON 輸出亦帶出), 下游 artifact 維持 blocked, 不再被空殼檔案錯誤解鎖.
|
|
149
|
+
- **REMOVED/RENAMED 欄位驗證**: REMOVED 條目缺少範本要求的 Reason 或 Migration 欄位時回報 ERROR (附行號); RENAMED 的 FROM 若無配對的 TO (或 TO 無配對的 FROM) 不再靜默丟棄, 改為回報 ERROR.
|
|
150
|
+
- **未閉合的 code fence 回報錯誤**: fence 開啟後未關閉會使其後所有內容被標為不可見 — 現在 validate 與 archive 皆會回報 ERROR (`Code fence opened at line N is never closed`), 不再靜默忽略文件其餘部分.
|
|
151
|
+
- **Scenario 驗證收緊**: 只有 `#### Scenario:` 標題會計為 scenario — `#### Notes` 等其他第四階標題不再計入 (並回報 WARNING 提醒). 每個 scenario 內文必須包含大寫的 `WHEN` 與 `THEN`, 缺少者回報 ERROR 並附行號. 依賴「任何 #### 都算 scenario」此一舊行為的 spec 將開始回報錯誤.
|
|
152
|
+
- **validate 與 archive 統一驗證引擎**: 兩個指令現在執行同一套 `validateChangeArtifacts` pipeline (delta spec 驗證 + schema 宣告的段落驗證), 規則與 severity 完全一致, 「validate 全數通過但 archive 被阻擋」的情形不再可能發生. archive 原本針對 proposal.md 額外執行的 Zod 檢查 (如 Why 少於 50 字視為 ERROR) 已移除; Why 的長度規則統一由 schema 的 `minSectionLength` 以 WARNING 回報, 兩邊皆不阻擋執行.
|
|
153
|
+
- **tospec-update 移除 Experimental 標記**: skill 與指令的描述及 tag 不再標註實驗性質.
|
|
154
|
+
|
|
155
|
+
### 修正
|
|
156
|
+
|
|
157
|
+
- **apply 指令不再指向不存在的 skill**: 缺少 artifact 或 tasks 檔案時, blocked 訊息原本要求使用 `tospec-continue-change` (從未存在的 skill), 改為依 change 的 schema 指向實際的規劃 skill (sdd → tospec-propose, issue → tospec-issue).
|
|
158
|
+
- **validate 的讀檔競爭條件不再導致整個指令崩潰**: 檔案在列舉之後、讀取之前消失時, 改為對該檔案回報 ERROR 並繼續驗證其餘檔案.
|
|
159
|
+
- **Requirements 段落限定為第二階標題**: `MarkdownParser.parseSpec` 原本會將巢狀的 `### Requirements` 誤判為需求段落, 現在與 `extractRequirementsSection` 一致, 只接受 `## Requirements`.
|
|
160
|
+
|
|
161
|
+
## [0.8.0] - 2026-07-23
|
|
162
|
+
|
|
163
|
+
本版本圍繞「壓力測試」與「決策視覺化」: 新增可對任何產出物進行壓力測試的 grill 工作流程, 並將決策記錄 (ADR) 整合進 Dashboard.
|
|
164
|
+
|
|
165
|
+
### 新增
|
|
166
|
+
|
|
167
|
+
- **tospec-grill 工作流程**: 全新的唯讀壓力測試工作流程, 以 Known/Unknown 四象限框架 (已知的已知 / 已知的未知 / 未知的已知 / 未知的未知) 對任何產出物 — 計畫、決策、想法、設計 — 進行嚴格的質詢, 直到每個假設都被明確點出、每個開放問題都被回答或明確擱置. 它由關鍵詞觸發 (提及 "grill" / "grilling" 即自動啟動), 不寫入任何檔案, 也不交接給任何後續步驟, 唯一產出是在對話中交付經使用者確認的共識. 同步提供 tospec-grill skill 與 `/tosx:grill` 指令.
|
|
168
|
+
- **Dashboard 決策 (ADR) 檢視**: Dashboard 新增決策索引與內容渲染, 並支援搜尋, 使已記錄的架構決策可直接於瀏覽器中瀏覽與查找.
|
|
169
|
+
|
|
170
|
+
### 變更
|
|
171
|
+
|
|
172
|
+
- **決策 Q&A 改為可解析的區塊**: 將原本 `- Q:` 搭配縮排 `A:` 的寫法 (CommonMark 會將其摺疊為一行) 改為 `**Q:**` 獨立一行、空一行、再接答案段落. Dashboard 會在前端解析原始 markdown 區塊並渲染為 Q/A 卡片; 遇到舊格式或空白區塊則優雅降級, 保留 marked 原本的輸出結果.
|
|
173
|
+
|
|
174
|
+
## [0.7.0] - 2026-07-23
|
|
175
|
+
|
|
176
|
+
引入完整的架構決策記錄 (ADR) 能力, 並強化各 review 工作流程的職責邊界.
|
|
177
|
+
|
|
178
|
+
### 新增
|
|
179
|
+
|
|
180
|
+
- **決策記錄 (ADR) 功能**: 新增 `schemas/decision` — 包含 ADR 範本與必要段落契約 (狀態、背景、決策、影響、替代方案、後續工作, 以及選配的「決策過程」Q&A trail). 新增 `tospec decision new/list` 指令, 以共用的 `yyyyMMdd_HHmmss` 時間戳於 `tospec/decisions` 之下建立記錄, 索引則即時推算. 同時提供 tospec-decision skill 與 `/tosx:decision` 指令, 並附上端對端測試 (建立、預設時間戳、覆寫防護、清單過濾與排序).
|
|
181
|
+
- **decision skill 標註 disable-model-invocation**: SkillTemplate 新增選配的 `disableModelInvocation` 欄位, 設定後會於產生的 frontmatter 輸出 `disable-model-invocation: true`. 套用於 tospec-decision, 確保 ADR 只在明確呼叫 `/tosx:decision` 時才會記錄, 絕不被自動觸發.
|
|
182
|
+
- **init 支援選配的決策規則安裝**: 初始化選定 agent 之後, 會詢問是否將靜態的決策規則寫入各選定 agent 的 `rules/tospec/decision.md` (`.claude` / `.codex`); 非互動執行 (`--tools` / CI) 時預設安裝. 由於該規則是 tospec 自有的固定內容, 採逐工具直接寫入, 而非 skill 所使用的 `.agents/` + hard link 機制.
|
|
183
|
+
|
|
184
|
+
### 變更
|
|
185
|
+
|
|
186
|
+
- **防止 review / verify 步驟遞迴過度審查**: 保留每一次審查, 但限縮其範圍 — 受審對象永遠是程式碼 diff, 而非另一份審查的輸出. verify 拆分為兩個各執行一次的 subagent, Aggregate 只做機械式彙整而不計為審查, 重新執行時針對修正後的程式碼而非前一份報告; sync 對每個 Requirement 只做一次比對, `sync-report.md` 是交付物而非再稽核的對象; update 的一致性檢查改為單次通讀. 新增「never review the review」護欄.
|
|
187
|
+
|
|
188
|
+
## [0.6.0] - 2026-07-18
|
|
189
|
+
|
|
190
|
+
Dashboard 進化為可背景常駐、多專案並存的服務, 並補上 TDD 導向的實作流程與更穩健的需求解析.
|
|
191
|
+
|
|
192
|
+
### 新增
|
|
193
|
+
|
|
194
|
+
- **Dashboard 背景執行與多專案共存**: `--detach` 可將 dashboard 置於背景執行, `--stop` 則終止之; 連接埠自 5620 起向上配置, 使多個專案得以同時運作; 執行中的實例記錄於 `~/.config/tospec/dashboards/{pid}_{port}` (檔案內容為專案路徑); 每次啟動會回收失效的記錄, `--list` 列出所有執行中的 dashboard, `--stop` 優先比對當前專案路徑, 否則詢問要終止哪一個. 新增 `-p` / `-o` / `-d` / `-l` 短選項, 並在 Windows 上為 git / detach / browser 的 spawn 加上 `windowsHide`, 避免啟動與活動刷新時閃現主控台視窗.
|
|
195
|
+
- **apply-with-tdd 工作流程**: 新增以測試驅動開發為主軸的實作流程與對應範本.
|
|
196
|
+
- **skills script**: 新增 `skills` script, 可產生並輸出 skill 範本與設定, 方便檢視與比對即將安裝的內容.
|
|
197
|
+
|
|
198
|
+
### 變更
|
|
199
|
+
|
|
200
|
+
- **需求解析忽略 fenced code block**: 解析需求時略過程式碼區塊, 避免區塊內的文字被誤判為需求項目, 並補上回歸測試.
|
|
201
|
+
|
|
202
|
+
### 修正
|
|
203
|
+
|
|
204
|
+
- **explore 訪談工作流程**: 釐清問題批次 (question batching) 的邏輯說明, 使何時該一次提出多題、何時該逐題追問更為明確.
|
|
205
|
+
|
|
206
|
+
## [0.5.0] - 2026-07-18
|
|
207
|
+
|
|
208
|
+
首個公開發行的 tag, 涵蓋完整的 CLI (init / new / list / show / status / validate / archive / migrate / instructions / schemas / templates / dashboard) 與 sdd、issue 兩套工作流程. 以下為本版本值得記錄的增量.
|
|
209
|
+
|
|
210
|
+
### 新增
|
|
211
|
+
|
|
212
|
+
- **Dashboard 可直接勾選任務**: 任務進度由唯讀計數升級為可寫入. 新增 `POST /api/task`, 就地翻轉 `tasks.md` 中的單一 checkbox 並保留周圍文字與行尾字元; 寫入範圍限縮於 `tospec/changes/` 之內, 且要求 `application/json`, 使跨來源請求在觸及本 server 之前即撞上不予回應的 preflight. `/api/overview` 一併回傳完整任務清單, 使展開的面板在 SSE 刷新之間維持即時而無需二次往返.
|
|
213
|
+
- **Dashboard 推導變更階段與歸檔凍結**: 讀取時依 artifact / task 進度、時效性與已通過的 sync-report 推導出 applying / archiving 階段, 並為每個階段顯示呼吸光暈徽章 (含 reduced-motion 降級). change 一旦進入 archiving 即凍結任務編輯 — server 回傳 409, client 停用 checkbox.
|
|
214
|
+
- **Dashboard 的 apply / archive 效果**: 加入 propose / issue 的 apply / archive 效果呈現, 並在對應狀態下停用編輯.
|
|
215
|
+
|
|
216
|
+
### 變更
|
|
217
|
+
|
|
218
|
+
- **允許遷移至空的 `tospec/` 目錄**: `tospec init` 會建立含空 specs / changes 目錄與預設 `config.yaml` 的 `tospec/`, 原本單純的存在性檢查會迫使使用者先刪除 init 產物才能執行 migrate; 改為僅在偵測到實際內容時才阻擋.
|
|
219
|
+
|
|
220
|
+
### 其他
|
|
221
|
+
|
|
222
|
+
- 新增 `prepack` script 與 npm publish 的準備設定, 完備套件發行流程.
|
|
223
|
+
|
|
224
|
+
[0.14.0]: https://github.com/seanmars/tospec/compare/v0.13.0...v0.14.0
|
|
225
|
+
[0.13.0]: https://github.com/seanmars/tospec/compare/v0.12.0...v0.13.0
|
|
226
|
+
[0.12.0]: https://github.com/seanmars/tospec/compare/v0.11.0...v0.12.0
|
|
227
|
+
[0.11.0]: https://github.com/seanmars/tospec/compare/v0.10.0...v0.11.0
|
|
228
|
+
[0.10.0]: https://github.com/seanmars/tospec/compare/v0.9.0...v0.10.0
|
|
229
|
+
[0.9.0]: https://github.com/seanmars/tospec/compare/v0.8.0...v0.9.0
|
|
230
|
+
[0.8.0]: https://github.com/seanmars/tospec/compare/v0.7.0...v0.8.0
|
|
231
|
+
[0.7.0]: https://github.com/seanmars/tospec/compare/v0.6.0...v0.7.0
|
|
232
|
+
[0.6.0]: https://github.com/seanmars/tospec/compare/v0.5.0...v0.6.0
|
|
233
|
+
[0.5.0]: https://github.com/seanmars/tospec/releases/tag/v0.5.0
|
package/README.md
CHANGED
|
@@ -55,7 +55,7 @@ tospec archive add-dark-mode
|
|
|
55
55
|
| `sdd` | 開發新需求 | `proposal → specs / design → tasks` |
|
|
56
56
|
| `issue` | 修正問題 | `task`(根因診斷) + 選配 `specs` |
|
|
57
57
|
|
|
58
|
-
兩者都在 **apply**
|
|
58
|
+
兩者都在 **apply** 階段實作, 最後由 **archive** 判斷是否需要先 **sync** 再歸檔. apply 以完整測試與 `tospec validate` 通過為完成標準; **verify (雙軸審查) 是 opt-in**, 只有使用者主動要求時才執行, apply 不會自己跑, 也不會主動詢問.
|
|
59
59
|
|
|
60
60
|
文件狀態的判斷方式:
|
|
61
61
|
|
|
@@ -76,7 +76,7 @@ tospec archive add-dark-mode
|
|
|
76
76
|
| `tospec-issue` | 診斷 bug 至根因, 產出 issue change |
|
|
77
77
|
| `tospec-decision` | 記錄架構決策為永久 ADR |
|
|
78
78
|
| `tospec-update` | 修訂 change 的規劃文件並保持一致 |
|
|
79
|
-
| `tospec-apply` | 逐項實作任務 (不強制寫測試)
|
|
79
|
+
| `tospec-apply` | 逐項實作任務 (不強制寫測試); verify 需使用者主動要求 |
|
|
80
80
|
| `tospec-apply-with-tdd` | 同上, 但強制先寫測試 (red → green) |
|
|
81
81
|
| `tospec-sync` | 以程式碼為準核對規格, 產出 sync-report |
|
|
82
82
|
| `tospec-archive` | 判斷是否需要 sync, 然後歸檔完成的 change |
|
|
@@ -94,24 +94,28 @@ tospec archive add-dark-mode
|
|
|
94
94
|
| `tospec init [path]` | 初始化專案, 建立 `tospec/` 與 Skill. 選項: `--tools <claude\|codex\|all\|none>`, `--force`, `--profile <name>` |
|
|
95
95
|
| `tospec update [path]` | 重新產生已設定的 Skill, 修復連結或複製檔案. 選項: `--force` |
|
|
96
96
|
| `tospec migrate [openspec-dir]` | 把 OpenSpec 專案轉成 tospec 格式 (預設讀 `./openspec`). 選項: `-f, --force` |
|
|
97
|
-
| `tospec config list`
|
|
97
|
+
| `tospec config <sub>` | 全域設定. 子命令: `path`, `list`, `get <key>`, `set <key> <value>`, `unset <key>`, `reset`, `edit`, `profile [preset]` (調整要安裝的 Skill) |
|
|
98
98
|
|
|
99
99
|
### 建立與查詢
|
|
100
100
|
|
|
101
101
|
| 指令 | 作用 |
|
|
102
102
|
|------|------|
|
|
103
|
-
| `tospec new change <name>` | 建立 change 目錄與 ticket 索引檔. 選項: `--schema <sdd\|issue>`, `--description <text>`, `--goal <text>`, `--json` |
|
|
103
|
+
| `tospec new change <name>` | 建立 change 目錄與 ticket 索引檔. 選項: `--schema <sdd\|issue>`, `--description <text>`, `--goal <text>`, `--decisions <files>`, `--json` |
|
|
104
104
|
| `tospec list` | 列出進行中的 change (預設). 選項: `--specs`, `--changes`, `--sort <recent\|name>`, `--type <requirement\|issue>`, `--json` |
|
|
105
|
-
| `tospec show [item-name]` | 顯示 change 或 spec 內容. 選項: `--type <change\|spec>`, `--deltas-only`, `--json` |
|
|
105
|
+
| `tospec show [item-name]` | 顯示 change 或 spec 內容. 選項: `--type <change\|spec>`, `--deltas-only`, `--requirements`, `--no-scenarios`, `-r, --requirement <id>`, `--no-interactive`, `--json` |
|
|
106
106
|
| `tospec status` | 依檔案與 schema 顯示各文件狀態. 選項: `--change <id>`, `--schema <name>`, `--json` |
|
|
107
|
+
| `tospec decision new <topic>` | 建立 ADR (`tospec/decisions/<yyyyMMdd_HHmmss>-<topic>.md`) 與索引列. 選項: `--title <text>`, `--summary <text>`, `--date <yyyyMMdd_HHmmss>`, `--status <proposed\|accepted\|superseded>`, `--force`, `--json` |
|
|
108
|
+
| `tospec decision list` | 以索引表列出 ADR. 選項: `--status <proposed\|accepted\|superseded>`, `--sort <date\|name>`, `--json` |
|
|
107
109
|
|
|
108
110
|
### 驗證與歸檔
|
|
109
111
|
|
|
110
112
|
| 指令 | 作用 |
|
|
111
113
|
|------|------|
|
|
112
|
-
| `tospec validate [item-name]` | 檢查必要段落與 delta spec 格式. 選項: `--all`, `--changes`, `--specs`, `--type <change\|spec>`, `--strict`, `--concurrency <n>`, `--json` |
|
|
114
|
+
| `tospec validate [item-name]` | 檢查必要段落與 delta spec 格式. 選項: `--all`, `--changes`, `--specs`, `--type <change\|spec>`, `--strict`, `--concurrency <n>`, `--no-interactive`, `--json` |
|
|
113
115
|
| `tospec archive [change-name]` | 重新驗證, 合併 delta specs 到主 specs, 再把 change 移到 archive. 選項: `-y, --yes`, `--skip-specs`, `--no-validate`, `--require-sync`, `--json` |
|
|
114
116
|
|
|
117
|
+
delta spec 的位置固定為 `specs/<capability>/spec.md`, **恰好一層**: 更深的巢狀目錄不會被合併, 驗證會直接報錯. 完全沒有行為變更的 change (工具, CI, 純文件) 在 `.tospec.yaml` 設 `skip_specs: true` 宣告即可, 不要為了通過驗證捏造 requirement.
|
|
118
|
+
|
|
115
119
|
### 給 AI 工具的指令
|
|
116
120
|
|
|
117
121
|
| 指令 | 作用 |
|
|
@@ -126,7 +130,16 @@ tospec archive add-dark-mode
|
|
|
126
130
|
tospec dashboard [path]
|
|
127
131
|
```
|
|
128
132
|
|
|
129
|
-
啟動本機唯讀 web dashboard, 檢視 change 與 specs 進度. 選項:
|
|
133
|
+
啟動本機唯讀 web dashboard, 檢視 change 與 specs 進度. 選項: `-p, --port <n>` (預設 5620), `--host <addr>` (預設 127.0.0.1), `-o, --open` (啟動後開啟瀏覽器), `-d, --detach` (背景執行), `--stop` (停止本專案的 dashboard), `-l, --list` (列出所有執行中的 dashboard), `--allow-remote` (允許綁定非 loopback 位址, 會對外網開放).
|
|
134
|
+
|
|
135
|
+
## 文件
|
|
136
|
+
|
|
137
|
+
- [Agent 契約](./docs/agent-contract.md) —— `--json` 的成功/失敗封包與 exit code
|
|
138
|
+
- [自訂 schema](./docs/custom-schema.md) —— `schema.yaml` 欄位, 解析順序, 佈局限制
|
|
139
|
+
|
|
140
|
+
## 更新日誌
|
|
141
|
+
|
|
142
|
+
各版本的變更與其根因說明: [CHANGELOG.md](./CHANGELOG.md)
|
|
130
143
|
|
|
131
144
|
## 授權
|
|
132
145
|
|
package/assets/dashboard/app.js
CHANGED
|
@@ -459,6 +459,9 @@ function taskChangeRow(c) {
|
|
|
459
459
|
c.phase === 'archiving'
|
|
460
460
|
? el('span', { class: 'badge badge-archiving', text: 'archiving' })
|
|
461
461
|
: null,
|
|
462
|
+
c.phase === 'ready'
|
|
463
|
+
? el('span', { class: 'badge badge-ready', text: 'ready' })
|
|
464
|
+
: null,
|
|
462
465
|
]),
|
|
463
466
|
taskListBody(c)
|
|
464
467
|
);
|
|
@@ -607,6 +610,9 @@ function changeRow(c, staleDays, changed) {
|
|
|
607
610
|
} else if (c.phase === 'archiving') {
|
|
608
611
|
row.classList.add('row-archiving');
|
|
609
612
|
row.append(el('span', { class: 'badge badge-archiving', text: 'archiving' }));
|
|
613
|
+
} else if (c.phase === 'ready') {
|
|
614
|
+
row.classList.add('row-ready');
|
|
615
|
+
row.append(el('span', { class: 'badge badge-ready', text: 'ready' }));
|
|
610
616
|
}
|
|
611
617
|
if (c.artifactSummary.blocked > 0) {
|
|
612
618
|
row.append(el('span', { class: 'badge badge-blocked-warn', text: 'blocked' }));
|
|
@@ -20,6 +20,8 @@
|
|
|
20
20
|
--badge-applying-fg: #0e7490;
|
|
21
21
|
--badge-archiving-bg: #ede9fe;
|
|
22
22
|
--badge-archiving-fg: #6d28d9;
|
|
23
|
+
--badge-ready-bg: #dcfce7;
|
|
24
|
+
--badge-ready-fg: #15803d;
|
|
23
25
|
/* chart series (CVD-validated pair per theme, see ADR 001) */
|
|
24
26
|
--chart-1: #2563eb;
|
|
25
27
|
--chart-2: #0d9488;
|
|
@@ -50,6 +52,8 @@
|
|
|
50
52
|
--badge-applying-fg: #67e8f9;
|
|
51
53
|
--badge-archiving-bg: #241a3a;
|
|
52
54
|
--badge-archiving-fg: #c4b5fd;
|
|
55
|
+
--badge-ready-bg: #0d2b1a;
|
|
56
|
+
--badge-ready-fg: #86efac;
|
|
53
57
|
--chart-1: #3b82f6;
|
|
54
58
|
--chart-2: #0d9488;
|
|
55
59
|
--ok: #4ade80;
|
|
@@ -78,6 +82,8 @@
|
|
|
78
82
|
--badge-applying-fg: #8be9fd;
|
|
79
83
|
--badge-archiving-bg: #3d2b38;
|
|
80
84
|
--badge-archiving-fg: #ff79c6;
|
|
85
|
+
--badge-ready-bg: #1f3d2b;
|
|
86
|
+
--badge-ready-fg: #50fa7b;
|
|
81
87
|
--chart-1: #a76ef5;
|
|
82
88
|
--chart-2: #0d9488;
|
|
83
89
|
--ok: #50fa7b;
|
|
@@ -463,7 +469,10 @@ details.task-change summary:hover {
|
|
|
463
469
|
|
|
464
470
|
/* Live phase: a persistent breathing glow, distinct from the one-shot flash.
|
|
465
471
|
The inset bar reads even at rest; the outer glow pulses. Hue and cadence
|
|
466
|
-
separate applying (cyan, ~2s) from archiving (violet,
|
|
472
|
+
separate applying (cyan, ~2s) from archiving (violet, ~3.2s) from ready
|
|
473
|
+
(green, ~4.4s). Cadence tracks how much the row wants your attention, not
|
|
474
|
+
lifecycle order: archiving is transient and worth a look, ready is a standing
|
|
475
|
+
reminder that should not nag, so it breathes slowest of the three. */
|
|
467
476
|
@keyframes pulse-applying {
|
|
468
477
|
0%,
|
|
469
478
|
100% {
|
|
@@ -492,11 +501,26 @@ details.task-change summary:hover {
|
|
|
492
501
|
animation: pulse-archiving 3.2s ease-in-out infinite;
|
|
493
502
|
}
|
|
494
503
|
|
|
504
|
+
@keyframes pulse-ready {
|
|
505
|
+
0%,
|
|
506
|
+
100% {
|
|
507
|
+
box-shadow: inset 3px 0 0 var(--badge-ready-fg), 0 0 0 0 transparent;
|
|
508
|
+
}
|
|
509
|
+
50% {
|
|
510
|
+
box-shadow: inset 3px 0 0 var(--badge-ready-fg), 0 0 9px 0 var(--badge-ready-fg);
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
.row-ready {
|
|
515
|
+
animation: pulse-ready 4.4s ease-in-out infinite;
|
|
516
|
+
}
|
|
517
|
+
|
|
495
518
|
/* No prior reduced-motion handling existed; a persistent animation needs this
|
|
496
519
|
accessibility floor. Degrade the breathing glow to a static left colour bar. */
|
|
497
520
|
@media (prefers-reduced-motion: reduce) {
|
|
498
521
|
.row-applying,
|
|
499
|
-
.row-archiving
|
|
522
|
+
.row-archiving,
|
|
523
|
+
.row-ready {
|
|
500
524
|
animation: none;
|
|
501
525
|
}
|
|
502
526
|
.row-applying {
|
|
@@ -505,6 +529,9 @@ details.task-change summary:hover {
|
|
|
505
529
|
.row-archiving {
|
|
506
530
|
box-shadow: inset 3px 0 0 var(--badge-archiving-fg);
|
|
507
531
|
}
|
|
532
|
+
.row-ready {
|
|
533
|
+
box-shadow: inset 3px 0 0 var(--badge-ready-fg);
|
|
534
|
+
}
|
|
508
535
|
}
|
|
509
536
|
|
|
510
537
|
/* -- panels & rows -- */
|
|
@@ -622,6 +649,11 @@ a.row:hover {
|
|
|
622
649
|
color: var(--badge-archiving-fg);
|
|
623
650
|
}
|
|
624
651
|
|
|
652
|
+
.badge-ready {
|
|
653
|
+
background: var(--badge-ready-bg);
|
|
654
|
+
color: var(--badge-ready-fg);
|
|
655
|
+
}
|
|
656
|
+
|
|
625
657
|
.badge-unknown,
|
|
626
658
|
.badge-artifact {
|
|
627
659
|
background: var(--border);
|
package/dist/cli/index.js
CHANGED
|
@@ -145,7 +145,7 @@ program
|
|
|
145
145
|
.option('-y, --yes', 'Skip confirmation prompts')
|
|
146
146
|
.option('--skip-specs', 'Skip spec update operations (useful for infrastructure, tooling, or doc-only changes)')
|
|
147
147
|
.option('--no-validate', 'Skip validation (not recommended, requires confirmation)')
|
|
148
|
-
.option('--require-
|
|
148
|
+
.option('--require-sync', 'Require a passing sync-report.md in the change directory before archiving')
|
|
149
149
|
.option('--json', 'Output as JSON (non-interactive)')
|
|
150
150
|
.action(async (changeName, options) => {
|
|
151
151
|
try {
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,EAKL,YAAY,EACb,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAmBxD,UAAU,YAAY;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,UAAU,gBAAgB;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAwDD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAM7E;AAED;;GAEG;AACH,wBAAgB,kCAAkC,CAAC,iBAAiB,EAAE,MAAM,EAAE,GAAG,OAAO,CAKvF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAE5F;AAyBD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,gBAAgB,CA8B5F;AAMD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgZ5D"}
|