Commit Graph
242 Commits
Author SHA1 Message Date
Neil 91bc954b7b Merge branch 'nwparker/term-speed-2-rich-hidden-model-default' into nwparker/term-speed-2-remote-multiplex-e2e-pressure 2026-06-16 16:31:21 -07:00
Neil d9fcc26c9f Merge branch 'nwparker/term-speed-2-rich-hidden-model-pressure' into nwparker/term-speed-2-rich-hidden-model-default
# Conflicts:
#	tests/e2e/terminal-long-table-scroll-restore.spec.ts
2026-06-16 16:31:04 -07:00
Neil 18a8b28965 Merge branch 'nwparker/term-speed-2-rich-hidden-model-prototype' into nwparker/term-speed-2-rich-hidden-model-pressure 2026-06-16 16:30:24 -07:00
Neil fbc811b171 Merge branch 'nwparker/term-speed-2-rich-headless-model-gate' into nwparker/term-speed-2-rich-hidden-model-prototype 2026-06-16 16:30:24 -07:00
Neil b6460f3b47 Merge branch 'nwparker/term-speed-2-remote-ack-pending-cap' into nwparker/term-speed-2-hidden-latin-skip 2026-06-16 16:30:23 -07:00
Neil 05655e06aa Merge branch 'nwparker/term-speed-2-remote-multiplex-ack' into nwparker/term-speed-2-hidden-safe-tui-skip 2026-06-16 16:30:22 -07:00
Neil 38d8e5c23f Merge branch 'nwparker/term-speed-2-active-priority-drain' into nwparker/term-speed-2-hidden-title-skip 2026-06-16 16:30:21 -07:00
Neil c5c17b3b6a Merge branch 'nwparker/term-speed-2-hidden-plain-skip' into nwparker/term-speed-2-active-priority-drain 2026-06-16 16:30:21 -07:00
Neil 21fe394a79 Merge branch 'nwparker/term-speed-2-backpressure-cap' into nwparker/term-speed-2-hidden-plain-skip 2026-06-16 16:30:21 -07:00
Neil 782ae38329 Merge remote-tracking branch 'origin/main' into nwparker/term-speed-2-backpressure-cap 2026-06-16 16:29:10 -07:00
Brennan BensonandOrca 1ce1d4c291 Stabilize terminal rendering release checks (#5533)
Co-authored-by: Orca <help@stably.ai>
2026-06-16 15:45:02 -07:00
Neil 9881abcd93 Merge branch 'nwparker/term-speed-2-rich-hidden-model-default' into nwparker/term-speed-2-remote-multiplex-e2e-pressure
# Conflicts:
#	tests/e2e/ssh-docker-relay-perf.spec.ts
2026-06-16 15:19:06 -07:00
Neil 2ace9749f1 Merge branch 'nwparker/term-speed-2-rich-hidden-model-pressure' into nwparker/term-speed-2-rich-hidden-model-default
# Conflicts:
#	src/renderer/src/components/terminal-pane/pty-connection.ts
2026-06-16 15:17:43 -07:00
Neil da23f22b19 Merge branch 'nwparker/term-speed-2-rich-hidden-model-prototype' into nwparker/term-speed-2-rich-hidden-model-pressure 2026-06-16 15:16:55 -07:00
Neil 9f24db7d1b Merge branch 'nwparker/term-speed-2-rich-headless-model-gate' into nwparker/term-speed-2-rich-hidden-model-prototype
# Conflicts:
#	src/renderer/src/components/terminal-pane/pty-connection.ts
2026-06-16 15:16:41 -07:00
Neil 393edfb0b9 Merge branch 'nwparker/term-speed-2-remote-ack-pending-cap' into nwparker/term-speed-2-hidden-latin-skip
# Conflicts:
#	src/main/daemon/daemon-pty-adapter.ts
#	src/renderer/src/components/terminal-pane/pty-connection.ts
2026-06-16 15:14:47 -07:00
Neil b4aa1ce270 Merge branch 'nwparker/term-speed-2-remote-multiplex-ack' into nwparker/term-speed-2-hidden-safe-tui-skip
# Conflicts:
#	src/renderer/src/components/terminal-pane/pty-connection.test.ts
2026-06-16 15:13:12 -07:00
Neil ec9e0ed2b1 Merge branch 'nwparker/term-speed-2-active-priority-drain' into nwparker/term-speed-2-hidden-title-skip
# Conflicts:
#	src/renderer/src/components/terminal-pane/pty-connection.test.ts
2026-06-16 15:11:41 -07:00
Neil 1fdded3f47 Merge branch 'nwparker/term-speed-2-hidden-plain-skip' into nwparker/term-speed-2-active-priority-drain 2026-06-16 15:11:02 -07:00
Neil 965c6f74ee Merge branch 'nwparker/term-speed-2-backpressure-cap' into nwparker/term-speed-2-hidden-plain-skip
# Conflicts:
#	src/renderer/src/components/terminal-pane/pty-connection.test.ts
#	src/renderer/src/components/terminal-pane/pty-connection.ts
2026-06-16 15:08:05 -07:00
Neil cc8d5a932d Merge remote-tracking branch 'origin/main' into nwparker/term-speed-2-backpressure-cap
# Conflicts:
#	tests/e2e/terminal-hidden-tui-visual-restore.spec.ts
2026-06-16 15:05:57 -07:00
OrcaWinandNeil 68abadba81 Add Windows terminal onboarding step (#5488)
Co-authored-by: Neil <neil@stably.ai>
2026-06-16 14:07:26 -07:00
Jinjing 2740cba2bf Focus workspace name field initially in new workspace dialog (#5456)
- Shifts the initial autofocus from the project combobox to the smart
  name input or pre-filled source pill so users can start typing
  immediately.
- Pins the typed text action row (e.g., "Use name...") to the top of
  the search results dropdown with a sticky header.
- Accepts an external GitHub source context override in the smart name
  field to improve contextual suggestions.
- Updates unit and E2E tests to verify the new focus target behavior.
2026-06-16 00:19:42 -07:00
Jinjing aee2c0a6a4 Limit large git diff payloads in main process before IPC transfer (#5469)
* Limit large git diff payloads in main process before IPC transfer

Move the large diff rendering limit check to a shared module so that
the main process can evaluate diff sizes before transferring them. If
a diff exceeds the limits, its text content is dropped prior to IPC
serialization, and only the limit metadata is sent. This prevents the
application from freezing or crashing when loading massive diff files.

* Gracefully handle and prune oversized files in diff viewer

Prevent UI freezes and out-of-memory errors when viewing or editing
extremely large diffs or files. Working-tree files above 10MB and git
buffer overflows are treated as binary. Text diffs exceeding safe
rendering limits have their contents pruned before IPC transport, and
the UI is updated to show fallback states and disable invalid saves.

* Document save action check for large diffs and fix test import

Explain why saveContentAvailable is required for oversized diffs, as
stripped text bodies before IPC prevent complete saves. Also update the
large-diff-render-limit import in E2E tests to use the shared path.
2026-06-15 22:13:46 -07:00
OrcaWinandNeil 52f2a32e62 Fix settings search fan-out (#5452)
Co-authored-by: Neil <neil@stably.ai>
2026-06-15 20:52:06 -07:00
Brennan Benson 9e6afad545 Prevent large diffs from freezing the diff view (#5409) 2026-06-15 14:39:56 -07:00
Jinwoo HongandOrca 1d85515a3e fix: bound gh cli detail calls (#5413)
Co-authored-by: Orca <help@stably.ai>
2026-06-15 13:37:50 -07:00
Jinwoo HongandOrca 719ae00009 Fix remote runtime tab and agent status UX (#5341)
Co-authored-by: Orca <help@stably.ai>
2026-06-14 01:48:26 -07:00
Jinwoo HongandOrca 630bcce530 fix: replace per-5s full-buffer terminal checkpoints with an incremental log (#5292)
Co-authored-by: Orca <help@stably.ai>
2026-06-12 16:31:24 -07:00
Jinjing 2899a60872 Durable persistence for commit message generation across worktree switches (#5243)
* Persist commit message generation state across worktree switches

Introduce a new global store slice for commit message generation to prevent
in-flight requests from being orphaned or lost when the Source Control
sidebar is unmounted or when switching between worktrees.

- Key commit generation records by worktree ID/path in the Zustand store
- Hydrate completed messages back into the draft input when returning to
  the originating worktree without overwriting active user edits
- Ensure the agent-selection dialog state remains bound to the target
  worktree that initiated the generation
- Wait for the PR composer eligibility check before hydrating completed
  PR field generations on sidebar remounts

* Route cancellations to starting runtime and prune stale worktree records

Ensure commit message and pull request generation cancellation requests
are always routed to the runtime environment that was selected when
the generation started, even if active settings change before
cancellation.

Additionally, prune commit message and pull request generation records
when worktrees are removed to prevent stale records from lingering in
the store.
2026-06-11 23:36:46 -07:00
Jinjing 4d0c449378 Support project reordering with groups and add manual-default notice (#5237)
* Support project reordering with groups and add manual-default notice

Refactors the project header drag-and-drop implementation to work correctly
with project groups by tracking ordering within buckets and updating project
group assignments on drop. Also introduces a dismissible sidebar education
card notifying upgraded profiles that manual project ordering is now the default.

* Split oversized translated UI modules

* Fix localized option test regressions
2026-06-11 20:39:39 -07:00
Jinwoo HongandOrca b09d7124c4 Persist agent provider sessions at quit and resume them on cold restore (#5240)
Agent provider session ids lived only in the in-memory
agentStatusByPaneKey map, so a daemon/session death while the app was
closed (reboot, crash, update kill) left nothing to resume from -
terminals cold-restored as plain shells with no Claude/Codex/Gemini
session (#5232, Bug 2).

The quit flush now captures resumable live agents into the persisted
sleeping-session map with origin 'quit'. Quit-origin records are
consumed only by the pane-level cold-restore resume (which injects the
agent's resume command into the replacement shell); worktree activation
skips them so a warm-reattached agent never gets a duplicate resume
tab. Sleep-origin behavior is unchanged, and a warm reattach clears the
record on the agent's next status event.

Co-authored-by: Orca <help@stably.ai>
2026-06-11 20:17:23 -07:00
Jinwoo HongandOrca 4df412f18e Keep restored terminals on daemon PTYs when startup is slow (#5234)
The 12s first-window timeout used to abort daemon init and open the PTY
spawn gate, so a slow (but succeeding) daemon start flipped restored
panes onto LocalPtyProvider fallback terminals. Those are killed on app
quit and their numeric ids overwrite the persisted daemon session ids,
permanently orphaning the live daemon sessions (#5232, Bug 1).

The window still fails open at 12s, but the PTY gate now waits for the
service attempts themselves and only fails open (aborting the services)
at a 60s deadlock backstop. Failure fallback is unchanged: a daemon init
that errors still resolves the gate onto the local provider.

Co-authored-by: Orca <help@stably.ai>
2026-06-11 20:17:15 -07:00
Jinwoo HongandOrca 0b19195fd9 Remove startup PTY spawn health probe and guard daemon replacement with live-session check (#5230)
Co-authored-by: Orca <help@stably.ai>
2026-06-11 19:00:44 -07:00
Brennan BensonandOrca 7414f17376 test: stabilize release e2e checks (#5212)
Co-authored-by: Orca <help@stably.ai>
2026-06-11 12:46:43 -07:00
Neil 9ceabb43b6 Default agent launches to yolo permissions mode (#5145)
* Default agent launches to yolo mode

* test: update launch default validations
2026-06-10 21:14:53 -07:00
Jinjing 215094ea14 Expose E2E store via build mode 2026-06-10 17:23:12 -07:00
Jinwoo HongandOrca 36ab59d640 Reset WebGL glyph atlases globally to stop cross-terminal glyph corruption (#5122)
Co-authored-by: Orca <help@stably.ai>
2026-06-10 13:41:05 -07:00
Jinwoo HongandOrca a26a4e4894 Suspend floating workspace terminal WebGL while the panel is closed (#5073)
Co-authored-by: Orca <help@stably.ai>
2026-06-09 20:57:43 -07:00
Jinwoo HongandOrca 1cbc40b2aa Recover floating workspace terminal WebGL atlas on reopen (#5069)
Co-authored-by: Orca <help@stably.ai>
2026-06-09 20:19:07 -07:00
Neil 5b27a23ae8 Test remote terminal ACK pressure 2026-06-09 17:06:56 -07:00
Neil 71fa199b15 Enable rich hidden terminal model restore by default 2026-06-09 17:06:56 -07:00
Neil 6709d71153 Test rich hidden model restore under pressure 2026-06-09 17:06:56 -07:00
Neil c050e7532f Prototype rich hidden terminal model restore 2026-06-09 17:06:55 -07:00
Neil 57991d13ab Restore slept terminal output on wake 2026-06-09 17:06:55 -07:00
Neil 0cf30df478 Test renderer backpressure across worktree revisit 2026-06-09 17:06:55 -07:00
Neil d01e9d4806 Skip hidden Latin terminal renderer writes 2026-06-09 17:06:55 -07:00
Neil 274133150e Skip safe hidden TUI renderer writes 2026-06-09 17:06:54 -07:00
Neil 5b8b8d4e99 Skip hidden title terminal renderer writes 2026-06-09 17:06:14 -07:00
Neil 3a91992852 Prioritize active terminal renderer drains 2026-06-09 17:06:14 -07:00