Commit Graph
8388 Commits
Author SHA1 Message Date
Jinjing 2270ac3ead Merge branch 'main' of https://github.com/stablyai/orca into static-analysis-page-stuck-in-loading 2026-08-10 21:46:15 -07:00
Jinjing e9492f2a10 Fix static analysis page stuck in loading state
Add deadline-based timeouts and request ID tracking to prevent stale responses
from freezing the checks panel. Include abort signal propagation throughout the
request chain and provide retry UI for failed check details loads.
2026-08-10 21:44:35 -07:00
NeilandOrca b44df2e9f1 perf(renderer): index GitHub resume lookups (#13698)
* perf(renderer): index GitHub resume lookups

* perf(renderer): skip the resume cache sweep publication when nothing changed

Every eviction helper already returns its input reference untouched when it
evicts nothing, so the opening sweep in refreshAllGitHub can compare identities
and return the previous state. Window resume then stops waking every store
subscriber on a no-op sweep.

Folds in the remaining unique optimization from #13711, which this PR
supersedes on the lookup-indexing side.

Co-authored-by: Orca <help@stably.ai>

---------

Co-authored-by: Orca <help@stably.ai>
2026-08-10 21:42:27 -07:00
Neil 680a9d9bc5 perf(renderer): unmount closed Quick Open content (#13618) 2026-08-10 21:38:31 -07:00
Neil 2e5f067c2e perf(renderer): unmount closed Workspace Board content (#13619) 2026-08-10 21:33:50 -07:00
NeilandOrca 34c721fc2c perf(renderer): preserve unchanged remote mirror resources (#13683)
* perf(renderer): preserve unchanged remote mirror resources

* test(renderer): restore layout-value coverage and record the workspaceId dependency

Notes why browser page identity reuse is safe: browserPageEqual must keep
comparing workspaceId, since the removed-workspace page-list cleanup gates on
it. Also re-asserts the effective active leaf that the patch-only assertion
stopped covering.

Co-authored-by: Orca <help@stably.ai>

---------

Co-authored-by: Orca <help@stably.ai>
2026-08-10 21:20:46 -07:00
OrcaWinandOrcaWin 9deb72f9ed fix(git): support Windows-linked worktrees in WSL projects (#13483)
* fix(git): support Windows-linked worktrees in WSL projects

* fix(git): harden WSL linked worktree routing

* fix(test): defer WSL routing filesystem access

* test(git): type WSL routing probe mock

* fix(git): retry transient WSL route probes safely

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-08-10 21:19:01 -07:00
Neil 2734bccd68 refactor(stats): share usage tracking pane shell (#13472) 2026-08-10 21:13:04 -07:00
Neil 4bb7e7d050 refactor(feature-wall): remove retired onboarding preview (#13489) 2026-08-10 21:07:41 -07:00
NeilandOrca a65e0c5c97 perf(renderer): keep remote snapshot batches linear (#13676)
* perf(renderer): keep remote snapshot batches linear

* test(renderer): cover the prefix-colliding sibling worktree

The sibling-mapping test used a worktree id that shares no prefix with WT,
so it passed against the prefix-scan it was meant to pin. Use an id prefixed
by WT's and drain the new mapping index in the leak counters.

Co-authored-by: Orca <help@stably.ai>

---------

Co-authored-by: Orca <help@stably.ai>
2026-08-10 20:55:40 -07:00
Neil 0acf04a985 perf(ssh): cancel abandoned remote port scans (#13548) 2026-08-10 20:49:21 -07:00
Neil 5538584c74 perf(git): overlap status with conflict detection (#13529) 2026-08-10 20:48:00 -07:00
Neil e33863b2a9 refactor(onboarding): remove retired repository step (#13484) 2026-08-10 20:42:43 -07:00
Neil a944905451 refactor(onboarding): remove retired repository controller (#13492) 2026-08-10 20:42:12 -07:00
Neil 9796f7dc5f refactor(mobile): use shared GitHub Project sorting (#13459) 2026-08-10 20:41:34 -07:00
Neil a321ac3c8f refactor(mobile): use shared source-control decisions (#13453) 2026-08-10 20:41:31 -07:00
Neil e671c64dea refactor(utf8): centralize byte and chunk boundaries (#13445) 2026-08-10 20:41:01 -07:00
Neil af47fa10ac refactor(comments): share PR comment core (#13457) 2026-08-10 20:40:57 -07:00
Neil 6964f75cd0 refactor(renderer): share metadata list request lifecycle (#13524) 2026-08-10 20:40:26 -07:00
Neil 8c53e9e1b6 Share usage recent-session table (#13467) 2026-08-10 20:40:23 -07:00
Neil ef19809778 refactor(renderer): share usage provider slice lifecycle (#13527) 2026-08-10 20:39:51 -07:00
Neil fc9fd7208d refactor usage provider IPC plumbing (#13543) 2026-08-10 20:39:18 -07:00
Jinwoo Hong 665e0ead83 Fix repo-scoped Quick Commands across remote hosts (#13727) 2026-08-10 20:38:40 -07:00
Neil 65e2b5b598 refactor(usage): share provider store lifecycle (#13558) 2026-08-10 20:38:31 -07:00
Neil 556f469b0b refactor(mobile): remove orphaned PR composer (#13450) 2026-08-10 20:25:54 -07:00
Neil 75c6efd48b Remove obsolete pairing connection attempt (#13460) 2026-08-10 20:25:51 -07:00
Neil f9f8d7a8bf refactor(relay): remove obsolete status parser (#13475) 2026-08-10 20:25:48 -07:00
Neil bb6f0c1cb5 refactor(renderer): remove superseded GitHub background create (#13479) 2026-08-10 20:25:45 -07:00
Neil 34f46398d7 refactor(daemon): remove superseded PTY provider (#13477) 2026-08-10 20:25:43 -07:00
Neil f805189bff refactor(automations): remove unused Hermes output limits (#13497) 2026-08-10 20:25:39 -07:00
Neil 3203b0c405 refactor(onboarding): remove retired tour outcome tracker (#13498) 2026-08-10 20:25:36 -07:00
Neil 573eace89f refactor(persistence): remove unwired state bounds (#13499) 2026-08-10 20:25:33 -07:00
Neil d19f511786 refactor(reviews): remove retired queue foundation (#13500) 2026-08-10 20:25:30 -07:00
Neil ee8b9b2cc9 refactor(profiles): remove retired switcher UI (#13502) 2026-08-10 20:25:27 -07:00
Neil 01102536c6 refactor(daemon): remove obsolete production launcher (#13504) 2026-08-10 20:25:24 -07:00
Neil aa5e275026 refactor(sidebar): remove retired activity helpers (#13505) 2026-08-10 20:25:20 -07:00
Neil 1979f5a3e3 refactor(linear): remove replaced team combobox (#13506) 2026-08-10 20:25:16 -07:00
Neil 9359edc2b0 refactor(workspaces): remove replaced host combobox (#13507) 2026-08-10 20:25:13 -07:00
Neil 837ea3feec refactor(onboarding): remove retired capability checklist (#13509) 2026-08-10 20:25:09 -07:00
Neil d5c5322442 refactor(computer): remove orphaned helpers (#13511) 2026-08-10 20:25:06 -07:00
Neil a276e54e62 refactor(relay): remove unwired PTY replay index (#13518) 2026-08-10 20:25:03 -07:00
Neil a45adcfff0 refactor(emulator): remove unwired scrcpy control encoders (#13528) 2026-08-10 20:25:00 -07:00
Neil fb39308dfe refactor(daemon): remove abandoned binary framing (#13530) 2026-08-10 20:24:56 -07:00
Brennan Benson 3e3f48fe89 fix(native-chat): restore Codex model picker dispatch (#13669)
* fix(native-chat): restore Codex model picker dispatch

* fix(native-chat): type Codex effort picker command
2026-08-10 20:03:48 -07:00
Neil 7d1a17465e perf(computer-use): skip unused accessibility summaries (#13559) 2026-08-10 19:56:08 -07:00
OrcaWin 8c975b9d15 fix(terminal): avoid Windows PATH registry subprocesses (#13485) 2026-08-10 19:55:29 -07:00
Jinwoo Hong c7850eb59c fix(terminals): prevent retired workers from cold-resuming (#13708) 2026-08-10 19:49:34 -07:00
Brennan Benson c065a2d7e1 Preserve AskUserQuestion waits during parallel tool completions (#13714)
* fix(agent-hooks): preserve parallel question waits

* fix(agent-hooks): preserve child question waits
2026-08-10 19:23:40 -07:00
Brennan Benson 2f26e61647 fix(dashboard): keep agent map rings open while the pointer works inside them (#13682)
* fix(dashboard): keep agent map rings open while the pointer works inside them

The project and workspace rings drove their hover styling from `:hover` on the
ring element itself. A ring is a sibling of everything drawn inside it, so the
style dropped the moment the pointer crossed onto a workspace or an agent, and
a pan drag killed it outright — pointer capture retargets `:hover` to the
`<svg>` for the whole gesture. Both read as the ring pulsing open and shut.

Move the trigger to the containing group, wrapped in `:where()` so the existing
`.is-open` / `.is-selected` / status rules keep winning the same properties, and
add `.is-held` for the pan, driven by which rings the press landed in. The hold
releases on the first move after the button comes up, when the browser
recomputes `:hover` in that same event, so the two signals never both read off.

Hovering a workspace now also always shows its name and agent count. That label
was gated behind the declutter pass, which suppresses any label overlapping an
agent — at fleet zoom that is nearly all of them, so hover revealed nothing. It
now bypasses declutter and draws in a layer above every project, so a
neighbouring ring cannot wash it out.

* fix(dashboard): complete agent map ring interaction lifecycle
2026-08-10 19:04:50 -07:00
Neil 600b0b1c15 refactor(renderer): split WorktreeCard (#13715) 2026-08-10 18:45:11 -07:00