Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
4226 commits
Select commit Hold shift + click to select a range
0206308
fix(terminal): clear the paused-output gap exemption once a snapshot …
nwparker Oct 16, 2026
a77cf64
fix(accounts): open the browser for a WSL account sign-in (#29566)
nwparker Oct 16, 2026
67c36f3
fix(ssh): link a stopped server's kept projects instead of re-importi…
nwparker Oct 16, 2026
17a14a9
fix(remote): reopening a slept tab resumes when the other holder's ag…
nwparker Oct 16, 2026
b0178a5
fix(orcad): prove the held-6768 fallback in e2e and keep the managed …
nwparker Oct 16, 2026
1b79a3a
test: verify history GC coalescing through live snapshot ownership (#…
OrcaWin Oct 16, 2026
115c26e
Open and close browser tabs and pages through main behind the layout-…
Jinwoo-H Oct 16, 2026
da14046
fix(orcad): free a lock whose PID another user now owns, and explain …
nwparker Oct 16, 2026
b95ea32
fix(orcad): skip the moved shell-history pass on starts with nothing …
nwparker Oct 16, 2026
2346970
fix(runtime): keep one worktree spelling for an early alias session-t…
nwparker Oct 16, 2026
f387c5d
fix(ssh): relay-era terminals' orca orchestration commands work again…
nwparker Oct 16, 2026
b16a71c
ci: reuse Windows hook builds and shorten test setup and shutdown (#2…
nwparker Oct 16, 2026
feea786
test: prove diff reveal cancels a paging rail jump (#29585)
OrcaWin Oct 16, 2026
10145cb
perf: import onboarding notification function directly (#29570)
OrcaWin Oct 16, 2026
c0251f9
test: reset directory creation failures for every history case (#29590)
OrcaWin Oct 16, 2026
e687b18
fix(ssh): bind relay-era legacy coordinators to their host, cap inbox…
nwparker Oct 16, 2026
b56cc36
test(runtime): verify mobile geometry through desktop restores (#29323)
OrcaWin Oct 16, 2026
294fd2a
fix(agent-hooks): bound retained agent exits (#29600)
nwparker Oct 16, 2026
bb441d1
Open, close and pin editor tabs through main (dark, build switch off …
Jinwoo-H Oct 16, 2026
1855ba4
ci: reuse prepared natives in Windows serve-switch builds (#29595)
nwparker Oct 16, 2026
7a77653
test: repair SQLite routing and daemon teardown failures (#29607)
OrcaWin Oct 16, 2026
712e228
test(runtime): avoid unused RPC catalog setup in listener tests (#29324)
OrcaWin Oct 16, 2026
827482c
test: consolidate terminal query ownership proof (#29605)
OrcaWin Oct 16, 2026
98064b2
fix(ssh): a managed server restart no longer marks still-running agen…
nwparker Oct 16, 2026
8eaaab8
feat(wsl-mover): the ledgered desktop rewrite stage that finishes a c…
nwparker Oct 16, 2026
f1677db
fix(ssh): stop a relay-era shell when its bridged tab closes (#29620)
nwparker Oct 16, 2026
dfc94d7
test: reduce RPC catalog loading in WebSocket budget suites (#29619)
OrcaWin Oct 16, 2026
839f553
fix(orcad): explain a locked macOS Keychain to the user and recover L…
nwparker Oct 16, 2026
d81b81d
test: share transcript scroll suite startup (#29326)
OrcaWin Oct 16, 2026
b051ba9
fix(orcad): a restarted managed server keeps the tab titles of termin…
nwparker Oct 16, 2026
f9d16b1
test: load headless ownership regressions once (#29613)
OrcaWin Oct 16, 2026
52554b3
fix(ssh): keep desktop 2 connected with its live relay terminal when …
nwparker Oct 16, 2026
e6d871c
test(e2e): read Space rows from the separate Space window (#29627)
nwparker Oct 16, 2026
2d2bccf
fix(agents): new-agent shortcut, Explain and direct launches ask the …
nwparker Oct 16, 2026
25d83af
fix(main): classify integrationCredentials RPC ownership (#29638)
nwparker Oct 16, 2026
dddad7d
Record sleep and wake through main (dark, build switch off by default…
Jinwoo-H Oct 16, 2026
7b90f57
test: repair renderer API fixtures and listener ownership (#29634)
OrcaWin Oct 16, 2026
e522986
fix(ssh): load the bridge panes module lazily so importing the SSH st…
nwparker Oct 16, 2026
e79671b
test(e2e): skip the WebGL replay-presentation case where WebGL is una…
nwparker Oct 16, 2026
9c03c68
test: reduce RPC authorization suite startup (#29645)
OrcaWin Oct 16, 2026
5db05e8
test: share SSH lease candidacy suite startup (#29329)
OrcaWin Oct 16, 2026
36d449b
test: consolidate repeated application rebuild checks (#29628)
OrcaWin Oct 16, 2026
942ffe2
fix(terminal): right-click pastes once into Codex (#29647)
AmoabaKelvin Oct 16, 2026
62bf1d6
fix(projects): adding a project through a symlink alias reuses the ex…
nwparker Oct 16, 2026
199027d
fix(notifications): notify for a managed-server task that finished du…
nwparker Oct 16, 2026
93ca977
fix(runtime): republish session tabs when an adopted terminal's resto…
nwparker Oct 16, 2026
ebb9e32
Record a restored editor tab's move to its owning workspace through m…
Jinwoo-H Oct 16, 2026
bf22760
test: exercise real gate authorization refusals (#29332)
OrcaWin Oct 16, 2026
d3cafe2
test(e2e): stage the WSL inline-image payload in a file (#29633)
nwparker Oct 16, 2026
c8ad8ea
fix(projects): list symlinked folders as folders in the remote Add Pr…
nwparker Oct 16, 2026
2252240
fix(terminal): preserve paste order across remote recovery (#29635)
nwparker Oct 16, 2026
a93fe5e
test: advance tour visibility delays with a controlled clock (#29657)
OrcaWin Oct 16, 2026
78f2e9b
test(terminal): load the host runtime in setup so the alt-screen chai…
nwparker Oct 16, 2026
6622b82
fix(terminal): tell panes their daemon died at once and say when type…
nwparker Oct 16, 2026
469ae09
fix(agents): a resumed agent's chat is readable on the phone before i…
nwparker Oct 16, 2026
18df97a
Refuse a chat create whose close came first (dark, build switch off b…
Jinwoo-H Oct 16, 2026
49721b0
test: avoid repeated RPC catalog loads for layout schemas (#29663)
OrcaWin Oct 16, 2026
183d142
test: advance hidden replay settling with a virtual clock (#29667)
OrcaWin Oct 16, 2026
19cf2e5
ci: remove duplicate server builds and reuse checked Windows addons (…
nwparker Oct 16, 2026
3798302
test(terminal): consolidate visibility proof and repair focus refusal…
OrcaWin Oct 16, 2026
222ede7
fix(ssh): reopening a workspace-slept agent tab on a managed host res…
nwparker Oct 16, 2026
7b7148d
Open into a new split in one layout command (dark, build switch off b…
Jinwoo-H Oct 16, 2026
5bad9cb
test(terminal): consolidate reattach reset proof and advance its cloc…
OrcaWin Oct 16, 2026
068cdda
fix(terminal): a paired pane is created at its real box and fits the …
nwparker Oct 16, 2026
4a123f3
test(orcad): wait for an idle-retiring daemon before deleting the ser…
Jinwoo-H Oct 16, 2026
1459473
test: observe all remote input resends after recovery (#29674)
OrcaWin Oct 16, 2026
9a47cae
test: dispose managed SSH profiles as their final app closes (#29671)
nwparker Oct 16, 2026
52a8b87
test(accounts): hand over the Claude sign-in link the way the BROWSER…
nwparker Oct 16, 2026
bd32573
test: establish surviving child before checking mutation lock (#29683)
OrcaWin Oct 16, 2026
1b3d408
test: trim redundant mailbox backlog and check delayed input (#29686)
OrcaWin Oct 16, 2026
7cbbc95
test: share Linear access suite runtime startup (#29688)
OrcaWin Oct 16, 2026
e40f8ec
test: remove real waits and repeated catalog setup (#29690)
nwparker Oct 16, 2026
dbc1e18
Route the remaining window pane-layout changes through main (dark, bu…
Jinwoo-H Oct 16, 2026
e141e13
test: keep disconnected plugin fixture alive until supervised stop (#…
OrcaWin Oct 16, 2026
a3dfb05
test: share mobile presence and subscription runtime startup (#29694)
OrcaWin Oct 16, 2026
adf26f9
test: share browser catalog startup across allowlist and CDP checks (…
OrcaWin Oct 16, 2026
54dc2d6
test: share repository store setup and advance mocked mail clocks (#2…
nwparker Oct 16, 2026
5851ecd
test: exercise plugin startup completing after cancellation (#29699)
OrcaWin Oct 16, 2026
90addf4
Number layout stream updates so a layout command's answer names the u…
Jinwoo-H Oct 16, 2026
44a86bb
test(orcad): make the retiring-daemon teardown test independent of ex…
Jinwoo-H Oct 16, 2026
86aa232
test: advance mocked terminal clocks and share status setup (#29704)
nwparker Oct 16, 2026
eada95e
test: consolidate duplicate terminal theme subscription cleanup (#29708)
OrcaWin Oct 16, 2026
40f56eb
test: consolidate duplicate terminal redraw scenarios (#29709)
OrcaWin Oct 16, 2026
d5e5815
test: reuse local catalog recovery app fixture (#29712)
OrcaWin Oct 16, 2026
ce3a18a
test: detect quarantined input forwarded with provenance (#29715)
OrcaWin Oct 16, 2026
fc26e27
test: exercise interrupt admission and exit preconditions (#29719)
OrcaWin Oct 16, 2026
41beb2d
test: require cursor reset before same-turn repaint negative (#29722)
OrcaWin Oct 16, 2026
572bde8
test: avoid full runtime imports in RPC boundary tests (#29721)
nwparker Oct 16, 2026
c353ef4
One write path for main's split panes, late-shown splits reported aga…
Jinwoo-H Oct 16, 2026
5bfed72
test: drive keyboard filter proof through terminal input (#29726)
OrcaWin Oct 16, 2026
fbca4a3
test(updater): remove duplicate expired preflight launch proof (#29731)
OrcaWin Oct 16, 2026
7fc7f3d
test(codex): overlap isolated backfill process shutdown proofs (#29732)
OrcaWin Oct 16, 2026
8fad958
fix(agents): direct work-item and checks-fix launches quote for the e…
nwparker Oct 16, 2026
c134fe1
test: reuse the macOS launcher clock for mocked polling waits (#29734)
OrcaWin Oct 16, 2026
3d478da
test: load the closed editor controller fixture once (#29738)
OrcaWin Oct 16, 2026
964e6ed
test: answer setup probes in real ACP process fixtures (#29742)
OrcaWin Oct 16, 2026
99c72ff
Leave adopted live terminals' tabs to the layout updates in the layou…
Jinwoo-H Oct 16, 2026
fea1297
test: narrow remote input model handler registration (#29747)
OrcaWin Oct 16, 2026
922014a
Let Cmd+J open typed websites in a new browser tab (#29050)
AmethystLiang Oct 16, 2026
5a72a20
chore(i18n): translate new keys to es/fr/ja/ko/zh (scan 2026-10-15) (…
AmethystLiang Oct 16, 2026
aecffcc
perf: isolate browser eviction veto from pure retention selectors (#2…
nwparker Oct 16, 2026
94336d1
test(ssh): advance retry clock after real credential answer (#29766)
OrcaWin Oct 16, 2026
43c066e
fix(mobile): keep the app download going over a slow link instead of …
nwparker Oct 16, 2026
cd35ef9
test(palette): validate performance work and reuse warm corpus (#29771)
OrcaWin Oct 16, 2026
44167e8
test(mobile): model the slow link per window so the slow-link test do…
nwparker Oct 16, 2026
fbe8f76
fix(native-chat): keep saved visuals from before the chat-scratch ren…
AmoabaKelvin Oct 16, 2026
14f0f84
fix(emulator): remove only Orca's own adb forwards when an Android se…
zanmlakar Oct 16, 2026
fa59ed0
test: advance mocked OpenCode probe close timers (#29772)
OrcaWin Oct 16, 2026
8af2324
fix(source-control): let npm-installed agents generate commit message…
AmoabaKelvin Oct 16, 2026
85254f9
refactor(runtime): plan paired agent sessions with the host planner (…
brennanb2025 Oct 16, 2026
2fa8483
refactor(pty): one host-env step for both terminal spawn lanes (#29297)
brennanb2025 Oct 16, 2026
320f34a
test: advance speech download retry timers (#29774)
OrcaWin Oct 16, 2026
79b6bad
Offer Claude's own / commands (like /goal) in a chat before Claude st…
brennanb2025 Oct 16, 2026
f73ab77
test: advance scripted Claude close deadlines (#29779)
OrcaWin Oct 16, 2026
42dfd81
test(ci): consolidate import resolution behavior proof (#29782)
OrcaWin Oct 16, 2026
4446d4f
fix(native-chat): stop following the end when the reader scrolls over…
AmoabaKelvin Oct 16, 2026
41bd7ba
perf(palette): avoid filtering qualities for identifier tokens (#29785)
nwparker Oct 16, 2026
10a8ecf
test(terminal): observe shared completion after banner changes (#29786)
OrcaWin Oct 16, 2026
70510e0
feat(native-chat): offer actions for what you right-click in chat (#2…
AmoabaKelvin Oct 16, 2026
afea81b
test(ci): narrow real status store for command cleanup (#29791)
OrcaWin Oct 16, 2026
d5cd082
test(ci): route favicon navigation cases through Bun (#29794)
OrcaWin Oct 16, 2026
8f117e1
fix(relay): destroy a pooled client whose session the server ended (#…
Jinwoo-H Oct 16, 2026
f3c8c99
test: route repo request coordination through Bun (#29800)
OrcaWin Oct 16, 2026
e65e0bd
test: consolidate release selection proof without map counters (#29797)
OrcaWin Oct 16, 2026
2ccc2ac
test(ci): batch real Oxlint fixtures per performance plugin (#29801)
OrcaWin Oct 16, 2026
466960a
test: retain mobile closure semantics without traversal counters (#29…
OrcaWin Oct 16, 2026
54bb885
fix(terminal): repaint the viewport after an inline image is added (#…
nwparker Oct 16, 2026
79b9163
test: route browser paint policy checks through Bun (#29805)
OrcaWin Oct 16, 2026
f2fb8ff
refactor(native-chat): move transcript row context into its own hook …
nwparker Oct 16, 2026
7f9b51c
Fix background native-chat setup terminal seeding (#29810)
AmethystLiang Oct 16, 2026
6a76068
fix(projects): refuse a folder-to-Git type change that would hide fol…
brennanb2025 Oct 16, 2026
b3048a2
Wait for agent readiness without blocking native chat (#27925)
brennanb2025 Oct 16, 2026
1e39482
fix(wsl-cli): keep the WSL CLI status check from timing out on a cold…
nwparker Oct 16, 2026
33fd7d3
fix(settings): show a Keychain unlock on its own instead of leaving t…
nwparker Oct 16, 2026
bb7e74d
fix(e2e): keep dedicated specs out of general CI shard plan (#28161)
AmethystLiang Oct 16, 2026
37beafd
fix(native-chat): keep Claude's terminal-only commands in the chat / …
brennanb2025 Oct 16, 2026
95d41af
test(e2e): tolerate startup evaluate and daemon pid-file teardown rac…
nwparker Oct 16, 2026
dbe85f6
test(orcad): pin that the Node runtime download uses the main HTTP cl…
nwparker Oct 16, 2026
cd42d59
refactor: drop the unused sync spool drain and thread-goal wrapper; r…
nwparker Oct 16, 2026
b329947
refactor(resume): build the whole recorded resume recipe in one place…
nwparker Oct 16, 2026
3fdcbfa
fix(terminal): open the picked Windows shell on a managed host instea…
nwparker Oct 16, 2026
9528ee2
chore(mobile): bump to 0.0.57 and Android versionCode 21 (#29839)
Jinwoo-H Oct 16, 2026
a775aea
fix(runtime): do not bind a loopback port another runtime already ser…
nwparker Oct 16, 2026
005f06b
Run automated workspace setup in a dedicated Setup tab (#29819)
AmethystLiang Oct 16, 2026
e0e2001
refactor(legacy-relay): one ask-wait clamp and no needless exports (#…
nwparker Oct 16, 2026
f96c672
fix(hibernation): never hibernate floating-workspace terminals (#29790)
brennanb2025 Oct 16, 2026
804cffd
docs: remove obsolete automated setup tab plans (#29846)
AmethystLiang Oct 16, 2026
ea451aa
perf: reduce redundant sidebar agent status subscriptions (#29840)
OrcaWin Oct 16, 2026
f151bd9
perf(dev): avoid pairing web rebuilds after test file changes (#29838)
OrcaWin Oct 16, 2026
5c0ab96
fix(checks): show a PR found by Refresh, not "already exists" (#29231)
AmoabaKelvin Oct 16, 2026
e8ec456
test(palette): measure matcher scaling within one run instead of abso…
nwparker Oct 16, 2026
3d2f376
test(orcad): wait out the WSL service's hold on a serve-parity profil…
nwparker Oct 16, 2026
74a90eb
ci: isolate process probes and palette timing checks (#29843)
OrcaWin Oct 16, 2026
fe41a9a
fix(clipboard): paste CleanShot JPEG screenshots stored under the mac…
AmoabaKelvin Oct 16, 2026
702ffc7
fix(orchestration): native-chat agents get their mail notice right aw…
brennanb2025 Oct 16, 2026
be033c2
Session History: stop re-reading unchanged transcripts past 4,096 fil…
brennanb2025 Oct 16, 2026
23b60a5
fix(worktree): offer Force Delete with a plain warning when a checkou…
brennanb2025 Oct 16, 2026
afcca77
Window pane trees drawn from main's layout frames (dark, build switch…
Jinwoo-H Oct 16, 2026
f9acfff
fix(unread): bold an agent row only while looking at it can clear it …
brennanb2025 Oct 16, 2026
69d877e
fix(pty): window daemon spawns wait for a WSL guest's Pi/OMP relay, l…
brennanb2025 Oct 16, 2026
c31712f
fix(tabs): remove close-button tooltip (#29851)
AmethystLiang Oct 16, 2026
fa923c6
fix(projects): a manual folder-to-Git change proves the folder is the…
brennanb2025 Oct 16, 2026
f8089c7
fix(orcad): keep the integration credential key only in the owner-onl…
nwparker Oct 16, 2026
b7f6e71
perf(native-chat): flush send transactions without flushing every str…
brennanb2025 Oct 16, 2026
6dd7ab5
fix(native-chat): identify the owner when resume creation is refused …
brennanb2025 Oct 16, 2026
8c1ade9
Keep pending chat decisions available outside loaded history (#29121)
brennanb2025 Oct 16, 2026
4d5f2a2
fix(native-chat): dictate into the composer when it lacks focus (#29855)
AmoabaKelvin Oct 16, 2026
17a2bce
fix(mobile): stop phone reconnects from undoing a desktop take-back (…
AmoabaKelvin Oct 16, 2026
c4c03e8
Compact the Space window layout (#29857)
nwparker Oct 16, 2026
dd70294
fix(ssh): turn a host's orca CLI control on by default and stop reset…
nwparker Oct 16, 2026
39cf870
fix(native-chat): keep the session host under its line limit (#29869)
brennanb2025 Oct 16, 2026
47a5584
fix(acp): OMP, OpenCode and Grok chats follow their own permission mo…
brennanb2025 Oct 16, 2026
3615d04
Layout-owner follow-ups: closed waiting splits, paired-server tabs by…
Jinwoo-H Oct 16, 2026
027eb0e
Session History: save the parse cache one row per transcript, so rest…
brennanb2025 Oct 16, 2026
d963f2a
fix(mobile): draw your own messages as markdown, fold long ones and o…
AmoabaKelvin Oct 16, 2026
fcfe319
fix(native-chat): decide provider failures by kind, never by searchin…
brennanb2025 Oct 16, 2026
e23cfcd
test(native-chat): use an agent without chat modes in the paired-host…
nwparker Oct 16, 2026
2ff42fd
fix(mobile): stop re-downloading a current OTA bundle on entry (#29860)
Jinwoo-H Oct 16, 2026
fa0e933
fix(terminal): keep the pane when a recovery snapshot is unavailable …
nwparker Oct 16, 2026
9846c65
fix(terminal): replay a viewport claim made during remote recovery be…
nwparker Oct 16, 2026
6f80508
fix(orcad): keep agent ownership across orcad restarts and resume sle…
nwparker Oct 16, 2026
29765d4
fix(ssh): don't hand a stopped pre-claim server on a shared home to w…
nwparker Oct 16, 2026
93a5a1a
fix(wsl-host): release a failed add's holder and cancel adds the expe…
nwparker Oct 16, 2026
8d2f691
test(orcad): start the locked-keyring start only after the first hold…
Jinwoo-H Oct 17, 2026
9aa5372
Report window saves that still change main's tab layout (dark, layout…
Jinwoo-H Oct 17, 2026
74863c2
fix(runtime): hide retained SSH rows by repo id and execution host (#…
nwparker Oct 17, 2026
0ed0caa
fix(wsl): run wsl.exe probes from the system folder, never the profil…
nwparker Oct 17, 2026
7d31ff6
fix(session-tabs): seed the first terminal when a warm empty worktree…
nwparker Oct 17, 2026
db0e62f
fix(ssh): move the open workspace to its managed server after the col…
nwparker Oct 17, 2026
696cf21
fix(orcad): folder workspaces can run scoped browser commands on a he…
nwparker Oct 17, 2026
99788a9
feat(acp): a managed runtime installs only when asked, with progress …
brennanb2025 Oct 17, 2026
a293324
fix(ssh): link a moved project only to the server machine's own check…
nwparker Oct 17, 2026
dd3bbf6
Catch up desktop chats from the newest page (#29125)
brennanb2025 Oct 17, 2026
64e544a
feat(mobile): Resume in New CLI from a phone chat tab (#29783)
brennanb2025 Oct 17, 2026
fd1c6a5
fix(orcad): never claim or reclaim another machine's server, and reco…
nwparker Oct 17, 2026
07558ba
fix(native-chat): a dot between the queue header's label and its coun…
brennanb2025 Oct 17, 2026
634ca45
feat(acp): hosts install a managed runtime over RPC, and mark agents …
brennanb2025 Oct 17, 2026
b61b9da
fix(mobile): a streaming reply reveals word by word, like the desktop…
brennanb2025 Oct 17, 2026
bdecb92
fix(ports): show the Ports panel for folder workspaces on a managed S…
nwparker Oct 17, 2026
0bf5209
fix(cli): infer the repo for worktree create when the parent is host-…
nwparker Oct 17, 2026
0e599dd
feat(acp): the app follows a host's managed runtime install state, sh…
brennanb2025 Oct 17, 2026
7101209
fix(ssh): relay-era pane reattach keeps output printed after its scre…
nwparker Oct 17, 2026
ed147d5
fix(ssh): re-check a macOS host's ended launch-session warning so ano…
nwparker Oct 17, 2026
6bbc3cb
fix(gitlab): load MR reviewer choices from the paired server that own…
nwparker Oct 17, 2026
0013011
refactor(sidebar): move the pure workspace-list builder into src/shar…
Jinwoo-H Oct 17, 2026
776c791
feat(orcad): ship the mobile web page so phones paired to orcad get i…
Jinwoo-H Oct 17, 2026
03be5bb
fix(ssh): a Disconnect or Remove during a background connect sticks (…
nwparker Oct 17, 2026
49450b7
fix(projects): stop offering a project on a paired server's SSH host,…
nwparker Oct 17, 2026
aa05edb
fix(wsl-host): a failed removal no longer leaves the host stuck as "b…
nwparker Oct 17, 2026
633df3a
fix(cli): automations create/edit for an SSH project work against an …
nwparker Oct 17, 2026
0a5d278
fix(terminals): sleep a twin-published workspace on the host each ter…
nwparker Oct 17, 2026
60b8e97
fix(ssh): a relay on another node of a shared network home is unverif…
nwparker Oct 17, 2026
3f651a6
Fix GitLab label, member and assignee edits through glab (#28776)
zanmlakar Oct 17, 2026
9cc5d6b
Keep an editor tab Orca moved to its file's workspace across restart;…
Jinwoo-H Oct 17, 2026
f7a8e63
Send a terminal tab's own changes to main first, from every caller (d…
Jinwoo-H Oct 17, 2026
7bf3e15
refactor(sidebar): move the sidebar's time rules into shared pure red…
Jinwoo-H Oct 17, 2026
cffb603
fix(remote): opening a slept running agent on a host with no window r…
nwparker Oct 17, 2026
8631553
fix(orcad): keep an artifact slot whose serve or daemon record names …
nwparker Oct 17, 2026
7d077ee
fix(ssh): keep existing hosts' orca CLI control off after the on-by-d…
nwparker Oct 17, 2026
ad6b318
fix(mobile): re-read a server's capabilities when the server reconnec…
nwparker Oct 17, 2026
15b1217
fix(projects): removing one host's copy of a project keeps its same-p…
nwparker Oct 17, 2026
9cc8b80
fix(worktrees): a preparation another machine owns is never reclaimed…
nwparker Oct 17, 2026
6863096
fix(orcad): a client that reconnects during idle shutdown can still o…
nwparker Oct 17, 2026
432c6d0
fix(mobile): show message times, keep the long-press sheet open, and …
AmoabaKelvin Oct 17, 2026
357aa41
fix(terminal): keep Vim scrolling inside shrunken panes (#29960)
nwparker Oct 17, 2026
07d3e33
fix(tab-bar): stop guessing a launch failed while the new terminal is…
brennanb2025 Oct 17, 2026
550cc5c
fix(sidebar): order sidebar names the same on desktop, phone and serv…
Jinwoo-H Oct 17, 2026
002320c
fix(native-chat): verify the actual CLI conversation during resume (#…
brennanb2025 Oct 17, 2026
a4532fa
fix(workspace-cleanup): delete the active or a running-agent workspac…
brennanb2025 Oct 17, 2026
442491b
test(sidebar): golden for accented, mixed-case and numbered sidebar n…
Jinwoo-H Oct 17, 2026
7b6f02f
fix(native-chat): idle cleanup and commands read the helpers the agen…
brennanb2025 Oct 17, 2026
5e8d40d
fix(mobile): remove the dead space around the chat composer (#29224)
brennanb2025 Oct 17, 2026
1ed735b
feat(acp): one install row shows and drives a managed runtime install…
brennanb2025 Oct 17, 2026
dd2bd0b
fix(terminal): recovering one split pane keeps its healthy sibling in…
nwparker Oct 17, 2026
0d9beb6
fix(ssh): reconnecting a stopped managed host keeps the server's proj…
nwparker Oct 17, 2026
a82298e
fix(runtime): the host stops a removed project's shells and agents it…
nwparker Oct 17, 2026
8612588
fix(release): retry mac build run identity propagation (#29974)
nwparker Oct 17, 2026
a87aa4c
ci(mobile): merge the Android APK download bump on the site after its…
Jinwoo-H Oct 17, 2026
76fc1e5
fix(web): pair and stay paired from plain-http LAN and Tailscale page…
nwparker Oct 17, 2026
de1f6e3
fix(release): publish tags when main requires pull requests (#29985)
nwparker Oct 17, 2026
bde233c
Merge upstream/main at v1.4.229's cut point (de1f6e3d81)
damianjarosz-erli Oct 22, 2026
48949eb
release: v1.4.229
github-actions[bot] Oct 17, 2026
6611dcd
fix(build): keep background push off when mobile is compiled out
damianjarosz-erli Oct 22, 2026
d8213e1
fix(build): ask before native chat runs tools when yolo-default is co…
damianjarosz-erli Oct 22, 2026
dd7eb4f
fix(release): point the build-version canary at the 1.4.229 base
damianjarosz-erli Oct 22, 2026
4c66709
fix(terminal): restore the fork's failed-local-exit teardown after th…
damianjarosz-erli Oct 22, 2026
a427740
fix(lint): keep the fork's patches inside upstream files at their max…
damianjarosz-erli Oct 22, 2026
bfdfbca
fix(security): update the managed-server Node runtime to 24.22.1
damianjarosz-erli Oct 22, 2026
55c6bf4
ci: ship an unsigned Windows installer beside the deb in one ERLI rel…
damianjarosz-erli Oct 22, 2026
16114c4
ci: resolve the newest Node patch so CI builds against the 24.22.1 pin
damianjarosz-erli Oct 23, 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.
69 changes: 68 additions & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,18 @@
/skill-stubs/_shared/*.md text eol=lf
/skills/*/SKILL.md text eol=lf
/src/cli/bundled-skill-guides.ts text eol=lf
# SVG bytes feed embedded data URLs and asset hashes on every build host.
*.svg text eol=lf
# Compiler input line breaks must not depend on the checkout OS.
*.ts text eol=lf
*.tsx text eol=lf
*.html text eol=lf
# Bundled plugin trees are byte-hashed; CRLF checkout would break the pinned hash.
/resources/plugins/** text eol=lf
# Relay assets are copied verbatim into the bundle and hashed byte-for-byte into
# .version, which names the immutable remote install dir. A CRLF checkout makes a
# Windows-built client disagree with a mac/Linux-built one on the same release,
# so one host ends up with two relay trees (#17886 review).
/config/relay-assets/** text eol=lf
# Pin the bytes so a patch reads and diffs identically on every host. It is NOT
# what makes the hash right: pnpm hashes a patch LF-normalized, so a CRLF checkout
# cannot change it. Believing otherwise put a hand-computed raw digest in the
Expand All @@ -23,14 +28,76 @@
# runs `git apply` on one must force `-c core.autocrlf=input` rather than trust
# the host's setting. See config/scripts/windows-process-tree-gyp-rebuild.mjs.
/config/patches/*.patch -text
# Same reason, and pnpm parses these too: a CRLF checkout makes the mobile
# patches unparseable, so Windows packaging dies on ERR_PNPM_INVALID_PATCH.
/mobile/patches/*.patch -text
# The xterm bundle hunks also make a diff nobody can read; review the hand-written
# source patch under xterm-src/ instead. The sibling patches stay diffable.
/config/patches/@xterm__xterm@*.patch -diff
/config/patches/xterm-src/*.patch text eol=lf
# pnpm parses these unified diffs during Windows installs; keep checkout bytes stable.
/mobile/patches/*.patch -text
# Generated wrapper fixtures: collapse them in the PR diff so they stop drowning
# the reviewable change, and pin LF because they are compared byte-for-byte.
# Not -diff: the shell diff is the review surface when a wrapper does change.
/src/main/__fixtures__/shell-wrapper-snapshots/*.txt linguist-generated=true text eol=lf
# Captured agent PTY transcripts. -text, not `text eol=lf` like the wrapper snapshots above:
# these carry real CR and CRLF bytes as the terminal emitted them, and line-ending
# normalisation on a Windows checkout would rewrite the evidence the fixture exists to be.
/src/main/runtime/__fixtures__/*.txt -text
/src/main/daemon/__fixtures__/pty-transcripts/*.txt -text
/src/renderer/src/components/terminal-pane/terminal-link-transcripts/*.txt -text whitespace=cr-at-eol
# Generated runtime English subset: compared byte-for-byte by
# verify:localization-runtime-catalog, so a CRLF checkout would fail the gate.
/src/renderer/src/i18n/en-runtime-required.json linguist-generated=true text eol=lf
# Generated method->params catalog: compared byte-for-byte by
# verify:rpc-params-catalog, so a CRLF checkout would fail the gate.
/src/shared/rpc-contract/rpc-params-catalog.generated.ts linguist-generated=true text eol=lf
# Mobile RPC recording goldens: replay requires the file text to equal what rpc:record writes
# (LF), so a CRLF checkout would fail every golden.
/mobile/rpc-foundation/goldens/*.json text eol=lf
# Mobile web page source. Every text byte here is hashed into an asset digest and from
# there into buildId, so a CRLF Windows checkout would ship a different bundle id for
# identical source (91af2897 vs 9d78435e, measured on the bundle this replaced).
/mobile/src/** text eol=lf
/mobile/app/** text eol=lf
/mobile/web-entry/** text eol=lf
# The blanket pin above would mark a future binary as text; exempt the asset types an
# RN page actually carries.
/mobile/src/**/*.png -text
/mobile/src/**/*.jpg -text
/mobile/src/**/*.jpeg -text
/mobile/src/**/*.gif -text
/mobile/src/**/*.ico -text
/mobile/src/**/*.webp -text
/mobile/src/**/*.ttf -text
/mobile/src/**/*.otf -text
/mobile/src/**/*.woff -text
/mobile/src/**/*.woff2 -text
/mobile/app/**/*.png -text
/mobile/app/**/*.jpg -text
/mobile/app/**/*.jpeg -text
/mobile/app/**/*.gif -text
/mobile/app/**/*.ico -text
/mobile/app/**/*.webp -text
/mobile/app/**/*.ttf -text
/mobile/app/**/*.otf -text
/mobile/app/**/*.woff -text
/mobile/app/**/*.woff2 -text
/mobile/web-entry/**/*.png -text
/mobile/web-entry/**/*.jpg -text
/mobile/web-entry/**/*.jpeg -text
/mobile/web-entry/**/*.gif -text
/mobile/web-entry/**/*.ico -text
/mobile/web-entry/**/*.webp -text
/mobile/web-entry/**/*.ttf -text
/mobile/web-entry/**/*.otf -text
/mobile/web-entry/**/*.woff -text
/mobile/web-entry/**/*.woff2 -text

# Generated ACP schemas are checked byte-for-byte against formatted output.
/src/main/acp/generated/*.generated.ts linguist-generated=true text eol=lf
# Generated skill bundle artifacts are verified byte-for-byte against fresh output.
/resources/skills/*.json linguist-generated=true text eol=lf
# Vitest writes snapshots with LF, so checkout bytes must match on every host.
**/__snapshots__/*.snap text eol=lf
38 changes: 36 additions & 2 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,38 @@ Thanks for contributing to Orca.

## Local Setup

Install Node 24, pnpm, and the Bun version in [`config/.bun-version`](../config/.bun-version).
`pnpm test` runs Vitest on Bun, with Node workers for runtime contracts such as SQLite,
native PTYs, socket liveness, and V8 memory behavior. `pnpm test:node` runs the same suites
entirely on Node. Builds and dependency installation still use Node and pnpm.

```bash
pnpm install
pnpm dev
```

To reduce main-process rebuild CPU and memory when you do not need its source maps,
set `ORCA_DEV_MAIN_SOURCEMAPS=0` before `pnpm dev`. In Bash/zsh:

```bash
ORCA_DEV_MAIN_SOURCEMAPS=0 pnpm dev
```

In PowerShell, use `$env:ORCA_DEV_MAIN_SOURCEMAPS='0'` before `pnpm dev`.
Remove the variable when debugging the main process with source maps. Renderer and
preload settings are unaffected; production builds always keep their hidden main maps.

Ordinary installs include native optional dependencies for the current OS and CPU only.
Before a cross-architecture build (including `pnpm build:mac`, which produces both x64 and
arm64 artifacts by default), run `pnpm install:release` to add the other CPU's variants.

Linux `pnpm build`, `pnpm build:native`, and Linux packaging require a running Docker
daemon to build the clipboard helper against Ubuntu 20.04 rather than the host's
newer libraries. A verified cached helper can be reused without Docker. For native
Wayland development, run `pnpm build:native` before `pnpm dev` to make text copying
available. See the [clipboard build guide](../native/wayland-clipboard/README.md#building-and-testing).
macOS and Windows builds do not use this helper or require Docker for it.

## Branch Naming

Use a clear, descriptive branch name that reflects the change.
Expand All @@ -44,6 +71,12 @@ pnpm test
pnpm build
```

For repeated local typechecks, use `pnpm tc` (or `pnpm tc:node`, `pnpm tc:web`,
and `pnpm tc:cli`). These keep TypeScript's incremental cache. CI uses
`pnpm typecheck:ci` with Bun for full checks. Shared tests are checked by the
Node project; shared production code is checked in all three environments.
Run `pnpm tc:node` after editing shared tests, or `pnpm tc` to check everything.

Add high-quality tests for behavior changes and bug fixes. Prefer tests that would actually catch a regression, not shallow coverage that only exercises the happy path.

If your change affects UI or interaction behavior, verify it on the platforms it could impact.
Expand All @@ -58,9 +91,10 @@ CI enforces this for `src/preload/` and `src/shared/`.

Each pull request should follow [`.github/pull_request_template.md`](./pull_request_template.md). In particular:

- if you are an outside contributor, link the issue your PR addresses
- open with an ELI5 of the change (plain language paragraph; the PR title is the one-liner)
- explain what changed and why, and stay focused on a single topic when possible
- for any UI or interaction change, attach **before and after** screenshots (or short videos); if there is no visual change, say `No visual change` and why
- for any UI or interaction change, attach **before and after** screenshots (or short videos); if there is no visual or interaction change, write `N/A` and briefly explain why
- include high-quality tests when behavior changes or bug fixes warrant them
- include a brief code review summary from your AI coding agent that explicitly checks cross-platform compatibility, SSH/remote/local compatibility, supported agent and integration compatibility, performance risk, UI quality when applicable, and basic security risk
- mention any platform-specific, remote/SSH-specific, agent-specific, integration-specific, or git-provider-specific behavior and testing notes
Expand Down Expand Up @@ -101,7 +135,7 @@ All stable kinds (`patch`, `minor`, `major`) are computed off the latest _stable
- If the latest RC tag exists but is still draft-only or missing its GitHub Release, the workflow resumes that tag only when it was built from the current release ref. Otherwise the next RC number is cut.
- RC numbering also considers release commits on `main`, so deleting a stale tag does not let a later cut reuse the same RC number.
- Off-main releases (when `ref` is not the tip of `main`) only push the tag. `main` is never mutated from a non-main ref, so you can safely release an older commit without polluting history.
- When `ref` is the tip of `main`, the version-bump commit is fast-forwarded onto `main` so local `package.json` stays in sync with what's shipped.
- When `ref` is the tip of `main`, the workflow tries to fast-forward the version-bump commit onto `main`. If main requires pull requests, it leaves main unchanged and pushes only the release tag. Other push errors still stop the cut.

**Common scenarios:**

Expand Down
11 changes: 11 additions & 0 deletions .github/actions/build-mobile-web-bundle/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
name: Build the mobile web bundle
description: Builds out/mobile-web, the page phones load, which every orcad build ships and refuses to build without.

runs:
using: composite
steps:
# Why: the bundle build resolves React Native and Expo from mobile/node_modules.
- uses: ./.github/actions/install-mobile-dependencies
- name: Build the mobile web bundle
shell: bash
run: pnpm run build:mobile-web
42 changes: 42 additions & 0 deletions .github/actions/download-pinned-orca-release/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Download pinned Orca release
description: Downloads a released Linux .deb, checks its SHA-512, extracts it and points ORCA_CROSS_VERSION_PACKAGED_EXECUTABLE at its executable.

inputs:
version:
description: Release version without the leading v (e.g. 1.4.224).
required: true
sha512:
description: Base64 SHA-512 of orca-ide_<version>_amd64.deb.
required: true
github-token:
description: Token for gh release download.
required: true

runs:
using: composite
steps:
- name: Download and verify
shell: bash
env:
GH_TOKEN: ${{ inputs.github-token }}
ORCA_PINNED_VERSION: ${{ inputs.version }}
ORCA_PINNED_SHA512: ${{ inputs.sha512 }}
run: |
gh release download "v$ORCA_PINNED_VERSION" --repo stablyai/orca --pattern "orca-ide_${ORCA_PINNED_VERSION}_amd64.deb" --dir "$RUNNER_TEMP/old-orca"
python3 - <<'PYVERIFY'
import base64,hashlib,os,pathlib,subprocess
version=os.environ['ORCA_PINNED_VERSION']
root=pathlib.Path(os.environ['RUNNER_TEMP'])/'old-orca'
package=root/f'orca-ide_{version}_amd64.deb'
digest=hashlib.sha512()
with package.open('rb') as archive:
for block in iter(lambda: archive.read(1024*1024), b''):
digest.update(block)
assert base64.b64encode(digest.digest()).decode()==os.environ['ORCA_PINNED_SHA512']
extracted=root/'extracted'
subprocess.run(['dpkg-deb','-x',str(package),str(extracted)],check=True)
executable=extracted/'opt'/'Orca'/'orca-ide'
assert executable.is_file() and os.access(executable,os.X_OK)
with open(os.environ['GITHUB_ENV'],'a') as env: env.write('ORCA_CROSS_VERSION_PACKAGED_EXECUTABLE='+str(executable)+'\n')
print('Verified old package:',executable)
PYVERIFY
22 changes: 22 additions & 0 deletions .github/actions/install-mobile-dependencies/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Install mobile dependencies
description: Frozen pnpm install for the mobile/ project, whose node_modules the mobile web bundle build and the mobile-aware lint passes resolve React Native and Expo from.

runs:
using: composite
steps:
# Why a separate install: mobile is its own pnpm project, so the root install leaves
# mobile/node_modules empty and every mobile import resolves to nothing.
# Why no --ignore-scripts, unlike the root install: mobile's postinstall generates the
# gitignored terminal/mermaid webview engine modules that tracked source imports.
# The drift guard mirrors the root install so a stale mobile lockfile fails by name --
# mobile's lockfile carries patchedDependencies that a silent rewrite would drop.
- name: Install mobile dependencies
shell: bash
working-directory: mobile
run: |
pnpm install --frozen-lockfile
# Job containers can run composite steps from a source mirror without .git.
if [ "$(git -C "$GITHUB_WORKSPACE" rev-parse --is-inside-work-tree 2>/dev/null)" = true ]; then
git -C "$GITHUB_WORKSPACE" diff --exit-code -- \
mobile/package.json mobile/pnpm-lock.yaml mobile/pnpm-workspace.yaml
fi
Loading