Commit Graph
1732 Commits
Author SHA1 Message Date
Jinjing 35c3f86c82 Style commit text area to match input tokens and fix disabled state (#6339)
* Style commit text area to match input tokens and fix disabled state

- Update borders and shadows to match standard input tokens.
- Style the disabled state explicitly to prevent Chromium's user-agent
  styles from washing out the field outline.
- Add dark mode background styling overrides.

* Improve timeline items assertions in work-item-details test

Extract timelineItems to a local variable and add an explicit null check to prevent TypeScript compilation errors when calling the .at method.
2026-06-25 01:18:31 -07:00
Jinjing 56bf9eb333 Add GitHub issue timeline activity feed to details dialog (#6330)
* Add GitHub issue timeline activity feed to details dialog

Fetch and display issue timeline events (assignments, mentions, closes,
reopenings, and project board column moves) in a unified activity tab
within the GitHub item details dialog.

- Query the GitHub REST timeline endpoint up to a bounded 300 items.
- Merge comments and timeline events into a single sorted conversation.
- Render tailored icons, links, and localizable messages per event.
- Ensure issue reply targets are not incorrectly filtered by stale PR state.
- Correctly update local item state from details payload.

* Cap issue timeline pagination by supported activities

Count only mapped, supported timeline items instead of raw REST events
when checking the maximum item threshold. This prevents pagination from
stopping early when pages contain many unsupported event types.
2026-06-24 23:22:42 -07:00
7cde0f0b76 fix(ai-vault): surface a workspace's own sessions past the recency cap (#6273)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Orca <help@stably.ai>
Co-authored-by: brennanb2025 <brennankbenson@gmail.com>
2026-06-24 22:03:35 -07:00
79d05110ed fix(orchestration): release dispatch lock when worker_done is sent via orchestration.send (#6317)
* fix(orchestration): release dispatch lock when worker_done is sent via orchestration.send (#6090)

* fix: preserve coordinator lifecycle accounting

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

---------

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-06-24 20:30:55 -07:00
Rod BoevandJinwoo Hong 1732648928 fix(codex): prevent duplicate config.toml hook trust key on Windows (#6318)
* fix(codex): prevent duplicate config.toml hook trust key on Windows (#6163)

* fix codex hook trust key normalization

---------

Co-authored-by: Jinwoo Hong <73622457+Jinwoo-H@users.noreply.github.com>
2026-06-24 20:29:24 -07:00
Jinwoo HongandOrca 0be512fc23 Add diff word wrap toggle (#6214)
Co-authored-by: Orca <help@stably.ai>
2026-06-24 19:26:50 -07:00
Jinwoo HongandOrca 634a1b27e4 fix: group multi-host projects by git remote identity (#6309)
* test: reproduce multi-host legacy project split

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

* fix: group multi-host projects by git remote identity

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

* fix: tolerate lightweight runtime repo list handlers

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

* fix: make git remote identity enrichment nonblocking

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

* fix: use projected setups for sidebar grouping

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

---------

Co-authored-by: Orca <help@stably.ai>
2026-06-24 19:19:31 -07:00
e65306cb2f fix(codex): sanitize hooks config writes (#6247)
Co-authored-by: Orca <help@stably.ai>
Co-authored-by: brennanb2025 <brennankbenson@gmail.com>
2026-06-24 19:12:21 -07:00
Jinwoo Hong bad9afe090 Fix pwsh availability cold-start cache (#6313) 2026-06-24 21:07:15 -04:00
Brennan BensonandOrca 14afd1314d Zoom the app after leaving terminal focus (#6301)
Co-authored-by: Orca <help@stably.ai>
2026-06-24 16:31:36 -07:00
Brennan BensonandNeil 6574e764d7 Bound Windows PR refresh crash storms (#6203)
Co-authored-by: Neil <neil@stably.ai>
2026-06-24 00:21:56 -07:00
0c0367ea88 feat(agents): native Xiaomi MiMo Code support (#6239)
* feat(agents): native Xiaomi MiMo Code support

Add mimo-code TUI agent (detect mimo, --prompt, --session resume).
Inject MIMOCODE_HOME overlay and /hook/mimo-code status plugin on mimo
launch when agent status hooks are enabled; restore via shell-ready
wrappers. Reuse OpenCode-family hook normalization in the listener.

SSH remote MiMo hook overlays are not included (local/daemon first).

Closes #6220

* fix(mimo): remirror overlay config idempotently

rmSync overlay config before mirror so a second mimo launch does not
hit EEXIST in mirrorEntry and fall back to the user MIMOCODE_HOME.

* review: harden mimo code support

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

---------

Co-authored-by: Doan Bac Tam <24356000+doanbactam@users.noreply.github.com>
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-06-24 00:17:49 -07:00
Brennan BensonandNeil 5fc1fb3c25 Coalesce renderer process-gone crash bursts (#6202)
Co-authored-by: Neil <neil@stably.ai>
2026-06-23 20:59:06 -07:00
Jinjing 93bf26296f Extract lifecycle message reconciliation to standalone module (#6226)
- Decouple heartbeat and worker_done logic from the main coordinator
  to allow re-use in the orchestration.check RPC method.
- Reconcile unread lifecycle messages during orchestration.check so that
  manual coordinators can authoritatively process completions and
  heartbeats even if they bypass the main coordinator loop.
- Add unit tests validating task completion, heartbeat recording, and
  safety checks against stale or unauthorized worker_done payloads.
2026-06-23 20:41:45 -07:00
Brennan Benson e03a1cf769 Prevent managed agent hooks from hanging (#6148) 2026-06-23 17:22:10 -07:00
Jinwoo HongandOrca 5d8617bc71 Fix mobile workspace parity (#6207)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 17:07:28 -07:00
Jinwoo HongandOrca ce403c09d5 Add GitHub task close reason parity (#6141)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 15:18:46 -07:00
Brennan BensonandOrca a2fd8c11c2 Reduce source-control background load during refreshes (#6189)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 15:06:38 -07:00
Ricardo Sawir ffa80eb5bb Fix Windows directory cwd prefixes (#6116) 2026-06-23 13:00:09 -07:00
Jinwoo HongandOrca dd421a054b Fix Codex session history titles from injected context (#6151)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 12:19:15 -07:00
Brennan BensonandOrca 83f49818d3 Detect remote agents from shell PATH (#6157)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 11:31:41 -07:00
03fd869b92 feat(ai-vault): support OpenCode SQLite session storage (#5925)
Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Orca <help@stably.ai>
Co-authored-by: brennanb2025 <brennankbenson@gmail.com>
2026-06-23 11:18:17 -07:00
Brennan BensonandOrca 8c4f57e8ef Reduce repeated git probes during worktree refresh (#6153)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 11:07:49 -07:00
Jinjing 953b325180 Scope Claude Keychain lookup and disable PTY fallback for system auth (#6180)
* Scope Claude Keychain lookup and disable PTY fallback for system auth

* Scope macOS Keychain credential lookups to the config directory first to support Claude Code 2.1+, falling back to the legacy system default.
* Disable Claude CLI PTY execution fallback for system-default accounts during usage refreshes to avoid launching unexpected browser auth flows.

* Disable Claude PTY fallback when auth preparation is unavailable

Treat missing Claude auth preparation as system-default. This aligns
the PTY fallback gate to prevent background refreshes from triggering
interactive authentication flows when no auth is configured.
2026-06-23 10:38:37 -07:00
Jinwoo Hong c36109ee80 fix: normalize MSYS cwd for Windows terminals (#6126) 2026-06-22 20:54:41 -07:00
ac3ab72b52 fix(jira): surface issue-search failures instead of a misleading empty list (#5958)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Orca <help@stably.ai>
Co-authored-by: brennanb2025 <brennankbenson@gmail.com>
2026-06-22 20:27:38 -07:00
1f164daf71 Reduce git trace and branch compare polling churn (#6002)
* fix: bound git trace volume

* fix: reduce branch compare polling churn

* test: add benchmark artifact comparison tooling

* fix: address benchmark and polling review comments

* fix: keep branch compare fresh and harden benchmark reports

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

* Tighten benchmark annotations and polling cleanup

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

* Handle missing git status heads in Source Control tests

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

---------

Co-authored-by: Wolfgang Schoenberger <221313372+wolfiesch@users.noreply.github.com>
Co-authored-by: brennanb2025 <brennankbenson@gmail.com>
Co-authored-by: Orca <help@stably.ai>
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
2026-06-22 19:13:32 -07:00
Ricardo Sawir cea8d97aec Stop directory pickers creating typed prefixes (#6114) 2026-06-22 19:09:45 -07:00
Ricardo Sawir 4df2b800b6 Support SSH file copy to OS clipboard (#6110)
* Support SSH file copy to OS clipboard

* Address SSH clipboard staging feedback
2026-06-22 18:36:37 -07:00
ae3d088e5e fix: Persist custom macOS dock icon (#6088)
* Persist custom macOS dock icon

* Warn on dock icon metadata clear failures

* Harden macOS dock icon persistence

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

---------

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-06-22 18:01:37 -07:00
Neil c2353fd98c Tune terminal scroll defaults (#6068)
* Tune terminal scroll defaults

* Align TUI mouse wheel scrolling

* Add terminal scroll speed controls
2026-06-22 17:30:50 -07:00
44935d4ccb Fix remote Node.js detection for nvm, mise, asdf, and volta (#6037)
* Fix remote Node.js detection for nvm, mise, asdf, and volta

Remote Node resolution failed when node was installed via a version
manager (nvm with custom NVM_DIR, mise, asdf, volta) or when the user's
login shell was zsh/fish rather than bash.

Root cause: the SSH exec transport runs every command under /bin/sh,
which never sources shell init files. The only init-aware path was a
hardcoded `bash -lc` fallback that missed zsh/fish users and was never
reached for the newer version managers. nvm was handled by guessing
~/.nvm (breaking custom NVM_DIR), and mise/asdf/volta had no probes at
all. There was also no version gate, so nvm's highest-version glob
could return Node 8/10/12 and crash the relay on launch.

Fix: resolve via the user's own $SHELL as a login shell first (the only
path that runs nvm.sh / mise activate / asdf.sh init hooks), then fall
back to direct path probes for all major managers (nvm respecting
$NVM_DIR, fnm, mise, asdf, volta, n) plus system locations. Every
candidate is version-checked against the relay's Node 18+ requirement
before being accepted.

* Address CodeRabbit review: probes-first, no || short-circuit

- Reorder to path-probes first (deterministic, doesn't depend on shell
  rc-file semantics where bash -lc skips .bashrc and zsh -lc skips
  .zshrc — exactly where nvm/mise/asdf hooks live).
- Join probes with newlines instead of || so an empty
  `ls | sort -V | tail -1` (exit 0) doesn't mask later probes.
- Deduplicate candidate paths before version-checking.
- Drop unreachable mock and fix misleading $SHELL-unset test name.
- Login shell is now a fallback for custom ~/.profile PATH setups.

* Fix remote Node path probing portability

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

---------

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-06-22 16:46:47 -07:00
Jinwoo Hong a0d9505ba5 Fix SSH terminal replay artifacts
Fix SSH reconnect replay ownership and add a Docker-backed regression harness for terminal replay artifacts.
2026-06-22 16:42:20 -07:00
Jorge SilvaandJinwoo Hong 1fde7f553c fix(agent-hooks): wrap Windows hook commands in cmd.exe to survive spaces in profile path (#6078) (#6083)
* fix(codex): wrap Windows hook command in cmd.exe to survive spaces in profile path (#6078)

Windows splits raw hook commands on whitespace, so a user profile path
like `C:\Users\Jane Doe` made Codex hooks exit with code 1. Add a
wrapWindowsHookCommand helper that invokes the .cmd through
`cmd.exe /d /c call "..."` and use it in getManagedCommand.

* fix(agent-hooks): wrap Windows hook command in cmd.exe for all agents with raw .cmd path (#6078)

Apply the wrapWindowsHookCommand helper to cursor, command-code, gemini,
grok, and droid, which shared the same raw-scriptPath-on-Windows pattern
as codex. A user profile path with a space (e.g. `C:\Users\Jane Doe`)
used to split at the space and fail with exit code 1.

Agents that already handle spaces correctly are left untouched:
- claude/openclaude (Git Bash + forward slashes)
- copilot (PowerShell with quoted path)
- kimi (Git Bash + forward slashes)
- antigravity (event-specific wrapper .cmd files)
- devin (already wraps via `cmd /d /s /c ""...""`)

Each fixed agent gets a Windows-only test asserting the cmd.exe wrapping
survives spaces in the profile path.

* fix(claude): wrap Windows hook command in cmd.exe to survive spaces in profile path (#6078)

Claude Code runs hooks through Git Bash on Windows. The previous
forward-slash trick only works when the path has no spaces — Git Bash
splits `C:/Users/Jane Doe/...` at the space and tries to execute
`C:/Users/Jane` as a command. Use wrapWindowsHookCommand so the .cmd is
invoked through `cmd.exe /d /c call "..."`, which Git Bash treats as one
argument. Applies to both Claude and OpenClaude (shared getManagedCommand).

* Harden Windows agent hook launcher

---------

Co-authored-by: Jinwoo Hong <73622457+Jinwoo-H@users.noreply.github.com>
2026-06-22 16:04:01 -07:00
185175a198 fix(jira): send non-browser User-Agent to avoid XSRF 403 on issue search/create (#5957)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Orca <help@stably.ai>
Co-authored-by: brennanb2025 <brennankbenson@gmail.com>
2026-06-22 15:36:54 -07:00
b98fd2ff8b feat: copy a file from the explorer to the OS clipboard (#5990)
* feat: copy a file from the explorer to the OS clipboard

Add a "Copy" action to the file explorer context menu that puts the
actual file on the system clipboard, so pasting in Finder/Explorer/a
file manager drops the file itself instead of its path as text.

- macOS: write a public.file-url buffer; Finder synthesizes the legacy
  file types it needs for paste.
- Windows: Set-Clipboard -LiteralPath populates the CF_HDROP file drop
  list that Explorer pastes as a file.
- Linux: best-effort, picked by desktop — text/uri-list on KDE,
  x-special/gnome-copied-files on GNOME-family — via wl-copy or xclip.
- Local files only; the action is hidden for remote/SSH files and the
  web client, where no OS clipboard reference is possible.

The platform logic never throws: failures resolve to a structured
result and the renderer surfaces an error toast.

* Review copy-file clipboard safety

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

---------

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-06-22 15:02:38 -07:00
Jinwoo HongandOrca 5549ed9c87 Fix open-in launcher path classification (#6098)
Co-authored-by: Orca <help@stably.ai>
2026-06-22 13:49:08 -07:00
Brennan Benson 3cc610bcc3 Keep closed tab agents from reappearing (#6095) 2026-06-22 13:36:05 -07:00
65e2bd0557 Fix floating workspace terminal selector_not_found on a remote runtime (#5946)
* Fix floating workspace terminal selector_not_found on a remote runtime

resolveWorktreeSelector threw selector_not_found for the floating-terminal
sentinel id (global-floating-terminal) because it is a repo-less synthetic
session with no entry in the worktree catalog. A remote client paired to this
serve sends that sentinel, so the normal id: lookup failed and the floating
pane rendered black. Resolve the sentinel (bare and id:-prefixed) to a virtual
ResolvedWorktree rooted at the serve user's home so the PTY spawns in a real
existing dir; unknown id selectors still throw selector_not_found. Adds two
regression tests.

Rebased onto current main (was 75 commits stale); net delta unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Scope floating terminal selector to terminal launches

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>
2026-06-22 13:33:37 -07:00
JinHyeok Jeong e253d46e72 Harden mobile session tab sync
Harden mobile session-tab snapshot reconciliation and terminal creation. Rejects stale mobile snapshots, tombstones locally closed tabs until the publisher catches up, rolls back half-created terminal tabs when their surface never appears, and scopes terminal-create idempotency by worktree.
2026-06-22 13:31:10 -07:00
Jinjing 36f8056446 Resolve and clear push targets for linked hosted reviews (#6092)
* Resolve push targets for linked hosted reviews

Automatically resolve and persist push targets for linked GitHub PRs
and GitLab MRs to align source control actions with the review branch.

- Add `ensureHostedReviewPushTarget` to hydrate missing push targets
- Implement GitLab MR push target resolution alongside GitHub PRs
- Block actions from fallback to unrelated upstreams while resolving
- Prevent duplicate concurrent API lookups with in-flight tracking

* Clear stale review push targets when unlinking or replacing reviews

- Ensure unlinking a hosted review or replacing it with another provider
  properly clears the previously associated push target, preventing pushes
  from being steered to outdated review heads.
- Encode explicit push target clears as null over JSON-RPC to bypass the
  automatic omission of undefined properties during transit, then map them
  back to undefined in the main runtime database.
- Add stricter validation to ensure pull request and merge request IDs are
  positive integers, ignoring invalid or dummy numbers like zero.
2026-06-22 11:15:09 -07:00
Jinwoo Hong c6ff9751fa Hide Codex worker sessions from history (#6062) 2026-06-22 05:22:06 -04:00
Jinwoo HongandOrca 24000561b4 Classify Claude CLI usage shell failures (#6065)
Co-authored-by: Orca <help@stably.ai>
2026-06-22 00:58:32 -07:00
Jinwoo Hong a2e0bbc5f6 Fix early PTY startup output races (#6015) 2026-06-22 02:48:45 -04:00
Jinwoo Hong 52f45b3559 Handle literal Codex hook trust keys (#5872) 2026-06-21 23:33:57 -07:00
Jinjing fc254deef5 Default new worktree card style on for fresh profiles (#6047)
Enable `experimentalNewWorktreeCardStyle` by default on new profiles where
onboarding is open, or when creating a brand-new config file.

- Avoids visual disruption for existing users who already completed
  onboarding by keeping the old style active for them.
- Preserves explicit user opt-outs during migrations and CLI updates.
- Ensures the offline CLI handler mirrors this logic when creating the
  initial configuration file before the desktop client loads.
2026-06-21 22:35:48 -07:00
Jinwoo Hong d9b2d89406 Fix Windows NeoVim open-in launcher (#6026) 2026-06-21 21:57:33 -04:00
Brennan BensonandOrca 36bdd06aa8 Prevent duplicate startup command echoes (#6023)
Co-authored-by: Orca <help@stably.ai>
2026-06-21 18:51:44 -07:00
Brennan BensonandOrca 8228155e4d Improve preserved branch cleanup after squash merges (#6014)
Co-authored-by: Orca <help@stably.ai>
2026-06-21 18:48:59 -07:00
Jinwoo Hong 551b370085 Fix WSL agent session history (#6010) 2026-06-21 17:23:42 -07:00