Repository navigation
[不合併] develop rebase 到 v1.4.243 的 CI 驗證 - #90
audichuang wants to merge 353 commits into
Conversation
原本焦點留在出發的那一列,按 Enter 會選回原本的 commit。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
沿用 Source Control 分支比較的樹(單一子資料夾的鏈合併成一行、可收合), 標題列加清單/樹狀切換並記住選擇;Shift 範圍選取改照樹狀的畫面順序。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011LdpV7UCim1xUWLWDpgSsT
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011LdpV7UCim1xUWLWDpgSsT
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011LdpV7UCim1xUWLWDpgSsT
上游新增的 TAB_ID_RULES 以 Record<TabContentType> 列舉分頁種類,fork 的 git-graph 分頁沒有登記會讓 tc 失敗;它不是終端機,id 照原樣保留。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
負載高的全套測試裡,resetModules 後重新 import 花了 723ms,超過 200ms 的 timer 延遲,timer 在清除前就觸發。改成只算 restore 之後的觸發;拿掉清除時兩個測試仍會失敗。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
runs-on 改讀 repo variable FORK_RELEASE_RUNNER(設 orca-release 走 macmini,未設退回 macos-15); self-hosted 直接用登入鑰匙圈裡已信任的簽章身分,只有 GitHub 機器才匯入 p12、sudo 信任憑證、清理暫時鑰匙圈。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
macmini 實測 dryrun:pnpm store 上傳 6.5 分鐘、每個檔案向 Apple 時間戳伺服器簽章約 1 秒(共 6.7 分鐘), 都比 build 本身久。fork 不做 notarization,憑證效期到 2036,時間戳沒有用處。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
每個 release tag 存的快取,下一個 tag 讀不到(GitHub cache 只給同一個 ref 與預設分支),每次 hosted 白花 2.5 分鐘上傳; fork-dmg 用不到 git 歷史,完整 checkout 改成淺層,release 說明需要的 annotated tag 另外抓。 release 說明改成獨立步驟讓 dryrun 也會跑到;fork-release-dryrun-hosted-* 固定跑 GitHub 機器,讓退回路徑有得測。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…te 分區 - Changed files 樹狀的資料夾列也能右鍵複製路徑與 Copy Full Source - repo 切換器改成一列一個 worktree,帶 repo 的 badge 色塊,選單密度與其他選單一致 - branch 篩選把 local 與各 remote 分成區塊,remote 區省略重複前綴 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PCAZ1XcuRQXFvNrgYFgP8G
- 分頁列右上角加 Git Graph 按鈕(只在最右上那組,已開則聚焦) - 資料夾多 repo 側欄改成單一清單 + 底部固定面板,repo 色塊、branch 獨立灰字、0 不顯示、動作 hover 才出現,分成有變更/沒有變更兩組 - Git Graph 工具列:repo 切換器移到最左並加 repo 色條,新增 User / Paths 篩選鈕與清除 - commit 雙擊或 Enter 開全部差異,詳細窗格標題列加按鈕 - 變更檔案右鍵加 Show File History Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PCAZ1XcuRQXFvNrgYFgP8G
- 沒設 badge 顏色的 repo 依加入順序配黃金角色相,側欄、切換器、Git Graph 色條一致 - 選中 repo 的名稱與色塊回到面板工具列,不再另佔一列重複 upstream - Git Graph 搜尋框只顯示自由文字,author/path 由篩選鈕呈現 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PCAZ1XcuRQXFvNrgYFgP8G
- Show File History 一併納入 remote branch,不再漏掉只在 remote 的歷史 - 篩選 token 改成分段重組,引號內的值原樣保留並支援跳脫,不再互相改寫 - 多 repo 清單:方向鍵直接切換選取、再點目前 repo 不收起面板、背景刷新不會弄丟焦點、hover 動作不蓋住變更數 - repo 切換器搜尋改成子字串比對,會真的縮小清單 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PCAZ1XcuRQXFvNrgYFgP8G
- Git Graph e2e 改用 Commits 區頭按鈕的 data 屬性,避開分頁列同名按鈕 - 多 repo e2e 把 Changes 區塊限定在選中 repo 的面板,選中 repo 名稱改比對內層文字 - Paths 篩選鈕與最近路徑用 whitespace-pre,連續空格照實顯示 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PCAZ1XcuRQXFvNrgYFgP8G
- 沒選 commit 時詳細區收成窄邊,branch 標籤限寬,非目前分支訊息提高對比 - Git Graph 分頁的篩選與側邊欄 Commits 分開,預設 All branches,存在分頁狀態上,換 repo 只丟掉已選分支 - 分頁第一次載入自動選中目前分支最新的 commit;篩選沒結果時提供清除篩選與看全部分支 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PCAZ1XcuRQXFvNrgYFgP8G
… Source Control 開啟 - 資料夾工作區側邊欄與 Git Graph 分頁共用選中 repo;方向鍵切換時分頁延遲 250ms 跟上,避免每鍵重載 - Git Graph 工具列加「在 Source Control 開啟」;Commits 右鍵加 Show in Git Graph,找不到會往下多讀或提供清除篩選 - 分頁篩選以分頁狀態為準,A→B→A 不會帶回舊篩選;關閉分頁時清掉暫存;detached HEAD 自動選對 commit Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PCAZ1XcuRQXFvNrgYFgP8G
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PCAZ1XcuRQXFvNrgYFgP8G
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PCAZ1XcuRQXFvNrgYFgP8G
- 側邊欄切 repo 讓 Graph 跟上時保留鍵盤焦點,只有主動開啟或回到分頁才聚焦 Graph - 記住的 commit 選取改為依分頁保存,關閉分頁時清掉,重開會選目前分支最新 commit - 詳細區標題列加 Hide details,選了 commit 也能收成窄邊並記住 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PCAZ1XcuRQXFvNrgYFgP8G
- openGitGraphTab 送出一次性的聚焦請求,Graph 已在前景時也會聚焦選中的 commit 列 - 從右鍵選單或對話框觸發時短暫守住焦點,避免選單關閉把焦點還給側邊欄;側邊欄跟隨換 repo 不送請求 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PCAZ1XcuRQXFvNrgYFgP8G
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PCAZ1XcuRQXFvNrgYFgP8G
…rk-check-lint v1.4.237's lint script adds check:host-list-render-ratchet and check:mobile-shared-dependency-versions; fork renderer components and lockfile edits can trip either. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ipCode restore v1.4.236 makes path-based requestEditorSaveQuiesce take an autosave hold and return its release. The fork's multi-owner discard and ClipCode restore ignored it, so autosave of a restored file stayed off until reload. Both now go through requestEditorSaveQuiesceAll and release in finally. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d ClipCode delete Since v1.4.236 a path quiesce takes an autosave hold that the caller must release. No test noticed when the fork's two-owner discard (repo + folder) or ClipCode restore's delete branch dropped that release, or when requestEditorSaveQuiesceAll kept the holds it took before another owner refused. Cover single and bulk discard after git succeeds, after git fails, and on a partial quiesce failure, plus the restore delete branch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…hold release; unblock guarded-write scan - conflict-review-folder-owner.test.tsx: one review tab per repo in a folder, conflicts tracked under the repo key, the conflict file and the overview reads carry the repo's gitWorktreeId. - folder discard: holds stay taken while git is still running (deferred git), not only after the mocked call returns. - clipcode-restore-plan: pick the preview bucket without the `? 'overwrite'` text that editor-save-guarded-write-paths.test.ts reads as an overwrite-consent grant. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…-check fork-check-lint ran a hand-picked subset of upstream `pnpm lint`, and the rebase step only compared what a new release added, so checks from earlier releases stayed missing. Running them all turned up three fork violations, fixed here: - layout-writer ratchet: the fork's Git Graph tab writes editor layout the way upstream's own editor-tab openers still do; list it in the renderer baseline like them. - max-lines: the fork's gitWorktreeId field pushed workspace-session.ts to 301 lines; move upstream's buildSanitizedTabsByWorktree to its own file (provenance comment at the top). - WSL-move localStorage census: register the two fork modules that use localStorage. fork-lint-parity.mjs now fails when upstream lint has a step fork-check-lint neither runs nor excludes with a reason. fork-check-source-scans runs the src tests that read source text, which `vitest --changed` never selects because they import nothing the fork changed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
fork-source-scan-tests now scans every upstream unit root through discoverUnitFiles (so UNIT_EXCLUDE applies), recognises async fs reads, globs and repo-relative literals, skips six upstream tests that fail on macOS hosts at v1.4.237 too (Linux CI still runs them), and exits non-zero on an empty selection; the make recipe stops before vitest when it does. fork-lint-parity reads the recipe from the exact prerequisite line, strips '@', ignores comments, and both scripts are importable with vitest coverage. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
make fork-check-e2e runs the folder multi-repo e2e plus every spec the fork added or changed since FORK_BASE; fork-check-full reuses it, and a new "fork e2e specs" job runs it under Xvfb so "Fork PR checks passed" requires it, including on the unattended rebase PRs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ue.ts Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Upstream stablyai#34119 grew editor-save-queue.ts to the 300-line max-lines cap; the fork's filePath field pushed it over.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Upstream stablyai#11567 checks win.isDestroyed() and webContents.isDestroyed() before sending IPC.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Upstream stablyai#33964 moved the file-name list that happened to contain README out of the renderer.
…r assertions Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Upstream stablyai#34222 passes { wakeWslDistro: true } on the active tab's load and Retry.
…ped resolveLintCommands Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tream's saved-start path Upstream stablyai#31310 replaced the dialog's agent checks with the + menu's agent choice and moved saved-recipe starts to use-saved-source-control-action-start.ts. use-ai.ts's resolve-conflicts editor now carries the folder workspace and the repo's start directory, and the dialog test is rewritten for the new hooks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
本機閘門開始(RUN=20261028T041757Z) |
|
盲審開始(head ce43f34) |
…34585) Hourly and daily builds publish unvetted dev channels on a schedule, so their latency is not user-facing. Move the macOS build to hosted macos-15, the Windows build to hosted windows-2022 (the release path), template qualification to hosted lanes, and the small routing/publish jobs to ubuntu-latest. Adhoc and release builds stay on Blacksmith. Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> (cherry picked from commit f4d98b7)
… runners (stablyai#34568) * ci: move secondary, scheduled and contract workflows to GitHub-hosted runners Public-repo standard hosted runners are free under Enterprise. Release, build, benchmark, e2e and unit workflows stay on Blacksmith. ci-xterm-cache seeds both cache stores since its PR consumer's pool is undecided. * test(pi): resolve the smoke bundle's external packages from the repo stablyai#34148 pulled zod into the commit-message planner graph; the bundle in the OS temp dir could not resolve it on any runner. * ci(unit): use four workers on the hosted four-core x64 runner --------- Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com> (cherry picked from commit 791502f)
…tablyai#34600) * ci: narrow native, launcher and packaging cache keys and stop PR-local saves * ci: hash Rust crate sources, not build outputs, in launcher and hook keys * ci: fail closed on unlocked native packages and cover transitive key inputs * ci: resolve the Windows Rust cache scope with a script, not a nested local action --------- Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com> (cherry picked from commit 2cd3e6d)
Hosted macos-15 fails afterPack's packaged x64 terminal host boot check (hourly run 40608643418: timed out waiting for the PTY), so no latest-mac.yml is published. Windows, template qualification and routing jobs stay on hosted runners. Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> (cherry picked from commit beb53a7)
… stop PR-local saves (stablyai#34672) - Warm electron-builder-linux-<versions> and the hosted ubuntu-24.04 Electron native modules - PRs restore hosted Linux Electron native modules without saving - Replace mobile verify's bundler-cache with a restore of a warmup-saved bundle - Drop the pnpm store cache where a direct install was faster (mobile main, glibc-floor containers) Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com> (cherry picked from commit e0f32dc)
Each 12-vCPU arch job spends ~3 of its ~7 minutes waiting on Apple's notary service; packaging itself runs at the same speed as the hourly build's 6-vCPU runner. Halve the per-minute rate. Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com> (cherry picked from commit 1df26ab)
…#34512) * ci: restore main's Vitest transform cache in PR unit shards Main produces per-shard transform caches on a schedule; PR shards restore the newest one for the same config/lockfile/runtime policy. A Vitest cache key generator folds each literal specifier's resolution candidates into the per-module key so newly added files that shadow a resolution invalidate the importer, and bails on glob-expanded dynamic imports. * ci: list the resolution key plugin in the node tsconfig project * ci: accept Vitest's CACHEDIR.TAG when sealing the unit module cache Vitest 5.0.5 tags its cache root, which made every seal fail with 'invalid cache entry name' so no producer cache was ever saved. * ci: reseed the unit module cache when any cache-key input lands on main Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> (cherry picked from commit 8b64ec2)
… git owner
The folder tab's overview read spreads upstream's active-tab load options ({ wakeWslDistro })
into the git-owner options; objectContaining let dropping that spread pass.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…r repo directory The dialog forwards initialCwd to its start hook, which passes it to the agent tab launch; no test covered that chain for an interactive Start. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
CI 第 1 輪(head ce43f34,run 40632346756):紅。6 個 test shard 共 12 個測試失敗,全部是讀 對照:在乾淨的 v1.4.243 worktree 跑同樣 10 個檔,結果相同( 處理:從上游 main cherry-pick -x 分岔點..8b64ec2 之間改這些測試的 7 個 commit(f4d98b74e3、791502fae4、2cd3e6d6a3、beb53a7f9e、e0f32dcac1、1df26abf60、8b64ec281a), 另外依審查者 C1 補了兩個測試(0f39c60519、424102202a),見審查留言。新的 head 4241022 重跑 CI。 |
|
CI 第 2 輪(head 4241022,run 40634974184,04:54:58Z → 05:08:00Z):綠。fork-pr.yml 全部 job success:scope、macOS arm64 build、wire、typecheck and quality、mobile、tests 1–8/8、e2e、Fork PR checks passed。沒有自動重跑任何 job。 |
…esh wake a stopped WSL distro Upstream stablyai#34222 rejects git:status on a stopped WSL distro unless the request carries wakeWslDistro, which useGitStatusPolling sets on the active workspace's first status. The folder panel's repo refresh is a parallel path: its open and manual sweeps now wake, polls and change nudges stay gated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
第 2 輪審查開始(head 20ae645:修 Codex 第 1 輪的 WSL 喚醒 BLOCKING) |
…the conflict dialog's repo cwd The WSL wake test now types its request (anti-slop rejects a bare object parameter) and checks that a save nudge stays gated. A conflict start without a saved agent opens the dialog with use-ai's editor, which upstream stablyai#31310 spreads over the panel's worktreeId and initialCwd props; pin that it carries the folder workspace and the repo directory. Two git-owner tests that guard seams join the seam list. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
盲審結果(head ac6ddc3)
BLOCKING 與處理
另外依 C1 補:0f39c60( mutation 證明(合格 MANUAL)
反駁
NON-BLOCKING 留待(既有缺口或建議,列進通知與筆記)
importer-sweep 人工確認
|
|
develop 已移到 ac6ddc3(舊 develop 備份在 backup/develop-v1.4.242-20261028T041757Z),接著發版。 |
|
發版開始 v1.4.243-fork.1(main 與 tag 已推到 ac6ddc3) |
|
發版失敗:v1.4.243-fork.1 的 release run 40640209742 在 |
只用來在 rebase 後的 develop 上跑 Fork PR Checks,不會合併。base 是指向上游 v1.4.243 的暫時分支
ci-base/v1.4.243(對 develop 開會因兩份歷史衝突而跑不了 CI),驗完就刪。這次是 MANUAL(有手動解的衝突、照筆記丟掉兩個 cherry-pick、十個額外修正 commit),由 auto-rebase 依 FORK.md「Unattended merges」判斷能否自動移動develop;不能的話會在留言寫出移動指令。Summary
=、16!、2<、10>。rerere 沒有重放舊解法(只有這次自己錄下的在同一個 rebase 內重放);locale 檔由 merge driver 合好,沒有停下來。<都是照條目 f34c13c/ad2156c358 刻意丟掉:a6a4352e8a(cherry-pick 的 test: remove 57 low-value cases and standalone browser probes stablyai/orca#33889)與dfb4a446e8(cherry-pick 的 test: remove 140 low-value cases and 49 suites stablyai/orca#34062)。v1.4.243 已含兩個上游 commit;test: remove 57 low-value cases and standalone browser probes stablyai/orca#33889 那個 patch 跟上游不同,不會自動略過,所以兩個都用rebase -i的 drop 丟掉。fork-upstream-red.mjs v1.4.243):tc、lint、check:daemon-protocol-crossing 全綠,沒有要 cherry-pick 的上游修正。known-resolutions.md,全部適用、全部照做,canary 2026-10-28 對上游 main 54411a9 解好的檔直接採用;54411a9a96 是 v1.4.243 的祖先,條目列的檔在兩者之間上游沒再改):b7fb07c379…(fix(ci): unblock main: split over-long files and pin scanner test file times stablyai/orca#34072 未使用 import):v1.4.243 同時含 a93e31a 的修正 → 不用處理。f34c13ca1e…/ad2156c358…(cherry-pick 丟掉):照做。reliability-gates.jsonc 與 terminal-spawn-restore.test.ts 結果跟上游相同。fe82078909…/362104ca18…/bec8276291…(wakeWslDistro×gitWorktreeId):照做(衝突見下,兩個 fork 測試的斷言是額外 commit)。07b5c083bd…(AI fix actions use the + menu's agent picker and remember chat or terminal stablyai/orca#31310 agent choice × folder repo launch cwd):照做;SourceControlAgentActionDialog.folder-cwd.test.tsx依新結構重寫,另補use-ai.folder-cwd.test.tsx。6c2423d25d…(section-order 搬到 shared):照做。16a29bc2fe…(pty IPC harness 搬家):照做。a2b378018a…(mobile 排除 virtual review 分頁):照做。875d89af50…(run-lint.mjs 不再 exportresolveLintCommands):照做(含 SKILL.md 描述)。bec8276291…(editor-save-queue.ts max-lines):照做。217f935597…(updaterisDestroyed):照做。f719d0fb10…(ui-rounds-map README):照做。d1f3532bb1…/cf7379610f…(AGENTS.md# Tests):照做。wakeWslDistro與gitWorktreeId兩個欄位都留(上游在前)。load);沒有 view 時{ ...load, gitWorktreeId }(90edae3503 之後改成條目寫的條件式,最終與 canary 檔相同)。readGrantId/readGrantPairing,readWorktreeId用 fork 的 git owner 版(ba35906362 再把readRelativePath換成 fork 版)。projectSourceControlActionLaunch的commandInput/projection,加回 fork 的launchWorktreeId/initialCwd。useSourceControlWorktreeScope。entry-actions、discard-all-sequence搬到src/shared/;採上游 import,加回 fork 的SOURCE_CONTROL_OPEN_TO_SIDE_EVENT(8af97f9687 再換成 fork slot import)。initialCwd。right-sidebar-activity-visibility.fork.test.ts(eb37c124f4 同樣 modify/delete,同樣接受刪除)。# Fork Maintenance;最終 AGENTS.md 與 canary 解好的檔相同。readRelativePath換成 fork 版,保留上游兩行。[]),'git-graph'留在simulator那組。nativeFs())並新增 readdir/unlink/rmdir/lstat;採上游,加回 fork 的statSync。60845d5733 把statSync搬出上游檔,那一步的衝突取 v1.4.243 版本(舊 develop 上這個檔也跟上游相同)。resolveLintCommands、SKILL.md 描述、editor-file-saved-dispatch 拆檔、updater 測試isDestroyed、ui-rounds README、editor 測試斷言、use-ai.ts folder repo 路由+重寫 dialog 測試。Evidence
上游基準(
fork-upstream-red.mjs v1.4.243,upstream-red.md全文):Upstream v1.4.243 (2d9b595): static checks on the clean release
Every red step in the fork gate is the fork's to fix.
make fork-footprint(上一次 v1.4.242 的 fork 自身足跡:production 180 files +1638 -598,test 8、locale 8、baseline 3、other 4):production 多 1 個檔、+27 行:主要是 use-ai.ts(folder repo 的 AI 解衝突路由)與 use-saved-source-control-action-start.ts、use-source-control-action-agent-choice.ts 三處跟著上游 stablyai#31310 新結構接回
initialCwd;editor-save-queue.ts 的 dispatch 搬到 fork 檔,上游檔反而變小。本機閘門:
make -k fork-check-static第 1 輪綠(tc、changed-code quality、fork-check-lint 全部步驟);make fork-check-seams80 檔 469 測試全綠。備註:chat 路由的
onStart仍收到agentArgs,是上游runSourceControlAgentActionStart.ts無條件傳projection.agentArgs的行為(fork 在這個檔只加initialCwd);重寫後的SourceControlAgentActionDialog.folder-cwd.test.tsx因此斷言 route,不斷言 agentArgs。CI 與審查結果見留言。
Merge Danger
Door: two-way(不合併;develop 移動前有備份分支)
Blast Radius: 全部 fork 功能
🤖 Generated with Claude Code