Commit Graph
6013 Commits
Author SHA1 Message Date
brennanb2025andOrca e152f98955 Merge origin/main into brennanb2025/oom-hidden-pane-parking; default parking ON
Resolve agent-detection.ts split-vs-monolith conflict by porting main's
Gemini/Pi title fixes (#5270 masquerade guard, isLegacyPiCompatibleTitle)
into the split module agent-title-core.ts; keep the compatibility barrel.

Flip terminalHiddenViewParking default OFF->ON (byte mode). The three
authority/gate/query flags stay false (no main emitter in this build).
Update the byte-mode guard test, docs, reliability gate, and e2e comments.

Co-authored-by: Orca <help@stably.ai>
2026-07-05 14:51:51 -07:00
Brennan BensonandOrca 72a23809fa Prevent OMP terminals from being mislabeled as Gemini (#7447)
Co-authored-by: Orca <help@stably.ai>
2026-07-05 13:39:38 -07:00
github-actions[bot] dbf1da0f44 release: v1.4.124-rc.1 v1.4.124-rc.1 2026-07-05 19:51:20 +00:00
Jinwoo Hong 509c41e2bf Relocate node-pty ConPTY runtime outside the Windows install dir (fixes update-time terminal loss) (#7421) 2026-07-05 12:50:27 -07:00
github-actions[bot] 4b2e4735d7 release: v1.4.124-rc.0 v1.4.124-rc.0 2026-07-05 19:29:31 +00:00
Jinjing e5008b1f3c Clear PR comment selection on AI launch and defer mismatching clears (#7416)
- Clear sent comments from selection queue when confirming AI resolution.
- Keep selection clear requests pending until the matching review context is
  mounted, preventing them from being ignored on context changes.
- Fix calculation of skipped threads when comment resolution is launched.
2026-07-05 11:07:52 -07:00
Jinjing e7d1fa4a21 Disable auto-merge for unstable GitHub PRs (#7415)
Prevent enabling auto-merge when a PR is in an UNSTABLE merge state.
GitHub auto-merge mutations reject UNSTABLE PRs directly instead of
allowing them to wait, so we should suppress the option.
2026-07-05 11:05:58 -07:00
brennanb2025andOrca 20390d7fc3 Make the parked side-effects e2e spec emit via a script file (Windows PowerShell)
The parked bell/title test was the suite's only nested-escaped-quote
`node -e "...\"...\""` invocation; Windows PowerShell 5.1 mangles that argv
form, so the payload was never emitted and the title assertion saw ConPTY's
spawn-time powershell.exe title (observed on a real Windows validation run —
the other five tests, which all use script files or quote-free inline forms,
passed). Emit through a script file like the rest of the suite, and re-assert
the OSC 0 title on an interval so conhost's own title updates cannot race the
store assertion.

Co-authored-by: Orca <help@stably.ai>
2026-07-05 09:05:11 -07:00
github-actions[bot] 492bbe31b6 Update README downloads badge 2026-07-05 12:45:05 +00:00
Jinwoo HongandOrca 9981c3b827 Check for Updates: cmd/ctrl-click fetches latest perf-tagged prerelease (#7278)
Co-authored-by: Orca <help@stably.ai>
2026-07-05 02:53:17 -07:00
Jinwoo Hong 812f24bd19 fix(terminal): clear PTY-side buffers on Ctrl+K so the prompt stops repainting at a stale row (#7413) 2026-07-05 04:36:24 -04:00
JinjingandOrca a5cdb7711d Add MiniMax rate-limit tracking and secure cookie storage (#7411)
* Add MiniMax rate-limit tracking and secure cookie storage

* Securely store MiniMax session cookies using an encrypted envelope format and local file hardening.
* Fetch rate limits in an isolated session partition and clear the cookie jar before and after requests to prevent leakage.
* Add a default-on "minimax" status bar item to display subscription usage.
* Expose minimax configuration settings (group ID and models) in settings panes and sync them via the runtime client.
* Isolate MiniMax config resolver and decryption failures from affecting other rate-limit providers.

* Redact MiniMax secrets with whitespace around colons

Update redactMiniMaxSecret to allow and match optional whitespace
surrounding the colon when redacting quoted cookie values. This matches
the spacing tolerance used during parsing.

* Address PR review: harden cookie read, validate IPC, add tests

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

---------

Co-authored-by: Orca <help@stably.ai>
2026-07-05 01:15:16 -07:00
brennanb2025andOrca ed552cf28d Fix e2e fixture repo matching on Windows (canonicalized-path comparison)
The seedTestRepo fixture matched store repo/worktree paths against the seeded
realpath with strict string equality, which fails on Windows when main's
canonicalized path differs in separators or drive-letter case — every spec
then dies at "Expected e2e repo to be loaded" before its own assertions
(observed on a real Windows validation run of this branch). Compare through
shared/cross-platform-path's normalizeRuntimePathForComparison instead,
matching node-side so the shared helper is used verbatim.

Co-authored-by: Orca <help@stably.ai>
2026-07-05 01:04:23 -07:00
Jinjing 8dbe6bf372 Improve agent history indentation and layout (#7412)
* Hide redundant current worktree info in workspace vault scope

When the AI Vault is scoped to the current workspace, showing the
"Current worktree" status line or badge is redundant since the sessions
are already filtered to this workspace.

- Add helper to hide the worktree line and status badge when the vault
  is in 'workspace' scope and status is 'current'.
- Improve alignment and metadata layout in session rows using CSS grid.
- Update tests to verify worktree line and badge visibility rules.

* Indent AI vault session worktree line

Add left padding to the session worktree line to improve its visual
indentation inside the AI vault session row.
2026-07-05 00:25:10 -07:00
JinjingandOrca 9886eb507a Improve Chinese and Spanish translations (#7408)
* Refine Spanish and Chinese locale translations

- Update Spanish strings for developer tools, notifications, and session history scopes.
- Standardize Chinese terminology by converting "令牌" to "token" and correcting color translations (e.g., "橙子" to "橙色").
- Adjust Chinese UI phrasing, such as mapping issue states from "进行中" to "开放" and "资源管���器" to "文件管理器".

* test: update MR Open state filter expectation to 开放

The zh locale intentionally remapped the GitLab MR 'Open' filter from
进行中 to 开放; align the test expectation with the translation.

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

* Improve Chinese and Spanish translations

- Translate "Current workspace" to Spanish.
- Correct the translation of "Atlassian" and expand "PR" to "拉取请求"
  in Chinese locale.
- Fix spacing around English terms like "token" in Chinese text in Chinese.

---------

Co-authored-by: Orca <help@stably.ai>
2026-07-05 00:15:30 -07:00
85d555f334 fix(terminal): launch prior/default agent when a woken terminal can't resume (#6277)
* fix(terminal): launch prior/default agent when a woken terminal can't resume

Waking a sleeping worktree (or restoring terminals after an app restart)
left an agent terminal as a BLANK shell while still showing the agent's
icon: `buildColdRestoreAgentResumeStartup` returned null whenever the
provider session couldn't be resumed, and the caller then spawned a bare
shell.

Now, when resume isn't possible, an agent terminal comes back as a FRESH
session of the agent it previously ran (live status -> sleeping record ->
persisted tab `launchAgent`); if that agent is unknown but the terminal was
an agent terminal, the configured default agent is used. A genuine plain
shell stays blank, and the existing resume path, SSH/remote, and WSL
behavior are unchanged.

Fixes #4557

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

* test(terminal): assert default-agent cold restore is a fresh (non-resume) launch

Addresses CodeRabbit review on #6277.

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

* Fix cold restore agent fallback

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-07-05 00:04:24 -07:00
ec9efe4638 fix: distinguish duplicate project names in picker (#6272)
* fix: distinguish duplicate project names in picker

* review: disambiguate duplicate project picker details

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

---------

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-07-05 00:01:30 -07:00
Jinjing d6c96e77d2 Surface detailed commit failure summaries in Create PR flow (#7401)
Instead of showing a generic commit failure message during the Create PR
intent flow, leverage `summarizeCommitFailure` to extract the underlying
reason (such as pre-commit hook or lint failures) and present it clearly.

Also introduce `commitErrorsRef` to reliably track and retrieve the most
up-to-date commit errors across renders without stale closure issues.
2026-07-05 00:00:25 -07:00
leter 6677de1807 Improve SSH Node.js prerequisite guidance
Improve SSH remote Node.js prerequisite failures by adding package-manager-specific POSIX install guidance, Windows Node 18+ candidate validation, fnm XDG probing, and regression coverage while preserving SSH abort and session-limit behavior.
2026-07-04 23:54:26 -07:00
WolfieandWolfgang Schoenberger a169b7d03d fix: focus new floating-workspace agent tab on launch (#6250)
* fix: focus new floating-workspace agent tab on launch

The default-agent button in the floating workspace titlebar created its
tab with { activate: false } and only called setActiveTabForWorktree,
which writes activeTabIdByWorktree. The floating panel selects its
visible tab from the unified group's activeTabId, so the new agent tab
was appended but never selected or focused. Add activateTab(tab.id),
matching the empty-state tab creators, so launching a new agent switches
to and focuses its tab.

* test: use top-level react type import in floating controls test

* test: lock queue-before-activate order and state updates for agent launch

Strengthen the FloatingTerminalWindowControls regression test per review:
- make the createTab mock append the new tab to the worktree (realistic store)
- seed an existing tab so append/order behavior is observable
- assert startup command is queued before activateTab (invocationCallOrder)
- assert setActiveTabForWorktree and tab bar order placement

---------

Co-authored-by: Wolfgang Schoenberger <221313372+wolfiesch@users.noreply.github.com>
2026-07-04 23:52:24 -07:00
guihirsch f11a2109c8 feat(rate-limits): add MiniMax token control (#7387) 2026-07-04 23:33:25 -07:00
Jinjing 136cb50bcb Reflow and edit hard-wrapped prose within single paragraph blocks (#7407)
* Reflow and edit hard-wrapped prose within single paragraph blocks

Instead of splitting consecutive markdown source lines into multiple visual paragraph nodes during document initialization, preserve them as a single paragraph containing literal newlines.

- Use `white-space: normal` CSS to reflow soft breaks naturally.
- Introduce `deleteAdjacentEmptyParagraph` to handle Backspace/Delete without converting soft newlines to hard break elements.
- Update the cut handler to delete only a visual line on Cmd+X within hard-wrapped paragraphs.
- Avoid split-pane/sync phantom dirty states caused by structural block splitting.

* Document why normalizeEmptyListItems is used for paragraph reflow

Add comments to clarify that normalizeEmptyListItems preserves
hard-wrapped paragraphs as single paragraphs, allowing them to
reflow via CSS instead of being split on load or external sync.
2026-07-04 23:29:05 -07:00
github-actions[bot] 17d5eff5d6 release: v1.4.123-rc.1 v1.4.123-rc.1 2026-07-05 06:02:14 +00:00
Avichal DwivediandJinjing e94c83d164 fix(ai-vault): make SSH session history host-aware (#7367)
* fix(ai-vault): scan sessions by execution host

* fix(ai-vault): route history resume by host

* test(e2e): cover SSH AI Vault history

* Generalize remote session scanning for all AI Vault agents

Replace the Codex-only remote SSH session history scanner with a
unified scanner supporting all registered agents. This ensures remote
transcripts for Claude, Gemini, Devin, Droid, and others are scanned
and listed alongside local history.

- Propagate host metadata (host ID and platform) to scanned sessions
- Scope remote actions by host, disabling local OS path actions on
  remote session logs
- Resolve ambiguous project/worktree matching for overlapping paths
  by verifying matching host setup IDs
- Update tests and E2E specs to validate multi-agent remote scanning

---------

Co-authored-by: Jinjing <6427696+AmethystLiang@users.noreply.github.com>
2026-07-04 22:56:55 -07:00
JinjingandOrca 331a30b454 Harden rate-limit PTY working directory and abort background usage probes on stop (#7403)
* Harden rate-limit PTY cwd and abort background usage probes on stop

Resolve a runaway CPU incident where background Claude rate-limit usage
probes could inherit a root working directory (such as `/` or `C:\`) and
index the entire disk.

- Force hidden Claude and Codex usage PTYs to spawn inside a small,
  dedicated directory under user data or temp.
- Thread AbortSignal through rate-limit fetchers to immediately kill
  and reap in-flight PTY processes when RateLimitService stops.
- Harden daemon and local PTY defaults to reject root-like working
  directories for automated agent startups.

* Consolidate PTY path safety checks to prevent runaway CPU

Centralize `isRootLikePath` into a dedicated PTY path safety module
to prevent terminal launches and hidden usage probes from executing
in filesystem or drive roots, avoiding unbounded file discovery.

- Centralize path validation supporting POSIX, Windows, and UNC roots.
- Fail loudly if no safe default working directory is available.
- Enforce bounded directories for hidden usage PTYs and WSL probes.
- Check for aborted signals during rate-limit CLI repairs.

* Gate agent startup on the effective PTY cwd after default fallback

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

* test(repos): verify origin/HEAD target in SSH base-ref tests

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

* Pin HOME to assert exact default PTY cwd in spawn test

Pin `process.env.HOME` in the fallback test for LocalPtyProvider to
assert the exact resolved candidate rather than just checking that it is
non-root-like. This catches potential regressions where an unintended
home directory is picked, and uses a try/finally block to safely restore
the environment afterwards.

---------

Co-authored-by: Orca <help@stably.ai>
2026-07-04 22:50:43 -07:00
Jinjing 863d94167c Use activeWorkspaceKey to reveal active workspace in sidebar (#7406)
Older folder-based workspaces are tracked by `activeWorkspaceKey`
rather than the legacy `activeWorktreeId`. Deriving the active sidebar
workspace ID from the workspace key enables the "Reveal active
workspace" action to work correctly for both types of workspaces.
2026-07-04 22:19:28 -07:00
Rod BoevandJinjing 7e1f9e55f2 fix(worktrees): fall back from stale default base refs (#7398)
* fix(worktrees): fall back from stale default base refs (#7312)

* docs(worktrees): explain base fallback policy

* fix(worktrees): harden stale base fallback edge cases

---------

Co-authored-by: Jinjing <6427696+AmethystLiang@users.noreply.github.com>
2026-07-04 21:31:51 -07:00
Jinjing 16d08b4fac Warn about and manage repository overrides for AI action recipes (#7386)
* Warn about and manage repository overrides for AI action recipes

This improves the user experience around overriding global AI action recipe
defaults with repository-specific settings:
- In global settings, display a note if repositories override a recipe,
  with a shortcut to review those repository settings.
- In the agent launch dialog, show a warning if the repo overrides the
  global default and default the save target to the repo.
- In repository settings, support saving and discarding recipe overrides
  on a per-action basis.

* Memoize repo filtering and override summaries in recipe defaults

Avoid re-filtering all repositories and re-computing override summaries
on every keystroke in sibling textareas.

Also use an exhaustive switch check for override field labels, and add
a test verifying the overflow note indicator when overrides exceed the
visible limit.
2026-07-04 18:31:44 -07:00
NeilandOrca eb2b894fc0 fix(store): purge pane-scoped agent/unread state on external worktree removal (#7383)
buildWorktreePurgeState is the bulk worktree-removal reducer reached by the
authoritative-scan reconcile (CLI `git worktree remove`, another Orca window,
SSH), remove-project, and the hydration stale-purge. Unlike the single in-app
removeWorktree path — which runs shutdownWorktreeTerminals /
dropAgentStatusByWorktree / clearPaneForegroundAgentByWorktree — it never ran
terminal teardown, so it left every pane-scoped map untouched:

  agentStatusByPaneKey, agentLaunchConfigByPaneKey, acknowledgedAgentsByPaneKey,
  paneForegroundAgentByPaneKey, sleepingAgentSessionsByPaneKey,
  unreadTerminalPanes, unreadAgentCompletionPanes, lastTerminalInputAtByPaneKey
  (all keyed by `${tabId}:${leafId}`) and unreadTerminalTabs (keyed by tabId).

Result: one orphaned entry per agent pane of every externally-removed worktree,
retained for the whole renderer session (monotonic growth), plus a phantom +1
on the unread dock badge. This is a direct parallel to leaks the maintainers
already fixed in this same function (browserAnnotationsByPageId, editorCursorLine
— each carrying a 'the bulk reconcile path missed them' comment).

Fix: evict these maps by tab-id / `${tabId}:` prefix in the reducer, matching
the in-app teardown. retainedAgentsByPaneKey and runtimeAgentOrchestrationByPaneKey
are intentionally left out — both self-heal (pruneRetainedAgents on a
worktreesByRepo change; the runtime map is replaced wholesale each sync).

Leak-regression test drives purgeWorktreeTerminalState and asserts every map is
emptied for the removed worktree while a sibling worktree's state is preserved.
Reverting the fix fails both cases.

Co-authored-by: Orca <help@stably.ai>
2026-07-04 18:15:19 -07:00
NeilandOrca 91323cf925 perf(windows): dedupe per-pane process-table scans in agent inspection (#7384)
* perf(windows): dedupe per-pane process-table scans in agent inspection

Windows agent foreground-process inspection forks a whole-process-table
PowerShell/CIM scan per pane on the same 750ms/2000ms cadence the POSIX path
uses. The POSIX side routes through getProcessTableSnapshot (500ms TTL + single
in-flight, #6288/#6667), collapsing N concurrent panes to ~2 scans/sec. The
Windows path (queryWindowsProcessDescendants) had no such dedup: K concurrent
agent panes forked K powershell.exe cold-starts, each enumerating the ENTIRE
process table then filtering per-pid in JS — ~10-40x heavier than `ps` (a
powershell cold start is ~150-400ms CPU + tens of MB RSS). The degraded/local
PTY provider path calls it with no per-pane throttle at all. This is the
Windows analogue of the idle-CPU churn #6288 fixed for POSIX.

Generalize the existing createProcessTableSnapshotReader factory to be generic
over its scan result (default T = string, so the POSIX path and its test are
byte-identical) and add a Windows singleton reader that caches parsed
WindowsProcessRow[]. queryWindowsProcessDescendants now reads the shared
snapshot and runs its own descendant walk; runWindowsProcessRows throws on total
enumeration failure so the miss is not cached and the prior null-fallback
contract (callers fall through to node-pty's name) is preserved.

Windows scan-volume regression test (mirrors the POSIX #6288 guard) drives
PANE_COUNT concurrent panes over the cadence window and asserts powershell.exe
spawns are bounded by ticks, not pane count, while every pane still resolves its
descendant. Reverting the dedup fails both cases. POSIX snapshot + volume tests
unchanged and green; node/web/cli typecheck clean.

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

* test: reset windows process-rows snapshot between agent-foreground cases

The new module-level Windows rows reader caches for 500ms with real
Date.now(), so one case's mocked process table was served to the next
case's assertions (7 CI failures in agent-foreground-process.test.ts).
Mirror the suite's existing POSIX resetProcessTableSnapshotForTests()
with the Windows reset in beforeEach.

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

---------

Co-authored-by: Orca <help@stably.ai>
2026-07-04 18:10:45 -07:00
NeilandOrca 62f5ad60b2 perf(emulator): stop decoding frames for hidden emulator panes (#7382)
Co-authored-by: Orca <help@stably.ai>
2026-07-04 18:01:00 -07:00
github-actions[bot] 85adb2ddad release: v1.4.123-rc.0 v1.4.123-rc.0 2026-07-05 00:22:51 +00:00
Jinjing 014a06a14e Add Portuguese README 2026-07-04 17:14:11 -07:00
Jinjing 4828a09e10 Add star history to README 2026-07-04 17:14:11 -07:00
Jinjing afd9cd5e02 Improve translations for Spanish, Japanese, Korean, and Chinese (#7381)
Translate various remaining English strings in Spanish, Japanese, Korean,
and Chinese locale files to provide better localized terminology for
common UI actions, settings descriptions, and toast messages.
2026-07-04 17:11:21 -07:00
Jinjing 568722a320 Update mobile Android APK links to 0.0.22 2026-07-04 17:06:09 -07:00
NeilandOrca b3f86813b3 fix(ci): register PSGallery via PSResourceGet for Windows SignPath install (#7379)
Register-PSRepository -Default failed inside the legacy nuget.exe provider
with "Missing option value for: '-source'" on the hosted windows-2022 image,
leaving PSGallery unregistered so the subsequent Set-PSRepository threw
"No repository with the name 'PSGallery'".

Prefer Microsoft.PowerShell.PSResourceGet (bundled with PowerShell 7.4+),
which has PSGallery registered by default and avoids that code path; fall
back to PowerShellGet with an explicit NuGet-provider bootstrap only when
PSResourceGet is unavailable.

Co-authored-by: Orca <help@stably.ai>
2026-07-04 16:57:09 -07:00
Jinjing 4fa21f727a Use official OpenCode SVG icon instead of remote favicon (#7373)
* Use official OpenCode SVG icon instead of remote favicon

Replaces the remote favicon loading for OpenCode with a local SVG icon.
This avoids flaky external network requests and ensures the icon renders
properly across light and dark themes using theme-aware currentColor.

* Update OpenCodeIcon SVG geometry to use official 512 canvas

Update the OpenCode icon geometry and viewBox to use the official
512x512 canvas sourced from the opencode.ai favicon. Using a square
viewBox matches sibling glyphs.
2026-07-04 16:54:23 -07:00
Neil dbd5064235 fix: refit desktop watcher xterm when mobile-fit override arrives (#6410) (#6596) 2026-07-04 16:42:50 -07:00
Jinjing 50339fbe82 Revert "Add default browser action for terminal links (#6129)" (#7378)
This reverts commit 3614cbc40c.
2026-07-04 16:36:29 -07:00
brennanb2025andOrca 1d4e70e2a8 Merge origin/main into brennanb2025/oom-hidden-pane-parking
Resolves the github-links.ts conflict with #7371: the parsing-core pieces
(GitHubIssueOrPRLink type, parseGitHubIssueOrPRLink signature) land in
src/shared/github-links.ts where this branch moved the core, and the
renderer-side pieces (HTTP_URL_PREFIX_RE, GitHubLinkQuery.directLink,
normalizeGitHubLinkQuery) stay in the lib shim.

Co-authored-by: Orca <help@stably.ai>
2026-07-04 16:25:12 -07:00
badd6f26ac Dispose parked watchers on agent-pane hibernation kill (CodeRabbit)
shutdownCompletedAgentPaneForHibernation already unregisters live pane
handlers before pty.kill to prevent phantom notifications from the teardown
flush, but a parked tab's byte watcher rides the dispatcher sidecar that call
does not touch. Dispose it after a successful kill — deliberately not before:
a failed kill leaves the session running and it must keep its watcher.

This is the hibernation analog of the worktree-shutdown wiring and does not
exist in PR #7214 yet (worth adopting there); regression tests cover both the
success and kill-failure paths. Also: "afterwards" → "afterward" in the
parking doc (static analysis).

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-07-04 16:13:57 -07:00
github-actions[bot] ad329e2f26 release: v1.4.122-rc.4 v1.4.122-rc.4 2026-07-04 22:41:11 +00:00
e39355ddbe Align the parking doc body with this build (byte mode only, #7214 phases not shipped)
The header was adapted for the standalone extraction but two body sections
still called fact mode "(default)" and phases 3-5 "(all shipped)" — the exact
byte-mode-pinning confusion this PR guards against.

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-07-04 15:36:53 -07:00
brennanb2025andOrca 15ec98b2cf Address review round 2: restore TEST_REPO_PATH_FILE import in split e2e helper
- seeded-test-repo.ts: re-add the TEST_REPO_PATH_FILE import the round-1 split
  dropped (runtime-only ReferenceError on the worker's stale-repo fallback
  path — tests/e2e sits outside all typecheck configs), and drop the stray
  fixture JSDoc that came along with the extraction. Fallback verified by
  invoking createSeededTestRepo directly.
- types.ts: qualify the two See-references to authority docs that ship with
  PR #7214 rather than this branch.

Co-authored-by: Orca <help@stably.ai>
2026-07-04 15:26:19 -07:00
Jinjing c641e55486 Normalize GitHub work item type from URL to prevent issue/PR mismatch (#7371)
- Resolve true work item identity (issue vs. PR) using the URL path to
  override stale or incorrect cached payload types.
- Prevent invalid PR start point resolution when launching an issue
  misclassified as a PR.
- Validate and reject mismatched URL types in the worktree metadata
  dialog fields to avoid incorrect associations.
2026-07-04 15:16:50 -07:00
80a44878f8 Address review round 1: shutdown watcher disposal, e2e fixture flake-fix restore, parking reliability gate
- Wire shutdownWorktreeTerminals → disposeParkedTerminalWatchersForPtyIds
  (byte-identical to #7214's terminals.ts hunk the extraction plan missed) so
  a slept/deleted worktree's teardown flush cannot mark unread or arm
  notification timers through a parked watcher; add a store-level regression
  test for the wiring.
- Rebuild tests/e2e/helpers/orca-app.ts as main's version + only the
  orcaAppExtraEnv/orcaAppExtraArgs fixture additions — the wholesale copy from
  orca-performance had silently reverted the #7330 repo-load flake fix. Split
  the seeded-test-repo helpers into their own module to stay under max-lines.
- Register the hidden-view parking byte-mode surface in the reliability gate
  manifest (experimental, renderer-unit layer, evidence from today's runs).
- State the real shipped defaults in the four settings docstrings (types.ts)
  instead of #7214's "defaults to true" wording.

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-07-04 15:07:51 -07:00
Jinjing 5ba4e2454d Remove "Open" status badge from PR comment actions (#7338)
Remove the unused "Open" action state condition and its associated
`statusBadgeOpen` class from presentation definitions.
2026-07-04 14:47:36 -07:00
8b69e41391 Fix missing space in import-cookies "From <browser>" menu labels (#6468)
* Fix missing space in import-cookies "From <browser>" menu labels

The Import Cookies dropdown rendered browser entries as "FromGoogle Chrome"
and "FromSafari" — JSX collapses whitespace between the adjacent
{translate(…, 'From')}{browser.label} expressions.

Switch both settings menus to the 'From {{value0}}' interpolation pattern
already used by the other import-cookies menus, so the label is a single
translatable unit and renders with the correct space. Interpolation also lets
each locale position the browser name correctly: ja/ko use postpositions
("から"/"에서") that belong after the name, which the old concatenation placed
before it. Localized the new key in es/ja/ko/zh to match the existing catalog
style. Adds a regression test.

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

* Fix browser use import source label

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-07-04 14:46:09 -07:00
Bevis a3e34b66b8 fix(pet): stop i18n from corrupting CSS keyframes
Keep PetOverlay runtime keyframes out of localization so translated locales cannot invalidate sprite or bob animations.\n\nAlso adds regression coverage for translated-locale keyframe CSS and removes the stale generated locale entries.
2026-07-04 14:43:57 -07:00