Commit Graph
113 Commits
Author SHA1 Message Date
Jinwoo HongandOrca 7ea359bd60 Add Claude Agent Teams native pane launcher (#4892)
* Add Claude Agent Teams native pane launcher

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

* Fix Agent Teams CI coverage checks

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

* Fix Claude Agent Teams split direction mapping

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

---------

Co-authored-by: Orca <help@stably.ai>
2026-06-08 16:11:32 -04:00
Neil f15dcd928c Stabilize OpenCode terminal rendering before release (#4850) 2026-06-08 01:00:29 -07:00
Neil c91ea599d9 Track split OSC metadata in headless terminals (#4783) 2026-06-07 05:27:58 -07:00
Neil 6caebb27f5 Preserve cold restore cwd in headless snapshots (#4782) 2026-06-07 05:13:18 -07:00
Neil 8bdc55cb81 Adopt seeded titles into headless terminal state (#4781) 2026-06-07 04:58:11 -07:00
Neil 733f77d522 Track terminal titles in headless snapshots (#4780) 2026-06-07 04:47:10 -07:00
Jinwoo HongandOrca 3600cab06d Fix zsh ZDOTDIR context in shell-ready wrappers (#4667)
Co-authored-by: Orca <help@stably.ai>
2026-06-04 17:17:47 -07:00
Jinjing 5484792271 Improve compact agent status spacing (#4448)
* fix: address review findings

* fix: address review findings
2026-06-02 00:11:56 -07:00
Neil 68d50b2f8d Fix parked browser wakeups and daemon PTY inspection (#4420) 2026-06-01 18:56:06 -07:00
Jinwoo HongandOrca f888acdb65 Revert Codex launch homes to shared runtime (#4400)
Co-authored-by: Orca <help@stably.ai>
2026-06-01 12:36:16 -07:00
Jinwoo Hong 57ac2ef08e Hot-swap Codex homes via active pointer
Route Codex terminal launches through stable active CODEX_HOME pointers for host and WSL launch homes, with account-switch repointing and validated Windows/WSL behavior.
2026-06-01 03:09:11 -04:00
Jinwoo Hong 83dcac0f93 Fix daemon Windows ConPTY double kill (#4340) 2026-05-31 20:52:34 -04:00
Neil a426f36fcb Fix packaged daemon stale bundle detection 2026-05-31 17:43:02 -07:00
Jinwoo HongandOrca 5bfa1413a5 Preserve live daemon PTYs across app updates (#4330)
Co-authored-by: Orca <help@stably.ai>
2026-05-31 17:21:03 -07:00
Jinwoo Hong 4cc0147005 Fix orchestration mail from WSL and SSH terminals (#3918) 2026-05-31 15:13:15 -04:00
Neil 90f7b2a424 fix: clean up daemon stream sockets (#4214) 2026-05-31 08:34:47 -07:00
Neil 62a8feca27 perf: bound daemon checkpoint fanout (#4161)
perf: bound daemon checkpoint fanout
2026-05-31 06:31:04 -07:00
Neil 918790fd47 fix: chunk oversized daemon stream events (#4160) 2026-05-31 06:30:24 -07:00
Neil f211036d2b perf: bound daemon ndjson lines (#4159) 2026-05-31 06:22:45 -07:00
Neil 61ed407635 fix: clear daemon cold restore cache on exit (#4117) 2026-05-31 04:52:11 -07:00
4d2c041e8c fix: pr-bug-scan validated finding from #2835 (#2873)
* fix: address pr-bug-scan validated finding from #2835

* test: cover async macOS resolver health check

---------

Co-authored-by: orca-bug-scan-bot <orca-bug-scan-bot@stably.ai>
Co-authored-by: Neil <4138956+nwparker@users.noreply.github.com>
2026-05-31 01:41:35 -07:00
Neil b235ff1e4d Fix stale packaged terminal daemon reuse (#3995) 2026-05-30 23:23:38 -07:00
Neil 181741d769 chore: enforce exhaustive switch handling 2026-05-30 13:18:12 -07:00
Neil ff01a70491 Clean up daemon client socket listeners 2026-05-30 13:02:14 -07:00
Neil 84e0af18c5 Skip malformed daemon history session dirs (#3633) 2026-05-30 12:57:30 -07:00
061c293b18 Add Git Bash Windows terminal option (#3209)
* Add Git Bash Windows terminal option

* Harden Git Bash terminal detection

---------

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
Co-authored-by: Jinwoo Hong <73622457+Jinwoo-H@users.noreply.github.com>
2026-05-30 15:26:11 -04:00
Neil 8666c4031b fix: allow dot-dot-prefixed pty session paths (#3705) 2026-05-30 12:02:18 -07:00
Neil 7d3b8333aa Clean up daemon hello handshake listeners (#3831) 2026-05-30 11:45:21 -07:00
1265d52d60 fix: time out daemon hello handshakes (#3739)
* fix: time out daemon hello handshakes

* test: cover daemon hello close races

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

---------

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-05-30 11:40:09 -07:00
Neil ac8146ab67 perf: handle large daemon pty reconciliation lists (#3785) 2026-05-30 10:11:34 -07:00
Neil feabbd2ea2 fix: clean up daemon health socket listeners (#3771) 2026-05-30 09:41:18 -07:00
Neil 6368562230 fix: clean up production daemon shutdown listener (#3765) 2026-05-30 09:22:01 -07:00
Neil 1c594ac381 fix: clean up daemon socket probe listeners (#3763) 2026-05-30 09:15:02 -07:00
Neil 44533684b0 fix: clean up daemon socket startup listeners (#3717) 2026-05-30 07:24:06 -07:00
Trevin Chow 519a120828 feat: show the running coding agent's icon in terminal tabs (#3410) 2026-05-30 02:14:22 -04:00
Jinwoo Hong 0d060e1d21 Make WSL first-class for local agents and provider accounts (#2649) 2026-05-29 16:06:33 -07:00
Jinwoo Hong 1371402bc6 Preserve live PTYs during daemon resolver refresh (#2974) 2026-05-27 23:40:34 -07:00
Neil dafc35bbc8 fix: clean daemon init startup listeners (#2884)
* fix: clean daemon init startup listeners

* test: cover daemon startup listener cleanup
2026-05-26 20:27:47 -07:00
Neil fe7042b948 fix: clean production launcher startup listeners (#2885) 2026-05-26 20:24:42 -07:00
Neil 721ef42ab8 fix: clear daemon server startup error listener (#2877) 2026-05-26 20:14:17 -07:00
Neil a6f9a5826e Add Command Code agent status tracking
Adds Command Code hook installation, status normalization, launch seeding, and terminal-output fallback detection for working/done sidebar status. Includes review hardening for long-running tool repaint cadence and prompt sanitization across split ANSI chunks.
2026-05-26 14:45:34 -07:00
Neil 016b574fe9 Fix macOS daemon DNS resolver reuse (#2835) 2026-05-26 13:13:08 -07:00
ddda84f529 fix(shell-ready): honor user's ZDOTDIR (XDG-layout fix, redo of #1737) (#1947)
* fix(shell-ready): honor ZDOTDIR without breaking zsh scoping

Fixes #1866

This reimplements PR #1737 (reverted in #1864) with a safer approach
that preserves normal zsh startup semantics.

**Core fix**: Discover ZDOTDIR by sourcing user ~/.zshenv in a subshell
instead of inside a wrapper function. This preserves top-level zsh
scoping for common patterns like `typeset -U path` that broke in the
original implementation.

**Shell safety improvements**:
- Use `printf '%s\n'` instead of `echo` for capturing ZDOTDIR (handles
  special characters in paths safely)
- Subshell isolates early returns and side effects from wrapper

**Code quality**:
- Extract duplicated zsh wrapper template to `src/main/shell-templates.ts`
- Both local-pty and daemon paths now share identical wrapper logic

**Test coverage**:
- Add live zsh subprocess tests that spawn real zsh to verify:
  - XDG ZDOTDIR discovery works
  - `typeset -U path` in .zshrc preserves top-level scoping
  - Early returns in .zshenv don't crash the wrapper
  - Vanilla (non-XDG) configs fall back to HOME correctly
- Template structure tests validate subshell discovery logic

Before (broken):
```zsh
__orca_source_user_zshenv() {
  source "$HOME/.zshenv"  # typeset becomes function-scoped
}
```

After (fixed):
```zsh
_orca_discovered_zdotdir=$(
  unset ZDOTDIR
  [[ -f "$HOME/.zshenv" ]] && source "$HOME/.zshenv" 2>/dev/null
  printf '%s\n' "${ZDOTDIR}"
)
export ORCA_ORIG_ZDOTDIR="${_orca_discovered_zdotdir:-${_orca_spawn_orig_zdotdir:-$HOME}}"
```

The subshell sources .zshenv at top-level (preserving normal scoping),
captures only the ZDOTDIR value, then exits. User rcfiles (.zshrc, etc.)
are still sourced at the wrapper's top level, so all scoping works normally.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* Add shell-script-literal test framework and improvements

Adds a new declarative test framework for shell-ready tests that uses
literal shell scripts (copy-pastable into terminals) with inline snapshots.

Framework features:
- Shell scripts as string literals with # Run: marker to split setup/test
- Direct script execution (no brittle parsing) via temp files
- Path normalization for reproducible snapshots (<HOME>, <WRAPPER_DIR>)
- Auto-detects shell from command, supports bash/zsh/sh
- Inline snapshot testing with vitest toMatchInlineSnapshot()

Code quality improvements:
- Extract escapeRegex to shared string-utils.ts (deduplicates 2 copies)
- Refactor shell-templates.ts for readability (condense comments, add structure)
- Pre-compile regex patterns to avoid hot-path allocation
- Fix path normalization to sort by length (prevent nested path corruption)
- Fix actualUserHome handling to skip empty values

All tests passing (64/64 shell-ready tests, 55/55 affected tests).

Files added:
- src/main/providers/__tests__/shell-ready-framework/shell-script-test.ts
- src/main/providers/__tests__/shell-ready-framework/README.md
- src/main/providers/__tests__/shell-ready-framework-example.test.ts
- src/shared/string-utils.ts

Files modified:
- src/main/shell-templates.ts (readability cleanup)
- src/main/codex/config-toml-trust.ts (use shared escapeRegex)
- src/main/daemon/shell-ready.test.ts (updated for new framework)
- src/main/providers/local-pty-shell-ready.test.ts (updated for new framework)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* fix(shell-ready): preserve zshenv semantics

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: Neil <4138956+nwparker@users.noreply.github.com>
2026-05-26 00:24:45 -07:00
Neil ab80339158 Fix shell-launched OMP status hooks (#2821)
* Fix shell-launched OMP status hooks

* Update oh-my-pi branding

* Add OMP to mobile agent metadata
2026-05-25 22:20:15 -07:00
formatme efd75da5d6 Add OMP as first-class TUI agent
Adds OMP as a first-class TUI agent and keeps Pi/OMP overlay state isolated across local and relay PTY paths.\n\nValidated locally with focused Vitest coverage, typecheck, lint, git diff --check, and Electron manual verification using installed omp (omp/15.3.2).
2026-05-25 18:35:48 -07:00
Brennan BensonandOrca a2c71461b4 Isolate Codex hooks in Orca runtime home (#2350)
Co-authored-by: Orca <help@stably.ai>
2026-05-25 15:07:40 -07:00
Jinjing c93dd901a3 fix: address review findings (#2695) 2026-05-23 12:33:49 -07:00
AIEPhoenix bd6139878c fix(daemon): strip Electron node flag from PTYs
Strip ELECTRON_RUN_AS_NODE from daemon-spawned PTY environments so user shells do not inherit Electron's internal Node-mode flag. Adds regression coverage for the daemon PTY env boundary.

Fixes #2414.
2026-05-22 00:12:54 -07:00
Neil cef5570188 perf: flush daemon stream data per session (#2595) 2026-05-21 21:40:37 -07:00
Neil 8aa4d3df19 perf: checkpoint daemon PTYs only when dirty (#2593) 2026-05-21 21:27:53 -07:00