- New runtime-status slice holds per-environment status (boot hydration,
settings-pane probes, host-header checks all write through it); stale
environments dropped on list reload
- buildSidebarHostOptions forwards live status to the host registry at
all call sites, so compat verdicts and blocked health render in the
scope strip, options menu, host headers, and browser pane
- New-workspace composer defaults to a repo on the focused host scope
(explicit draft/initial/active choices still win)
- SSH hosts with expired auth say "Authentication needed" in the host
header instead of icon-only
Co-authored-by: Orca <help@stably.ai>
Replace the variable chip Tooltips with HoverCards to allow scrolling
through long prompt previews (such as the base prompt template).
* Pass action-specific base prompt previews (commit, PR, branch name)
into the text generation dialogs to populate the variable chips.
* Style the hover cards to support vertical scrolling with a sleek
scrollbar and update theme colors to match design guidelines.
* Add unit tests for the variable chips and dialog form behavior.
When on full-page views (like Tasks or Landing) with an open sidebar
but no active worktree, mirror the split-column titlebar layout.
This positions the left titlebar controls directly above the sidebar,
avoiding a layout gap and ensuring consistent visual alignment.
- Use the active runtime environment RPC for fetching, paging, and
counting work items when available, falling back to local IPC.
- Scope in-flight work item request keys to specific environment targets
to avoid incorrect deduplication during runtime transitions.
- Discard and skip writing work item responses to cache if the active
runtime environment changed while the request was in flight.
Keep the worktree details hover card visible while the review actions
dropdown is open. This change prevents the hover card from unmounting
when interacting with the portaled dropdown items, and adds support
for unlinking GitLab MRs with appropriate terminology.
* Add remote SSH file download
Implement the remote file download flow described in docs/remote-file-download.md, including main/preload IPC wiring, SSH provider support, file explorer UI actions, and tests.
* Add open action to download toast
* rm design doc
* Detect active agents from title/launch hints before hooks report
* Fix active agent detection in split-pane layouts with lone background ti
* Probe runtime for manually started agents during note-send detection
- Query runtime via `terminal.isRunningAgent` to detect active agents
before titles or status hooks have reported them.
- Extract active-agent-target resolution utilities and state selectors
to a dedicated `active-agent-note-target.ts` file.
* fix: address pr-bug-scan validated finding from #4741
Plain-Escape branch in onTerminalKeyDown now runs the three unread clears before its early return, so Escape dismisses attention again.
* E2E: test that plain Escape clears focused terminal tab attention
---------
Co-authored-by: orca-bug-scan-bot <orca-bug-scan-bot@stably.ai>
Co-authored-by: Jinjing <6427696+AmethystLiang@users.noreply.github.com>
- New `simulator-palette-search.ts` module searches simulator/unified tabs by label, alias ("mobile", "simulator", "ios"), worktree name, and repo name
- Rename "Browser Tabs" section to "Open Tabs" to reflect the unified browser + simulator tab listing
- Simulator tabs appear alongside browser pages in the palette, with the same score-based ordering, context-first sort, and empty-query prioritization for current/active worktree tabs
* fix: detect agents via install-dir resolver when which misses on GUI launch
The Agents settings pane reports every agent as "Not installed" on a cold
GUI launch even when the CLIs are installed and runnable from Terminal.
detectInstalledAgents resolves each agent with `which`, which only sees
process.env.PATH. GUI-launched Electron inherits a stripped PATH from launchd
that omits the user's shell-rc dirs (~/.local/bin, ~/Library/pnpm,
~/.asdf/shims, nvm/volta/fnm/mise shims, ...). The synchronous seed in
patchPackagedProcessPath plus the async shell-PATH hydration both race the
first detection, and the first result is cached for the session, so the pane
can latch onto an empty "nothing installed" snapshot until the user relaunches
from a terminal or clicks Refresh.
Fall back to resolveCliCommand (the same resolver the spawn path uses in
src/main/codex-cli/command.ts) when the PATH lookup misses. Detection now has
the same reach as launch: if Orca can run it, Orca detects it, independent of
PATH-hydration timing. No false positives — an uninstalled agent still resolves
to a bare command name rather than an absolute path.
Verified on macOS that resolveCliCommand resolves claude (~/.local/bin), codex
(~/.asdf/shims), and opencode (~/Library/pnpm) under a stripped PATH.
* fix: bulk resolve agent install-dir detection
Co-authored-by: Orca <help@stably.ai>
* fix: ignore node navigator for linux webgl policy
Co-authored-by: Orca <help@stably.ai>
---------
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
* fix(ssh): sync ~/.ssh/config on import and Manage open
importFromSshConfig only inserted unknown hosts and never updated an
existing target, so a rotated port (or any changed config field) was
silently ignored on re-import. Make it an upsert: config-sourced targets
are refreshed in place, genuinely new hosts are inserted, and the SSH
Manage pane auto-syncs when it opens so changes appear without a manual
Import click.
A new optional SshTarget.source ('ssh-config' | 'manual') protects
user-created and user-edited targets from being overwritten by sync —
editing a target in the UI detaches it from config-sync. Unchanged
targets are skipped so a repeat sync performs no disk write. Editing a
target now also carries cleared optional fields (identity file, proxy
command, jump host) so removing a config-derived value actually deletes
it instead of silently keeping the stale value through the partial merge.
Resolves item #1 of #4684 (item #2 was fixed in #4860).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(ssh): preserve legacy manual targets during config sync
Co-authored-by: Orca <help@stably.ai>
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>