Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
138 commits
Select commit Hold shift + click to select a range
4cfa397
A server-hosted browser tab opened in a server workspace drawn from f…
Jinwoo-H Oct 22, 2026
a1448f9
refactor: colocate Jira image and stream contracts (#32079)
nwparker Oct 22, 2026
43118ae
fix(worktree-create): a workspace created on a paired server shows on…
Jinwoo-H Oct 22, 2026
814bb59
fix(runtime): release remote streams when the renderer reloads (#29104)
brennanb2025 Oct 22, 2026
f1189be
Offer Resolve with AI for paused merge, rebase, and cherry-pick (#28569)
AmethystLiang Oct 22, 2026
78bfc4d
fix(acp): OMP chats send images; an ACP agent's own startup answer de…
brennanb2025 Oct 22, 2026
8fc1698
Add Resource Manager PTY inventory and checked terminal termination (…
AmethystLiang Oct 22, 2026
db6ab72
Install shared skills for 11 more agents and stop Qoder listing skill…
Jinwoo-H Oct 22, 2026
94bea87
Stabilize remote host status bar during retries (#32083)
AmethystLiang Oct 22, 2026
2e6963d
refactor: colocate Jira query construction (#32089)
nwparker Oct 22, 2026
64b7347
Set minimum width for native chat table cells (#31848)
AmethystLiang Oct 22, 2026
e710e89
A paired desktop hands its editor tabs to the server before drawing a…
Jinwoo-H Oct 22, 2026
24f5c57
A chat started in a server workspace drawn from the server's layout s…
Jinwoo-H Oct 22, 2026
1a932d6
perf(markdown): scan wiki-link delimiters without revisiting the docu…
OrcaWin Oct 22, 2026
5dbd233
perf(layout): index records once while patching session lists (#31935)
OrcaWin Oct 22, 2026
c8059ee
perf(chat): avoid repeated skill catalog scans while building the pic…
OrcaWin Oct 22, 2026
2a79420
perf(ai-vault): reuse parsed Qoder transcript records (#31938)
OrcaWin Oct 22, 2026
c1709f8
perf(mobile): index diff review notes by file path (#31943)
OrcaWin Oct 22, 2026
ac9dc0b
perf(ai-vault): bound scope cache write batch enumeration (#31950)
OrcaWin Oct 22, 2026
b77d0eb
perf(terminal): keep forward cursors for PR URL schemes (#31949)
OrcaWin Oct 22, 2026
7b70a29
feat(agent-write): opt-in launch cancel, approval wait and process fe…
Jinwoo-H Oct 22, 2026
e5df152
Gate draft image ownership checks on relevant local attachments (#32098)
AmethystLiang Oct 22, 2026
5949768
refactor: colocate Jira issue summary generation (#32099)
nwparker Oct 22, 2026
e61d062
Revert HTML preview by default for the release (#31575) (#31893)
AmethystLiang Oct 22, 2026
752f531
fix(chat): send pi and acp messages after a model-only change (#32004)
AmoabaKelvin Oct 22, 2026
589499e
fix(agent-status): a nested claude -p no longer takes over its parent…
AmoabaKelvin Oct 22, 2026
7cabd3a
Layout groundwork (switched off): every question about which pane hol…
Jinwoo-H Oct 22, 2026
4d162c4
fix(mobile): keep a keyboard closed with Back from reopening on termi…
AmoabaKelvin Oct 22, 2026
9c4ad14
refactor: colocate Jira favourite-filter contracts (#32102)
nwparker Oct 22, 2026
aee8823
fix(native-chat): a missing claude or codex cli no longer stalls the …
AmoabaKelvin Oct 22, 2026
57b5082
feat(connectors): connector start and conversation links behind the o…
Jinwoo-H Oct 22, 2026
1cf24e5
fix(orchestration): let a worker start helpers on the Run it works fo…
brennanb2025 Oct 22, 2026
1ed13cf
fix(chat): split into a fresh chat beside the current conversation (#…
brennanb2025 Oct 22, 2026
03e7ce0
feat(checks): open pr comment file:line locations in the editor (#32031)
AmoabaKelvin Oct 22, 2026
6a6c9e5
fix(native-chat): keep every image chip when several images are dropp…
AmoabaKelvin Oct 22, 2026
44ab202
fix(native-chat): show spelling suggestions when right-clicking chat …
AmoabaKelvin Oct 22, 2026
6f621ee
fix(browser): markup controls sit below the page in a mobile viewport…
AmoabaKelvin Oct 22, 2026
4b65d95
feat(connectors): connector follow-ups, held during approvals, behind…
Jinwoo-H Oct 22, 2026
aecb992
Keep Linux controls readable when their positions stall (#31982)
brennanb2025 Oct 22, 2026
0a8c768
feat(session-lifecycle): targeted resume of a recorded agent session,…
Jinwoo-H Oct 22, 2026
f4974b8
fix(mobile): send multi-line chat messages as one bracketed paste (#3…
AmoabaKelvin Oct 22, 2026
799bb18
refactor: colocate repository Jira project settings (#32107)
nwparker Oct 22, 2026
fc672f7
fix(pi): continue the chat when a background subagent wakes an idle p…
AmoabaKelvin Oct 22, 2026
494ecd2
fix(settings): keep agent environment values with spaces when the fie…
AmoabaKelvin Oct 22, 2026
e0bd073
feat(browser): Chrome-style page context menu and DevTools window sho…
AmoabaKelvin Oct 22, 2026
c69e831
fix(gitlab): find issues and #N in the new-workspace gitlab source (#…
AmoabaKelvin Oct 22, 2026
2266260
fix(links): end autolinked urls at CJK punctuation in chat, terminal …
AmoabaKelvin Oct 22, 2026
31bffb8
fix(sidebar): switch workspaces when accessibility tools press a side…
AmoabaKelvin Oct 22, 2026
ed5ad7f
refactor: colocate repository worktree defaults (#32112)
nwparker Oct 22, 2026
1ac2c6a
fix(agent-status): keep a finished turn done when the agent reports a…
AmoabaKelvin Oct 22, 2026
5288d26
fix(mobile): copy OSC 52 terminal writes to the phone clipboard (#32042)
AmoabaKelvin Oct 22, 2026
ba0603c
refactor: colocate repository AI persistence queue (#32122)
nwparker Oct 22, 2026
c1a47b0
fix(i18n): translate recent UI copy (#32125)
AmethystLiang Oct 22, 2026
41661e3
feat(sidebar): main runs workspace sleep; the window follows (P3b) (#…
Jinwoo-H Oct 22, 2026
a61be4f
refactor(runtime): share the phone push's terminal-agent turn news (#…
Jinwoo-H Oct 22, 2026
bd5cb0b
refactor(automations): share the idle agent-turn completion rule (#32…
Jinwoo-H Oct 22, 2026
f045046
fix(session-resume): end a resume claim when the hook store reports i…
Jinwoo-H Oct 22, 2026
cae9a06
refactor: colocate Linear list-scoping owners (#32133)
nwparker Oct 23, 2026
9070eb9
Track transcript content truncation across session readers (#32086)
AmethystLiang Oct 23, 2026
ca1e870
feat(connectors): reopen a closed or exited agent on its next message…
Jinwoo-H Oct 23, 2026
5a097e7
feat(mobile): decode page-bundle download windows natively (#31817)
Jinwoo-H Oct 23, 2026
ccc520a
feat(mobile): download only the page assets the cached generation lac…
Jinwoo-H Oct 23, 2026
5aa5467
feat(mobile): one download bar whose fill follows progress on the nat…
Jinwoo-H Oct 23, 2026
385418e
fix(mobile): the shell returns to a screen already on its stack (#32110)
Jinwoo-H Oct 23, 2026
d667e54
refactor: colocate relay assignment admission owners (#32142)
nwparker Oct 23, 2026
07a07a0
fix(relay): stop reviving a session outside the cell's map, keep the …
Jinwoo-H Oct 23, 2026
6768988
Add Orca's own bundled-skill planner and installer (not wired in yet)…
Jinwoo-H Oct 23, 2026
3ef3ab9
fix(automations): a slept server run opens its own tab from a paired …
Jinwoo-H Oct 23, 2026
b3b493c
Remove favicon drop shadows from browser tabs (#32143)
AmethystLiang Oct 23, 2026
d3dbd96
Update Orca's skills with Orca's own installer instead of npx skills …
Jinwoo-H Oct 23, 2026
2f2a0bc
fix(connectors): a connector backlog cannot fill orchestration's rece…
Jinwoo-H Oct 23, 2026
fa71556
Install and update Orca's skills on paired servers and SSH hosts (#31…
Jinwoo-H Oct 23, 2026
6a96733
Install Orca's skills with one click on every setup screen (#31918)
Jinwoo-H Oct 23, 2026
6bbc8e2
docs(chat): explain structured sessions and conversation handoffs (#3…
nwparker Oct 23, 2026
9532302
fix(packaging): exclude root development configs from desktop package…
nwparker Oct 23, 2026
d7f6234
fix(ssh): scope launch-session verdicts to managed environments (#32047)
nwparker Oct 23, 2026
ab1563e
fix(cli): negotiate agent launches with paired runtimes (#32029)
nwparker Oct 23, 2026
6c38b40
fix(git): retain authentication guidance for push failures (#32078)
nwparker Oct 23, 2026
8f2f620
fix(runtime): reject unsupported renderer-owned tab properties (#32018)
nwparker Oct 23, 2026
0dc7b88
fix(search): include undated Cursor sessions in time filters (#31991)
nwparker Oct 23, 2026
722bb24
fix(chat): retain unlisted reported Codex models (#32068)
nwparker Oct 23, 2026
27d29bb
fix(github): reject cached same-branch PRs with foreign heads (#32060)
nwparker Oct 23, 2026
18ee07f
fix(terminal): resolve Markdown file destinations before bare paths (…
nwparker Oct 23, 2026
77f1523
fix(claude): retain managed WSL selection across distro casing (#31992)
nwparker Oct 23, 2026
c089ca5
fix(ci): preserve rename boundaries in React Doctor gate (#32159)
nwparker Oct 23, 2026
28c7268
fix(runtime): tab property edits live with the other tab properties, …
Jinwoo-H Oct 23, 2026
3d63067
fix(cli): reject ask waits above the documented 30-minute maximum (#3…
nwparker Oct 23, 2026
1ec8f07
fix(usage): read Cursor Unified Ultra current-period quotas (#31978)
nwparker Oct 23, 2026
f4a1b05
fix(agents): apply paired host preferences to launch menus (#31971)
nwparker Oct 23, 2026
26f677e
fix(codex): pair structured launches with the CLI runtime (#32061)
nwparker Oct 23, 2026
075ed13
Fix GitHub PR auto-merge eligibility (#32075)
AmethystLiang Oct 23, 2026
601e900
fix(orchestration): reject task messages for another implicit Run (#3…
nwparker Oct 23, 2026
72864c1
fix(terminal): allow independent hidden account restarts to progress …
nwparker Oct 23, 2026
3f7b341
Refine Agent Dashboard lifecycle handling (#32172)
AmethystLiang Oct 23, 2026
52e413e
fix(mobile): finish bundle downloads over slow links with smaller ran…
nwparker Oct 23, 2026
afe62ef
fix(workspace): show launch actions in empty tab groups (#32182)
AmethystLiang Oct 23, 2026
54e8ee5
Scope daemon inventories for safe worktree teardown (#32171)
AmethystLiang Oct 23, 2026
1de3639
fix(daemon): clear route proof during synthetic exits (#32196)
AmethystLiang Oct 23, 2026
55b255e
docs: condense test anti-pattern guidance (#32201)
OrcaWin Oct 23, 2026
22a95c4
refactor: colocate repository draft input and tests (#32155)
nwparker Oct 23, 2026
456e583
test: consolidate discovery coverage and replace copied oracles (#32211)
OrcaWin Oct 23, 2026
a5b2543
test: retire copied oracles and implementation inventories (#32206)
OrcaWin Oct 23, 2026
0841e09
test: remove classification inventories and verify settled boundaries…
OrcaWin Oct 23, 2026
c43ec4d
test: keep explicit regressions without legacy algorithm copies (#32218)
OrcaWin Oct 23, 2026
758b9c2
ci: avoid slow Ubuntu mirrors during WebKit setup (#32205)
nwparker Oct 23, 2026
a3512bc
perf(renderer): scope runtime connection and parking subscriptions (#…
nwparker Oct 23, 2026
fd18750
fix(chat): allow visuals to declare open without breaking scripts (#3…
AmethystLiang Oct 23, 2026
47484b1
fix(native-chat): keep queued messages in the chat's own record, so a…
brennanb2025 Oct 23, 2026
6d473f4
Bound per-write chat selector work and guard ownership scans (#32109)
brennanb2025 Oct 23, 2026
f9e883a
Show activity status with worktree-style counts (#26443)
nwparker Oct 23, 2026
b4ee652
Show child workspace statuses in the children toggle (#32224)
nwparker Oct 23, 2026
352b29a
fix: preserve workspace review references when clearing active review…
OrcaWin Oct 23, 2026
a046955
Saving a file, then closing that tab mid-save, no longer leaves its o…
nwparker Oct 23, 2026
c74ff91
Show task names for Codex subagents (#32243)
nwparker Oct 23, 2026
0efc842
[comment audit] Shorten preload comments (#32257)
OrcaWin Oct 23, 2026
c32d468
fix: offload macOS deletion spawns and reduce branch cleanup (#32227)
nwparker Oct 23, 2026
bc99add
test: remove redundant cases and start comprehensive value tracker (#…
OrcaWin Oct 23, 2026
88de2db
fix(web): the browser client advertises the desktop's chat capabiliti…
nwparker Oct 23, 2026
7b0a7ee
fix(terminal): a timed-out CLI split names its pending pane, and a re…
nwparker Oct 23, 2026
699c17c
fix(ssh): never block or over-read on an SSH identity file (#32274)
nwparker Oct 23, 2026
551108a
test: finish fixture work before unit-test cleanup (#32285)
nwparker Oct 23, 2026
81ca8a7
fix(mobile): keep a terminal tab's chat identity while its handle is …
nwparker Oct 23, 2026
13ab523
fix(terminal): never present a half-built synchronized-output frame o…
nwparker Oct 23, 2026
5b73c37
refactor(renderer): colocate task page pagination rules (#32297)
nwparker Oct 23, 2026
8d94ed0
perf(test): bundle Zod once per isolated Vitest invocation (#32298)
nwparker Oct 23, 2026
d9dc87b
Use incremental tsrs locally and update Bun to 1.4.4 (#32276)
nwparker Oct 23, 2026
92dfb4f
test: trim redundant coverage and fix vacuous assertions (#32305)
OrcaWin Oct 23, 2026
09b4648
fix(ci): retain ambiguous unit-test import consumers (#32366)
nwparker Oct 23, 2026
8f6283b
test: exercise real boundaries and trim redundant cases (#32353)
OrcaWin Oct 23, 2026
4d026ac
fix(ci): retain full coverage for shared unit runtime inputs (#32417)
nwparker Oct 23, 2026
a233040
File watching rides out a slow system instead of restarting, and turn…
nwparker Oct 23, 2026
816fcee
Every view of a shared file stays current after undo or discard, and …
nwparker Oct 23, 2026
d106268
Watch only the files Orca needs in its settings folder and .git, inst…
nwparker Oct 23, 2026
89b3d38
test: audit delayed replies and database boundaries (#32426)
OrcaWin Oct 23, 2026
41402a5
refactor(jira): colocate status error parsing with Jira owners (#32430)
nwparker Oct 23, 2026
3ec7bd8
fix(ci): retain TypeScript project input consumers (#32522)
nwparker Oct 23, 2026
315b7c1
ci: move Linux package and relay jobs to the Blacksmith pool (#32442)
nwparker Oct 23, 2026
5d32f37
test: audit CLI output and deferred delivery boundaries (#32498)
OrcaWin 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
  •  
  •  
  •  
13 changes: 8 additions & 5 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,11 +90,14 @@ 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
and `pnpm tc:cli`). On Apple Silicon macOS and x64/arm64 Linux, these use the pinned
`tsrs` compiler with incremental caches. Keep `.cache/typecheck/` between checks;
delete it to force a fresh check. Caches are separate for each project, compiler
version, and worktree. At most two projects run together, subject to the memory budget.
Windows, Intel macOS, and other unsupported platforms use pinned Bun automatically.
Pass `--compiler=bun` to explicitly use Bun, or `--compiler=native` to use TypeScript.
CI uses `pnpm typecheck:ci`, which explicitly selects Bun and its CI 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.

Expand Down
2 changes: 1 addition & 1 deletion .github/actions/cloud-sql-rollout-lease/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ runners; only the compare-and-swap algorithm is shared with the fence broker.
## Duplication

This directory is copied verbatim into `stablyai/orca`. It has no `package.json`, no
`node_modules`, and imports nothing outside itself — `action-contract.test.mjs` enforces all three.
`node_modules`, and imports nothing outside itself. Keep it self-contained when updating the action.
Cross-repo consumption via `uses: stablyai/orca/.github/actions/...@<sha>` was rejected: it would
put public-repo code inside private app deploys that hold a production credential, and neither
repository protects `main` today.
Expand Down
31 changes: 1 addition & 30 deletions .github/actions/cloud-sql-rollout-lease/action-contract.test.mjs
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
import assert from 'node:assert/strict'
import { readFileSync, readdirSync } from 'node:fs'
import { readFileSync } from 'node:fs'
import { test } from 'node:test'

const here = new URL('./', import.meta.url)
const action = readFileSync(new URL('action.yml', here), 'utf8')
const modules = readdirSync(here).filter((name) => name.endsWith('.mjs'))
const shipped = modules.filter((name) => !name.endsWith('.test.mjs'))

test('is a node24 JavaScript action with an always-run post step', () => {
// A composite action has no `post:`, so the lease could never be released on cancel or failure.
Expand All @@ -23,30 +21,3 @@ test('declares the inputs the wave-chain callers depend on', () => {
assert.match(action, /default: \$\{\{ github\.repository \}\}\/\$\{\{ github\.run_id \}\}/)
assert.match(action, /default: 'true'/)
})

test('stays self-contained so it can be duplicated into the public repo', () => {
assert.deepEqual(
readdirSync(here).filter((name) => name === 'package.json' || name === 'node_modules'),
[],
'the action must run with zero installed dependencies'
)
for (const name of modules) {
const source = readFileSync(new URL(name, here), 'utf8')
for (const match of source.matchAll(/^import\b[\s\S]*?from '([^']+)'/gm)) {
const specifier = match[1]
const local = specifier.startsWith('.')
assert.ok(
specifier.startsWith('node:') || (local && !specifier.includes('..')),
`${name} imports ${specifier}; only node: builtins and same-directory modules are allowed`
)
}
}
})

test('never reaches for the GCE metadata server', () => {
// Runners have no metadata.google.internal; the fence broker's token path must not be copied.
for (const name of shipped) {
const source = readFileSync(new URL(name, here), 'utf8')
assert.doesNotMatch(source, /metadata\.google\.internal/, name)
}
})
14 changes: 14 additions & 0 deletions .github/scripts/prepare-ubuntu-apt.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/usr/bin/env bash
set -euo pipefail

# GitHub's mirror+file sources resolve through apt-mirrors.txt, not just sources.list.
for source in /etc/apt/apt-mirrors.txt /etc/apt/sources.list /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources; do
if [ -f "$source" ]; then
sudo sed -i 's|https*://azure\.archive\.ubuntu\.com/ubuntu|https://archive.ubuntu.com/ubuntu|g' "$source"
fi
done
sudo tee /etc/apt/apt.conf.d/99-orca-ci >/dev/null <<'APTCONF'
Acquire::http::Timeout "15";
Acquire::https::Timeout "15";
Acquire::Retries "1";
APTCONF
1 change: 0 additions & 1 deletion .github/workflows/ci-closed-pr-caches.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ jobs:
['ci-cache-warmup-platforms', 'ci-cache-warmup-platforms.yml'],
['pi-owner-runtime', 'pi-owner-runtime.yml'],
['git-command-termination', 'git-command-termination-runtime.yml'],
['skill-roundtrip-pull_request', 'skill-update-roundtrip.yml'],
['ci-cache-warmup', 'ci-cache-warmup.yml']
]
const stillCurrent = async () => {
Expand Down
18 changes: 11 additions & 7 deletions .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,17 +88,21 @@ jobs:
exit 0
fi
read -r -a packages <<< "$ORCA_E2E_APT_PACKAGES"
# Why apt-mirrors.txt: runner images resolve mirror+file: sources through it, so editing the lists alone leaves Azure in use.
for source in /etc/apt/apt-mirrors.txt /etc/apt/sources.list /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources; do
if [ -f "$source" ]; then
sudo sed -i 's|https*://azure\.archive\.ubuntu\.com/ubuntu|https://archive.ubuntu.com/ubuntu|g' "$source"
fi
done
sudo tee /etc/apt/apt.conf.d/99-orca-e2e >/dev/null <<'APTCONF'
if [ -f .github/scripts/prepare-ubuntu-apt.sh ]; then
bash .github/scripts/prepare-ubuntu-apt.sh
else
# Dispatched refs can predate the shared preparation script.
for source in /etc/apt/apt-mirrors.txt /etc/apt/sources.list /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources; do
if [ -f "$source" ]; then
sudo sed -i 's|https*://azure\.archive\.ubuntu\.com/ubuntu|https://archive.ubuntu.com/ubuntu|g' "$source"
fi
done
sudo tee /etc/apt/apt.conf.d/99-orca-ci >/dev/null <<'APTCONF'
Acquire::http::Timeout "15";
Acquire::https::Timeout "15";
Acquire::Retries "1";
APTCONF
fi
timeout 120 sudo apt-get update
timeout 300 sudo apt-get install -y "${packages[@]}" || timeout 300 sudo apt-get install -y --fix-missing "${packages[@]}"

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/layout-owner-e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
uses: ./.github/workflows/e2e.yml
with:
ref: ${{ inputs.ref || github.sha }}
test_files: '["tests/e2e/workspace-layout-oracle-headless.spec.ts","tests/e2e/workspace-layout-oracle.spec.ts","tests/e2e/cli-file-open-position.spec.ts","tests/e2e/relaunch-first-terminal.spec.ts","tests/e2e/relaunch-sleeping-agents-resume-on-view.spec.ts","tests/e2e/terminal-cold-activation-deferral.spec.ts","tests/e2e/cli-first-worktree-single-terminal.spec.ts","tests/e2e/unopened-workspace-agent-single-resume.spec.ts","tests/e2e/terminal-pane-close-layout-consistency.spec.ts","tests/e2e/golden-file-open-edit-save.spec.ts","tests/e2e/golden-source-control-open-diff.spec.ts","tests/e2e/paired-cli-terminal-graph-sync-tab-retention.spec.ts","tests/e2e/floating-workspace-pane-height.spec.ts","tests/e2e/editor-model-host-isolation.spec.ts","tests/e2e/editor-tab-selection-restore.spec.ts","tests/e2e/finished-agent-ghost-resume.spec.ts","tests/e2e/live-background-terminal-mount-authority.spec.ts","tests/e2e/workspace-back-forward-navigation.spec.ts","tests/e2e/worktree-lineage-toggle-shortcut.spec.ts","tests/e2e/local-cli-terminal-retention.spec.ts","tests/e2e/default-tabs-mark-crash-relaunch.spec.ts","tests/e2e/terminal-cli-split-closed-before-mount.spec.ts","tests/e2e/layout-stream-loss-reopen.spec.ts","tests/e2e/terminal-tab-close-restart-persistence.spec.ts","tests/e2e/artificial-opencode-terminal-load.spec.ts","tests/e2e/headless-paired-remote-terminal-retention-memory.spec.ts","tests/e2e/headless-paired-remote-terminal-reveal-grid.spec.ts","tests/e2e/headless-paired-remote-terminal-stall-recovery.spec.ts","tests/e2e/headless-paired-remote-terminal-viewer-size.spec.ts","tests/e2e/headless-serve-browser-tab-restart.spec.ts","tests/e2e/headless-serve-cli-terminal-retention-parity.spec.ts","tests/e2e/headless-serve-desktop-activation.spec.ts","tests/e2e/headless-serve-focused-terminal-create.spec.ts","tests/e2e/headless-serve-mobile-chat-tab-order.spec.ts","tests/e2e/headless-serve-mobile-native-chat-identity.spec.ts","tests/e2e/headless-serve-session-history-naming-requests.spec.ts","tests/e2e/layout-compat-old-phone-on-new-server.spec.ts","tests/e2e/layout-compat-serve-restart-keeps-at-at-terminals.spec.ts","tests/e2e/paired-mobile-serve-restart-terminal-tabs.spec.ts","tests/e2e/paired-mobile-desktop-tab-composition.spec.ts","tests/e2e/paired-remote-terminal-serve-restart-binding.spec.ts","tests/e2e/paired-desktop-server-layout-frames.spec.ts","tests/e2e/paired-desktop-server-held-pane-reopen.spec.ts","tests/e2e/paired-desktop-server-file-open-group.spec.ts","tests/e2e/paired-desktop-server-layout-intents.spec.ts","tests/e2e/paired-desktop-server-layout-writes.spec.ts","tests/e2e/ssh-orcad-"]'
test_files: '["tests/e2e/workspace-layout-oracle-headless.spec.ts","tests/e2e/workspace-layout-oracle.spec.ts","tests/e2e/cli-file-open-position.spec.ts","tests/e2e/relaunch-first-terminal.spec.ts","tests/e2e/relaunch-sleeping-agents-resume-on-view.spec.ts","tests/e2e/terminal-cold-activation-deferral.spec.ts","tests/e2e/cli-first-worktree-single-terminal.spec.ts","tests/e2e/unopened-workspace-agent-single-resume.spec.ts","tests/e2e/terminal-pane-close-layout-consistency.spec.ts","tests/e2e/golden-file-open-edit-save.spec.ts","tests/e2e/golden-source-control-open-diff.spec.ts","tests/e2e/paired-cli-terminal-graph-sync-tab-retention.spec.ts","tests/e2e/floating-workspace-pane-height.spec.ts","tests/e2e/editor-model-host-isolation.spec.ts","tests/e2e/editor-tab-selection-restore.spec.ts","tests/e2e/finished-agent-ghost-resume.spec.ts","tests/e2e/live-background-terminal-mount-authority.spec.ts","tests/e2e/workspace-back-forward-navigation.spec.ts","tests/e2e/worktree-lineage-toggle-shortcut.spec.ts","tests/e2e/local-cli-terminal-retention.spec.ts","tests/e2e/default-tabs-mark-crash-relaunch.spec.ts","tests/e2e/terminal-cli-split-closed-before-mount.spec.ts","tests/e2e/layout-stream-loss-reopen.spec.ts","tests/e2e/terminal-tab-close-restart-persistence.spec.ts","tests/e2e/artificial-opencode-terminal-load.spec.ts","tests/e2e/headless-paired-remote-terminal-retention-memory.spec.ts","tests/e2e/headless-paired-remote-terminal-reveal-grid.spec.ts","tests/e2e/headless-paired-remote-terminal-stall-recovery.spec.ts","tests/e2e/headless-paired-remote-terminal-viewer-size.spec.ts","tests/e2e/headless-serve-browser-tab-restart.spec.ts","tests/e2e/headless-serve-cli-terminal-retention-parity.spec.ts","tests/e2e/headless-serve-desktop-activation.spec.ts","tests/e2e/headless-serve-focused-terminal-create.spec.ts","tests/e2e/headless-serve-chat-tab-placement.spec.ts","tests/e2e/headless-serve-mobile-chat-tab-order.spec.ts","tests/e2e/headless-serve-mobile-native-chat-identity.spec.ts","tests/e2e/headless-serve-session-history-naming-requests.spec.ts","tests/e2e/layout-compat-old-phone-on-new-server.spec.ts","tests/e2e/layout-compat-serve-restart-keeps-at-at-terminals.spec.ts","tests/e2e/paired-mobile-serve-restart-terminal-tabs.spec.ts","tests/e2e/paired-mobile-desktop-tab-composition.spec.ts","tests/e2e/paired-remote-terminal-serve-restart-binding.spec.ts","tests/e2e/paired-desktop-server-layout-frames.spec.ts","tests/e2e/paired-desktop-server-held-pane-reopen.spec.ts","tests/e2e/paired-desktop-server-file-open-group.spec.ts","tests/e2e/paired-desktop-server-layout-intents.spec.ts","tests/e2e/paired-desktop-server-layout-writes.spec.ts","tests/e2e/paired-desktop-server-editor-handover.spec.ts","tests/e2e/ssh-orcad-"]'
run_changed_e2e: true
needs_build: true
artifact_suffix: -layout-owner-switch-on
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -939,7 +939,9 @@ jobs:
- name: Install WebKit for the drawer check
id: webkit
background: true
run: pnpm exec playwright-core install --with-deps webkit
run: |
bash .github/scripts/prepare-ubuntu-apt.sh
pnpm exec playwright-core install --with-deps webkit

# The entry lives in mobile/ so one React resolves; without this every RN import is nothing.
- uses: ./.github/actions/install-mobile-dependencies
Expand Down Expand Up @@ -1061,7 +1063,7 @@ jobs:
name: package
needs: [code_paths, preflight]
if: needs.code_paths.outputs.package == 'true'
runs-on: ubuntu-latest
runs-on: blacksmith-4vcpu-ubuntu-2404
# Let the serial Docker gates reach their own deadlines and report cleanup failures.
timeout-minutes: 90

Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/preflight-benchmark.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ env:
jobs:
compilers:
if: github.event_name != 'pull_request' || github.event.pull_request.draft != true
runs-on: ubuntu-24.04-arm
# Native compiler peaks can exhaust the standard ARM runner before samples are saved.
runs-on: blacksmith-8vcpu-ubuntu-2404-arm
timeout-minutes: 25
steps:
- uses: actions/checkout@v6
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/preflight-critical-path-benchmark.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ jobs:
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version-file: config/.bun-version
- uses: ./.github/actions/install-mobile-dependencies
if: matrix.comparison == 'smoke'
- name: Compare checks and verify their results
run: node config/scripts/benchmark-ci-preflight-critical-path.mjs ${{ matrix.comparison }}
- uses: actions/upload-artifact@v7
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/release-cut.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1017,7 +1017,6 @@ jobs:
WORKFLOW_SHA: ${{ github.workflow_sha }}
run: |
git fetch --no-tags --depth=1 origin "$WORKFLOW_SHA"
# Why not skill-freshness-inventory.test.ts: it holds behaviour tests, so main's copy fails a tag that predates the behaviour.
git checkout "$WORKFLOW_SHA" -- \
src/main/skills/skill-provider-runtime-roots.test.ts

Expand Down Expand Up @@ -1069,7 +1068,6 @@ jobs:
WORKFLOW_SHA: ${{ github.workflow_sha }}
run: |
git fetch --no-tags --depth=1 origin "$WORKFLOW_SHA"
# Why not skill-freshness-inventory.test.ts: it holds behaviour tests, so main's copy fails a tag that predates the behaviour.
git checkout "$WORKFLOW_SHA" -- \
src/main/skills/skill-provider-runtime-roots.test.ts

Expand Down
111 changes: 0 additions & 111 deletions .github/workflows/skill-update-roundtrip.yml

This file was deleted.

4 changes: 2 additions & 2 deletions .github/workflows/unit-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ on:
type: string

runner:
description: Hosted runner for the unit shards; relay integration keeps its x86 host.
description: Hosted runner for the unit shards.
required: false
default: ubuntu-latest
type: string
Expand Down Expand Up @@ -213,7 +213,7 @@ jobs:
fail-fast: false
matrix:
node: ${{ fromJSON(inputs.node_versions) }}
runs-on: ubuntu-latest
runs-on: blacksmith-4vcpu-ubuntu-2404
timeout-minutes: 60

steps:
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ desktop.ini
.oxlintcache
/.cache/vite/
/.cache/vite.lock/
/.cache/typecheck/

# Logs
*.log
Expand Down
3 changes: 2 additions & 1 deletion .oxfmtrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
"resources/licenses/**",
".github/actions/cloud-sql-rollout-lease/**",
".anti-slop-plugin/**",
"src/main/runtime/__fixtures__/*.timing.json"
"src/main/runtime/__fixtures__/*.timing.json",
"resources/skills/released-digests.json"
]
}
Loading
Loading