Repository navigation
sync: upstream 30733ac703 into swaplabs/main - #53
Merged
Merged
Conversation
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
* test: verify independent CLI quoting and screenshot bytes * test: audit CLI registration and offline hook boundaries * test: record CLI automation fence review * test: audit computer CLI dispatch and exported files * test: record CLI enrollment and emulator contract review * test: audit file command path and navigation contracts * test: bracket login shutdown grace and fallback deadlines * test: keep managed server timeout expectations independent * test: record Linear CLI input and dispatch review * test: verify legacy completion dispatch boundary * test: replace copied config and browser controls * test: isolate gate refusal from inherited caller identity * test: exercise real mobile host admission and teardown boundaries * docs: reconcile audit entrypoints and refresh completed reviews * test: fix mobile audit React Doctor findings --------- Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
…ai#32265) * chore: shorten process-host comments * chore: audit CLI parsing and host-routing comments * chore: remove stale host-selector restriction comment --------- Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
* chore: shorten process-host comments * chore: audit CLI parsing and host-routing comments * chore: remove stale host-selector restriction comment * chore: shorten remaining CLI root comments --------- Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
* chore: shorten process-host comments * chore: audit CLI parsing and host-routing comments * chore: remove stale host-selector restriction comment * chore: shorten remaining CLI root comments * Shorten CLI handler comments --------- Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
…ai#32283) * chore: shorten process-host comments * chore: audit CLI parsing and host-routing comments * chore: remove stale host-selector restriction comment * chore: shorten remaining CLI root comments * Shorten CLI handler comments * Shorten CLI runtime and command specification comments --------- Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
…#32288) * chore: shorten process-host comments * chore: audit CLI parsing and host-routing comments * chore: remove stale host-selector restriction comment * chore: shorten remaining CLI root comments * Shorten CLI handler comments * Shorten CLI runtime and command specification comments * Shorten top-level main process A–G comments --------- Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
…lyai#32681) * test: exercise fresh orchestration output and identity fixtures * test: check brief task values at the current output boundary * test: observe worker CLI receipts through actual output * test: reach sender lookup and print real worker wait states * test: verify retry deadlines and headless recovery admission * test: audit ACP lifecycle and recorded response boundaries * test: exercise mobile and CI admission contracts * test: check cache producers and exact capped output * test: reconcile upstream audit coverage and cache admission * docs: align integrated audit record hashes --------- Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
…#32290) * chore: shorten process-host comments * chore: audit CLI parsing and host-routing comments * chore: remove stale host-selector restriction comment * chore: shorten remaining CLI root comments * Shorten CLI handler comments * Shorten CLI runtime and command specification comments * Shorten top-level main process A–G comments * [comment audit] Shorten main process H–K comments --------- Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
…stablyai#30159) (stablyai#30192) Co-authored-by: Kelvin Amoaba <97001695+AmoabaKelvin@users.noreply.github.com>
…ai#31503) Co-authored-by: Jaeyoung22 <89302528+Jaeyoung22@users.noreply.github.com>
Rolls in the 69 missing translations from stablyai#32017 by @lucasrbsouza, preserving the current catalog and his original translated values. Adapted from commits a103b8d and 81befb5.
…tablyai#32777) * test: audit repository visibility and session-search CLI coverage * test: verify service identities and public skill-sharing output * test: verify terminal retry commands and unsuccessful navigation attempts * test: exercise bulk-close refusal and printed legacy prompt receipts * test: audit host discovery and agent launch recovery identities * test: audit ACP replay, lifecycle, and hook delivery coverage * test: audit automation errors and build artifact guards * test: audit mobile bridge and bundle lifecycle coverage * docs: reconcile audit tracker with input-ownership changes --------- Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
…#32295) * chore: shorten process-host comments * chore: audit CLI parsing and host-routing comments * chore: remove stale host-selector restriction comment * chore: shorten remaining CLI root comments * Shorten CLI handler comments * Shorten CLI runtime and command specification comments * Shorten top-level main process A–G comments * [comment audit] Shorten main process H–K comments * [comment audit] Shorten main process L–O comments --------- Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
…blyai#32838) * Revert "fix(workspace): show launch actions in empty tab groups (stablyai#32182)" This reverts commit afe62ef. * Retire empty-workspace translations removed by revert
* Revert "Show child workspace statuses in the children toggle (stablyai#32224)" This reverts commit b4ee652. * Fix revert button styling and retire stale child-toggle translations
…ablyai#33088) Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
…es load (stablyai#33038) * fix(native-chat): name workspaces by folder in the resume dialog while workspaces load On restart the resume dialog opens before the full workspace list loads, so every row it could not look up showed its raw repo-qualified id. Fall back to the folder name the id carries, as the status bar and Automations already do. * fix: distinguish unknown resume workspaces with matching folder names * refactor: extract resume workspace display derivation * fix: distinguish resume workspace control names
…osing it (stablyai#33071) On macOS wake and network online events every remote-runtime socket was probed with an 8 s deadline and closed on a miss. Relayed or lossy links still rerouting after a wake lost connections that would have survived. A miss now re-pings and leaves the socket until the normal 25 s keepalive window ends; the probe is skipped when data arrived in the last 3 s.
…tablyai#33093) Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
…ai#33094) Client control-socket closes and server heartbeat reaps only reached the console, which a packaged app never shows. Each control-socket close now writes a remote-runtime.control-socket-close span (cause, close code, error code, last keepalive RTT, socket and ready uptime). Each server reap writes remote-runtime.server-socket-reaped. Both land in the main trace file that Send app diagnostics collects. Keepalive pongs now measure RTT, exposed as lastRttMs and lastCloseCause on the shared-control diagnostics.
…i#33098) Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
* fix(editor): enable Lean syntax highlighting * fix(editor): enable Lean syntax highlighting Adapt stablyai#31930 onto current main and retain its bundled Lean grammar repair. Register the lazy TextMate provider and cover detection, proof syntax, nested comments, and bounded tokenization. * test(editor): verify Lean highlighting in the full app --------- Co-authored-by: Neil <neil@stably.ai>
…lyai#19600) * fix(agent-hooks): force C numeric locale on POSIX curl timeouts curl parses --connect-timeout/--max-time with locale-sensitive strtod, so comma-decimal locales reject 0.5 and every hook silently falls into the restart spool. Fixes stablyai#19578 Co-authored-by: Cursor <cursoragent@cursor.com> * fix(agent-hooks): neutralize LC_ALL before setting LC_NUMERIC=C on POSIX curl Signed-off-by: siddiqui irshad <mohdirshad1306@gmail.com> * style(agent-hooks): format scoped curl commands * test(hooks): expect scoped curl locale in Muse install script --------- Signed-off-by: siddiqui irshad <mohdirshad1306@gmail.com> Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: Neil <neil@stably.ai>
…24470) * fix(dashboard): skip hidden pop-out view transitions A column change in a hidden Agent Dashboard pop-out started a View Transition whose ready promise rejects with InvalidStateError. Nothing observed that promise, so each move became an unhandled rejection. Skip the transition while the document is hidden, and consume ready when a transition still starts. Fixes stablyai#21323 * fix: preserve visible dashboard transition errors * test(dashboard): preserve unrelated hidden transition errors --------- Co-authored-by: Neil <neil@stably.ai>
…created (stablyai#33103) * fix(worktrees): don't prune worktrees the other Git (Windows or WSL) created On Windows one repo can hold linked worktrees written by both Git for Windows (link C:/...) and WSL Git (/mnt/c/..., /home/...), e.g. after the project runtime toggle switched it. Each Git reads the other's links as missing, and the `git worktree prune` Orca runs after removing a worktree (and before deleting a branch held by one) deleted those worktrees' metadata, leaving checkouts git no longer knows. All five prune sites now go through pruneGitWorktrees, which reads the link files first and refuses (through each site's existing failure path) when any link is foreign to the Git that would run. Co-Authored-By: Claude <noreply@anthropic.com> * fix(worktrees): lock the other Git's entries for the prune instead of skipping it Review: refusing the whole prune broke stale-registration recovery and left branches undeletable in mixed repos, and reading <cwd>/.git/worktrees missed bare and linked checkouts. Now the other Git's entries get a marked lock file for the prune (git never prunes a locked entry; a user's existing lock is kept), the rest prune as before, and the admin dir comes from rev-parse --git-common-dir once routing is settled. //server/share links read as Windows Git's. Co-Authored-By: Claude <noreply@anthropic.com> * test(worktrees): drop a type assertion from the prune guard test Co-Authored-By: Claude <noreply@anthropic.com> * fix(worktrees): serialize guarded prunes per repo and reclaim stale guard locks Re-review: two prunes in one repo could interleave so the first's unlock let the second prune the other Git's entry, and a crash between lock and unlock left a lock read as the user's forever. Prunes now chain per admin dir, and a lock carrying the guard's own reason is reclaimed. Co-Authored-By: Claude <noreply@anthropic.com> * test(worktrees): assert the overlapping prune waits, not only its outcome Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
…rtions (stablyai#33106) Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
…ai#32194) * fix(windows): include registry addon in relocated daemon host * test(windows): preserve registry path in native-read child script * fix(ci): match registry gate command to recorded validation
…stablyai#32750) * fix(terminal): keep xterm parse barriers and the output behind them across a resize Orca waits for xterm to finish parsing by writing an empty string with a callback. In xterm 6.1, resize() drains the write queue through WriteBuffer.flushSync, whose loop stops at a falsy chunk and clears the rest of the queue. A resize while such a barrier was queued therefore dropped its callback and every chunk written after it: replay guards and output waits fell back to their stall timers, and that pane output never reached the screen. The replay guard, output scheduler and write-pipeline probe now write a zero-length Uint8Array through writeXtermParseBarrier. It parses as nothing, but it is a truthy chunk, so the flush keeps going. Test fakes that recognised a barrier by '' now check for a zero-length write. Regression tests use real @xterm/headless and fail before the fix. Fixes stablyai#26950 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test(terminal): verify parse barriers across installed xterm runtimes Exercise the existing contributor workaround against both browser and headless packages through replay waits, scheduler waits and health probes. Check FIFO callbacks, following bytes, parser tails and no-resize controls. Register the bounded resize invariant as an experimental reliability gate. Make terminal test writers accept string or Uint8Array and preserve textual captures through the existing fixture conversion. Keep the original PR's production implementation and contributor ancestry unchanged. * test(terminal): complete byte barriers in unhide restore fixture --------- Co-authored-by: outof-place <contact@outofplace.space> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
stablyai#33104) * feat(telemetry): count Windows-drive WSL repos with WSL-made worktrees The daily wsl_usage_snapshot gains projects_wsl_windows_drive_wsl_worktrees: of the Windows-drive repos that run Git in WSL, how many have a linked worktree WSL Git made (a Linux-path link). Git for Windows can't take those over, so the D1c conversion refuses them; this sizes that class before the bridge is removed. Bucketed count only, read from the link files with no Git spawned; optional in the schema so older payloads still validate. Co-Authored-By: Claude <noreply@anthropic.com> * fix(telemetry): don't count Windows Git's //server/share worktree links as WSL-made Review: a UNC link starts with '/' too. Reuse the prune guard's classifier, and note that a repo whose .git is a file reads as having no worktrees (no Git is spawned). Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
Upstream range 5d32f37..30733ac, 236 commits. 21 conflicted files. 17 come from upstream's comment audit (2847bbe, stablyai#32966), which shortened comments beside fork lines; each keeps the fork's lines unchanged next to upstream's new comment. - Host resume (fork #30): upstream stablyai#32991 rewrote manual-compact-status-cleanup.test.ts as one case per cleanup; the fork's expectation (pane cleanup leaves only the retained resume identity) is ported into it. web-session-terminal-handle-events.ts takes upstream stablyai#33062, which now carries the handle's incarnationId, instead of the fork's copy of that field; the fork's `incarnationId: null` test expectations go with it. - Auto-resume (fork #6): candidate-resume-startup.ts follows upstream stablyai#31315's launch-profile signature and passes the settings and the target platform, as upstream's own resume path does. - Unreachable-host removal (fork #3): project-removal-outcome.ts follows upstream's move of remote-runtime-client-error-classification into src/shared/remote-runtime/. - Update sources (fork #8 #10 #16 #17 #27): .gitignore keeps the fork's allow-list lines and takes upstream stablyai#32903's removal of docs/audits; es.json takes upstream's translation plus the fork's keys. electron.vite.config.ts went over max-lines in a clean auto-merge, so the fork's define spreads move into withSwaplabsUpdateDefines in swaplabs-update-defines.ts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 task done
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Author
|
Post-merge follow-ups from the sync automation:
Other red checks are upstream's own, with no fork lines involved:
|
This was referenced Oct 24, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ELI5
Upstream Orca moved forward 236 commits since yesterday's sync (#50). This PR merges them into
swaplabs/main. 21 files conflicted with fork changes. Most of them (17) come from upstream's big comment cleanup, which shortened comments that sit next to fork lines; the fork's lines are kept unchanged. Three more fork files needed small fixes that the conflict list did not show. This PR replaces #52 (headmain), which could not merge.What Changed
Upstream range
5d32f372e7..30733ac703, 236 commits (compare). One signed merge commit,c361964f6a(Merge upstream main (30733ac703) into swaplabs/main), onsync/upstream-20261024, cut at the integration head7d33e616ae.Conflicts, by fork PR (
orca-fork-ops conflicts)Upstream's comment audit (
2847bbe9e81, stablyai#32966) shortened the upstream comment beside a fork line. In each of these files the resolution is upstream's new comment plus the fork's lines, unchanged:src/main/ai-vault/cached-session-list.ts,session-list-results.ts,session-scan-issues.tssrc/main/updater-prerelease-feed.ts,updater-release-build-cache.ts,updater-release-builds.ts,updater-release-builds.test.ts,updater.build-channel-selection.test.ts,updater-mac-install.tssrc/main/daemon/daemon-endpoint-ownership.ts,daemon-out-of-process-launcher.ts,daemon-pty-router.ts,src/main/ipc/pty-management.tssrc/main/agent-hooks/server/server-cleanup.ts,server-hydration.ts,server-types.ts1a247d1c5csrc/main/agent-hooks/server/server-remote-envelope-normalization.tsDetails worth knowing:
server-cleanup.ts'spreserveResumeIdentitydoc,updater-release-builds.ts'sresolveTargetBuilddoc), the fork's comment stays in place of upstream's shortened or removed one.updater-prerelease-feed.ts(the fork moved the readiness probes toupdater-release-asset-readiness.ts), the protocol-version lookup inpty-management.ts, and the routing comment indaemon-pty-router.ts.session-scan-issues.ts: the fork's added sentence (why the bound is shared) now follows upstream's one-line comment.updater-release-builds.test.ts: the fork's tests sat between upstream's Windows comment and the test it belongs to. Upstream's rewritten comment now sits above that test again.The other four conflicts:
.gitignoredocs/auditsallow-listdocs/reference/swaplabs-*.mdlinessrc/renderer/src/i18n/locales/es.jsonb9d9dacb008translatedunpackedHelpmanagedByDeploymentHelpandhowToUpdatekeyssrc/main/agent-hooks/manual-compact-status-cleanup.test.tsproviderSessionOnly), and the latePostCompactrevives nothingsrc/renderer/src/runtime/web-session-terminal-handle-events.tsincarnationIdto the handle update, so a remote pane can re-bind after a host exitweb-session-terminal-handle-events.ts: upstream stablyai#33062 now does what the fork's lines in this file did. Fork commit6713337f23addedincarnationId: string | nulltoWebSessionTerminalHandleUpdate, set tonullwhen unknown, soannounceProcessReplacementcan tell a replacement process from a re-minted handle. Upstream's field is optional and is present only when the host stamps one. The fork's consumer inremote-runtime-pty-transport.tsalready treats an absent value asnull:rebindRemoteTerminalHandledefaults it, andannounceProcessReplacementchecks truthiness. The behaviour is unchanged, and the fork'sremote-runtime-pty-transport-process-replacement.test.tspasses. Fork lines this replaces:incarnationId:constructions inweb-session-terminal-handle-events.ts;incarnationId: nullexpectations inweb-session-terminal-handle-events.test.tsandweb-session-tabs-sync-visibility-collision.test.tsx, which are back to upstream's text.Breaks the conflict list did not show
pty-connection/candidate-resume-startup.ts,agent-resume-recovery-install.tsresolveTuiAgentLaunchArgs/Envnow take the launch-profile settings and the target platformstate.settingsand the target platform, as upstream's own resume path (agent-account-restart-startup.ts) does. A resumed agent gets the stored permission like every other launch, which matches the fork's documented rule that the pane's configured defaults applysrc/renderer/src/store/repos/project-removal-outcome.tsremote-runtime-client-error-classificationintosrc/shared/remote-runtime/electron.vite.config.ts...SWAPLABS_UPDATE_DEFINESspreads and the renderer comment move intowithSwaplabsUpdateDefinesin the fork-ownedconfig/build-plugins/swaplabs-update-defines.ts, applied once toelectronViteConfig. The fork now adds one counted line here (the import). Bothdefineblocks carry the same keys as before; checked by loading the configNo other fork lines were moved or dropped. For 74 of the 82 files both sides changed, the fork's added and removed lines against upstream are the same before and after the merge. The other 8 are the comment and port cases above.
Some notable upstream changes in the range
2847bbe9e81, [comment audit] Clean up IPC, host lifecycle and native-chat comments stablyai/orca#32966, [comment audit] Continue main-process comment cleanup stablyai/orca#32946 and earlier audit PRs);src/shared/remote-runtime/(refactor: colocate remote runtime error classification stablyai/orca#33024, refactor: group remote runtime requests and subscriptions stablyai/orca#32952, refactor: colocate remote runtime passthrough socket stablyai/orca#33009 and others);Why
Daily upstream sync.
Linked Issue
N/A: daily upstream sync.
Visual Proof
N/A: no UI change of the fork's. The conflicts are in comments, tests, main-process code and the renderer's terminal transport.
Testing
All checks ran on the merge result in the sync worktree, before the commit, except where noted:
pnpm install --frozen-lockfile(the lockfile and everypackage.jsonequal upstream's).pnpm tcpasses after the two fixes above, and again on the committed tree. Before them it failed on exactly those files. A deliberate type error in a scratch file made it fail, which confirms the gate is live.orca-runtime.test.ts(it runs the fork'sworktree-ps-agent-row-dismissal.spec.ts) and the two handle-event test files: 118 files, 117 pass. The one failure is upstream'srepository-project-operations-part-02.spec.ts, because this host's signing wrapper refuses its fixture commitinit. With fixture signing off (commit.gpgsign=false),orca-runtime.test.tspasses: 1,497 passed, 3 skipped. The fork's 3 e2e specs were not run. This run came before theelectron.vite.config.tsmove, so the files that check the build defines (swaplabs-build-workflow-mac-signing,verify-swaplabs-packaging,verify-dev-channel-packaging,release-sources,mac-self-update-public-key; 95 tests) were run again after it, and pass.src/main/agent-hooks,src/main/ai-vault,src/main/daemon,src/main/ipc/pty-management*,src/main/updater*,src/renderer/src/runtime/web-session*,src/renderer/src/components/terminal-pane,src/renderer/src/store/repos, pluselectron-vite-output-contract.test.tsandmain-entry-facade.test.ts: 1,363 files, 13,634 tests passed. Two sets of failures:bash-prompt-command-composition,repro-13767-shell-ready-marker-lost-to-exec,shell-ready-bash-wrapper; 7 tests) fail the same way on pristine upstream30733ac703on this host (bash 5.3.9), so they are not the merge's.pty-subprocess-git-credential-guard.test.tsfailed only under that run'sGIT_CONFIG_*override and passes without it.check-changed-code-quality.mjswithORCA_SYNC_PR_DIFF_BASE=30733ac703: 0 findings across 328 fork files.cloud/):oxlintpasses with both configs, andoxfmt --checkreports every matched file formatted. The pre-commit hook then ran normally, and the tree before the commit (3293e86747) equalsHEAD^{tree}after it.verify:localization-runtime-catalog,-catalog,-catalogs,-extraction,-coverage,verify:rpc-params-catalog,check:max-lines-ratchetand upstream's newcheck:test-file-runnersall pass.c361964f6aisGfrom the sync keyBF1DD75F888E96080C2453E2D9E158C5D6874235.AI Disclosure
Prepared by the "Orca upstream sync" automation (Claude Code, Claude Opus 5.5).
Agent skill upstream boundary
Notes
orca-fork-ops statusforswaplabs/main(7d33e616ae) against upstream30733ac703, before this merge:LOCAL:prefix and no upstream PR.Upstream release tags
v1.4.238andv1.4.239were copied to the fork.🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need.