Skip to content

Releases: ggwhite/4x

v0.3.14

Choose a tag to compare

@github-actions github-actions released this 07 Jul 12:14

Features

  • Learnings 獨立檔名 — 同 round 內各角色的 learnings 改為寫入 {role}-learnings.json(如 coder-learnings.json),harvester 以 glob 收割全部,不再被最後一個角色覆寫;向下相容舊的 role-learnings.json
  • Resume/Phase transition 對齊SmartResumePhase 加入 ProfileConfig 參數,deep-review PASS 後會依 profile 決定走 Fixing 或 Accepting,與 live-run 路徑行為一致
  • 驗證工具強化check-docs-sync 對刪除/搬遷的檔案自動 grep docs 內舊路徑、未 commit 的變更加 WARNING 提示;check-guide-i18n heading 數量不符時列出雙方具體 heading 供對照
  • Coder 驗證 Guardrail — 框架在 coder 完成後自動跑 make check-docs-sync + check-i18n,結果寫入 docs-gate.json artifact,reviewer 不再需要手動重跑驗證
  • Runner 層刪舊產出 — runner 執行前先清除上一輪殘留的產出檔(如 gate-verdicts.json),讓 runner 回 nil 卻沒寫新檔時退化為明確的 parse error,不再靜默吃 stale data
  • 4x skills CLI — 新增 4x skills list/install/remove 子命令,以 symlink 管理 repo skills/ 目錄下的 skill 安裝到 ~/.claude/skills/;owner-only skill 安裝時顯示 WARNING

CI

  • CI Release 簽名公證 — release workflow 改用 make dashboard-release,匯入 Developer ID 憑證做 codesign + notarization,GitHub Release 產出的 .dmg 不再被 Gatekeeper 擋

Internal

  • Dashboard macOS app 簽名與公證 — 本地 make dashboard-release 支援 Developer ID Application 簽名 + notarytool 公證 + staple,產出可直接分發的 .dmg
  • 4x-autopilot / 4x-audit skill 搬進 repo — skill 檔案從外部搬入 skills/ 目錄,搭配 4x skills install 使用
  • Token 優化 — 精簡 role template 與 prompt 注入,降低每輪 token 消耗

v0.3.13

Choose a tag to compare

@github-actions github-actions released this 06 Jul 01:30

Features

  • 角色範圍外發現的非阻斷回報管道 — plugin 角色契約新增 Scope Gaps 章節:角色發現明確需要另開 feature、但不阻塞目前任務的範圍外問題時,append 一行到 docs/reference/discovered-feature-gaps.md,不自行擴大 scope 或呼叫 4x new,作為給人審核的候選清單。4x init 建立的新專案開箱即有這條規則

Fixes

  • 4x sync 偵測不到 learnings-context import 遺失comparePlugins()/syncPlugins() 只要 plugin 檔案本身與其 import 行都已是最新,就永遠不會偵測到 @.4x/learnings-context.md 這行 import 缺失,導致 4x learn 累積的教訓可能從未真正送進任何角色的 prompt,且沒有任何警告;現在會一併檢查這行
  • Learnings 選取偏誤,下游角色可能收不到任何過去教訓 — 過去 Designer 讀取全部 active+candidate 學習條目時 active 固定排在最前面,造成 candidate 幾乎選不上;選出的清單又依各角色自己的 category 再過濾一次,但各角色 category 幾乎沒有交集,導致 Reviewer/Tester 等角色常常收到 0 筆相關教訓。改為每個角色依自己的 category 直接篩選、active/candidate 各有保底名額並交錯呈現,同時補上 design-reviewer/fixer 兩個角色原本從未渲染過的 Past Learnings 區塊

Docs

  • README 補上 Issue-First MR Flow、landing page 標註 cost tracking 限制 — README Key Features 表格新增 Issue-First MR Flow 一列(先前只寫在 concepts.md,README 看不到),5 語言翻譯同步;landing page Cost Visibility 區塊標註目前只有 Claude Code runner 會回報花費,其他 runner 尚未支援,6 語言 i18n 同步

v0.3.12

Choose a tag to compare

@github-actions github-actions released this 05 Jul 12:29

Features

  • 最近完成列表顯示花費 — dashboard「最近完成」卡片標題列顯示所有已完成 feature 的加總花費,每一列也顯示各自金額

Fixes

  • Worktree 開啟前自動同步本地分支4x run 開 worktree 前直接用當下 checkout 的 local ref 建立分支;issue-first MR 流程下合併發生在 GitHub/GitLab 端不會更新本地,本地 main 忘記 pull 太久時新 feature 就會從過期的 base 分岔。現在會先 fetch + fast-forward 到 upstream tracking branch:本地落後就同步到最新,本地與遠端已分岔或本地領先(有未推送 commit)時印警告但不強制覆蓋任何本地 commit
  • Dashboard log 偶爾出現亂碼 — tool_use 摘要(如 Bash 指令)截斷邏輯用 byte 位移切字串,遇到中文等多位元組字元會從中間切斷,寫入 log 後在 SSE 轉發時被替換成亂碼方塊;改為在 UTF-8 字元邊界截斷
  • Messages 分頁重複顯示總花費 — Messages tab body 內有一行跟 header 重複的總花費顯示,已移除

