* Fix web remote client workspace switching and terminal wake regressions.
Stop activation echo loops between paired web clients and the host runtime, and harden web terminal overlay sizing so slept workspaces wake with full-width PTY dimensions.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Fix web agent tab close and update tests for host-backed worktree selection.
Route agent quick launches through the host in paired web clients so tab close works, and align runtime/web IPC tests with setActiveWorktree plus notifyHostRuntime: false.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Fix typecheck for host-backed agent launches and address review feedback.
Guard null tab ids from web host routing, narrow runtime environment ids for tab close, and respect mobile resize locks in web refit retries.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Fix web tab close and respawn terminals when waking slept workspaces.
Route tab close through host-backed vs local fallback logic, scope title tooltips away from the close button, and create host terminals when woke workspaces still have dead PTY rows.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Fix web terminal fit on worktree switch and harden paired tab lifecycle.
Guard against sub-minimum xterm fits during overlay resume, route agent tab closes through unified/runtime helpers, and dedupe wake-time terminal respawns.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
* Show Kimi Code subscription usage in the status bar
Add a read-only rate-limit fetcher for Kimi Code that reads the OAuth token from ~/.kimi-code/credentials (honoring KIMI_CODE_HOME) and queries Kimi's usages endpoint, surfacing the 5h session window and weekly quota in the existing status-bar rate-limit UI alongside Claude/Codex/Gemini. Gated on the kimi CLI being detected, with a settings toggle.
Read-only by design: the fetcher never refreshes or writes credentials — rotating Kimi's refresh token would log out the user's live CLI session — and never calls Kimi's completion endpoint. It only reads the existing token and the usages quota endpoint, mirroring how the CLI itself reads managed usage.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Harden Kimi usage status handling
Preserve cached quota on transient Kimi credential/API failures and migrate the default status-bar item for existing users.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Adds ACK-backed renderer output admission control for PTY data, bounding per-PTY and global renderer in-flight output while preserving PTY ingestion for runtime state and notifications.
Substring detection mis-fired on titles like "opencode-blinker" or
"claude-scratch", labeling a Codex tab as OpenCode whenever the terminal
title fell back to the bare worktree directory name.
- Extract token-matching regexes into `agent-name-token-match.ts` with
a boundary guard that rejects path separators and hyphenated compounds
- Replace all `lower.includes(name)` calls in `agent-detection.ts` with
`titleHasAgentName()`; re-export `AGENT_NAMES` to keep existing importers working
- Allow `.exe/.cmd/.bat/.ps1` suffixes so Windows launcher process names
(e.g. `openclaude.exe`) still resolve correctly
- Update tests: cwd-path fragments now return null; real agent titles
that contain the name as a proper token still resolve correctly
* fix(browser): set up session policies for default browser partition
The default browser partition (persist:orca-browser) was created in the
registry constructor but never got session policies — permission handlers,
download handlers, WebAuthn handlers, etc. — because:
1. hydrateFromPersisted() explicitly skips the default partition
2. createProfile() never targets the default partition
3. restorePersistedUserAgent() only restored the user agent, not policies
This meant sites in the default browser partition that requested
clipboard-sanitized-write (or any other permission) were denied by
Electron's default behavior, since no handler was registered.
Fix: call setupSessionPolicies(ORCA_BROWSER_PARTITION) in
restorePersistedUserAgent(), which is the startup path that runs after
app is ready. The configuredPartitions guard makes this idempotent.
Also adds a test verifying the default partition gets its session
policies on restore.
Co-authored-by: Orca <help@stably.ai>
* fix(browser): preserve clipboard permissions for browser session
Co-authored-by: Orca <help@stably.ai>
* Initialize browser sessions at app startup
- Move cookie replay and persisted session setup out of renderer IPC wiring
- Install default browser partition policies once per process before webviews load
- Cover startup ordering, retry behavior, permission denial, downloads, and WebAuthn policies
---------
Co-authored-by: Prethish-Complyance <prethish@complyance.io>
Co-authored-by: Orca <help@stably.ai>
Co-authored-by: Jinjing <6427696+AmethystLiang@users.noreply.github.com>