Repository navigation
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
…pload to the paired server (stablyai#33060) * fix(web): chat attachments from the browser's file picker and drops upload to the paired server In the web client the chat's attach button resolved no files and a dropped file was refused as unresolvable, so neither ever attached. The browser now opens its own file picker, and a drop on the chat hands over its File objects, each held under a token whose last segment is the file's name. The chat's upload reads the held file and streams it in chunks over the paired server's existing agentSessionAttachment upload RPC, as the browser's image paste already does. * fix(web): release held browser files where an attach ends, never by eviction An eviction cap could drop the files of a batch still waiting to upload when another pick or drop came in. Every pick and drop now ends in the composer's one delivery step, which releases whatever it left unclaimed. * fix(web): release held browser files a disabled composer or detached drop owner never delivers A pick that returns to a disabled or unmounted composer skipped the delivery step, and so did a queued drop whose owner detached; both now release their held files. The composer-workspace comparison moves beside the other attachment ownership checks.
* A Claude chat shows the turns made outside it When a Claude chat's agent next opens, turns written to the same conversation elsewhere (claude --resume in a terminal) are appended once, in order, under the existing "Continued outside this chat." divider. Streamed reply and thinking rows are now keyed by their source block (message id and block index), which Claude also saves on each transcript row, so the chat can tell which saved rows it already shows. The read goes back from the end of the transcript only to the chat's saved turn-end leaf, replays the rows through Claude's own translator in an isolated sink, and commits them in one settlement that writes nothing if the chat moved. Imported prompts are display-only and never settle a send; any failure opens the chat normally. * test(claude): name the transcript row shapes the catch-up test builds * fix(claude): read a catch-up row's uuid once as a string * fix(claude): parse transcript tail rows without type assertions * refactor(native-chat): share the catch-up open runner across agents The Codex catch-up's agent-neutral parts move to one module: the open-time envelope (its own deadline and cancellation, never gating the open), the bounded staged batch, the single settlement commit that re-checks the journal before writing, and the "Continued outside this chat." divider. Codex keeps only how it reads its saved turns and what the chat already holds. No behavior change; the other agents' catch-up builds on this instead of copying it. * refactor(claude): catch up through the shared history catch-up runner * chore: remove unrelated pnpm executable metadata * refactor(native-chat): the catch-up runner reads the chat's view only when the agent asks * chore: remove regenerated pnpm executable metadata * fix(native-chat): the catch-up deadline also bounds waiting for its commit to be written A journal write barrier that never settled after the import was admitted held the provider's open past the catch-up deadline. The wait now ends with the deadline or the open's cancellation, like every other step. * test: type the history catch-up sink fixture without assertions * fix(native-chat): bound and revoke history preparation * test(claude): expect source block identity in stream cadence * fix(claude): preserve final output and history coverage * feat(native-chat): validate expected saved items during history catch-up * fix(claude): integrate conditional history settlement * fix(claude): use new content and provider prompt identities for catch-up * fix(claude): retain qualified completed leaves through session exit * fix(claude): preserve unresolved membership for recovered follow-ups * test(claude): use fork epoch reason for rewind preservation * fix(claude): consolidate translator sink type imports * fix(claude): preserve source message times during catch-up * fix(claude): narrow staged history mutations to items * test: bound Claude retained-leaf catch-up work * fix(claude): settle imported work at source boundaries * test(claude): keep shared journal harness portable * test(mobile): await editor listener cleanup before snapshot * test: isolate retained slice measurements and accept closed socket EPIPE
* ci: fail when a checked-in test file has no runner Two node:test files under .github/actions lost their runner when stablyai#31792 trimmed cloud pretest, and the two monaco .bench.ts budgets were never run by any CI job. Wire both back in and add a static check that every test-like file is collected by a declared runner or imported by a collected entry (the src .spec.* suite-module convention). * ci: ignore type-only imports and quote the lease glob for cmd.exe * ci: parse type-only imports, cover UNIT_EXCLUDE, route cloud runner edits Type-only imports are now dropped with the TypeScript parser, so a type alias before a runtime re-export no longer hides it. UNIT_EXCLUDE files must be named by a pr.yml or unit-tests.yml step. A cloud-only diff that adds a test or edits a runner config now runs the static job. The monaco benchmarks stay manual (pnpm test:perf:benchmarks) until a CI runner proves their wall-clock budgets. * ci: require UNIT_INCLUDE names in dedicated jobs and erase typeof import() * ci: resolve each runtime import to the one file Vite loads The unit dependency graph keeps every plausible candidate so it can invalidate conservatively, which cannot prove a suite runs: an import of ./case.spec counted both case.spec.ts and case.spec.tsx. Resolve with Vite's extension order instead. * ci: take runtime imports from transpiled output Imports used only as types are erased without a type modifier, so parsing for type-only syntax still followed them. Derive edges from ts.transpileModule output, which erases what Vitest's transform erases, and only transpile files that can reach an uncollected candidate. * ci: fix the agent-status benchmark config and route all cloud code The agent-status benchmark config inherited the unit projects, whose includes override its own, so it ran the whole unit suite and never the benchmark. Clear projects as the performance config does. Route every cloud code file to the static job, since content-detected tests can have any name.
…tablyai#33082) Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
…lient writes (stablyai#33083) Exiting a paired host tab's original pane moved the host's active leaf to the surviving split. The client's reconciliation effect followed it with setActivePane, and that persisted every still-mounted pane, writing the retired leaf (whose remote PTY had not ended yet) back into the layout. The leaf was then no longer retired, so its pane stayed forever. Any other persist in that window (insertions, clicks, title edits, divider drags) could do the same. persistLayoutSnapshot now drops the leaves the host retired, using the retireLeavesFromTerminalLayout main already uses, moved to shared. The retired set it reads is the one the reconciliation effect tracks.
…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>
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. |
1 task done
Author
|
Superseded by #53 ( |
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 proposes merging them into
swaplabs/mainstraight from the fork's mirrormain.What Changed
Upstream range
5d32f372e7..30733ac703, 236 commits (compare). The head is the fork's mirrormain, so the PR adds no fork commit.A read-only
git merge-treeof30733ac703intoswaplabs/main(7d33e616ae) reports 21 content conflicts, so this PR is expected to beCONFLICTING; the automation then moves the merge to async/upstream-20261024branch and closes this PR as superseded:.gitignoresrc/main/agent-hooks/manual-compact-status-cleanup.test.tssrc/main/agent-hooks/server/server-cleanup.tssrc/main/agent-hooks/server/server-hydration.tssrc/main/agent-hooks/server/server-remote-envelope-normalization.tssrc/main/agent-hooks/server/server-types.tssrc/main/ai-vault/cached-session-list.tssrc/main/ai-vault/session-list-results.tssrc/main/ai-vault/session-scan-issues.tssrc/main/daemon/daemon-endpoint-ownership.tssrc/main/daemon/daemon-out-of-process-launcher.tssrc/main/daemon/daemon-pty-router.tssrc/main/ipc/pty-management.tssrc/main/updater-mac-install.tssrc/main/updater-prerelease-feed.tssrc/main/updater-release-build-cache.tssrc/main/updater-release-builds.test.tssrc/main/updater-release-builds.tssrc/main/updater.build-channel-selection.test.tssrc/renderer/src/i18n/locales/es.jsonsrc/renderer/src/runtime/web-session-terminal-handle-events.tsWhy
Daily upstream sync.
Linked Issue
N/A: daily upstream sync.
Visual Proof
N/A: upstream code only.
Testing
None on this head:
mainis the mirror and takes no commits. Validation happens on the sync branch.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.