v0.3.11

Choose a tag to compare

@github-actions github-actions released this 03 Jul 11:00

Features

  • Dashboard 總花費顯示於分頁列 — 總花費徽章固定顯示在總覽/訊息/日誌/截圖分頁列右側,不論目前在哪個分頁都看得到,不用切到訊息頁才看得到

Fixes

  • Round 產物同步遺漏子目錄 — worktree 收尾同步只複製 round 目錄下的頂層檔案,子目錄(如截圖)被靜默丟棄;加上 Designer 讀不到截圖路徑慣例只能自行編造路徑,兩者疊加導致截圖在 4x done 清除 worktree 後永久遺失。改為遞迴複製子目錄,Designer 直接引用 settings.json 解析後的實際路徑
  • Profile/Model Tier 下拉選單缺內建選項 — 專案 settings.json 沒自訂 profiles 時 Default Profile 下拉只剩 None 可選;Profile 編輯器的 Model Tier 選單原本寫死 light/standard/pro,跟系統實際 tier 名稱(opus/sonnet)對不上,選了不會生效
  • Runner 設定新增 Model Tier 編輯器 — 新增自訂模型(如 Fable 5)原本得手改 JSON;新增 key-value 編輯器可直接新增/刪除 tier。同時修正儲存表單時會把 profilesevolutionself_mod_guard 等表單沒管理到的欄位靜默清空的資料遺失問題
  • 平行 deep review 成本/時長歸屬錯誤 — 多個平行 sub-reviewer 共用同一個角色標籤時,事件配對邏輯讓所有 run-end 收斂到同一格互相覆蓋,導致 dashboard 只顯示 synthesizer 自己的成本、其餘 sub-reviewer 的日誌時長被誤算成離譜的數字。新增明確的事件序號解決配對問題

v0.3.10

Choose a tag to compare

@github-actions github-actions released this 03 Jul 04:21

