Skip to content

Keep folder Git upgrades responsive and recheck project ownership - #26791

Merged
nwparker merged 20 commits into
mainfrom
nwparker/folder-repository-upgrade-async-task1cc89eeb
Oct 10, 2026
Merged

nwparker merged 20 commits into
mainfrom
nwparker/folder-repository-upgrade-async-task1cc89eeb

Conversation

@nwparker

@nwparker nwparker commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor
Files Added Deleted Net
Test 3 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​120 $\color{#cf222e}{\Huge{\mathbf{−}}}$​6 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​114
Prod 1 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​17 $\color{#cf222e}{\Huge{\mathbf{−}}}$​6 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​11

ELI5

A folder opened in Orca becomes a Git project when Git appears, preserving the same project and workspace.

What Changed

The existing folder watcher awaits the shared async Git classifier. After that wait it rereads the stored project and checks its identity, path, kind and execution host before updating it; removed or replaced projects cannot receive a late upgrade. This retains the existing watcher lifecycle and excludes SSH/WSL upgrades through the established guards.

Why

Awaiting Git removes the blocking subprocess. Rechecking ownership after the wait closes the new asynchronous race without adding another watcher or store.

Linked Issue

Related to #20497. Based on #26760; merge it first. #26790 is independent.

Visual Proof

Fresh final-head macOS hidden-renderer captures: the same project/workspace before and after external Git initialization. IDs are asserted by the test. The OS picker result is supplied by the established fixture.

Same workspace before Git initialization

Same workspace after Git initialization

Fresh hidden Windows combined-stack run, with both IDs asserted by the test:

Windows folder before Git initialization

Windows same workspace after Git initialization

The additional hidden Windows check also confirms the real Open as Folder confirmation renders after its animation settles:

Windows Open as Folder confirmation

Testing

Final head 30c19a727f7173f381de3df55204b192f488bf06, base #26760 at 1fdc56bf558c.

  • 31 focused watcher/path tests pass, including pending Git, removed/replaced rows, host/path changes, destruction and restart.
  • Fresh macOS hidden Add Project → Open as Folder → external Git initialization passes and preserves both IDs.
  • Full pnpm tc and changed-code quality pass.
  • Fresh Windows combined validation merge 18159658119f1000e339200feaa8b3ad49f028e4 matches the expected manifest; fresh install and CLI/Electron builds pass. The shipped rendered folder-promotion test passes as part of four shipped Windows tests; two classifier/routing checks also pass. This is a combined-stack validation, not a standalone branch checkout.
  • Hidden UI flow and before/after captures manually inspected
  • Focused lifecycle/race tests updated

Review

Low incremental code merge risk with ownership/lifetime tests. Filesystem metadata fallback remains synchronous. Native OS picker/focus tests, release packaging and real SSH/WSL folder upgrade are not claimed. Final-head CI passes, including Windows packaging. The auxiliary Windows fixture later reported lockfile drift; its diff was unavailable, so exact post-install dependency reproducibility is unverified.

Agent skill upstream boundary

  • Not applicable; no upstream skill-installer source copied.

Checklist

  • Focused scope, mechanism and alternatives explained
  • Cross-platform, SSH, folder and wire compatibility considered
  • Focused tests, full typecheck, changed quality and fresh builds pass

@nwparker
nwparker changed the base branch from nwparker/win-issues-ipc-audit-local-1008 to main October 10, 2026 09:01
@nwparker
nwparker merged commit 991fd5c into main Oct 10, 2026
39 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant