Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1817 commits
Select commit Hold shift + click to select a range
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
37c314b
Send a browser tab's window times to main with its open (dark, layout…
Jinwoo-H Oct 17, 2026
2d33cd9
refactor(identity): brand host-scoped worktree and repo keys for new …
nwparker Oct 17, 2026
5b69634
Agree with main on main-made terminal tabs and sleeping-agent records…
Jinwoo-H Oct 17, 2026
a349bfa
Agree with main on first-group ids, tab order and the preview flag (d…
Jinwoo-H Oct 17, 2026
7bb83b4
test(store): host-twin fixture and destructive/selection twin isolati…
nwparker Oct 17, 2026
88f2771
feat(native-chat): a chat whose host has no program to run shows Inst…
brennanb2025 Oct 17, 2026
77c511b
feat(sidebar): main produces per-workspace activity facts, checked ag…
Jinwoo-H Oct 17, 2026
05086a8
Let Cmd+J open hosting-provider domains such as github.io (#29989)
AmethystLiang Oct 17, 2026
ed3c3cc
Chat: dropped files hold Send until they're attached (#29173)
brennanb2025 Oct 17, 2026
8a4c031
fix(native-chat): a queue action still on its way greys its controls,…
brennanb2025 Oct 17, 2026
58f1f7d
fix(mobile): edit queued messages in place (#28646)
brennanb2025 Oct 17, 2026
32a53d3
feat(native-chat): image messages wait in the queue like text (#28655)
brennanb2025 Oct 17, 2026
ac34ffa
fix(toasts): stop the notice stack flickering under a resting mouse, …
brennanb2025 Oct 17, 2026
f4aa828
fix(mobile): show the same Working line in terminal-backed chats and …
brennanb2025 Oct 17, 2026
5733887
test(layout-owner): prove main and the window agree on a worktree ide…
Jinwoo-H Oct 17, 2026
035588e
test(cross-version): read isStructuredTab from the shared module the …
brennanb2025 Oct 17, 2026
29fa3cf
fix(terminal): quit no longer warns about terminals a paired Orca ser…
nwparker Oct 17, 2026
57e8c60
fix(renderer): resolveOwner refuses folder and project-group twins in…
nwparker Oct 17, 2026
95580d9
test(e2e): open and close structured chat tabs with an isolated Claud…
Jinwoo-H Oct 17, 2026
e1a7c97
fix(cli): stop suggesting --host to listings that reject it (#30012)
nwparker Oct 17, 2026
83baa08
fix(cli): explain why file open fails on a server with no app window …
nwparker Oct 17, 2026
ee56703
chore(ci): ratchet importers of the deprecated runtime-owner resolver…
nwparker Oct 17, 2026
0f9c12d
Chat: pasting a copied file attaches it, like dropping it (#29089)
brennanb2025 Oct 17, 2026
824ca95
fix(ssh): a host converted to its managed server keeps its workspaces…
nwparker Oct 17, 2026
8f2810a
fix(ssh): link a folder workspace the server kept when a re-created S…
nwparker Oct 17, 2026
251516d
feat(native-chat): choose which agents open as a chat (#29071)
brennanb2025 Oct 17, 2026
6c7ed18
feat(sidebar): main publishes desktop focus, pins, project and host o…
Jinwoo-H Oct 17, 2026
fa962dd
Record chat tab opens and closes in main (dark, layout-owner build on…
Jinwoo-H Oct 17, 2026
3813104
feat(acp): a sign-in prompt on an ACP agent's error output ends the s…
brennanb2025 Oct 17, 2026
98d8257
fix(ssh): a password SSH host waits for you at launch instead of prom…
nwparker Oct 17, 2026
03cefcb
feat(sidebar): main keeps one live set of paired-server rows, checked…
Jinwoo-H Oct 17, 2026
a5b96a1
feat(acp): an agent can run each chat's own permission mode itself (#…
brennanb2025 Oct 17, 2026
ee4fd06
fix(mobile): the chat's Working line uses desktop's spinner (#30008)
brennanb2025 Oct 17, 2026
7adcefb
fix(ai-vault): hide Orca's chat-naming requests from Session History …
nwparker Oct 17, 2026
0ba5ccc
fix(mobile): keep a headless host's chat tab through snapshot rebuild…
nwparker Oct 17, 2026
e6b7c77
feat(sidebar): main produces per-workspace PR facts, checked against …
Jinwoo-H Oct 17, 2026
92999b0
fix(mobile): prevent markdown and file tab reload and screen flicker …
zhangxaochen Oct 17, 2026
6743353
fix(remote): make the host's tab name the one source for CLI and desk…
nwparker Oct 17, 2026
c3e3b52
Record the chat pane the window picks in main (dark, layout-owner bui…
Jinwoo-H Oct 17, 2026
30e3119
fix(accounts): follow an Orca Claude account switch when the shell se…
Jinwoo-H Oct 17, 2026
b2419a5
fix(mobile): show the update screen instead of native screens when th…
Jinwoo-H Oct 17, 2026
345ef81
feat(accounts): offer to restart running Claude sessions on the new a…
Jinwoo-H Oct 17, 2026
37f23b9
refactor(mobile): every build is the OTA shell; drop the native/OTA b…
Jinwoo-H Oct 17, 2026
7ad3d49
fix(mobile): allow Markdown refresh during tab snapshots (#30040)
nwparker Oct 17, 2026
4f5d464
Open into the window's emptied pane beside a split branch in one layo…
Jinwoo-H Oct 17, 2026
86f6258
refactor(mobile): delete native screens the OTA shell no longer reach…
Jinwoo-H Oct 17, 2026
3d2e0bd
fix(native-chat): a running Claude chat keeps its model when two Clau…
brennanb2025 Oct 17, 2026
c3f5242
Write no false preview flag on a new or promoted tab (dark, layout-ow…
Jinwoo-H Oct 17, 2026
609f342
Record simulator tab opens and closes in main (dark, layout-owner bui…
Jinwoo-H Oct 17, 2026
90c1c0a
feat(mobile): draw the host Accounts screen from the desktop's page (…
Jinwoo-H Oct 17, 2026
6fcc183
feat(sidebar): put main's sidebar inputs behind the ORCA_SIDEBAR_INPU…
Jinwoo-H Oct 17, 2026
cd29f5f
feat(sidebar): main keeps a registry of workspace creations in progre…
Jinwoo-H Oct 17, 2026
2117d77
feat(acp): Antigravity in the Chat UI over its ACP server (#28595)
brennanb2025 Oct 17, 2026
4b1eabd
fix(terminal): resume a relaunched workspace's sleeping agents only w…
Jinwoo-H Oct 17, 2026
b389854
feat(sidebar): ui.setCollapsed changes one section's collapse without…
Jinwoo-H Oct 17, 2026
46984db
fix(mobile): ask which desktop to open Tasks on when several are conn…
Jinwoo-H Oct 17, 2026
1c411db
fix(native-chat): a refused steer leaves its turn as the chat's lates…
brennanb2025 Oct 17, 2026
216e3e4
fix(native-chat): a Codex chat is Working only while Codex holds the …
brennanb2025 Oct 17, 2026
21e3d76
feat(linear): edit and delete Linear comments from the CLI (#30003)
brennanb2025 Oct 17, 2026
b9fa92b
feat(acp): pause an agent's chat starts while its shared sign-in chan…
brennanb2025 Oct 17, 2026
cf6a544
Show which desktop the mobile Tasks screen is for (#30105)
Jinwoo-H Oct 17, 2026
6287ff6
One spawn step writes a terminal's pane identity for both ways Orca o…
brennanb2025 Oct 17, 2026
285f95c
fix(mobile): a compact phone queue: shorter header, a capped scrollin…
brennanb2025 Oct 17, 2026
100b6b1
fix(native-chat): the queue button you pressed shows a working spinne…
brennanb2025 Oct 17, 2026
9586a3f
feat(sidebar): main serves workspace icons as small data URLs for the…
Jinwoo-H Oct 17, 2026
09f12fa
fix(runtime): a slept remote workspace stays asleep through terminal …
nwparker Oct 17, 2026
efcbe1a
fix(browser): close a client-hosted ghost tab on a host with no brows…
nwparker Oct 17, 2026
7f4243e
Floating editor files open under the id main keeps for them (dark, la…
Jinwoo-H Oct 17, 2026
a039e90
feat(sidebar): main keeps the list's time rules on one clock, checked…
Jinwoo-H Oct 17, 2026
d9a6143
Main's layout Loader keeps one pane per terminal on restore (dark, la…
Jinwoo-H Oct 17, 2026
c2021eb
fix(layout-owner): main records a quick command tab's label on create…
Jinwoo-H Oct 17, 2026
8a3dd28
fix(project-groups): say so when a project cannot join a group on ano…
nwparker Oct 17, 2026
965f881
fix(sidebar): draw a project group once when two hosts publish it und…
nwparker Oct 17, 2026
27cfee6
fix(ssh): a Disconnect stays disconnected, and Settings and the statu…
nwparker Oct 17, 2026
299dcb8
fix(worktrees): a host-scoped purge leaves a surviving twin's tabs an…
nwparker Oct 17, 2026
532cad2
fix(renderer): destructive host callers refuse an ambiguous owner ins…
nwparker Oct 17, 2026
45f7429
Save-divergence detector: skip empty workspaces, see dropped tab-bar …
Jinwoo-H Oct 17, 2026
0904ba0
fix(layout-owner): a background agent tab keeps its live title when a…
Jinwoo-H Oct 17, 2026
d71e3e9
fix(serve): orca serve on orcad serves the browser client and answers…
nwparker Oct 17, 2026
ba9c7ea
Add Reveal in Finder to the file header menu (#30129)
nwparker Oct 17, 2026
ce2d608
test(pty): the launch race join test no longer waits on real disk I/O…
Jinwoo-H Oct 17, 2026
12f3089
feat(mobile): draw chat tool runs the way desktop does (#30135)
AmoabaKelvin Oct 18, 2026
5c4c1ed
feat(terminal): tell users once that the diff panel in a Claude pane …
AmoabaKelvin Oct 18, 2026
0c6e496
feat(native-chat): mark each attached image as [Image #N] where it si…
AmoabaKelvin Oct 18, 2026
33e6785
fix(deps): update vulnerable dependencies and prune stale overrides (…
nwparker Oct 18, 2026
1b3113d
fix(ssh): a tab closed while a managed host is disconnected stays clo…
nwparker Oct 18, 2026
3aad2b1
feat(sidebar): dark phone feed of the sidebar inputs (sidebarInputs.r…
Jinwoo-H Oct 18, 2026
2b49a48
test(e2e): hidden split-pane exit tests end the shell with exit 0 (#3…
Jinwoo-H Oct 18, 2026
3d03c33
refactor(renderer): fold getExplicitRuntimeEnvironmentIdForWorktree c…
nwparker Oct 18, 2026
bb0f229
test(e2e): wait for git status to show the seeded file before the dis…
Jinwoo-H Oct 18, 2026
bf97836
Pane titles stay layout: the window stops writing tab names as pane t…
Jinwoo-H Oct 18, 2026
98b4139
fix(sidebar): confirm before sleeping a workspace that another host's…
nwparker Oct 18, 2026
af056df
refactor(projects): shrink twin-removal teardown to the attributed cl…
nwparker Oct 18, 2026
303c7c9
fix(sidebar): main's temporal owner reads the catalog the way the win…
Jinwoo-H Oct 18, 2026
6c45958
refactor(renderer): tighten the host-identity stack (#30124)
nwparker Oct 18, 2026
68808db
chore(docs): replace ESLint with Oxlint (#30180)
nwparker Oct 18, 2026
c2188f6
fix(tasks): bound GitLab all-projects fan-out to avoid runtime queue …
maxmilian Oct 18, 2026
ed40719
Pin CocoaPods release installer in the Ruby lockfile (#30181)
nwparker Oct 18, 2026
b9b1b85
test(layout-owner): an older session's moved editor tab gets its work…
Jinwoo-H Oct 18, 2026
aff4ee7
feat(sidebar): main produces this host's workspace rows, checked agai…
Jinwoo-H Oct 18, 2026
a42049f
fix(tooling): lock routine dependency audit executables (#30183)
nwparker Oct 18, 2026
904259d
fix(runtime): keep a restored unfinished agent unverifiable for the h…
nwparker Oct 18, 2026
e0abf71
refactor(layout-owner): one placement helper for drawn tab opens (dar…
Jinwoo-H Oct 18, 2026
b8264e8
Main drops the layout of workspaces the catalog no longer validates (…
Jinwoo-H Oct 18, 2026
fa738f3
fix(notebook): run cells only when the resolved owner is this compute…
nwparker Oct 18, 2026
bbdbe72
fix(runtime): paired clients list a folder-upgraded checkout under th…
nwparker Oct 18, 2026
c359d09
chore(deps): remove unused desktop and mobile declarations (#30182)
nwparker Oct 18, 2026
b5fa888
fix(worktrees): stop CLI-created worktrees flashing into a filtered s…
nwparker Oct 18, 2026
d935683
fix(ssh): move the open workspace to the server's linked project when…
nwparker Oct 18, 2026
1e95c03
fix(native-chat): say why the chat composer is locked and offer Take …
nwparker Oct 18, 2026
dbb84f4
fix(ssh): move parked terminal history through the snapshot channel s…
nwparker Oct 18, 2026
dcfe8c9
perf(typecheck): pin Bun as a devDependency and typecheck with it (#3…
nwparker Oct 18, 2026
ffb818b
Ship the locked skills installer instead of executing npx (#30185)
nwparker Oct 18, 2026
4baacca
fix(startup): shell PATH probe falls back and retries when the shell …
nwparker Oct 18, 2026
483a17b
Reopening a file in its open tab sends the main process the changed f…
Jinwoo-H Oct 18, 2026
b8fbfce
Main repairs a terminal stored in two panes once at startup (dark, la…
Jinwoo-H Oct 18, 2026
31f7665
Main records when a workspace's default tabs were applied (dark, layo…
Jinwoo-H Oct 18, 2026
95d6018
Main keeps editor tabs under owned ids and in-place re-owns in step (…
Jinwoo-H Oct 18, 2026
553bde3
ci: simplify CocoaPods pin validation (#30208)
nwparker Oct 18, 2026
1e29bd1
ci(e2e): route remote product sources without a hand-kept route to th…
nwparker Oct 18, 2026
d4aa9dc
revert: restore pinned npx skills installer (#30207)
nwparker Oct 18, 2026
8209d30
test(runtime): record Electron vs orcad composition wiring and fail o…
nwparker Oct 18, 2026
25fb579
fix(layout): refuse a layout change on a workspace a WSL move has pau…
Jinwoo-H Oct 18, 2026
d4b3a65
fix(layout): main routes folders by the window's host rule and never …
Jinwoo-H Oct 18, 2026
2a8b4c3
Phone and old-client tab lists keep editor tabs under owned ids (dark…
Jinwoo-H Oct 18, 2026
9a86d27
chore(updater): delete the rollout-flag module nothing reads (#30211)
nwparker Oct 18, 2026
9810a5c
refactor(worktree): one comparison-only worktreeIdentityKey replaces …
nwparker Oct 18, 2026
932dc1b
chore(runtime): delete the never-served TLS branch of the LAN WebSock…
nwparker Oct 18, 2026
993fd20
test(preflight): freeze the clock in the explicit-binary timeout test…
nwparker Oct 18, 2026
6afbe49
chore: delete unimported SSH, renderer and orchestration modules (#30…
nwparker Oct 18, 2026
f0a6962
docs(agent-hooks): ORCA_FEATURE_REMOTE_AGENT_HOOKS now only gates the…
nwparker Oct 18, 2026
9085c5b
build(packaging): fail when orca serve's serve-selection entry or a c…
nwparker Oct 18, 2026
b21cda1
fix(ssh): say when a managed server may be behind this app, and retry…
nwparker Oct 18, 2026
f47337d
refactor(worktree): one worktree path equality; the ipc copy folded W…
nwparker Oct 18, 2026
7ede32e
ci: fail when CI config, workflows or e2e code name a src/ file that …
nwparker Oct 18, 2026
5c66b2e
fix(ssh): a late relay-era attach releases only its own viewer, never…
nwparker Oct 18, 2026
d3d6162
test(orcad): orca serve's argv makes orcad serve the web client and 4…
nwparker Oct 18, 2026
262a617
ci(e2e): start the managed-SSH lane for every helper only its specs i…
nwparker Oct 18, 2026
e6eaabb
test(files): the native-ignore watcher test waits on delivered events…
nwparker Oct 18, 2026
3767047
feat(telemetry): report a legacy relay host active once a day while i…
nwparker Oct 18, 2026
e1eef1f
refactor(terminal): one isRemoteExecutionHostPtyId, on prefix semanti…
nwparker Oct 18, 2026
559ece0
feat(sidebar): the host that owns a workspace stamps its Recent and S…
Jinwoo-H Oct 18, 2026
720f45c
Fix mobile Source Control rendering for large branches
nwparker Oct 18, 2026
9c726af
fix(sidebar): say a Linear task-status skip was for a multi-host work…
nwparker Oct 18, 2026
a912265
ci: start the SSH host lanes for the SSH transport, the WSL orcad lan…
nwparker Oct 18, 2026
1de30d8
test(e2e): the Windows CLI matrix convert cell calls the convert help…
nwparker Oct 18, 2026
0d74111
test(remote-runtime): pin the 12 hand-kept error-code lists to their …
nwparker Oct 18, 2026
a54fd38
Antigravity install: one clear message in the chat, with the message …
brennanb2025 Oct 18, 2026
e5e9fca
refactor(agent-status): the renderer's hydration cutoffs read main's …
nwparker Oct 18, 2026
bf56095
Session History: the scan line under the search box no longer jumps d…
brennanb2025 Oct 18, 2026
dcfbec0
refactor(execution-host): one isLocalExecutionHost in shared (#30241)
nwparker Oct 18, 2026
ed3ee7e
refactor: name the vm transcript and mobile pending-write caps for wh…
nwparker Oct 18, 2026
1e4d65e
ci: path-literal check scans live gate references; historical gate co…
nwparker Oct 18, 2026
e958614
fix(orcad): SSH host management on a server without the desktop app r…
nwparker Oct 18, 2026
fc925c3
fix(native-chat): Claude, Pi and ACP chats are Working only while the…
brennanb2025 Oct 18, 2026
06618fd
fix(ssh): a connection never redials a host the user disconnected bef…
nwparker Oct 18, 2026
29a43a7
feat(antigravity): sign Antigravity chats in with the server's own Go…
brennanb2025 Oct 18, 2026
8f86ccf
fix(ssh): refuse a migration request too large for the host's sealed …
nwparker Oct 18, 2026
a2946f0
chore(worktree): composeWorktreeId plus a ratchet on hand-built workt…
nwparker Oct 18, 2026
2d0fa93
Scope tab-group shortcuts and pane actions to the focused split (#30258)
AmethystLiang Oct 18, 2026
7121917
fix(ssh): two overlapping update checks never both try a host the fir…
nwparker Oct 18, 2026
58ce3f5
refactor(git): the common-dir check uses areWorktreePathsEqual (#30263)
nwparker Oct 18, 2026
9bd47de
feat(sidebar): after a restart, the host clears sort tiers nothing ba…
Jinwoo-H Oct 18, 2026
06fbf8f
refactor(terminal): drop remote-pty checks isRemoteExecutionHostPtyId…
nwparker Oct 18, 2026
e770ec3
test(runtime): compare macOS tmpdir paths by realpath in create-inten…
nwparker Oct 18, 2026
6fd2172
feat(runtime): remove an agent's downloaded runtime only once nothing…
brennanb2025 Oct 18, 2026
407bf03
Session History: find every agent's older sessions in Workspace and P…
brennanb2025 Oct 18, 2026
a261091
refactor: drop the runtimeWorktreeIdsEqual alias and name the WSL hoo…
nwparker Oct 18, 2026
8721b9c
refactor(orcad): import orcad helpers from their owning modules, not …
nwparker Oct 18, 2026
5229ef8
test: tighten the round-2 parity, serve and watcher tests (#30267)
nwparker Oct 18, 2026
2c12c1e
refactor(runtime): move runtime/relay to runtime/mobile-cloud-relay (…
nwparker Oct 18, 2026
ecb1d68
refactor: compatibility folders name their entry modules instead of a…
nwparker Oct 18, 2026
677d127
fix(terminal): an app's own OSC 133 zone close no longer ends the age…
nwparker Oct 18, 2026
4005884
Main routes a project registered on two machines to the same owner th…
Jinwoo-H Oct 18, 2026
acc2351
refactor(runtime): move runtime/browser-host-* into runtime/browser-h…
nwparker Oct 18, 2026
c30753c
fix(runtime): show "Re-pair required" for revoked servers and re-pair…
nwparker Oct 18, 2026
0249174
refactor(runtime): import mobile-cloud-relay and browser-host helpers…
nwparker Oct 18, 2026
ddf4e6b
fix(terminal): avoid duplicate snapshot replays after reveal (#30205)
nwparker Oct 18, 2026
3501ea9
fix(daemon): OMP's prompt-bubble markers no longer trip the dead-app …
nwparker Oct 18, 2026
383513b
SSH pane terminals and local-to-SSH tab moves reach main directly (da…
Jinwoo-H Oct 18, 2026
019417b
refactor(ssh): import the system-ssh and ssh -G modules directly, not…
nwparker Oct 18, 2026
1050569
ci: ratchet tests/ type errors so a broken spec import can't land unn…
nwparker Oct 18, 2026
fc24ac3
Window saves stop carrying tab and pane layout; main keeps its own (d…
Jinwoo-H Oct 18, 2026
85d634c
fix(settings,status-bar): show access revoked / update required for p…
nwparker Oct 18, 2026
2d1ec53
refactor(ssh): fence the legacy relay in ssh/legacy-relay/ and drop t…
nwparker Oct 18, 2026
db17b33
ci: ratchet the legacy relay fence (importers of ssh/legacy-relay/ an…
nwparker Oct 18, 2026
0627cd2
refactor(managed-server): move orcad activation into src/main/managed…
nwparker Oct 18, 2026
c82cf2b
fix(mobile): a session resumed from the phone's history shows its con…
nwparker Oct 18, 2026
aa07d58
fix(mobile): break the transport and terminal-document import cycles,…
nwparker Oct 18, 2026
50c06d5
refactor(ssh): move port forwarding into ssh/port-forwarding/ and hos…
nwparker Oct 18, 2026
d382992
refactor(managed-server): move the managed server's install and deplo…
nwparker Oct 18, 2026
506aa03
refactor(managed-server): move the managed server's lifecycle into sr…
nwparker Oct 18, 2026
d7aea6d
refactor(managed-server): move host state (state locks, Windows host …
nwparker Oct 18, 2026
658953d
refactor(ssh): group system-ssh transport, ssh config and remote exec…
nwparker Oct 18, 2026
1938bd0
refactor(ipc): group SSH and runtime-environment IPC handlers into ip…
nwparker Oct 18, 2026
e1b2d58
refactor(ipc): import ipc helpers from their owning modules, not re-e…
nwparker Oct 18, 2026
b1adb89
refactor: import renderer runtime, shared remote-runtime and orcad he…
nwparker Oct 18, 2026
9905da8
refactor(runtime): import runtime helpers from their owning modules, …
nwparker Oct 18, 2026
447c4a0
refactor(ipc): import worktree, watcher and runtime-environment helpe…
nwparker Oct 18, 2026
93ed192
The window's layout stream reconnects after a drop; a retried quit st…
Jinwoo-H Oct 18, 2026
0517087
fix(jcode): let jcode's own client start its per-pane server (#30257)
brennanb2025 Oct 18, 2026
37a9eaa
feat(settings): remove a downloaded agent runtime from its Settings r…
brennanb2025 Oct 18, 2026
ff294f0
fix(mobile): put the session tabs in the top bar on a landscape phone…
brennanb2025 Oct 18, 2026
2655423
fix(rate-limits): run the Antigravity usage probe with agy's auto-upd…
OrcaWin Oct 18, 2026
bde20af
Only the tabs the window just changed wait for main's answer; the win…
Jinwoo-H Oct 18, 2026
a8d7151
Require a full hover delay before each tab preview (#30388)
AmethystLiang Oct 18, 2026
3a2f162
feat(sidebar): sort Recent and Smart by the owning host's stamps, hol…
Jinwoo-H Oct 18, 2026
b6325ef
style: format the resume and transcript files main left unformatted (…
brennanb2025 Oct 18, 2026
e729852
fix(native-chat): move a chat visual's Open and Share buttons above i…
AmoabaKelvin Oct 18, 2026
c361d26
Revert "Session History: find every agent's older sessions in Workspa…
brennanb2025 Oct 18, 2026
bb20d8f
fix(native-chat): a Claude chat keeps a model its CLI stopped listing…
brennanb2025 Oct 19, 2026
2213562
Revert "fix(native-chat): Claude, Pi and ACP chats are Working only w…
brennanb2025 Oct 19, 2026
5974258
ci: match main's workflow files so the release token can tag this branch
brennanb2025 Oct 19, 2026
b2879bd
release: v1.4.230
github-actions[bot] Oct 19, 2026
83fc809
Merge tag 'v1.4.230' into zpyoung/auto-sync-fork-with-upstream-stably…
zpyoung Oct 19, 2026
d22754e
sync: resolve file ownership for upstream v1.4.230
zpyoung Oct 19, 2026
bdecaf0
fix(sync): expect the fork's skills repository in the node-server ski…
zpyoung Oct 19, 2026
f6bef36
fix(sync): restore the sync-size skip on changed-line scans in pr.yml
zpyoung Oct 19, 2026
8616015
fix(sync): adopt v1.4.230's worktree-id and e2e-typecheck ratchets in…
zpyoung Oct 19, 2026
5f8bab6
fix(sync): run the fork's localization wrapper in pr.yml's static ana…
zpyoung Oct 19, 2026
a645a2f
fix(sync): break the store import cycle and make PR benchmarks fork-a…
zpyoung Oct 19, 2026
6cfac67
fix(sync): fix the unit failures v1.4.230 exposed in fork seams and t…
zpyoung Oct 19, 2026
ebd71b8
refactor(native-chat-coloring): retire the code-block half in favor o…
zpyoung Oct 19, 2026
3e4ed86
fix(sync): clear the CI failures on 6cfac67395
zpyoung Oct 19, 2026
2b701b8
fix(sync): drop the release-JavaScript measurement output committed b…
zpyoung Oct 19, 2026
0726213
Merge remote-tracking branch 'origin/main' into zpyoung/auto-sync-for…
zpyoung Oct 19, 2026
e08c6bf
fix(sync): drop the dependency-isolation job v1.4.230's pr.yml cannot…
zpyoung Oct 19, 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.
2 changes: 1 addition & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
# .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 Down Expand Up @@ -47,6 +46,7 @@
# 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
Expand Down
29 changes: 28 additions & 1 deletion .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,28 @@ 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 @@ -53,6 +71,15 @@ pnpm test
pnpm build
```

For repeated local typechecks, use `pnpm tc` (or `pnpm tc:node`, `pnpm tc:web`,
and `pnpm tc:cli`). These run `bun check` from the pinned `bun` devDependency —
about a third of tsc's CPU and an eighth of its memory, so several agents can
typecheck at once. Pass `--compiler=native` to use tsc and its incremental
cache instead. CI uses `pnpm typecheck:ci`, the same Bun check with CI's
concurrency. 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 Down Expand Up @@ -111,7 +138,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
8 changes: 8 additions & 0 deletions .github/actions/install-node-dependencies/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,14 @@ runs:
git -C "$GITHUB_WORKSPACE" diff --exit-code -- package.json pnpm-lock.yaml pnpm-workspace.yaml
fi
# Why: the script-free install leaves node_modules/.bin/bun as a stub that shadows setup-bun under `pnpm run`.
- name: Link pinned Bun
shell: bash
run: |
if [ -d node_modules/bun ]; then
pnpm rebuild bun
fi
# Why --if-present: release cuts run main's workflows against older release tags that predate this script.
- name: Build internal packages
shell: bash
Expand Down
12 changes: 10 additions & 2 deletions .github/actions/prepare-native-runtime/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ runs:
env:
NATIVE_RUNTIME: ${{ inputs.native-runtime }}
NODE_VERSION: ${{ inputs.node-version }}
NATIVE_SOURCE_HASH: ${{ hashFiles('pnpm-lock.yaml', 'pnpm-workspace.yaml', '.npmrc', '.pnpmfile.cjs', '.github/actions/prepare-native-runtime/action.yml', 'config/scripts/ensure-native-runtime.mjs', 'config/scripts/rebuild-native-deps.mjs', 'config/scripts/node-pty-job-ownership.cjs', 'config/scripts/windows-pe-machine.cjs', 'config/scripts/windows-process-tree-gyp-rebuild.mjs', 'config/scripts/windows-process-tree-creation-time.cjs', 'config/scripts/install-electron-package-binary.mjs', 'config/scripts/electron-platform-path.mjs', 'config/scripts/zip-extractor-command.mjs', 'src/shared/zip-extractor-command.ts', 'config/scripts/shared-electron-dist-cache.mjs', 'config/scripts/space-sharing-copy.mjs', 'config/patches/node-pty@1.1.0.patch', 'config/patches/@vscode__windows-process-tree@0.8.0.patch', 'native/windows-registry/src/addon.cc', 'native/windows-registry/binding.gyp', 'native/windows-registry/package.json', 'native/windows-registry/index.js') }}
NATIVE_SOURCE_HASH: ${{ hashFiles('pnpm-lock.yaml', 'pnpm-workspace.yaml', '.npmrc', '.pnpmfile.cjs', '.github/actions/prepare-native-runtime/action.yml', 'config/scripts/ensure-native-runtime.mjs', 'config/scripts/initialize-windows-native-toolchain.mjs', 'config/scripts/capture-windows-native-environment.cmd', 'config/scripts/rebuild-native-deps.mjs', 'config/scripts/node-pty-job-ownership.cjs', 'config/scripts/windows-pe-machine.cjs', 'config/scripts/windows-process-tree-gyp-rebuild.mjs', 'config/scripts/windows-process-tree-creation-time.cjs', 'config/scripts/install-electron-package-binary.mjs', 'config/scripts/electron-platform-path.mjs', 'config/scripts/zip-extractor-command.mjs', 'src/shared/zip-extractor-command.ts', 'config/scripts/shared-electron-dist-cache.mjs', 'config/scripts/space-sharing-copy.mjs', 'config/patches/node-pty@1.1.0.patch', 'config/patches/@vscode__windows-process-tree@0.8.0.patch', 'native/windows-registry/src/addon.cc', 'native/windows-registry/binding.gyp', 'native/windows-registry/package.json', 'native/windows-registry/index.js', 'native/windows-security/src/addon.cc', 'native/windows-security/binding.gyp', 'native/windows-security/package.json', 'native/windows-security/index.js') }}
run: |
scope="${ImageOS:-$RUNNER_OS}"
if [ -r /etc/os-release ]; then
Expand All @@ -69,6 +69,7 @@ runs:
path<<ORCA_NATIVE_BUILD_DIRECTORIES
node_modules/.pnpm/node-pty@*/node_modules/node-pty/build
native/windows-registry/build
native/windows-security/build
node_modules/.pnpm/@vscode+windows-process-tre*/node_modules/@vscode/windows-process-tree/build
ORCA_NATIVE_BUILD_DIRECTORIES
ORCA_NATIVE_CACHE_PATHS
Expand All @@ -82,6 +83,7 @@ runs:
path: |
node_modules/.pnpm/node-pty@*/node_modules/node-pty/build
native/windows-registry/build
native/windows-security/build
node_modules/.pnpm/@vscode+windows-process-tre*/node_modules/@vscode/windows-process-tree/build
key: ${{ steps.native-cache-scope.outputs.key }}

Expand All @@ -93,6 +95,7 @@ runs:
path: |
node_modules/.pnpm/node-pty@*/node_modules/node-pty/build
native/windows-registry/build
native/windows-security/build
node_modules/.pnpm/@vscode+windows-process-tre*/node_modules/@vscode/windows-process-tree/build
key: ${{ steps.native-cache-scope.outputs.key }}

Expand All @@ -117,4 +120,9 @@ runs:
shell: bash
env:
NATIVE_RUNTIME: ${{ inputs.native-runtime }}
run: node config/scripts/ensure-native-runtime.mjs --runtime="$NATIVE_RUNTIME"
run: |
if [ "$RUNNER_OS" = Windows ] && [ "$NATIVE_RUNTIME" = node ]; then
node config/scripts/initialize-windows-native-toolchain.mjs
else
node config/scripts/ensure-native-runtime.mjs --runtime="$NATIVE_RUNTIME"
fi
4 changes: 2 additions & 2 deletions .github/actions/prepare-orcad-prebuilds/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,5 +63,5 @@ runs:
fi
pnpm build:orcad-prebuilds
fi
pnpm build:orcad-prebuilds --require-slots "$(node config/scripts/build-orcad-prebuilds.mjs --print-slot)"
pnpm build:orcad-prebuilds --smoke
node config/scripts/build-orcad-prebuilds.mjs --require-slots "$(node config/scripts/build-orcad-prebuilds.mjs --print-slot)"
node config/scripts/build-orcad-prebuilds.mjs --smoke
53 changes: 53 additions & 0 deletions .github/actions/prepare-wayland-clipboard/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: Prepare Wayland clipboard helper
description: Reuse the source-matched Ubuntu 20.04 helper, validating its architecture and glibc requirements every time.

inputs:
save-cache:
description: Publish a validated helper from the default branch.
default: 'false'

runs:
using: composite
steps:
- name: Resolve Wayland clipboard build identity
id: identity
shell: bash
run: |
node --input-type=module <<'NODE'
import { appendFileSync } from 'node:fs'
import { waylandClipboardFingerprint } from './config/scripts/build-wayland-clipboard.mjs'
const fingerprint = waylandClipboardFingerprint(process.cwd(), process.arch)
// Immutable invalid hits need a version bump here before publishing their repair.
appendFileSync(process.env.GITHUB_OUTPUT, `key=wayland-clipboard-v1-${process.arch}-${fingerprint}\n`)
NODE
- name: Restore Wayland clipboard helper
id: cache
uses: actions/cache/restore@v5
continue-on-error: true
with:
path: native/wayland-clipboard/.build
key: ${{ steps.identity.outputs.key }}

- name: Build or validate Wayland clipboard helper
shell: bash
env:
CACHE_HIT: ${{ steps.cache.outputs.cache-hit }}
run: |
if node config/scripts/build-wayland-clipboard.mjs; then
exit 0
fi
if [ "$CACHE_HIT" != true ]; then
exit 1
fi
echo 'Discarding an unusable Wayland clipboard cache and rebuilding from source.'
rm -rf -- native/wayland-clipboard/.build
node config/scripts/build-wayland-clipboard.mjs
- name: Save validated Wayland clipboard helper from main
if: inputs.save-cache == 'true' && steps.cache.outputs.cache-hit != 'true' && github.ref == 'refs/heads/main' && github.event_name != 'pull_request'
uses: actions/cache/save@v5
continue-on-error: true
with:
path: native/wayland-clipboard/.build
key: ${{ steps.identity.outputs.key }}
27 changes: 27 additions & 0 deletions .github/actions/prepare-windows-agent-hook/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Prepare the Windows agent hook
description: Compiles native/windows-agent-hook into native/windows-agent-hook/.build/orca-agent-hook.exe, which electron-builder --win refuses to package without.

runs:
using: composite
steps:
- name: Cache the Windows agent hook build
if: runner.os == 'Windows'
uses: actions/cache@v5
with:
path: |
native/windows-agent-hook/.build
native/windows-agent-hook/target
~/.cargo/registry
key: windows-agent-hook-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('native/windows-agent-hook/**', 'config/scripts/build-windows-agent-hook.mjs', 'config/scripts/windows-rust-executable-build.mjs', 'resources/build/icon.ico', 'package.json') }}

# Why explicit: a runner image without cargo would otherwise fail inside electron-builder's verify.
- name: Build the Windows agent hook
if: runner.os == 'Windows'
shell: pwsh
run: |
if (-not (Get-Command cargo -ErrorAction SilentlyContinue)) {
rustup toolchain install stable --profile minimal
rustup default stable
}
node config/scripts/build-windows-agent-hook.mjs
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
39 changes: 39 additions & 0 deletions .github/actions/prepare-windows-cli-launcher/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Prepare the orcad Windows CLI launcher
description: Compiles native/windows-cli-launcher for each requested arch into .build/windows-cli-launcher/<arch>/orca.exe.

inputs:
arches:
description: Space-separated Windows architectures (x64, arm64).
required: true

runs:
using: composite
steps:
- name: Cache the Windows CLI launcher builds
if: runner.os == 'Windows'
uses: actions/cache@v5
with:
path: |
.build/windows-cli-launcher
native/windows-cli-launcher/target
~/.cargo/registry
key: orcad-windows-cli-launcher-${{ runner.arch }}-${{ inputs.arches }}-${{ hashFiles('native/windows-cli-launcher/**', 'config/scripts/build-windows-cli-launcher.mjs', 'config/scripts/windows-rust-executable-build.mjs', 'resources/build/icon.ico', 'package.json') }}

# Why explicit: a runner image without cargo would otherwise fail inside the orcad build.
- name: Build the launcher for each architecture
if: runner.os == 'Windows'
shell: pwsh
env:
ARCHES: ${{ inputs.arches }}
run: |
if (-not (Get-Command cargo -ErrorAction SilentlyContinue)) {
rustup toolchain install stable --profile minimal
rustup default stable
}
$triples = @{ x64 = 'x86_64-pc-windows-msvc'; arm64 = 'aarch64-pc-windows-msvc' }
foreach ($arch in ($env:ARCHES -split ' ' | Where-Object { $_ })) {
rustup target add $triples[$arch]
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
node config/scripts/build-windows-cli-launcher.mjs --arch $arch --output ".build/windows-cli-launcher/$arch/orca.exe"
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
}
36 changes: 36 additions & 0 deletions .github/scripts/check-required-pr-context.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import { readdirSync, readFileSync } from 'node:fs'
import { join } from 'node:path'
import { pathToFileURL } from 'node:url'

export function verifyRequiredPrContext(parseYaml) {
const directory = '.github/workflows'
const providers = readdirSync(directory)
.filter((file) => /\.ya?ml$/.test(file))
.flatMap((file) => {
const workflow = parseYaml(readFileSync(join(directory, file), 'utf8'))
return Object.entries(workflow.jobs)
.filter(([id, job]) => (job.name ?? id) === 'PR checks passed')
.map(([id, job]) => ({ owner: `${file}:${id}`, job }))
})
const owners = providers.map((provider) => provider.owner)
if (providers.length !== 1 || owners[0] !== 'pr.yml:verify') {
throw new Error(`Required PR context must belong only to pr.yml:verify; found ${owners}`)
}
const gate = providers[0].job
const condition = gate.if?.replace(/^\$\{\{\s*|\s*\}\}$/g, '').trim()
if (condition !== '!cancelled() && github.event.pull_request.draft != true') {
throw new Error('Required PR aggregate must run unless cancelled or the PR is a draft.')
}
if (gate['continue-on-error'] || gate.steps?.some((step) => step['continue-on-error'])) {
throw new Error('Required PR aggregate must not ignore failures.')
}
}

if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
const yaml = globalThis.Bun?.YAML
if (!yaml) {
throw new Error('Run workflow context validation with the pinned Bun runtime.')
}
verifyRequiredPrContext(yaml.parse)
console.log('Required PR check context verified.')
}
Loading
Loading