Features

  • Issue-first MR flow(F127) — 新增 .4x/settings.jsonissue_tracker.enabled 開關,開啟後 4x new 會依 repo 的 git remote 自動判斷 GitHub/GitLab 並建立(或用 --issue 連結既有)issue,4x done 改為 push branch + 開 MR/PR(帶 Closes #issue)取代本地 squash-merge,交由平台走 code review 流程
  • 結構化 e2e 截圖驗證(F128)test-strategy.yamlac_verify_map 新增 e2e-screenshot 合法值,guard 在 testing→accepting 關卡機械驗證宣告此類型的 AC 確實留有截圖檔案,避免條件式的截圖需求被 tester 悄悄跳過
  • CLI 與 dashboard 總花費更準確(F129) — 新增 Workspace.TotalCost 直接加總 events.jsonl 所有 run-end 事件成本;CLI resume 中斷過的 feature 時用它 seed 回總價;dashboard「訊息」頁新增這個權威總價顯示

Fixes

  • 平行 review/test 成本未累加 — reviewer/tester 平行執行時的 cost/tokens 只寫進 events.jsonl,未累加進行程內的總花費統計,導致開啟 parallel_review_test 時 CLI 結尾印出的總價低估(實測案例:印 $12.36,實際 $18.90)
  • Designer 遇到開放式問題不再卡住 — Designer 是一次性、無人可回應的 headless 執行,過去偶爾會在產出必要檔案後反問使用者選項,導致 feature 被誤標 needs-attention;新增 Escalation 區塊教它改寫 escalation.json

v0.3.9

Choose a tag to compare

@github-actions github-actions released this 02 Jul 08:12

Fixes

  • Screenshot 探索遇到損毀 verify.json 整個掛掉 — 單一 round 的 verify.json 若混進未跳脫的 raw ANSI escape code(例如捕捉到的 subprocess 輸出未跳脫),JSON 解析失敗會讓整個 DiscoverScreenshots hard-fail,連帶讓 4x status/4x check 對整個 feature 失效。改為 best-effort:跳過該 round 的截圖,其餘 round 照常處理
  • Dashboard 日誌分頁內容裁切與 retry log 缺 icon — 切到「日誌」分頁時外層容器缺 min-height:0,長 log 內容被外層 overflow:hidden 直接裁掉而非交由內層捲動;同一 round 內重跑第 2 次以上的角色 log(如 round-0-designer-2.log)因判斷正則只涵蓋 deep-* 角色,圖示與顏色消失

v0.3.8

Choose a tag to compare

@github-actions github-actions released this 02 Jul 03:10

Fixes

  • Design-review loop 迭代覆寫 log/message — design-reviewing FAIL 打回 designing 時 round 計數器不遞增,導致每次循環的 log 檔名與 task-brief/design-review-report 互相覆寫,dashboard 只能看到最後一輪。Log 檔名與訊息區改為依 (round, iteration) 分別歸檔並列出每一輪
  • Multi-repo worktree scope/guard 邊界情況修復(F126) — hub_repo(如共用 docs)一律排除於 scope violation 判斷;build-gate 對缺失指令(如聚合腳本非每個 repo 都有)優雅降級為 skip 而非硬 fail;Tester prompt 補教 expectedExitCode 欄位用法;DeferRunCleanup 補上 needs-attention phase,並修正 exit-0 後收尾失敗被誤標為 process crash 的競態根因
  • build-gate 缺指令判斷在 Linux CI 失效 — 上一項的優雅降級只認 macOS /bin/sh(bash 相容)的 "command not found" 措辭,Linux 預設的 dash 印的是不含 "command" 字樣的 "not found",導致同一段邏輯在 GitHub Actions(Ubuntu runner)上完全打不中。改為比對兩種 shell 共有的 "not found" 子字串,仍綁定 exit code 127 才生效

Docs

  • Landing page v2 改版 — 更新過時統計數字與截圖,新增 Multi-repo & Worktree Isolation、Quality Gates、Cost Visibility 三個 section,設定範例改用 4x/Kairos 真實專案設定,6 語言(en/zh-TW/zh-CN/ja/ko/es)完整翻譯

v0.3.7

Choose a tag to compare

@github-actions github-actions released this 01 Jul 08:00

Fixes

  • Multi-repo worktree scope 誤判 — multi-repo feature(如同時涉及多個獨立 git repo)的 worktree 容器目錄本身不是 git repo,ScopeRoot 會誤判為非 linked worktree 並靜默 fallback 回主工作區,導致 build-gate 和 symlink 檢查掃到主 repo 既有的無關問題,而非 feature 自己 worktree 內的變更。新增 ScopeRoots,容器目錄非 linked worktree 時改為逐一掃描子目錄找出各 sub-repo 的 linked worktree;mono-repo 行為不變

v0.3.6

Choose a tag to compare

@github-actions github-actions released this 01 Jul 07:30

Features

  • Protocol package 拆分(F121)internal/protocol/types.go 拆分為 domain.go / config.go / config_resolve.go / batch.go / review.go / state.go / verify.go 等單一職責檔案,降低耦合、提升可維護性
  • Schema 單一事實來源同步機制(F122) — 新增 schemasync 套件,驗證 Go struct 與 schemas/*.schema.jsondashboard/web/core.js 三邊欄位一致;make check-schema-sync 納入建置流程防止 drift
  • batch.go 拆分與 runnerFactory 去重(F123) — batch 執行邏輯拆分,並抽出共用 runnerFactory 消除重複的 runner 建構程式碼
  • server 子程序啟動抽介面(F124) — server 子程序啟動邏輯抽出介面,方便測試與未來替換實作
  • Dashboard port 單一設定來源(F125) — dashboard port 改為單一設定來源,避免多處硬編碼不一致

Fixes

  • Build-gate 限定 feature 自己的 worktree — build-gate 的 lint/build 檢查範圍限定在該 feature 專屬 worktree 內,避免誤判其他 worktree 的問題
  • Dashboard role 顯示同步 — 補齊 dashboard ROLES 對照表缺少的 fixer / mini-coder / re-verifier / gate / consolidator / round-summarizer 角色顯示
  • ac_verify_map verify_type 提前驗證 — Guard 在 Check() 一開始就驗證 verify_type 合法性,避免後續流程誤用未定義型別
  • check-docs SIGPIPE — CI 的 check-docs grep 改用 herestring,避免 SIGPIPE 導致誤判失敗
  • Acceptor message 補齊 cost/duration — acceptor 訊息補上 model/duration/cost 欄位
  • Deep review run-end 補齊 cost/tokens — deep review 的 run-end 事件補上 cost_usd 與 token 欄位

Internal

  • Coder 預設 tier 改為 sonnet — coder role 預設模型層級從 opus 切到 sonnet,降低成本

v0.3.5

Choose a tag to compare

@github-actions github-actions released this 30 Jun 08:19

Fixes

  • Build-gate PATH 擴充 — GUI 啟動的 4x(如 dashboard)不繼承 shell profile,build-gate 和 hook 子程序找不到 go/node 等工具;抽出共用 envutil.EnrichedEnv() 補上常見路徑(含 /usr/local/go/bin$HOME/go/bin