Repository navigation
[不合併] develop rebase 到 v1.4.241 的 CI 驗證 - #83
audichuang wants to merge 319 commits into
Conversation
… tip、小視窗詳情欄最小寬度跟著縮
… 的圖層判斷、使用者另行導覽時取消待跳轉、分支樹支援 Home/End、寬度存取下限一致、In branches 註明只算已載入、抽出分支樹 hook 與共用鍵盤移動
…取、任何導覽都取消待跳轉、重開後 Cmd/Ctrl 點選保留恢復的 commit
…自動復活;Cmd/Ctrl 點選單選中的那列會取消選取
…ral 因 release 帶 main 的 workflow 檔先不納入
- Git Graph 從只能在 Commits 工具列開的彈窗,改成每個 workspace 一個的編輯器分頁(不跨重啟保存) - 分頁標頭加 repo/worktree 切換器:folder workspace 列成員 repo,一般 worktree 列同一 host 的所有 git worktree - 新增 Mod+Shift+H(sourceControl.openGitGraph)與 Cmd+J「Open Git Graph」;側欄按鈕改成開分頁 - 分頁在 commit/push/pull/HEAD 變動與 SSH 重連時重抓;寬度依分頁實際寬度計算;不搶其他 pane 焦點 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…scape 關分支樹浮層 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…mits 標題列常駐開啟按鈕、commit 右鍵選單 - 表頭與資料列共用 gitGraphColumnsForWidth/gitGraphGridTemplate,隱藏的欄不再渲染;dev 模式 React Grab 重宣告 .flex 時欄位不再錯位 - 記住的選取改存整組 commit 與 range anchor,開 diff 回來仍是多選;清空的選取不會復活 - Open Git Graph 按鈕移到 Commits 標題列(新 headerActions slot),區塊收合時也看得到 - 列上接 GitHistoryCommitContextMenu;選單內方向鍵不再移動 commit 選取 - 新增 e2e:欄位對齊斷言、Open all changes together 迴圈(graph 分頁與側欄各一) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sh、多選複製 hash/訊息涵蓋全部選取、Git Graph 可在旁邊開 diff - DiffSectionBody:圖片 diff 自帶 Suspense,不再讓整個 combined diff 重新 suspend;diff editor 的 dispose 延後一個 microtask,StrictMode 重連 effect 時沿用同一個 editor(修 InstantiationService has been disposed) - 多選時 Copy commit hashes/messages (N commits) 依 graph 順序複製全部;側欄與 Git Graph 共用 - Git Graph 分頁的 Alt+點擊與 Open to the Side 會在 graph 所在群組右側開 diff,重複開會沿用右側群組 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…commit 右鍵選單加寬不換行、窄詳情欄的多選摘要讓主旨優先 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…er-manager 測試會檢查它 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rew cask - 新增 .github/workflows/fork-release.yml(macos-15):tag 必須是 fork main,匯入自簽憑證並設信任後跑 make fork-dmg,檢查打包版本,發 Release(說明取自 annotated tag),再用 HOMEBREW_TAP_TOKEN 更新 Casks/orca-fork.rb - fork-release-dryrun-* tag 只打包簽章並上傳 artifact,不發 Release、不動 tap,用來測 workflow - FORK.md 的 Release 段落改成推 annotated tag 由 CI 發版 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
folder 工作區的 Git Graph 只列已加入的 repo,乾淨沒動過的子 repo 因為從沒匯入而選不到。 選單打開時掃一次資料夾,底部顯示「Add repositories in this folder (N not added)...」, 點下去開 Source Control 同一個加入對話框;只限本機資料夾,和 Source Control 一致。 未加入 repo 的計算抽成 getNewNestedRepoCandidatesFromState,對話框共用。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UuoXdYuN5y46yVVU88kSwh
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UuoXdYuN5y46yVVU88kSwh
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UuoXdYuN5y46yVVU88kSwh
上游移除 check:deprecated-runtime-owner-ratchet,新增 check:unproven-pty-retirement-ratchet 與 check:id-only-store-write-ratchet。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… folder、git 留在 repo v1.4.232 把開檔邏輯抽到 open-uncommitted-entry.ts;rebase 時 fork 的分頁/git 分流改成它的參數,補契約測試防上游改掉。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
electron-builder 的 files 是排除清單,本機 checkout 裡未追蹤或被 ignore 的項目 (.orca/drops 截圖、CLAUDE.local.md、.codegraph 等)會被打進 app.asar。fork 設定 改成排除 git 未追蹤的頂層項目(out/、node_modules/ 除外),fork-dmg 最後再檢查 app.asar,有未追蹤的頂層項目就讓 build 失敗。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
原本只保留 fork-pr.yml,rebase 後跑一次就把發版 workflow 也停掉;改成保留所有 fork-*.yml。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
repo 有 6 個以上時,清單上方出現過濾框:空白分隔的每個詞都要出現在 repo 名稱或分支裡(不分大小寫)。 Enter 打開第一個符合的 repo、↓ 移到第一列、Esc 清空;展開中的 repo 一律保留在清單裡。 面板超過 400 行,把頂端工具列和過濾框拆成各自的元件。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UuoXdYuN5y46yVVU88kSwh
實機看到:有 repo 展開時,過濾結果被擠到展開面板底下,離輸入框很遠,打完字像沒反應。 現在輸入過濾字時暫時收起展開的面板,只列符合的 repo;點選或 Enter 打開它並清掉過濾字。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UuoXdYuN5y46yVVU88kSwh
原本借用了真實工作環境的 repo 與資料夾名稱;改成 orders-api、not-added、docs/guide 這類說明測試在測什麼的名字。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UuoXdYuN5y46yVVU88kSwh
- 比對改用共用的 splitFileNameFilterTokens / pathMatchesFileNameFilterTokens(和檔案總管過濾一致,含全形空白)。 - toggleRepo 依畫面上是否展開判斷,過濾中點選與 Enter 走同一條路,拿掉 openRepo 與呼叫端的三元式。 - 過濾框因 repo 少於 6 個而隱藏時清掉過濾字,避免之後回來時悄悄縮小清單。 - 展開時的上下兩段清單還原成 slice(過濾中不會有展開面板);移除別名、重複算的 label 與多餘的 isComposing 檢查。 - 補 ↓ 移到第一個結果、過濾字隨框隱藏而清除的測試。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UuoXdYuN5y46yVVU88kSwh
原本只能從 COMMITS 標題旁的小圖示(資料夾工作區還得先展開某個 repo)、⌘⇧H 或 ⌘J 打開 Git Graph。 現在資料夾工具列與一般 repo 工作區的 Source Control 標題列都有帶文字的「Git Graph」按鈕,提示顯示快捷鍵。 資料夾開在目前選中的 repo;進去後仍可用切換選單看其他 repo 的完整圖。和 COMMITS 旁的入口共用提示元件。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UuoXdYuN5y46yVVU88kSwh
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UuoXdYuN5y46yVVU88kSwh
實機把右側欄拖到最窄時,資料夾工具列的名稱被「Git Graph」文字整個擠掉。 工具列寬度小於 300px 時收起文字(同 tab bar 的 container query 做法),按鈕仍帶 aria-label。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UuoXdYuN5y46yVVU88kSwh
分支一多,完整 Git Graph 的圖欄會被一路佔著 lane 的舊分支撐寬,Message 欄被擠到剩幾十 px。 改用 fork 自己的 lane 版面:沿用上游 view model 的拓撲和顏色,跨過超過 20 列的連線只在兩端各留 2 列並畫箭頭, 點箭頭跳到另一端;目前分支自己的主線固定在第 0 條、永不摺疊。側欄的小圖不變。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
實機看到一排長期分支疊在一起時,箭頭那一列的欄位被壓縮讓給下一個 commit,點剛好畫在箭頭上。 箭頭前後各多保留一列欄位,而且保留的欄位不跟著壓縮移動。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…uto-move rule The auto-rebase skill already lets a notes fix that touches only fork-owned test files pass on a green test instead of a revert-goes-red proof; FORK.md, which the skill names as its rule source, still demanded the proof for every fix commit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… conditions Review of 94ba892: the exemption now names the entry type and the 守它的測試 field as the notes write them, defines the files as test files absent at vNEW, keeps timing as the reason rather than a condition, and says every other fix commit follows the rule. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…obs on docs Docs went straight to develop so they would not wait 15-25 min for CI, which left no PR record and needed a rebase-lock exception. Now every change opens a PR. fork-pr.yml's new scope job classifies the changed paths with upstream's isDocsOnlyPath (plus FORK.md, never .claude/skills); the heavy jobs run only on `full`, and verify accepts skipped jobs only when scope succeeded and said `docs`. An empty path list or a failed scope runs everything. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… inputs Gate review of #80: a docs-only PR skipped `pnpm lint`'s README link check, so a broken link would turn every later PR red, and docs/site's package.json (read by the test-runner check) counted as docs. The scope job now runs the link check itself, fork-pr-scope keeps CI, build, agent and docs/site paths full even if upstream's docs list grows, and FORK.md says a failed scope job blocks the PR. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…oves /code-review of #80: scope tests keep only paths the fork's full-scope guard rejects (docs/site) plus the skills rule; the skip rule lives in the scope script and the gate checker only; the heavy jobs drop a draft check scope already applies; the isDocsOnlyPath pin says why it imports; FORK.md's local-check line follows the scope job. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rge may be released The user chose no branch protection: the auto-rebase force-pushes develop with a lease. A docs-only PR's merge commit ran no build, so FORK.md's Release rule now releases it only when its first parent passed the full checks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review of #81: walk the first-parent chain past consecutive docs-only merges, name what counts (a feat merge whose run built, or the auto-rebase head), say how to tell a docs run, and keep the fork-check-full sentence's subject explicit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rebases /code-review of #81: a docs-only merge is one whose PR's scope job said docs (no invented job names); the vouching ancestor must be releasable by the full rule, and if it is not, neither is the docs merge. The direct-push exception names the user's own rebases too, which are also why develop stays unprotected. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Upstream stablyai#33428 makes refreshGitStatusForWorktree require ownerHostId so a same-path twin on another host never gets this copy's transport. Resolve the copy once, as useGitStatusPolling does, and pass its host, connection and transport; the test pins that all three reach the refresh. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
本機閘門開始(RUN=20261026T041726Z,head 84a30d2) |
…eck ratchet v1.4.241 adds check:e2e-typecheck-ratchet with an empty baseline. The `in` check could not narrow the page.evaluate union, so barBox stayed possibly undefined; test the value instead. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
本機閘門第 2 輪開始:第 1 輪紅在上游 v1.4.241 新增的 |
…eline v1.4.241 adds check:flaky-test-pattern-ratchet, grandfathering upstream's existing findings. The fork's own tests (19 rule/file pairs, mostly e2e specs and real-timer component tests) get their entries the same way, as FORK.md asks for upstream ratchets; upstream rows keep their order. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
本機閘門第 3 輪開始:第 2 輪紅在上游新增的 |
stablyai#33687 added English-only search keywords and a code sample to the chat font setting, which fails main's localization coverage check. (cherry picked from commit 5dfaee0) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…33715 The cherry-picked upstream fix adds two en.json keys that upstream has not translated yet; fork-locale-parity counts them as fork keys until a release carries them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
本機閘門第 4、5 輪:第 3 輪紅在 |
|
本機閘門第 5 輪結果(head c31fc67)
fork 失敗尾段v1.4.241 對照尾段 |
|
e2e / wire / mobile(本機,head c31fc67;跑時其他 session 讓 load 到 84/12 核)
fork / v1.4.241 尾段 |
|
盲審開始(head c31fc67,CI 全綠) |
v1.4.241 rebuilt buildTabStripLayoutKey; its fork lookup by the tab's own repo had no test, so a revert to relativePath would stop folder tabs re-rendering when their repo status changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
第 2 輪審查開始(head d809e41):第 1 輪 A/B/C1/C2/Codex 全 ACCEPTABLE、0 BLOCKING;C1 指出 |
盲審結果(head d809e41)
range-diff:313 個 fork commit,273 mutation 證據(摘錄)
importer-sweep 人工確認(B)
NON-BLOCKING(留待)
|
|
develop 已移動到 d809e41(舊 develop 備份在 backup/develop-v1.4.240-20261026T041726Z)。接著發版。 |
|
發版開始 v1.4.241-fork.1 |
|
v1.4.241-fork.1 已發佈:https://github.com/audichuang/orca/releases/tag/v1.4.241-fork.1 (develop = main = d809e41;cask 已更新,MacBook 上 Orca Fork 開著,未自動升級) |
只用來在 rebase 後的 develop 上跑 Fork PR Checks,不會合併。base 是指向上游 v1.4.241 的暫時分支
ci-base/v1.4.241(對 develop 開會因兩份歷史衝突而跑不了 CI),驗完就刪。這次是 MANUAL(有手動解的衝突與一個額外修正 commit),由 auto-rebase 依 FORK.md「Unattended merges」判斷能否自動移動develop;不能的話會在留言寫出移動指令。Summary
<)。locale 衝突由 merge driver 自動合好,沒有停下來。known-resolutions.md):0b28553093…(feat(ssh): show saved port forwards that couldn't start, with why, and let you remove them stablyai/orca#33450 × Git Graph 系列,locale):照做的效果由 locale merge driver 達成,rebase 中沒有 locale 衝突;之後跑verify:localization-catalogs與fork-locale-parity驗。7d6603aa17…([comment audit] Complete repository-wide comment cleanup stablyai/orca#33249 上游全庫註解清理 × fork 多個 commit):照做。每個 hunk 都採 fork 程式碼+上游改寫後的註解;上游整段刪掉的註解不加回;fork 自己寫的註解照留。e03786fb90…(fix(worktrees): keep each same-path copy on its own host branch stablyai/orca#33428refreshGitStatusForWorktree需要ownerHostId):照做,額外 commit(見下)。clearGitOwner。readGitCommandFailureMessage+上游改寫註解。tab-bar-item-label.ts,不再用getEditorDisplayLabel;fork 把normalizeRelativePath換成getEditorTabGitStatusKey。import 只留getEditorTabGitStatusKey。options.descendIntoRepos判斷。body變數;上游刪掉的「Author and date…」註解不加回。[data-commit-file-path][data-selected='true']selector;上游刪掉的/* ── Sidebar ── */標題不加回。initialsFor的 doc comment;fork 把它 export。結果:不加回註解、保留export。git-graph→GitGraphicon 分支+上游改寫的 strikethrough 註解。gitGraph?: OpenGitGraphState欄位+上游改寫的 mirrored tab 註解。requestEditorSaveQuiesceAll+上游改寫註解(兩處)。ref={toastBottomClearanceRef}+上游改寫註解。TOAST_BOTTOM_OFFSET(max() 含上游原本的 calc)+上游改寫註解+fork 自己的 Fork-only 註解。useDiffFilePosition/filePositionprop+上游改寫註解。openFile;不加回 Author 註解。openCommitFileInSequence;上游刪掉的「The cache is populated…」註解不加回。forkOptions/resolveOpenGitWorktreeId+上游改寫註解。{ entries: menuEntries };不加回 Author 註解。gitOwner+上游改寫註解。requestEditorSaveQuiesceForOwners+上游改寫註解。targets陣列+上游改寫註解。forkEditorTabIcon(file.mode) ?? FileIcon+上游改寫註解。fix(source-control): refresh folder repos through one resolved git copy:use-folder-repo-status-refresh.ts照上游useGitStatusPolling.ts一次解析resolveWorktreeGitCopyNow,傳ownerHostId/connectionId/transport;測試 mock 換成@/lib/worktree-git-copy,並新增一個斷言三者都送到 refresh 的測試(拿掉ownerHostId那行會紅,已驗)。.github/workflows/wsl-orcad-e2e-frozen-runner-retry.yml,develop 移動後要跑make fork-ci-disable-upstream。上游lint新增lint:js-plugins、lint:ast-grep、test:ast-grep、check:e2e-typecheck-ratchet、check:flaky-test-pattern-ratchet,fork-lint-run.mjs直接讀 package.json,不用改。Evidence
本機閘門、e2e/wire/mobile 與審查結果見留言。
Merge Danger
Door: two-way(不合併;develop 移動前有備份分支)
Blast Radius: 全部 fork 功能
🤖 Generated with Claude Code