Repository navigation
sync: upstream main 2026-10-11d (5 commits → v1.4.224-0) - #20
Merged
Merged
Conversation
…3.99 0.11b) (stablyai#27449) * test(e2e): one posixShellQuote; docker-ssh-host fixture names * test(e2e): leave the main-failing stall-recovery spec untouched --------- Co-authored-by: m4air <m4air@Mac.localdomain>
…ablyai#27452) * feat(runtime): accept a declared spawn intent from paired clients Paired clients can now say whether a terminal restore is the pane the user is looking at (user-resume) or a hidden one (automatic-restore). The host forwards the intent to its fork gate, advertises terminal.spawn-intent.v1 so clients only send it to hosts that accept it (terminal.ensureAgentSession params are strict), and reports a deferred fork as terminal_spawn_deferred with its reason. No client sends the field yet; that lands next with the sleeping-pane handling. * fix(daemon): a claimed agent resume cannot declare itself interactive Interactive forks skip the gate, and paired clients can now declare intent, so the host keeps inferring from the claim when a request says interactive. * fix(runtime): clients may only declare restore intents A daemon kept running across an update still lets a declared interactive request skip its gate, even for a claimed resume. The RPC and local IPC now accept only user-resume and automatic-restore, and the daemon request boundary turns a claimed interactive into an automatic restore. --------- Co-authored-by: m4air <m4air@Mac.localdomain>
…d specs (stablyai#27465) Co-authored-by: m4air <m4air@Mac.localdomain>
stablyai#26376) * fix(sidebar): stop a removed folder workspace from leaving a blank row A folder-project workspace exists only as its worktreeMeta row. When it is deleted while a terminal is still bound, the renderer keeps the row until its teardown runs, and a PTY reattach in that window stamps lastActivityAt through worktrees:updateMeta. setWorktreeMeta then minted a default row with an empty name, which the sidebar listed under the project name and which came back after every delete. The metadata IPC now refuses to create a row for a folder workspace instance that no longer exists. Fixes stablyai#22712 Claude-Session: https://claude.ai/code/session_01XZXEdbC4RKp288k2gBzLUW * fix(sidebar): also refuse runtime writes to a removed folder workspace Move the existence check into a shared predicate that matches any same-id folder owner, so an owner at a different path on another host cannot bypass it, and apply it to the runtime's worktree.set path, where a resolution snapshot taken before the removal still returns the workspace. Claude-Session: https://claude.ai/code/session_01XZXEdbC4RKp288k2gBzLUW * test: type the removed-folder-workspace fixture meta for the anti-slop lint --------- Co-authored-by: m4air <m4air@Mac.localdomain>
Bun's first import after vi.resetModules() missed the hoisted ../ipc/pty mock, so the real PTY barrel loaded and setLocalPtyProviderMock stayed at 0 calls on shard 3/5. Re-pin fs/net/ipc/pty/spawner/adapter after reset and load ipc/pty before daemon-provider-init.
anti-slop/no-module-mocking flags vi.doMock in src/ helpers. Keep the bun resetModules re-pin in test-only daemon-init-reset-modules-pin.ts and file-scope the rule there, matching mock-descendant-sweep.ts.
karlorz
pushed a commit
that referenced
this pull request
Oct 19, 2026
…-page readers off the deprecated owner resolver (stablyai#30478) Thirteen read-routing callers (#4, #5, #10-#20 of the round-3 caller list) read the owner through runtimeEnvironmentIdWithLegacyFallbackUnlessTwin. A workspace two hosts publish is no longer searched on either host. The focus-read ratchet now counts the legacy-fallback adapter, which reads the focused runtime inside an object literal its discovery skipped; the five F1 entries that blind spot pruned come back. Deprecated importers 53 -> 40.
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
This branch copies 5 new commits from upstream
stablyai/orcamainonto the fork's working branchfork-main, so the fork can later cut desktop tagv1.4.224-0. It does not merge itself, does not cut a tag, and does not deploy.What Changed
Before:
fork-main(cc1230a91d3, PR #19) was 5 commits behindstablyai/orcamainatb4aec8a8961.upstream/mainwas not an ancestor offork-main, sofork-next-desktop-tag.mjs --writerefused.After:
sync/upstream-2026-10-11dis a--no-ffmerge ofupstream/main@b4aec8a8961intofork-main. No conflicts. Auto-merge kept fork protocol capabilities (SSH_TARGET_MANAGEMENT,FORK_TERMINAL_AND_AGENT_LAUNCH) and added upstreamterminal.spawn-intent.v1. Pet speech RPCs, orcad host-adapter extraction, and automationagentFlagsstay.The five commits: docker-ssh-host fixture rename + posixShellQuote (stablyai#27449), declared spawn intent from paired clients (stablyai#27452), one managed-host setup path for ssh-orcad specs (stablyai#27465), README downloads badge, folder-workspace sidebar blank-row fix (stablyai#26376).
Mechanism: merge commit
1e2fb380435plus notes indocs/audits/SYNC-NOTES-2026-10-11d.md.Why
The tag script's ancestor guard must stay on. A follow-up merge (this PR) is the same path as #15/#17/#18/#19: keep fork deltas, take upstream product changes, record resolutions, let GitHub CI run the full matrix.
Linked Issue
N/A — fork maintainer sync; no upstream issue.
Visual Proof
N/A — no new fork UI. Ingests upstream commits (spawn intent, ssh-orcad setup gate, folder-workspace sidebar blank-row fix). Auto-merge preserves existing fork pet-speech and protocol capabilities.
Testing
tsc --noEmit -p config/tsconfig.tc.cli.jsonclean viaheavy-runvitest
--maxWorkers=1: spawn-intent + admission + rpc errors (73), worktree/folder metadata (25), e2e routing (15), pet-speak routing (4)Full
pnpm tc(node+web) and electron-builder not run locally. GitHub CI is the full matrix.Automated tests added/updated, or explained why not below
I manually tested these changes locally
AI Disclosure
Review
Agent skill upstream boundary
Notes
Coolify HOLD / no auto-deploy. Do not merge this PR from CI. Do not cut
v1.4.224-0from this PR. Do not touch Coolify. Coord escalates the fork merge to newbie after CI is green.Checklist
N/Awith reasonpnpm lint,pnpm typecheck,pnpm test, andpnpm buildpass (or CI will cover; local preferred)