Commit Graph
531 Commits
Author SHA1 Message Date
brennanb2025andOrca 98383468db Rename parallel worktree tour step
Co-authored-by: Orca <help@stably.ai>
2026-05-31 22:30:15 -07:00
brennanb2025andOrca beb609619a Point create worktree tour at real button
Co-authored-by: Orca <help@stably.ai>
2026-05-31 22:05:56 -07:00
brennanb2025andOrca 37ffeef6bb Refine split terminal tour copy
Co-authored-by: Orca <help@stably.ai>
2026-05-31 21:42:00 -07:00
brennanb2025andOrca d6c0421e07 Count imported worktrees in setup guide
Co-authored-by: Orca <help@stably.ai>
2026-05-31 21:21:49 -07:00
brennanb2025andOrca 16587f245d Refine parallel work onboarding tours
Co-authored-by: Orca <help@stably.ai>
2026-05-31 20:52:51 -07:00
brennanb2025andOrca 347179ea99 Add new-user parallel work activation tour
Co-authored-by: Orca <help@stably.ai>
2026-05-31 11:47:56 -07:00
brennanb2025 096a63b4a0 Track two-agent setup from agent hooks 2026-05-30 10:08:56 -07:00
brennanb2025andOrca 9f126784db Polish setup guide animations
Co-authored-by: Orca <help@stably.ai>
2026-05-29 19:48:17 -07:00
brennanb2025andOrca 07b649207d Add getting started setup guide
Co-authored-by: Orca <help@stably.ai>
2026-05-29 19:35:21 -07:00
brennanb2025andOrca 686c9a9682 Clarify workspace creation tour copy
Co-authored-by: Orca <help@stably.ai>
2026-05-28 16:49:25 -07:00
brennanb2025andOrca a24e3694d5 Split contextual tour test coverage
Co-authored-by: Orca <help@stably.ai>
2026-05-28 16:32:08 -07:00
brennanb2025andOrca 7acde5fab2 Add workspace creation contextual tour
Co-authored-by: Orca <help@stably.ai>
2026-05-28 16:15:55 -07:00
brennanb2025andOrca d06a623a31 Remove workspace creation contextual tour
Co-authored-by: Orca <help@stably.ai>
2026-05-28 15:55:05 -07:00
brennanb2025andOrca 888c36e31d Improve workspace creation tour copy
Co-authored-by: Orca <help@stably.ai>
2026-05-28 15:34:01 -07:00
brennanb2025 ccf36eda7b Merge remote-tracking branch 'origin/main' into brennanb2025/contextual-feature-tours
# Conflicts:
#	docs/reference/feature-discovery-interaction-tracking.md
#	src/main/persistence.test.ts
#	src/main/persistence.ts
#	src/main/runtime/rpc/dispatcher-feature-interactions.test.ts
#	src/main/runtime/rpc/dispatcher.ts
#	src/main/runtime/rpc/methods/client-ui.test.ts
#	src/main/runtime/rpc/methods/client-ui.ts
#	src/renderer/src/App.tsx
#	src/renderer/src/components/automations/AutomationsPage.tsx
#	src/renderer/src/components/browser-pane/BrowserPane.tsx
#	src/renderer/src/components/onboarding/use-onboarding-flow-persistence.ts
#	src/renderer/src/components/right-sidebar/useCreatePullRequestDialogFields.ts
#	src/renderer/src/components/settings/NotificationsPane.tsx
#	src/renderer/src/components/sidebar/AddRepoSetupStep.tsx
#	src/renderer/src/store/slices/browser.ts
#	src/renderer/src/store/slices/diffComments.ts
#	src/renderer/src/store/slices/tabs.ts
#	src/renderer/src/store/slices/terminals.ts
#	src/renderer/src/store/slices/ui.test.ts
#	src/renderer/src/store/slices/ui.ts
#	src/renderer/src/store/slices/workspace-space.ts
#	src/renderer/src/web/web-preload-api.test.ts
#	src/shared/constants.ts
#	src/shared/feature-interactions.test.ts
#	src/shared/feature-interactions.ts
#	src/shared/types.ts
2026-05-28 14:55:23 -07:00
Brennan BensonandOrca 4b32afeff2 Track feature interactions (#2959)
Co-authored-by: Orca <help@stably.ai>
2026-05-28 14:44:35 -07:00
Jinwoo HongandOrca 638d565e5e Improve terminal attention notifications (#2562)
Co-authored-by: Orca <help@stably.ai>
2026-05-28 14:24:23 -07:00
95862116aa fix: use Gemini BeforeTool hook for status (#2922)
* fix: disable Gemini PreToolUse hook install

* fix: use Gemini BeforeTool hook for status

- install Gemini's native BeforeTool hook instead of invalid PreToolUse\n- keep sweeping stale managed PreToolUse entries during reinstall\n- normalize Gemini BeforeTool payloads into in-flight tool status

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

* fix: cover Gemini hook migration for remote installs

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

* test: cover local Gemini hook sweep preservation

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

---------

Co-authored-by: ramzi <ramzi@upsys-consulting.com>
Co-authored-by: Orca <help@stably.ai>
2026-05-28 17:10:57 -04:00
Brennan BensonandOrca a68f0d20f7 Track nested repo import telemetry (#3006)
Co-authored-by: Orca <help@stably.ai>
2026-05-28 13:38:46 -07:00
33650832e4 fix: prevent relay fs.rename from clobbering an existing destination (#2926) (#2937)
* fix: prevent relay fs.rename from clobbering an existing destination

The remote file-explorer rename path (provider.rename -> relay
fs.rename) called fs.rename unconditionally, silently overwriting any
file/folder already at the destination. The local rename already
guards via assertFileExplorerRenameDestinationAvailable; apply the
same guard on the relay to restore local/remote parity (case-only
renames on case-insensitive filesystems still allowed).

Moved the collision helper from src/main to src/shared so both the
main process and the remotely-deployed relay share one implementation.

Closes #2926

* review: make SSH safe rename explicit

- keep relay fs.rename raw and add fs.renameNoClobber for user-facing renames
- route SSH file-explorer rename paths through renameNoClobber
- add relay/provider/runtime regression coverage and stale-relay fail-closed handling
- verified live SSH rename behavior on openclaw 2

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

---------

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-05-28 16:14:57 -04:00
Neil 286a92ff23 Add hidden admin restart action (#2970) 2026-05-27 22:12:10 -07:00
Jinwoo HongandOrca d917240499 Guard untracked discard against symlink escapes (#2947)
Co-authored-by: Orca <help@stably.ai>
2026-05-27 19:48:27 -07:00
brennanb2025andOrca cd89577bff Fix feature interaction tracking
Co-authored-by: Orca <help@stably.ai>
2026-05-27 17:43:45 -07:00
Jinwoo HongandOrca f0fbe5be7f Align incoming git graph boundary lanes (#2934)
Co-authored-by: Orca <help@stably.ai>
2026-05-27 17:04:36 -07:00
Brennan BensonandOrca 76ae675a01 Add nested repo group imports (#2866)
Co-authored-by: Orca <help@stably.ai>
2026-05-27 16:22:03 -07:00
Jinwoo HongandOrca 4581565e2b Fix git history graph scope (#2919)
Co-authored-by: Orca <help@stably.ai>
2026-05-27 16:15:47 -07:00
Jinwoo HongandOrca 09f878c889 Fix macOS Option-letter floating terminal shortcut (#2920)
Co-authored-by: Orca <help@stably.ai>
2026-05-27 16:10:06 -07:00
Brennan BensonandOrca a15b13b02d Customize Source Control AI prompts (#2916)
Co-authored-by: Orca <help@stably.ai>
2026-05-27 16:03:36 -07:00
Trevin Chowandbrennanb2025 a65f7b4216 feat: auto-rename workspace branch from the first prompt (#2888)
Co-authored-by: brennanb2025 <brennankbenson@gmail.com>
2026-05-27 14:09:43 -07:00
Jinwoo HongandOrca 770536ef7e Auto-detect repo icons when adding projects (#2786)
Co-authored-by: Orca <help@stably.ai>
2026-05-27 13:48:40 -07:00
brennanb2025andOrca 308bf25a6c Split AI commit and PR interaction tracking
Co-authored-by: Orca <help@stably.ai>
2026-05-27 11:18:43 -07:00
brennanb2025andOrca b901184dcc Track contextual feature interactions
Co-authored-by: Orca <help@stably.ai>
2026-05-27 11:15:31 -07:00
48a1923756 fix(terminal): flatten multiline quick commands into shell list (#2903)
Multiline quick commands should behave like a shell command list, not a series of already-queued PTY lines. When a foreground command reads stdin, raw newline delivery can be consumed before the shell sees later cd/pwd lines; terminal paste avoids that but shows the whole block as pasted input before execution.

Flatten newline-separated quick commands into a semicolon-delimited command list before active-pane dispatch and new-tab startup queuing. The shell parses the list once, so later commands run after earlier foreground commands exit and directory changes remain in the active shell.

Fixes #2844

Co-authored-by: Prethish-Complyance <prethish@complyance.io>
Co-authored-by: Orca <help@stably.ai>
2026-05-27 01:06:47 -07:00
Neil c40a430596 Fix Antigravity agent status stability (#2904) 2026-05-27 00:53:10 -07:00
Jinjing 5783c4192b Improve Linear issue editing flow (#2901)
* fix: address review findings

* fix: update Linear RPC test
2026-05-26 23:15:33 -07:00
brennanb2025andOrca 82e777c374 Track feature discovery interactions
Co-authored-by: Orca <help@stably.ai>
2026-05-26 22:20:46 -07:00
Jinwoo HongandOrca 3f8fad9e9e Improve mobile terminal startup and scrolling (#2828)
Co-authored-by: Orca <help@stably.ai>
2026-05-27 00:59:14 -04:00
Brennan BensonandOrca 54c2ef89da Handle force delete for orphaned worktree directories (#2757)
Co-authored-by: Orca <help@stably.ai>
2026-05-26 20:28:51 -07:00
Trevin ChowandNeil b2b5cac9a9 Add per-file line counts to the source control sidebar (#2865)
* Add per-file line counts to the source control sidebar

Show +N/-N (green/red) next to each file in the Changes, Untracked, and
Committed-on-branch sections so the magnitude of a change is visible at a
glance. Counts are computed per staging area via `git diff --numstat`;
untracked/new files count their full contents as additions and binary
files show no count.

Consolidate numstat parsing and binary-buffer detection into shared
modules reused by the local status path, the SSH/relay path, and the
existing branch-compare code. Include added/removed in the status-entry
equality check so the sidebar doesn't re-render on unchanged polls.

* fix: harden source control line counts

---------

Co-authored-by: Neil <4138956+nwparker@users.noreply.github.com>
2026-05-26 20:09:54 -07:00
Jinjing 6a9be249f5 feat: add external task filter links (#2871) 2026-05-26 20:07:03 -07:00
brennanb2025andOrca 2958ad09db Refine contextual tour surfaces
Co-authored-by: Orca <help@stably.ai>
2026-05-26 19:55:36 -07:00
Neil 9b2c05fa77 Fix keyboard layout shortcut dispatch
Fix shortcut dispatch so app commands follow the produced logical key for the active keyboard layout, while preserving intentional physical-code fallbacks for terminal byte paths and unavailable logical keys.\n\nCloses #2858
2026-05-26 18:28:55 -07:00
Brennan BensonandOrca 91991d6186 Improve refresh local base ref UX (#2570)
Co-authored-by: Orca <help@stably.ai>
2026-05-26 18:28:41 -07:00
Brennan BensonandOrca b7832c0790 Persist worktree creation base in git config (#2859)
Co-authored-by: Orca <help@stably.ai>
2026-05-26 15:54:07 -07:00
Neil eb579a0e54 Fix SSH sessions after host sleep 2026-05-26 14:53:16 -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 35411bd76e Confirm onboarding dismissal 2026-05-26 01:49:39 -07:00
Yusuke Hata 36b4b726fa feat(terminal): add terminalJISYenToBackslash setting (#2818) 2026-05-26 00:50:15 -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
Jinwoo HongandOrca 6f18d362cc Improve mobile markdown editing (#2826)
Co-authored-by: Orca <help@stably.ai>
2026-05-26 00:07:53 -07:00