Commit Graph

5378 Commits

Author SHA1 Message Date
Jinjing 308da355bc
Unify pull request draft title resolution (#5943)
Extract title resolution into a dedicated helper to ensure both inline
and dialog pull request creation flows consistently fall back to
a normalized and humanized branch slug when no eligibility title is
available.

- Normalize remote refs before humanizing branch slugs
- Pre-populate dialog titles when eligibility title is missing
- Update E2E tests to expect pre-populated draft titles
2026-06-20 18:47:39 -07:00
Jinjing 26493072c1
Persist AI PR generation state across worktree switches (#5952)
Connect the ChecksPanel PR draft generation to the global generation
slice, aligning its behavior with SourceControl. This allows detail
generation to continue in the background when navigating away or
switching worktrees, and guarantees that generated fields, terminal seeds,
and branch-preparation push requirements are restored on remount.
2026-06-20 18:16:50 -07:00
Jinjing 89eb4b3f55
fix: show merged PR for current branch head (#5877) 2026-06-20 17:56:38 -07:00
Jinjing 14eb4091fd
Move workspace options to the top of worktree context menu (#5948)
Move the "Update" and "Move to Status" options under a new "Workspace"
section header at the very top of the worktree context menu. This
improves usability and groups workspace-management actions together.
2026-06-20 17:51:03 -07:00
Jinjing a856dee5d9
Exclude Windows from release evidence and update mock agent fields (#5949)
- Remove Windows from the release evidence platform matrix check because Windows release evidence is temporarily paused due to CI runner PTY readiness.
- Add scenarioTitle as taskTitle and a display name to mock agent objects to satisfy updated runtime row shapes in mobile lag scripts.
2026-06-20 17:50:56 -07:00
Jinjing 16347ab799
Handle clean local merges when hosting provider reports conflicts (#5942)
When the hosting provider (GitHub) reports conflicts but a local merge
simulation is clean, we now mark the conflict summary as locally clean.

This state is surfaced in both the desktop and mobile sidebars with a
clear explanation and a copyable set of commands to trigger a remote
mergeability recalculation via an empty commit and push.
2026-06-20 17:08:58 -07:00
Jinjing 8a4f10b35c
Refresh live worktree display name in mobile session (#5934)
Query the `worktree.show` RPC endpoint on screen focus and poll every
3 seconds to retrieve up-to-date worktree metadata. This ensures that
task-generated names and subsequent displayName updates are reflected,
rather than relying solely on the initial route parameter entry hint.
2026-06-20 16:40:34 -07:00
Jinjing fe7cf01c51
Track update check attempts and handle stalls (#5904)
* Track update check attempts to prevent stale races and handle stalls

- Sequence each update check with an attempt ID to prevent stale event handlers (like async changelog fetches) from overwriting newer check states.
- Introduce a 45-second timeout to gracefully fail or retry hung update checks that stall before reaching updater events.
- Settle checks with a brief grace period when the updater promise resolves without firing a terminal event.

* Ignore update-available events when no active check attempt exists

Prevents processing stale events from the auto-updater after a silent
background check has already settled, which could otherwise overwrite
more recent check states or trigger unexpected status transitions.

* Ignore stale electron-updater events from previous check attempts

Introduce attempt tracking to bind emitted updater events to the active
update check. This prevents stale events (such as checking, available,
not available, or errors) from previous checks or preflight stages
from triggering false state transitions or duplicate status updates.

- Track the launched and active attempt IDs during update preflight
- Ignore events if their attempt ID does not match the active check
- Allow error events to propagate during active download/install phases
- Clear pending nudge campaigns on silent follow-up checks settling to not-available
2026-06-20 16:39:42 -07:00
Jinjing 404e45f022
Improve built-in browser downloads (#5940)
* Improve built-in browser downloads

Implements docs/browser-normal-download-behavior.md with automatic OS Downloads saving, collision-safe destinations, and renderer download controls.

* Clean up browser downloads on tab closure and guest destruction

- Cancel and drop pending download records when webview guests are destroyed or closed to prevent memory leaks and dangling state.
- Purge tracking entries for cancelled downloads lacking an active tab.
- Document filename normalization and reservation assumptions in download builder.
- Translate "Copy Terminal ID" context menu action in Spanish and Chinese locales.
2026-06-20 16:33:20 -07:00
github-actions[bot] 13b6ed01b0 release: v1.4.90-rc.0 [rc-slot:2026-06-20-15] 2026-06-20 22:57:47 +00:00
Siddiqui Qamar 8c6ce31036
fix: narrow rate-limit provider config
Narrow RateLimitService provider config wiring so OpenCode Go receives provider-specific config while Gemini keeps its OAuth-enabled setting through a separate resolver.\n\nValidated locally with the full src/main/rate-limits test suite and typecheck.
2026-06-20 15:28:12 -07:00
github-actions[bot] e981b477d2 release: v1.4.89 2026-06-20 22:24:59 +00:00
Jinjing 27bf41793c
Select last visited worktree repo by default on mobile (#5912)
- Resolve the initial repository in the mobile NewWorktreeModal using
  the last-visited worktree's repo ID loaded from AsyncStorage.
- Extract and share new-workspace dialog repository selection and
  resolution logic to src/shared, mirroring it on mobile to bypass
  Metro bundling limits.
- Add unit tests for last-visited repo reading and selection resolution.
2026-06-20 15:12:20 -07:00
Jinjing 99bb6d0bf4
Fall back to global repo order for group projects with unset rank (#5905)
Uses a new `getEffectiveProjectGroupManualRank` helper to ensure that
drag-and-drop midpoint calculations and sidebar list rendering remain
aligned. When a project's `projectGroupOrder` is unset, it now falls back
consistently to its global repo order instead of defaulting to infinity in
the list but a scaled rank during drag-and-drop.
2026-06-20 14:54:43 -07:00
github-actions[bot] 8ff5a3cc08 release: v1.4.89-rc.2 2026-06-20 20:29:34 +00:00
Jinjing 240b5e0a1f
ci: disable Windows rendering release evidence (#5898) 2026-06-20 13:25:54 -07:00
Jinjing c3bff641ba
Extract vault session row trailing actions to separate component (#5911) 2026-06-20 09:49:00 -07:00
hiro 26a5263cb5
fix(i18n): correct Japanese "primary" worktree badge label (#5923) 2026-06-20 09:47:10 -07:00
github-actions[bot] 6f3894cd7b release: v1.4.89-rc.1 2026-06-20 16:46:01 +00:00
github-actions[bot] 988c0702ce Update README downloads badge 2026-06-20 12:55:27 +00:00
Jinjing 220dfe09f4
Recover iOS terminal on foreground and enforce tap URL length limit (#5903)
- Replay terminal scrollback when transitioning back to the foreground on iOS to fix blank xterm backing stores in WKWebView.
- Mark inactive mounted terminal buffers stale so they repaint on their next activation.
- Enforce a 2048-character maximum URL length for mobile terminal link tapping to align with desktop safety bounds.
2026-06-20 03:47:19 -07:00
Jinjing 6dd82b974d
Track and sync base ref throughout Create PR intent flow (#5907)
* Track and sync base ref throughout create PR intent flow

* Capture and track the review base ref (`baseRef`) directly inside the Create PR intent run token to keep async steps anchored to the base selected when the run started.
* Resolve intent flow and eligibility bases safely using the compare-base picker to override stale default refs.
* Keep the PR dialog's base field in sync with the active compare base while untouched by the user.

* Ignore stale generated PR fields if base ref syncs while in flight

Track user-initiated edits to the base field separately using a ref.
When the base ref is synced automatically from Source Control, mark
the base field dirty to increment its revision. This ensures stale
generated fields from an in-flight request cannot overwrite or revert
the newly updated base.
2026-06-20 03:39:45 -07:00
Jinjing 97dc6d63e3
Accept merged fallback PRs during branch lookup (#5908)
Ensure that when a visible fallback PR has been merged (e.g., outside
Orca with a deleted head branch), it is still accepted and refreshed by
branch lookup instead of being discarded as an implicit merged PR.

* Add `acceptMergedFallbackPR` option to GitHub branch lookups
* Enable this option during manual and background refreshes of fallback PRs
* Plumb the new option through preload APIs, IPC handlers, and RPC protocols
2026-06-20 03:30:18 -07:00
Jinjing 1419193bea
Add explicit task title and display name to orchestration tasks (#5901)
Introduce optional `task-title` and `display-name` parameters for orchestration tasks, persisting them in the database and propagating them through the RPC and Orca runtime.

This allows the CLI, dashboard, activity page, and sidebar to display concise, user-friendly labels for dispatched worker agents instead of verbose, raw system preambles.
2026-06-20 03:29:21 -07:00
Jinjing b050bcff03
Keep mobile-controlled browser panes paintable and park idle hidden panes (#5900)
* Keep mobile-driven browser panes paintable and park idle hidden panes

- Add useSyncExternalStore-based hooks to reactively track mobile-driven pages.
- Prevent unmounting or losing paintability for panes controlled by a mobile device.
- Park heavy browser pane subtrees in hidden worktrees to improve performance.

* Derive workflow platforms dynamically in runtime contract test

Avoid hardcoding Linux, macOS, and Windows platforms in the Electron
runtime package contract test. Instead, extract the platforms directly
from the golden E2E workflow matrix strategy and map them to their
corresponding run steps.
2026-06-20 03:25:53 -07:00
github-actions[bot] 5ce2b0a750 release: v1.4.89-rc.0 2026-06-20 10:24:46 +00:00
Jinjing 553d47bf4f
Fix Windows workspace deletion runtime resolution (#5888)
* Add test file for workspace delete bug

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

* Fix Windows workspace deletion runtime resolution

Resolve project-created workspace deletion through the selected project runtime so Windows paths are listed strictly without falsely tripping the unregistered worktree guard.

Design doc: docs/delete-workspace-windows-unregistered.md

---------

Co-authored-by: Orca <help@stably.ai>
2026-06-20 03:16:29 -07:00
Jinjing 55456e0c2d
Show branch-discovered PRs on worktrees with no linked PRs (#5894)
Allow branch-discovered GitHub and GitLab PRs to display on the
worktree card even when the worktree has no explicitly linked PR
metadata.

This is enabled by passing the review hint key option down and
allowing the PR display logic to show neutral branch-level lookups
when no linked review key is present.
2026-06-20 03:00:52 -07:00
Siddiqui Qamar b51a995703
docs: update documentation to remove deprecated Gemini CLI references (#5887) 2026-06-20 02:26:32 -07:00
github-actions[bot] 6f77fdd4b2 release: v1.4.88 2026-06-20 09:15:26 +00:00
Jinjing c2433f5910
Enhance AI Vault session rows with conversation previews (#5896)
Revamp the session display in the AI Vault to prioritize visible
conversation history (user and assistant turns) over raw metadata.

- Display the latest conversation turn directly on collapsed rows
- Redesign expanded details to show the "Original ask" and latest turns
- Integrate visible preview text into session search filters
- Add a dedicated drag handle for resuming sessions to prevent
  accidental drags on the row card
- Update row height and virtual scroll metrics to accommodate previews
2026-06-20 02:14:24 -07:00
Jinjing c36a14032f
Temporarily disable Windows golden E2E CI (#5897) 2026-06-20 02:11:18 -07:00
Jinjing 44e4d8d4f5
Fix Windows ConPTY probe failures by removing startup control bytes (#5893)
* Fix Windows ConPTY probe failures by removing startup control bytes

Avoid prepending terminal probes with interrupt (`\x03`) or line-kill
(`\x15`) control characters on fresh shell launches. In Windows ConPTY,
echoing a startup Ctrl+C can print a literal "^C" and corrupt the subsequent
PowerShell commands.

- Extract probe command sequence generation to a dedicated helper
- Include E2E unit tests in the Vitest test suite config

* Rename terminal probe E2E test to match unit test pattern

Update the Vitest configuration glob pattern to target only E2E tests
ending in `.unit.test.ts`, and rename the terminal probe input sequence
test to match. This ensures only unit-like E2E tests are picked up
by Vitest.
2026-06-20 02:03:24 -07:00
Jinjing a1cbb31f27
Clarify worktree lineage and handoff rules in skills and CLI help (#5892)
- Explain that `--no-parent` only controls Orca lineage, not the Git
  base branch, and detail how to target independent top-level work.
- Define full handoffs as ownership transfer and forbid the use of
  orchestration dispatch injection for them.
- Update CLI help text for `orca worktree create` to reflect the
  lineage and base-branch guidance.
- Add tests to verify that these guidance patterns exist in the skill
  markdown files.
2026-06-20 01:51:35 -07:00
Jinjing d053620be3
Use stable PR head SHA for golden E2E checkout
Checkout the stable pull request head SHA in the golden E2E experiment workflow so reruns after merge do not fail on missing pull_request merge refs.
2026-06-20 01:44:20 -07:00
github-actions[bot] 19449c6934 release: v1.4.87 2026-06-20 08:37:27 +00:00
Jinjing 55055b42af
Use runner Node executable and platform quoting in terminal E2E tests (#5890)
Ensure terminal E2E probes run reliably on Windows CI, where the shell
does not always inherit setup-node's PATH.

- Add `nodeTerminalCommand` helper to resolve and quote `process.execPath`
  for either POSIX shells or PowerShell depending on the platform.
- Update terminal tests and probes to use the new helper instead of
  hardcoded `node` invocations.
2026-06-20 01:27:41 -07:00
Jinjing e2c8a66ee0
fix: address review findings (#5889) 2026-06-20 01:15:58 -07:00
github-actions[bot] 04004bf2cf release: v1.4.86 2026-06-20 07:48:04 +00:00
Jinjing 5622d0e94f
Stabilize terminal e2e tests on Windows ConPTY (#5881)
* Stabilize terminal e2e tests on Windows ConPTY

Windows ConPTY can drop or reorder the tail of large synchronized terminal
frames or stdout writes when they are written all at once or when the process
exits too quickly.

* Wait for PTY shell readiness before running test scripts.
* Chunk large table writes line-by-line and yield with a short timeout on
  Windows to let the stream drain.
* Add and poll for a synchronized frame tail marker to ensure the entire
  content is rendered before proceeding.

* Remove flaky preflight shell echo in terminal emoji scroll test

The Ctrl+C/Ctrl+U preflight keys sent by `waitForPtyShellEcho` can race
Windows ConPTY startup and eat subsequent test input. Remove this wait
and rely on the fixture marker as the readiness signal instead.
2026-06-20 00:46:37 -07:00
github-actions[bot] 7f7fd86bcb release: v1.4.85 2026-06-20 07:39:08 +00:00
Jinjing a04a9013f6
Prioritize Create PR intent over blocked notices in header action (#5884)
Resolve the Create PR/MR preparation intent first in the header action,
falling back to blocked notices only for states that cannot be safely
prepared (such as auth issues, default branch, or unsafe sync blockers).
This allows recoverable states like dirty files or unpublished commits
to proceed via the preparation flow.
2026-06-20 00:26:54 -07:00
github-actions[bot] 446eae07cd release: v1.4.84 2026-06-20 04:57:29 +00:00
Jinjing e19949f280
test: align tab strip layout assertion (#5875) 2026-06-19 21:53:05 -07:00
Jinjing dd8c78c129
Revert "Show worktree delete icon on sidebar row hover" (#5874)
This reverts commit ce253354fe.
2026-06-19 20:48:57 -07:00
Brennan Benson 8264cd2416
Send notes to working agents (#5748)
Co-authored-by: Orca <help@stably.ai>
2026-06-19 20:30:51 -07:00
Jinjing 13427a7de0
Hide native scrollbars on terminal tab strip (#5838)
* Hide native scrollbars on terminal tab strip

Remove the 'scrollbar-sleek' class and hide the scrollbars entirely using
CSS on '.terminal-tab-strip'. Horizontal tab strips scroll via chevrons,
wheel, and trackpad, so a native scrollbar thumb overlays tab labels and
looks broken.

* Introduce tab strip scroll indicator and fade masks for overflow

* Adds a top-aligned scroll indicator overlay to provide visual feedback for overflowing tabs.
* Applies CSS gradient mask-image fades to scroll edges to handle tab clipping cleanly.
* Employs ResizeObserver and MutationObserver to reliably recalculate scroll metrics as tab lengths or labels change.
* Extracts and tests scroll thumb layout and metrics logic under a dedicated module.
2026-06-19 20:27:00 -07:00
github-actions[bot] f4a0b9ac4f release: v1.4.83 2026-06-20 02:51:20 +00:00
Brennan Benson d6cb38b45a
Keep Codex terminal transcripts readable during redraws (#5858) 2026-06-19 19:49:54 -07:00
Jinwoo Hong 3478efca08
fix: stabilize release terminal e2e (#5869)
Co-authored-by: Orca <help@stably.ai>
2026-06-19 19:43:42 -07:00