Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
287 commits
Select commit Hold shift + click to select a range
da95225
perf(push): keep retention sweeps from overlapping without slowing th…
nwparker Sep 27, 2026
a2325bb
fix(worktrees): clear orphan cleanup on BusyBox WSL distros (#23296)
nwparker Sep 27, 2026
1882458
ci: scope orcad smoke and parallelize Linux packages (#23314)
OrcaWin Sep 27, 2026
fed613b
perf: avoid rescanning partial notebook output frames (#23138)
nwparker Sep 27, 2026
98cfdc8
fix(kimi): don't crash if config.toml is deleted mid-write (#23293)
nwparker Sep 27, 2026
067844b
fix(design-system): replace hand-rolled diff draft-card shadow with s…
nwparker Sep 27, 2026
1d2c0e5
perf(mobile): coalesce stalled connection log persistence (#22973)
nwparker Sep 27, 2026
080c4ad
fix(ssh): name the missing unzip when Bun archive extraction cannot s…
nwparker Sep 27, 2026
21170c6
perf: avoid repeatedly encoding retained VM recipe output (#23048)
nwparker Sep 27, 2026
1f00eae
perf(history): coalesce tombstone directory rescans (#23031)
nwparker Sep 27, 2026
1526d41
fix(terminal): recognize a Git Bash launcher by its install layout (#…
nwparker Sep 27, 2026
b5dec85
ci: reuse mobile web route analysis and skip unrelated mobile tests (…
OrcaWin Sep 27, 2026
2ce47d9
fix(browser): accept dotted hostnames with explicit ports (#23318)
nwparker Sep 27, 2026
23e5e77
fix(grok): show zero usage for an explicit zero quota (#23321)
nwparker Sep 27, 2026
fa36422
fix(terminal): retain Japanese middle dots and tildes in file links (…
nwparker Sep 27, 2026
1c982ff
fix(packaging): exclude root notes from app files (#23326)
nwparker Sep 27, 2026
c3c53f1
fix(sidebar): show unread emphasis in compact agent rows (#23327)
nwparker Sep 27, 2026
f41cecc
fix(search): keep commas inside grouped file filters (#23319)
nwparker Sep 27, 2026
fddf8c8
feat(editor): highlight Typst files and diffs (#23323)
nwparker Sep 27, 2026
7438bc8
fix(orchestration): deliver dispatch mail and replies to the current …
nwparker Sep 27, 2026
41607a9
fix(sidebar): preserve list focus when selecting workspaces (#23320)
nwparker Sep 27, 2026
459410a
Preserve Hermes YAML configuration during hook installation (#23324)
nwparker Sep 27, 2026
9f5a8a5
Reuse mobile recording compilation and refresh desktop CI timings (#2…
OrcaWin Sep 27, 2026
bdb897b
Respect disabled OpenCode variants and refresh WSL settings safely (#…
nwparker Sep 27, 2026
f5f537e
Revert "Support mouse Back/Forward buttons in shortcuts (#23287)" (#2…
AmethystLiang Sep 27, 2026
dc8f623
fix: retire stale review lookups after cache invalidation (#23182)
nwparker Sep 27, 2026
7505e55
perf: share pending plugin translation startup requests (#23133)
nwparker Sep 27, 2026
7ac9c8d
perf: skip macOS DNS probes for unrelated errors (#23121)
nwparker Sep 27, 2026
ccd1e87
Overlap independent CI checks with native Actions background steps (#…
OrcaWin Sep 27, 2026
172083f
fix: remove PDF export temp files after setup failures (#23130)
nwparker Sep 27, 2026
6ccfc12
fix: preserve newer pull request lookup ownership (#23119)
nwparker Sep 27, 2026
5da18e1
fix: preserve newer hosted review lookup ownership (#23126)
nwparker Sep 27, 2026
487bad2
fix(homebrew): remove deprecated URL verification parameter (#23365)
nwparker Sep 27, 2026
d8e2a69
ci: overlap package preparation and security scans; share localizatio…
OrcaWin Sep 27, 2026
c3ff93f
fix(editor): highlight Twig templates in files and diffs (#23366)
nwparker Sep 27, 2026
fc69ec1
perf(github): coalesce stronger refreshes after pending requests (#22…
nwparker Sep 27, 2026
90bae01
fix(editor): highlight Solidity files (#20928)
anajuliabit Sep 27, 2026
fbeaec6
Avoid store updates for unchanged SSH repository catalogs (#23034)
nwparker Sep 27, 2026
25c3ac4
ci: overlap shell setup, localization extraction, and mobile route pr…
OrcaWin Sep 27, 2026
d301658
fix: exclude canonical SSH roots from local file access (#23196)
nwparker Sep 27, 2026
8e6c071
perf: skip store notifications for unchanged project and folder catal…
nwparker Sep 27, 2026
8da0ca5
perf(relay): release rejected first-frame connections [trade-off] (#2…
nwparker Sep 27, 2026
268f0e9
fix(projects): enrich git remote identity for runtime-addressed repo …
nwparker Sep 27, 2026
bc78acc
fix(editor): detect all bundled Monaco language associations (#23371)
nwparker Sep 27, 2026
983250a
fix: await queued Codex trust preflight completion (#23148)
nwparker Sep 27, 2026
47cebbf
ci: use ARM unit runners, overlap web builds, and reuse verifier fixt…
OrcaWin Sep 27, 2026
93d8b1f
fix(ssh): complete keyboard-interactive MFA prompt handling (#15588)
Chihen-Tai Sep 27, 2026
17690e6
style: settle oxfmt 0.70 drift and stop formatting vendored licences …
nwparker Sep 27, 2026
c15f082
ci: build independent Electron targets together for E2E (#23378)
OrcaWin Sep 27, 2026
0697014
fix(persistence): report a discarded cross-host repo update instead o…
nwparker Sep 27, 2026
27b823f
ci: compile the E2E CLI once for all consumers (#23384)
OrcaWin Sep 27, 2026
0a876b2
feat(activity): reveal threads in floating terminal workspace (#23239)
AmethystLiang Sep 27, 2026
b8ef5fc
fix(native-chat): let the "Asked" row unfold a long question (#22941)
brennanb2025 Sep 27, 2026
6c75837
Update README downloads badge
github-actions[bot] Sep 27, 2026
d972bac
fix(workspace): a restored workspace paints before its terminals reco…
brennanb2025 Sep 27, 2026
484598b
fix(terminal): retry first-terminal seeding until a decision applies …
brennanb2025 Sep 27, 2026
9795563
fix(runtime): register phone terminal subscriptions when the request …
brennanb2025 Sep 27, 2026
aeb96ab
fix(native-chat): close only the reopened chat when main closes its t…
brennanb2025 Sep 27, 2026
bdaf9a3
fix(agent-launch): move only the requesting client's view to a launch…
brennanb2025 Sep 27, 2026
3f1bf68
perf: preserve matching General settings sections during search (#23177)
nwparker Sep 27, 2026
a4b60c2
test(windows): stop the NSIS capability probe failing on a slow Power…
nwparker Sep 27, 2026
eaa6fb7
Tab opening ranking (#23435)
AmethystLiang Sep 27, 2026
32668c3
perf: preserve matching Accounts settings sections during search (#23…
nwparker Sep 27, 2026
ef987e4
feat(analytics): persist local usage session identities (#18759)
blaksmatic Sep 27, 2026
838769d
fix(linear): accept team keys that start with a digit (#23423)
leilei3167 Sep 27, 2026
0547b32
test(usage): add long-context token fields to the Codex fixture (#23478)
Jinwoo-H Sep 27, 2026
10807d8
test(e2e): stabilize terminal shortcut Kitty and Ctrl+C tests (#23472)
Jinwoo-H Sep 27, 2026
618a8b0
fix(terminal): keep a dead app's input modes recoverable after a refu…
Jinwoo-H Sep 27, 2026
f72079b
fix(mobile): send typed question answers as structured answers (#23458)
brennanb2025 Sep 27, 2026
993183a
fix(terminal): every explicit terminal close commits through one main…
brennanb2025 Sep 27, 2026
161bdf9
fix(bench): load benchmark modules under test through jiti (#23482)
nwparker Sep 27, 2026
433986f
fix(runtime): read Codex readiness from the live screen (#23475)
Jinwoo-H Sep 27, 2026
fb51e6c
Speed up Markdown document discovery with bundled ripgrep (#23306)
nwparker Sep 27, 2026
2984764
test(e2e): fix failures and improve stability (#23480)
AmethystLiang Sep 27, 2026
b61797d
fix(agent-trust): bound the remaining Codex trust writes a launch wai…
nwparker Sep 27, 2026
da57f47
fix(native-chat): say a refused chat write in plain words, and keep i…
brennanb2025 Sep 27, 2026
89cf55d
fix(agent-launch): report a launch that failed before spawning as fai…
brennanb2025 Sep 27, 2026
7a3735f
fix(native-chat): let a multi-question ask record list its questions …
brennanb2025 Sep 28, 2026
d6336be
ci(e2e): run the SSH browser route e2e when its source changes (#23498)
brennanb2025 Sep 28, 2026
6c56c0a
fix(browser): a failed SSH route keeps its card while the host redial…
brennanb2025 Sep 28, 2026
dd90b31
fix: identify partial-clone repositories from the correct remote (#23…
nwparker Sep 28, 2026
5a8237a
Browser tab placement review (#23462)
AmethystLiang Sep 28, 2026
bf91941
fix(mobile): release streams whose ready arrives after a replayed can…
brennanb2025 Sep 28, 2026
bc7a17f
fix(runtime): register phone tab-list streams when the request arrive…
brennanb2025 Sep 28, 2026
0b2dd0a
fix(runtime): let the phone end a terminal stream by the request that…
brennanb2025 Sep 28, 2026
a879713
fix(terminal): stop a resume note from blanking a live remote agent p…
Jinwoo-H Sep 28, 2026
992bad5
refactor(agent-resume): give each resume-note reader its own named ch…
Jinwoo-H Sep 28, 2026
bfe476f
fix(native-chat): a message is accepted, then delivered (#22821)
brennanb2025 Sep 28, 2026
cdf9f6e
fix(mobile): native desktop-mode keyboard lift stays on screen; metri…
Jinwoo-H Sep 28, 2026
2119730
fix(terminal-wait): unattended launches report Claude's trust dialog …
brennanb2025 Sep 28, 2026
52dc32f
fix(mobile): the page pushes its terminal frame into the document fro…
Jinwoo-H Sep 28, 2026
7877164
fix(mobile): show one review sheet at a time so the review screen nev…
brennanb2025 Sep 28, 2026
934a2d4
fix(codex): a native chat's thread opens on the model the chat chose …
brennanb2025 Sep 28, 2026
c8f9a65
test(e2e): keep the Kitty-arming app alive in the Option-composed spe…
Jinwoo-H Sep 28, 2026
d33541c
test(mobile): repin the RPC recording corpus to main after #22951 (#2…
Jinwoo-H Sep 28, 2026
47b8408
fix(zcode): wait for composer before first worker dispatch (#23374)
Alex-wangyang Sep 28, 2026
8506749
fix(native-chat): a request that failed reads as failed (#22944)
brennanb2025 Sep 28, 2026
0e871a9
fix(terminal): clear the Kitty input mirror when a shell is confirmed…
Jinwoo-H Sep 28, 2026
5219b8a
fix(relay): reset input modes a dead program left on in SSH terminals…
Jinwoo-H Sep 28, 2026
708123b
Improve PTY device error messages with localization support (#23538)
AmethystLiang Sep 28, 2026
45f3512
feat(agents): add first-class DeepSeek Harness (dsh) support (#22468)
nwparker Sep 28, 2026
67581dd
perf(ci): stop the orcad smoke idling 15s and the static job fetching…
nwparker Sep 28, 2026
c53ed03
fix(terminal): one intentional-stop register, and per-run spawn and i…
brennanb2025 Sep 28, 2026
fae0ae7
perf(ci): shard the anti-slop audit across processes instead of one J…
nwparker Sep 28, 2026
9179b93
ci: reduce repeated runner work and validate affected-test selection …
nwparker Sep 28, 2026
8494b24
perf(ci): take i18next-cli 1.74.1 so extraction stops re-scanning eve…
nwparker Sep 28, 2026
56e6913
fix(native-chat): show the "Working for" bar while a turn runs (#23537)
brennanb2025 Sep 28, 2026
5e5f4f6
fix(native-chat): keep a Codex ask's questions in the order it asked …
brennanb2025 Sep 28, 2026
7a24d3d
fix(native-chat): the conversation outlives its agent (#22835)
brennanb2025 Sep 28, 2026
1b45879
test(native-chat): await the async history and journal snapshot in th…
Jinwoo-H Sep 28, 2026
076759e
feat(usage): show ZCode Coding Plan quota on current main (#23520)
guanbear Sep 28, 2026
6835b9b
fix(mobile): paired clients re-derive a kept terminal after a cold re…
brennanb2025 Sep 28, 2026
0de5e4d
Fix terminal focus when Cmd+J wakes a workspace (#23546)
nwparker Sep 28, 2026
2077956
fix(mobile): size a terminal's first subscribe from the document's re…
Jinwoo-H Sep 28, 2026
ca6c209
feat(ai-vault): show ZCode CLI session history (#23513)
guanbear Sep 28, 2026
c8b3f20
test(mobile): repin the RPC recording corpus to main after #23080 (#2…
Jinwoo-H Sep 28, 2026
080c562
perf(ci): diff against the merge commit's first parent so PR checkout…
nwparker Sep 28, 2026
ba858ee
feat(mobile): the keyboard covers the page like a native screen, and …
Jinwoo-H Sep 28, 2026
1bfbc15
fix(agent-session): wait for in-flight session-store writes before te…
nwparker Sep 28, 2026
8db9684
fix(sidebar): clip worktree card content to its border (#23566)
nwparker Sep 28, 2026
a174a08
fix(runtime): answer terminal.subscribe at once for a pane the deskto…
Jinwoo-H Sep 28, 2026
3dd7d29
Revert "perf(ci): shard the anti-slop audit across processes instead …
nwparker Sep 28, 2026
e6fbbdf
perf(ci): cache pnpm verification records on Linux (#23568)
nwparker Sep 28, 2026
a68d629
fix(native-chat): the host writes chat failures for a person, with a …
brennanb2025 Sep 28, 2026
d050801
perf(ci): stop duplicating shared Linux download caches (#23578)
nwparker Sep 28, 2026
2f8f4f5
perf(ci): run static analysis on the free ARM runner (#23576)
nwparker Sep 28, 2026
5813cb6
fix(orchestration): reland process-incarnation reap for stale worker …
brennanb2025 Sep 28, 2026
400e4e7
feat(agents): add Freebuff launch and sidebar status support (#23567)
nwparker Sep 28, 2026
0fe8974
perf(ci): move six more jobs to the free ARM runner (#23594)
nwparker Sep 28, 2026
0830051
Fix status bar on smaller screen (#23587)
AmethystLiang Sep 28, 2026
8b410b4
feat: add first-class Qoder CLI support (#23581)
nwparker Sep 28, 2026
cf20423
ci: skip unrelated installs and share xterm build dependencies (#23607)
nwparker Sep 28, 2026
21f8e0f
ci: use faster gzip for temporary Linux test packages (#23609)
nwparker Sep 28, 2026
aedb930
Update README downloads badge
github-actions[bot] Sep 28, 2026
e8d8f2f
fix(deps): take Electron 43.7.5 so detached webviews stop blanking br…
Jinwoo-H Sep 28, 2026
9c1f9b5
docs(readme): remove the TestFlight link (#23660)
Jinwoo-H Sep 28, 2026
a9195ee
docs: update GitHub star history chart (#23661)
Jinwoo-H Sep 28, 2026
b1d6fdf
fix(claude): withdraw a follow-up queued behind a stopped turn instea…
brennanb2025 Sep 28, 2026
d691486
fix(codex): a message whose turn was stopped before Codex took it is …
brennanb2025 Sep 28, 2026
504e749
Show a resting Claude chat's effort instead of a blank picker (#23106)
brennanb2025 Sep 28, 2026
95a16e3
fix(release): stop the release policy from deleting pipeline-cut rele…
AmethystLiang Sep 28, 2026
a84bd1c
fix(claude): write only the hook events and statusLine the user's Cla…
brennanb2025 Sep 28, 2026
2c92e5e
fix(native-chat): a failed Codex turn keeps its failure and "Worked f…
brennanb2025 Sep 28, 2026
3eac4d9
fix(terminal): stop guessing that apps died and wiping their keyboard…
Jinwoo-H Sep 28, 2026
84daac2
test(e2e): take the sidebar measured-row baseline with reduced motion…
brennanb2025 Sep 28, 2026
0034ede
fix(mobile): left-align every line of the desktop host card (#23673)
Jinwoo-H Sep 28, 2026
9d11a75
fix(native-chat): each chat failure says why in plain words, on the t…
brennanb2025 Sep 28, 2026
d5451d9
test(cross-version): a released client's capabilities come from its o…
brennanb2025 Sep 28, 2026
6c4625d
fix(terminal): main records every tab close, and seeding reads the re…
brennanb2025 Sep 28, 2026
9b46c3f
fix(terminal): let unselected Cmd+C reach apps that own their selecti…
Jinwoo-H Sep 28, 2026
1f6f852
feat(terminal): add Reset Terminal that clears leftover input modes o…
Jinwoo-H Sep 28, 2026
fe7e13d
test(claude): expect typed cancellation in queued-send settlements (#…
nwparker Sep 28, 2026
55aea85
fix(ci): repair terminal link handling and E2E recovery fixtures (#23…
nwparker Sep 28, 2026
409462a
fix(status-bar): fold agents into +N before status labels go icon-onl…
AmethystLiang Sep 28, 2026
fe34acd
fix(mobile): truncate oversize markdown reads instead of failing them…
Jinwoo-H Sep 28, 2026
0f52bb8
perf(ci): use four ARM test workers and remove repeated compilation (…
nwparker Sep 28, 2026
0ceb3fa
test(e2e): give wheel probes a running TUI fixture (#23691)
nwparker Sep 28, 2026
1a0ff42
test: finish sidebar lazy imports before teardown (#23694)
nwparker Sep 28, 2026
dbc4e21
fix(sidebar): move agent child disclosure to the right (#23577)
brennanb2025 Sep 28, 2026
29c7d5d
fix(mobile): start AI-button agents through agent.launch, never a bar…
brennanb2025 Sep 28, 2026
8c61a5d
fix(windows): require signed release binaries and identify CLI launch…
nwparker Sep 28, 2026
e87772b
test: retire a dormant worker through host-owned status (#23686)
nwparker Sep 28, 2026
b482b4d
test: measure pointer gestures on the isolated visible display (#23678)
nwparker Sep 28, 2026
813aff8
fix(opencode): stop OpenCode 2 loading a stale plugin from the retire…
OrcaWin Sep 28, 2026
153d3fd
feat(native-chat): Codex sessions write their subagents into the host…
brennanb2025 Sep 28, 2026
a880c88
test(browser): check grab scope through responsive chrome (#23709)
nwparker Sep 28, 2026
2ca4ecb
feat(orchestration): let a structured chat run orchestration as itsel…
brennanb2025 Sep 28, 2026
c5330d0
fix(native-chat): stop killing processes that only inherited a chat's…
brennanb2025 Sep 28, 2026
e8e144b
fix(native-chat): a subagent's words are presented as that subagent's…
brennanb2025 Sep 28, 2026
e794012
fix(tab-group): measure fallback pane geometry once per tab group, on…
brennanb2025 Sep 28, 2026
9b11b1d
fix(agent-hooks): compare status rows structurally instead of seriali…
brennanb2025 Sep 28, 2026
64569a8
fix(ssh): don't overwrite remote agent config after a failed read (#2…
AmoabaKelvin Sep 28, 2026
2af897d
fix(codex): the provider supervisor outlives its provider group when …
brennanb2025 Sep 28, 2026
d68eee3
fix(runtime): retire an exited terminal before its stream end (#23492)
brennanb2025 Sep 28, 2026
d0db35c
fix(terminal): preserve typing while a remote pane reattaches (#23701)
nwparker Sep 28, 2026
2aed2cf
fix(terminal): reveal splits while the source pane binds (#23692)
nwparker Sep 28, 2026
4b622e1
fix(runtime): reopen the quiet-foreground tui-idle lane for agents wi…
brennanb2025 Sep 28, 2026
64dbe87
test(terminal): wait for decoy panes before host parking (#23729)
nwparker Sep 28, 2026
8bb78f0
test(browser): create probe body before starting frame requests (#23730)
nwparker Sep 29, 2026
bd5dca4
fix(editor): preserve combined diff scroll on line focus (#23735)
nwparker Sep 29, 2026
d606be3
test: wait for remote terminal grid convergence after reveal (#23738)
nwparker Sep 29, 2026
da48d98
fix: bound combined diff editors and scope chat style invalidation (#…
nwparker Sep 29, 2026
ccdb324
Add CodeBuddy as a built-in coding agent (#23740)
nwparker Sep 29, 2026
28942ee
test(mobile): repin the RPC recording corpus to main after #22762 (#2…
Jinwoo-H Sep 29, 2026
ec9f35e
perf(ci): plan the unit shards before the static-analysis gate instea…
nwparker Sep 29, 2026
a134d12
feat(mobile): tell users when a newer app binary is installable (#23755)
Jinwoo-H Sep 29, 2026
85ad292
fix(status-bar): re-measure collapsing levels when only the collapsed…
AmethystLiang Sep 29, 2026
a5ce825
Agent launches carry the surface that started them (#23697)
brennanb2025 Sep 29, 2026
94b5a7d
fix(native-chat): only Codex's turn completion ends a Codex turn (#23…
brennanb2025 Sep 29, 2026
b283a09
fix(native-chat): stop flashing "still starting" on every chat launch…
brennanb2025 Sep 29, 2026
2dc2693
fix(native-chat): a turn a proven crash cut short reads interrupted (…
brennanb2025 Sep 29, 2026
b4c19f1
fix(claude): run structured Claude under the POSIX provider superviso…
brennanb2025 Sep 29, 2026
b776e9a
fix(browser): give a tab's identity one owner so viewport presets sto…
brennanb2025 Sep 29, 2026
3976ad4
perf(test): remove obsolete structural snapshots (#23777)
nwparker Sep 29, 2026
2ae7c00
fix(opencode): keep OpenCode 2 panes Working across plugin reloads (#…
brennanb2025 Sep 29, 2026
e899809
fix(mobile): unsubscribe session tabs by request on the direct connec…
brennanb2025 Sep 29, 2026
c5fc0c6
fix(ci): keep a squash-merged RPC recording pin reachable through its…
brennanb2025 Sep 29, 2026
50a8ef1
fix(native-chat): keep a turn's bar on the prompt that opened it (#23…
brennanb2025 Sep 29, 2026
c30c8f9
fix(native-chat): a message Claude folds into its running turn no lon…
brennanb2025 Sep 29, 2026
c8af48d
fix(runtime): settle a quiet Codex composer as ready on every version…
Jinwoo-H Sep 29, 2026
18bd9cb
test(status-bar): cover re-probing a roomier level after the tightest…
AmethystLiang Sep 29, 2026
7445fea
fix(terminal): only diagnose disk exhaustion from capacity errors
nwparker Sep 29, 2026
2ea3fb1
perf(ci): take advisory unit-selection evidence off the gate (#23776)
nwparker Sep 29, 2026
f6324f2
chore(ci): stop auto-filing community PRs onto the project board (#23…
nwparker Sep 29, 2026
ceffecf
fix(setup): remove wait-for-setup helper text (#23799)
nwparker Sep 29, 2026
643f93f
fix(native-chat): drop the Codex error path #23682 removed (#23801)
nwparker Sep 29, 2026
2d358df
fix(i18n): prune the wait-for-setup help copy #23799 removed (#23802)
nwparker Sep 29, 2026
25d9c57
fix(native-chat): keep a child turn settling on an error Codex will n…
nwparker Sep 29, 2026
5560e53
Update README downloads badge
github-actions[bot] Sep 29, 2026
f8f656c
perf(ci): spend fewer concurrency slots per pull request (#23810)
nwparker Sep 29, 2026
33f661b
fix(native-chat): an empty workspace opens the default agent as a cha…
brennanb2025 Sep 29, 2026
f4829f0
fix(renderer): stop the modal toast rule from freezing large diffs (#…
brennanb2025 Sep 29, 2026
b8a7daf
fix(codex): guard the daemon socket in the home a resumed Codex pane …
brennanb2025 Sep 29, 2026
b7e3bbf
fix(browser): restore hover after leaving a mobile viewport preset (#…
AmoabaKelvin Sep 29, 2026
357a2fe
fix(native-chat): group chat rows by the turn that produced them (#23…
brennanb2025 Sep 29, 2026
bd13305
refactor(sidebar): one subagent row for CLI and structured children, …
brennanb2025 Sep 29, 2026
b6c2de9
fix(codex): index a new account home before bridging history into it …
AmoabaKelvin Sep 29, 2026
bb91e39
test(native-chat): main's Codex child tests expect a turn to end on i…
brennanb2025 Sep 29, 2026
36c473e
fix(runtime): wait out Codex 0.157's startup screen, and stop at Code…
brennanb2025 Sep 29, 2026
e1362ad
fix(terminal): stop inline-image decoders exhausting the renderer's w…
OrcaWin Sep 29, 2026
6e1b7e7
test: remove junk tests that assert source text instead of behavior (…
nwparker Sep 29, 2026
4da485c
fix(native-chat): render the terminal-backed chat through the structu…
brennanb2025 Sep 29, 2026
c49388c
fix(native-chat): Stop is there from the moment a message is sent (#2…
brennanb2025 Sep 29, 2026
31012ae
test: remove assertion-free probes, copied inventories and export-sha…
nwparker Sep 29, 2026
3c1af16
perf(usage): persist a scan's analytics session IDs in one write (#23…
Jinwoo-H Sep 29, 2026
9420d49
fix(terminal): run Codex in Orca terminals without the shared backgro…
Jinwoo-H Sep 29, 2026
c1628b4
feat(orchestration): deliver worker results to a structured chat coor…
brennanb2025 Sep 29, 2026
8f4a740
fix(daemon): roll Codex no-daemon shell launch into a fresh v37 daemo…
Jinwoo-H Sep 29, 2026
62e3a5a
fix(codex): turning Codex off per agent keeps its hook entry off (#23…
brennanb2025 Sep 29, 2026
8296ef0
fix(terminal): run Orca's cmd.exe, path-named and setup-gated Codex l…
Jinwoo-H Sep 30, 2026
d6aefd4
feat(settings): let Codex terminals opt back into Codex's shared serv…
Jinwoo-H Sep 30, 2026
359a45d
fix(terminal): restore the mouse format with mouse tracking, so phone…
brennanb2025 Sep 30, 2026
b051e02
fix(runtime): stop a busy Codex 0.150-0.157 pane reading as tui-idle …
Jinwoo-H Sep 30, 2026
0717cb5
fix(browser): a crashed page no longer crashes Orca when its viewport…
brennanb2025 Sep 29, 2026
3a23ade
fix(i18n): drop #23744 search keys left by the #23929 backport
Jinwoo-H Sep 30, 2026
4e93d96
ci: sync release workflows with main for the v1.4.218 cut
Jinwoo-H Sep 30, 2026
c939891
fix(release): accept the build identity as a later declarator in the …
Jinwoo-H Sep 30, 2026
75ea502
release: v1.4.218
github-actions[bot] Sep 30, 2026
c2273bf
Merge tag 'v1.4.218' into zpyoung/auto-sync-fork-with-upstream-stably…
zpyoung Oct 1, 2026
c3ef4b0
sync: resolve file ownership against v1.4.218
zpyoung Oct 1, 2026
8722614
fix(sync): pass the input kind v1.4.218 requires through fork send paths
zpyoung Oct 1, 2026
11a8b69
fix(sync): adapt fork surfaces to v1.4.218 card, profile and trust sh…
zpyoung Oct 1, 2026
8f3a87c
fix(sync): use literal translate keys for sitter attempt titles
zpyoung Oct 1, 2026
2472bff
test(sync): expect the input kind fork sends now carry
zpyoung Oct 1, 2026
47695c4
test(sync): type the bundled omp writer's prompt options
zpyoung Oct 1, 2026
a19c0bb
fix(sync): keep the fork's release-cut needs assertion in the runtime…
zpyoung Oct 1, 2026
259eeac
fix(sync): mirror CI's config-level unit excludes in the sandbox runner
zpyoung Oct 1, 2026
bf07e4b
fix(sync): align two mobile workflow tests with the workflow v1.4.218…
zpyoung Oct 1, 2026
664b948
fix(sync): restore Stop-withdrawn text in the fork composer
zpyoung Oct 1, 2026
dfd7f3e
ci(sync): run the death-evidence downgrade journey in the wire lane
zpyoung Oct 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
50 changes: 49 additions & 1 deletion .github/actions/install-node-dependencies/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ name: Install Node dependencies
description: Installs the Node toolchain and repository dependencies for CI jobs, with optional Electron archive caching.

inputs:
cache-pnpm-verification:
description: Restore pnpm's policy-checked lockfile verification record on Linux.
required: false
default: 'true'
native-runtime:
description: Native runtime to prepare after the script-free install (none, node, or electron).
required: false
Expand All @@ -24,6 +28,15 @@ inputs:
default: 'false'

outputs:
verification-cache-hit:
description: Whether pnpm's verification record was restored.
value: ${{ steps.verification-cache-restore.outputs.cache-hit }}
verification-cache-path:
description: The small pnpm-owned verification record, without registry metadata.
value: ${{ steps.verification-cache.outputs.path }}
verification-cache-key:
description: Exact verification record key, also used by the isolated PR benchmark.
value: ${{ steps.verification-cache.outputs.key }}
node-version:
description: Resolved Node.js version used for the install.
value: ${{ steps.requested-node.outputs.node-version || steps.default-node.outputs.node-version }}
Expand Down Expand Up @@ -86,6 +99,25 @@ runs:
path: ${{ steps.pnpm-store.outputs.path }}
key: node-cache-${{ runner.os }}-${{ steps.pnpm-store.outputs.arch }}-pnpm-${{ hashFiles(inputs.cache-dependency-path) }}

- name: Resolve pnpm verification cache
id: verification-cache
if: runner.os == 'Linux' && inputs.cache-pnpm-verification == 'true'
shell: bash
env:
POLICY_HASH: ${{ hashFiles('pnpm-lock.yaml', 'pnpm-workspace.yaml', '.npmrc') }}
run: |
printf 'path=%s/lockfile-verified.jsonl\n' "$(pnpm cache path)" >> "$GITHUB_OUTPUT"
printf 'key=pnpm-verification-v1-%s-%s-%s-%s\n' "$RUNNER_OS" "$RUNNER_ARCH" "$(pnpm --version)" "$POLICY_HASH" >> "$GITHUB_OUTPUT"

- name: Restore pnpm verification record
id: verification-cache-restore
if: steps.verification-cache.outputs.key != ''
continue-on-error: true
uses: actions/cache/restore@v5
with:
path: ${{ steps.verification-cache.outputs.path }}
key: ${{ steps.verification-cache.outputs.key }}

- name: Validate native runtime
shell: bash
env:
Expand Down Expand Up @@ -120,6 +152,15 @@ runs:
git -C "$GITHUB_WORKSPACE" diff --exit-code -- package.json pnpm-lock.yaml pnpm-workspace.yaml
fi

# pnpm checks the cached record's policy and validity; never bypass verification.
- name: Save pnpm verification record on main
if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request' && steps.verification-cache.outputs.key != '' && steps.verification-cache-restore.outputs.cache-hit != 'true'
continue-on-error: true
uses: actions/cache/save@v5
with:
path: ${{ steps.verification-cache.outputs.path }}
key: ${{ steps.verification-cache.outputs.key }}

- name: Resolve Electron package cache
id: electron-package-cache
if: inputs.native-runtime == 'electron' || inputs.cache-electron-package == 'true'
Expand All @@ -140,12 +181,19 @@ runs:
printf 'version=%s\n' "$(node -p "require('./node_modules/electron/package.json').version")" >> "$GITHUB_OUTPUT"

- name: Cache Electron package archive
if: inputs.native-runtime == 'electron' || inputs.cache-electron-package == 'true'
if: (github.event_name != 'pull_request' || runner.os != 'Linux') && steps.electron-package-cache.outputs.version != ''
uses: actions/cache@v5
with:
path: ${{ steps.electron-package-cache.outputs.cache-root }}
key: electron-package-${{ runner.os }}-${{ runner.arch }}-${{ steps.electron-package-cache.outputs.version }}

- name: Restore Electron package archive without saving
if: github.event_name == 'pull_request' && runner.os == 'Linux' && steps.electron-package-cache.outputs.version != ''
uses: actions/cache/restore@v5
with:
path: ${{ steps.electron-package-cache.outputs.cache-root }}
key: electron-package-${{ runner.os }}-${{ runner.arch }}-${{ steps.electron-package-cache.outputs.version }}

# Why cached: `--ignore-scripts` leaves node-pty without build/Release, so
# ensure-native-runtime node-gyp-compiles it in every job that asks for a runtime.
# The artifacts are ABI-bound, so the key carries the target runtime, the resolved
Expand Down
63 changes: 63 additions & 0 deletions .github/actions/prepare-linux-package-fixture/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: Prepare cached Linux package fixture
description: Restore Docker build layers; only the main warmer builds and saves missing images.
inputs:
fixture:
description: Directory name below config/docker.
required: true
save-cache:
description: Build and save a missing fixture on the default branch.
default: 'false'
outputs:
image:
description: Loaded image to use as a Docker build cache, or empty on a cache miss.
value: ${{ steps.image.outputs.image }}
runs:
using: composite
steps:
- name: Restore fixture image
id: cache
uses: actions/cache/restore@v5
continue-on-error: true
with:
path: ${{ runner.temp }}/orca-package-fixtures/${{ inputs.fixture }}.tar
key: linux-package-fixture-v1-${{ runner.os }}-${{ runner.arch }}-linux-amd64-${{ inputs.fixture }}-${{ hashFiles(format('config/docker/{0}/**', inputs.fixture), '.github/actions/prepare-linux-package-fixture/action.yml') }}

- name: Load or seed fixture build cache
id: image
shell: bash
env:
FIXTURE: ${{ inputs.fixture }}
SAVE_CACHE: ${{ inputs.save-cache }}
CACHE_HIT: ${{ steps.cache.outputs.cache-hit }}
run: |
set -euo pipefail
case "$FIXTURE" in
headless-serve-shutdown|cli-launch-contract) ;;
*) echo "Unsupported package fixture: $FIXTURE" >&2; exit 1 ;;
esac
archive="$RUNNER_TEMP/orca-package-fixtures/$FIXTURE.tar"
image="orca-package-fixture-$FIXTURE:cache"
if [[ "$CACHE_HIT" == true ]] && docker load --input "$archive"; then
if docker image inspect "$image" > /dev/null; then
echo "image=$image" >> "$GITHUB_OUTPUT"
exit 0
fi
fi
if [[ "$SAVE_CACHE" != true ]]; then
echo 'No usable fixture cache; the package runner will build normally.'
exit 0
fi
docker build --platform linux/amd64 --build-arg BUILDKIT_INLINE_CACHE=1 \
--tag "$image" --file "config/docker/$FIXTURE/Dockerfile" "config/docker/$FIXTURE"
mkdir -p "$(dirname "$archive")"
docker save --output "$archive" "$image"
echo "image=$image" >> "$GITHUB_OUTPUT"
echo 'built=true' >> "$GITHUB_OUTPUT"

- name: Save fixture image
if: inputs.save-cache == 'true' && steps.cache.outputs.cache-hit != 'true' && steps.image.outputs.built == 'true'
uses: actions/cache/save@v5
continue-on-error: true
with:
path: ${{ runner.temp }}/orca-package-fixtures/${{ inputs.fixture }}.tar
key: ${{ steps.cache.outputs.cache-primary-key }}
33 changes: 33 additions & 0 deletions .github/actions/prepare-xterm-dependencies/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Restore xterm build dependencies
description: Reuse installed dependencies for the pinned upstream checkout.
outputs:
cache-key:
description: Exact dependency cache key.
value: ${{ steps.restore.outputs.cache-primary-key }}
cache-hit:
description: Whether the exact installed dependency cache was restored.
value: ${{ steps.restore.outputs.cache-hit }}
runs:
using: composite
steps:
- id: runtime
shell: bash
run: |
. /etc/os-release
echo "image=$ID-$VERSION_ID" >> "$GITHUB_OUTPUT"
echo "node=$(node --version)" >> "$GITHUB_OUTPUT"
- id: restore
uses: actions/cache/restore@v5
with:
path: |
${{ runner.temp }}/xterm-patch-build/upstream/.git
${{ runner.temp }}/xterm-patch-build/upstream/node_modules
key: xterm-dependencies-v1-${{ runner.os }}-${{ steps.runtime.outputs.image }}-${{ runner.arch }}-${{ steps.runtime.outputs.node }}-${{ hashFiles('config/patches/xterm-upstream.json', 'config/scripts/regenerate-xterm-patches.mjs', 'config/scripts/xterm-patch-text.mjs', '.github/actions/prepare-xterm-dependencies/action.yml') }}
- name: Restore download cache on an installed-dependency miss
if: steps.restore.outputs.cache-hit != 'true'
uses: actions/cache/restore@v5
with:
path: |
~/.npm
${{ runner.temp }}/xterm-patch-build/upstream/.git
key: xterm-upstream-${{ hashFiles('config/patches/xterm-upstream.json') }}
53 changes: 42 additions & 11 deletions .github/workflows/bun-profile-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,25 @@ name: Bun profile persistence

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
paths:
- 'src/**'
- 'config/**'
- 'native/**'
- 'tests/**'
- 'resources/**'
- 'package.json'
- 'pnpm-lock.yaml'
- 'pnpm-workspace.yaml'
- 'tsconfig.json'
- '.npmrc'
- '.pnpmfile.cjs'
- '.github/actions/install-node-dependencies/**'
- '.github/workflows/bun-profile-tests.yml'
# The pull request qualifies one platform for an unflavoured change; this is where all six
# are re-qualified, so a platform break surfaces minutes after merge instead of next cron.
push:
branches: [main]
paths:
- 'src/**'
- 'config/**'
Expand All @@ -17,6 +36,8 @@ on:
- '.github/actions/install-node-dependencies/**'
- '.github/workflows/bun-profile-tests.yml'
workflow_dispatch:
schedule:
- cron: '30 11 * * *'

permissions:
contents: read
Expand All @@ -32,6 +53,8 @@ jobs:
timeout-minutes: 5
outputs:
should_run: ${{ steps.scope.outputs.should_run }}
qualification: ${{ steps.scope.outputs.qualification }}
runners: ${{ steps.scope.outputs.runners }}
steps:
- uses: actions/checkout@v6
with:
Expand All @@ -52,11 +75,15 @@ jobs:
persistence:
needs: changes
# Missing/failed detection runs the full matrix; manual runs remain unconditional.
if: ${{ !cancelled() && needs.changes.outputs.should_run != 'false' }}
# A draft carries no platform verdict; readiness re-triggers this workflow. Spelled against
# the event name so the push and schedule paths do not rest on a null property comparison.
if: >-
${{ !cancelled() && needs.changes.outputs.should_run != 'false' &&
(github.event_name != 'pull_request' || github.event.pull_request.draft != true) }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04, ubuntu-24.04-arm, macos-14, macos-15-intel, windows-2022, windows-11-arm]
os: ${{ fromJSON(needs.changes.outputs.runners || '["ubuntu-22.04","ubuntu-24.04-arm","macos-14","macos-15-intel","windows-2022","windows-11-arm"]') }}
runs-on: ${{ matrix.os }}
timeout-minutes: 20
env:
Expand All @@ -68,9 +95,7 @@ jobs:
- uses: ./.github/actions/install-node-dependencies
with:
native-runtime: ${{ runner.os == 'Windows' && 'node' || 'none' }}
- name: Build the native Windows process reader
if: runner.os == 'Windows'
run: node config/scripts/build-windows-process-tree-relay-addon.mjs
# build:orcad reuses the host addon validated by native-runtime preparation.
- run: pnpm build:orcad
- run: pnpm test:bun:profile --artifact
- uses: actions/setup-node@v6
Expand All @@ -84,9 +109,12 @@ jobs:
node out/orcad/orcad.js --orcad-profile-state-preflight 00000000-0000-4000-8000-000000000018

linux_glibc_floor:
needs: changes
# Missing/failed detection runs the full matrix; manual runs remain unconditional.
if: ${{ !cancelled() && needs.changes.outputs.should_run != 'false' }}
needs: [changes, persistence]
# A failed smoke already blocks qualification; missing scope still selects every platform.
if: >-
${{ !cancelled() && needs.persistence.result == 'success' &&
needs.changes.outputs.should_run != 'false' &&
needs.changes.outputs.qualification != 'false' }}
strategy:
fail-fast: false
matrix:
Expand All @@ -109,9 +137,12 @@ jobs:
- run: pnpm test:bun:profile --artifact

linux_musl:
needs: changes
# Missing/failed detection runs the full matrix; manual runs remain unconditional.
if: ${{ !cancelled() && needs.changes.outputs.should_run != 'false' }}
needs: [changes, persistence]
# A failed smoke already blocks qualification; missing scope still selects every platform.
if: >-
${{ !cancelled() && needs.persistence.result == 'success' &&
needs.changes.outputs.should_run != 'false' &&
needs.changes.outputs.qualification != 'false' }}
strategy:
fail-fast: false
matrix:
Expand Down
66 changes: 66 additions & 0 deletions .github/workflows/ci-cache-warmup.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ on:
- '.github/workflows/ci-cache-warmup.yml'
- '.github/actions/install-node-dependencies/**'
- '.github/actions/prepare-git-compatibility/**'
- '.github/actions/prepare-linux-package-fixture/**'
- 'config/docker/headless-serve-shutdown/**'
- 'config/docker/cli-launch-contract/**'
- 'package.json'
- 'pnpm-lock.yaml'
- 'pnpm-workspace.yaml'
Expand All @@ -23,6 +26,9 @@ on:
paths:
- '.github/workflows/ci-cache-warmup.yml'
- '.github/actions/prepare-git-compatibility/**'
- '.github/actions/prepare-linux-package-fixture/**'
- 'config/docker/headless-serve-shutdown/**'
- 'config/docker/cli-launch-contract/**'
- 'config/scripts/ci-cache-warmup-workflow.test.mjs'

permissions:
Expand All @@ -48,6 +54,10 @@ jobs:
with:
native-runtime: node
node-version: '24'
cache-electron-package: 'true'

- name: Populate shared Electron archive
run: node config/scripts/install-electron-package-binary.mjs

- uses: ./.github/actions/prepare-git-compatibility

Expand All @@ -63,3 +73,59 @@ jobs:
- name: Refresh TypeScript state for this commit
if: steps.typecheck-cache.outputs.cache-hit != 'true'
run: pnpm run typecheck

warm-linux-arm:
runs-on: ubuntu-24.04-arm
timeout-minutes: 10
env:
ORCA_BACKGROUND_LAUNCH: '1'
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- uses: ./.github/actions/install-node-dependencies
with:
native-runtime: node
node-version: '24'
cache-electron-package: 'true'
- name: Populate shared Electron archive
run: node config/scripts/install-electron-package-binary.mjs
- name: Verify native cache is usable
run: node config/scripts/ensure-native-runtime.mjs --check-only

warm-windows:
strategy:
fail-fast: false
matrix:
os: [windows-2022, windows-11-arm]
runs-on: ${{ matrix.os }}
timeout-minutes: 20
env:
ORCA_BACKGROUND_LAUNCH: '1'
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- uses: ./.github/actions/install-node-dependencies
with:
native-runtime: node
- name: Verify native cache is usable
run: node config/scripts/ensure-native-runtime.mjs --check-only

warm-linux-package-fixtures:
runs-on: ubuntu-latest
timeout-minutes: 10
env:
ORCA_BACKGROUND_LAUNCH: '1'
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- uses: ./.github/actions/prepare-linux-package-fixture
with:
fixture: headless-serve-shutdown
save-cache: ${{ github.event_name != 'pull_request' }}
- uses: ./.github/actions/prepare-linux-package-fixture
with:
fixture: cli-launch-contract
save-cache: ${{ github.event_name != 'pull_request' }}
Loading
Loading