Commit Graph
1735 Commits
Author SHA1 Message Date
Eric Yue b7781a67e2 fix: match navigator search terms independently (#4535)
* fix: match navigator search terms independently

refs #4273

* docs: remove redundant navigator search note

refs #4273
2026-09-24 13:45:59 +02:00
JJ Liebig 9c96f7ddb3 fix: avoid inferring codex idle from terminal output (#4563)
refs #4507
2026-09-24 02:23:42 +02:00
JJ Liebig 21fd121a63 fix: prevent cursor flicker on status redraw (#4554)
* fix: prevent cursor flicker on status redraw

* fix: avoid stale cursor during resize
2026-09-23 20:39:01 +02:00
Eric Yue c958833fa8 test: wait for complete handoff pid markers (#4538)
* test: wait for complete handoff pid markers

* test: wait for complete handoff pid markers
2026-09-23 16:44:56 +02:00
JJ Liebig 9903007e5c test(windows): capture native console input records (#4520)
refs #4470
2026-09-23 14:26:17 +02:00
akbashandakbash-bot 23479dd162 fix: prevent Windows non-text keys from triggering the space prefix (#4510)
refs #4470

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-09-23 03:54:44 +02:00
JJ Liebig 440a8bdd1e fix: keep synchronized pane frames atomic (#4508)
refs #2968
2026-09-23 02:19:59 +02:00
JJ Liebig cd8306d7f3 fix: detect npm-installed omp on windows (#4502)
refs #4313
2026-09-22 22:37:25 +02:00
JJ Liebig 621e6b73c4 fix: recognize Windows daemons in non-killing jobs (#4489)
refs #4309
2026-09-22 18:55:34 +02:00
JJ Liebig dd33ddf28d fix: move worktree lookups async (#4492) 2026-09-22 19:43:12 +03:00
Can Celik 1c6397b1cd fix: reuse ssh authentication and add machine recovery commands (#4490)
* fix: reuse ssh authentication and add in-app mfa recovery

refs #3763

* refactor: move ssh recovery to machine cli

refs #3763
2026-09-22 19:12:29 +03:00
JJ Liebig 7237703dc5 fix: recognize codex mention completion popups (#4495)
refs #4220
2026-09-22 17:48:23 +02:00
Can Celik 90b0e40ab3 fix: preserve hook agent status across live handoff (#4493) 2026-09-22 18:31:37 +03:00
Can Celik f6390752a5 fix: track opencode subagent status per pane (#4357)
refs #1362
2026-09-22 16:25:17 +03:00
JJ Liebig 46a5091838 fix: stagger restored agent startups (#4487)
* fix: stagger restored agent startups

refs #4102

* fix: report startup delay changes requiring restart

refs #4102
2026-09-22 15:23:31 +02:00
Can Celik 8ac9542757 fix: clear inherited terminal and agent session identity (#4461)
refs #4104
2026-09-22 02:20:47 +03:00
Can Celik 28360107c1 fix: distinguish agent completion from startup and session changes (#4457)
refs #3338
refs #3990
refs #3916
2026-09-21 20:47:14 +03:00
309749ad65 fix: honor droid scrollback clear requests in panes (#4432)
Remove the droid-specific filter that discarded ED3 before PTY output
reached the terminal parser. Keeping stale scrollback beneath replayed
primary-screen frames duplicated the welcome header and old transcript.

Pass the original bytes to the parser and trackers. Add process-aware
regression coverage across PTY chunk boundaries and preserve ED2/ED3
screen-history separation and alternate-screen isolation.

Co-authored-by: ain3sh <ainesh.chatterjee@gmail.com>
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-21 17:38:56 +04:00
Can Celik 3602c757e0 fix: refresh forwarded ssh agents after reconnect (#4443)
refs #1931
2026-09-21 15:22:46 +03:00
Ogulcan Celik 5a64914223 chore: approve ain3sh contributor accounts 2026-09-21 03:56:58 +03:00
Eric Yue 7e91c4cd93 perf: index navigator tabs and panes per endpoint (#4426) 2026-09-21 02:13:34 +02:00
kangal-bot 95e97bff3a docs: publish preview documentation 2026-09-20 21:51:02 +00:00
Can CelikandJJ Liebig 0ff0f27e22 fix: preserve session layouts across shutdown and restore failures (#4400)
* fix: preserve session layouts across shutdown and restore failures

refs #4320

* test: update subscription fixture for pane restore errors

---------

Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
preview-2026-09-21-0ff0f27e2226
2026-09-21 00:29:45 +03:00
Eric YueandJJ Liebig f090ce95d0 fix: confirm closing the last tab in the tui (#4409)
* fix: confirm closing the last tab in the tui

refs #4379

* docs: clarify last-tab worktree confirmation in translations

refs #4379

---------

Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-20 19:33:11 +02:00
f10df75c8a fix: reject terminal-less attach before starting a session (#4395)
refs #4393

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-20 17:12:12 +02:00
Eric YueandJJ Liebig 65927cef1c fix: drain event subscriptions and report history loss (#4225)
* fix: drain event subscriptions and report history loss

refs #4178

Root cause:
Each subscription emits at most one matching event per 100 ms poll, while
the shared event history retains only 512 entries. Bursts therefore build
a backlog, and an evicted cursor silently resumes at the oldest retained
event with no indication that earlier events were lost.

Fix:
Drain the bounded retained batch for lifecycle and agent-status streams.
Check for history loss while holding the same lock used to read events,
then return an events_lost error and close only the affected subscription.
Keep event envelopes, request shapes, endpoint codecs and wait behavior
unchanged. Preserve state filters, initial snapshots, event order and the
existing cadence for snapshot-only subscriptions.

Document resubscription and snapshot recovery in the unreleased API docs.
Add regressions for burst draining, startup-window loss, retention bounds,
status ordering and filtering, and unavailable history.

Validation:
Three socket regressions fail before the fix and pass afterward. Thirty-two
focused API tests and five repeated rounds of socket tests pass. The real
current-master comparison receives 516 of 600 events before the fix and
600 of 600 after it in about 0.97 seconds. A paused reader receives the
explicit error, and a new subscription plus snapshot recovers successfully.

Full native just ci on the dependency-inclusive branch passes 3631 Rust
tests with six default skips, formatting, all-target Clippy, 112 maintenance
tests, six architecture tests and 39 integration-asset tests. All seven
docs contract tests pass. No retries or additional exclusions were used.
Local Windows cross-lint was not run because its SDK is unavailable.

* test: cover subscription isolation across platforms

refs #4178

---------

Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-20 16:56:47 +02:00
6c62707a3a fix: preserve explicit worktree workspace membership (#4301)
refs #4293

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-09-20 16:49:20 +02:00
Eric YueandJJ Liebig 74505861e4 fix: keep workspace navigation visible in terminal theme (#4408)
* fix: keep workspace navigation visible in terminal theme

refs #4300

* fix: clear workspace highlight on directional pane focus

refs #4300

---------

Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-20 16:33:50 +02:00
c00a62dda1 fix: preserve delayed mouse reports with confirmed keyboard input (#4247)
* fix: preserve delayed mouse reports with confirmed keyboard input

refs #3480

* fix: capture geometry before replaying buffered mouse input

refs #3480

---------

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-20 16:10:16 +02:00
IvanandJJ Liebig 29f9f4056f fix: detect codex status with custom interrupt keys (#4196)
* fix: detect codex status with custom interrupt keys

* test: remove unverified codex stale-status cases

* fix(detect): match punctuation in codex interrupt hints

Accept parentheses in remapped interrupt binding labels and simplify the cheap prefilter to a single any-gate shared by both manifest copies.

---------

Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-20 14:23:58 +02:00
Vinay ShahandJJ Liebig a3a1c94ed5 fix: detect kiro status from live controls and osc signals (#4372)
* fix: detect kiro status from live controls and osc signals

refs #4203

* fix: handle variable-height kiro approval panels

refs #4203

---------

Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-20 15:55:41 +04:00
JJ Liebig d59d0603d5 fix: recover the cursor during animated redraws (#4404)
refs #4303
2026-09-20 03:33:51 +02:00
JJ Liebig 9d29441a84 test(windows): distinguish clipboard paste origin in input gauntlet (#4394)
* test(windows): distinguish clipboard paste origin in input gauntlet

refs #4314

* test(windows): correct gauntlet paste-origin evidence

refs #4314
2026-09-20 00:21:32 +02:00
856b64b9bf fix: stabilize windows cursor redraws and settle deadlines (#4389)
* fix: prevent cursor jumps during synchronized redraws

refs #4303

* fix: settle cursor positions across delayed windows redraws

refs #4303

* fix(windows): hold jump-shaped cursor moves through the max window

* fix: bound windows cursor settling and repaint at its deadline

refs #4303

---------

Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
Co-authored-by: JJLiebig <jj@liebig.gg>
Co-authored-by: Axel Karlsson <axelalbertkarlsson@outlook.com>
2026-09-19 20:21:46 +02:00
Can Celik e0507237ad feat: show every agent and terminal in the go to picker (#4384) 2026-09-19 15:43:47 +03:00
Can Celik cc7c696cd0 feat: add configurable pane screen and scrollback clearing (#4383) 2026-09-19 14:47:18 +03:00
3f2a6e743f test: isolate integration assets from inherited omp environment (#4351)
refs #4346

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-09-18 21:56:24 +03:00
Can Celik 028780cebc fix: reveal selected agent when cycling the sidebar (#4355)
* fix: reveal selected agent when cycling the sidebar

* fix: reveal agent after endpoint activation
2026-09-18 21:50:26 +03:00
akbashandakbash-bot 241063f7ff fix: preserve request ids in socket error responses (#4353)
* fix: preserve request ids in socket error responses

refs #4344

* docs: clarify socket error response limits

refs #4344

---------

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-09-18 17:41:56 +03:00
Can CelikandJJ Liebig a19a595c55 perf: enable ssh compression for remote connections (#4340)
Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-18 17:02:09 +03:00
JJ Liebig 68dd6edaa2 test(windows): qualify remote clipboard image paste (#4324)
* test(windows): qualify remote clipboard image paste

refs #4314

* test(windows): verify staged clipboard image contents

refs #4314

* test(windows): safely clean failed clipboard leases

refs #4314
2026-09-18 15:18:23 +02:00
Can Celik 7201907b65 test: focus agent detection coverage on engine contracts (#4338) 2026-09-18 14:09:12 +03:00
Can Celik 7df919d00e fix: correct grok activity detection with custom or disabled osc signals (#4337)
refs #4333
2026-09-18 12:52:37 +03:00
JJ Liebig da6bcd5969 fix(windows): preserve mouse capture during refresh (#4319)
* fix(windows): preserve mouse capture during refresh

refs #4284

* test(windows): fix default input gauntlet invocation

* fix(windows): preserve pixel mouse transitions

refs #4284
2026-09-18 02:42:37 +02:00
b88e8116e9 test: add local windows input gauntlet (#4298)
* test: add local windows input gauntlet

refs #4251

* test: add local windows input gauntlet

Harden elevation and channel identity checks, distinguish known host limitations, and surface incomplete cleanup.

refs #4251

* test(windows): harden input gauntlet execution

refs #4251

* test(windows): make input gauntlet self-contained

refs #4251

* test(windows): bound input gauntlet failure paths

refs #4251

* test(windows): extend input qualification gauntlet

refs #4251

* test(windows): complete input qualification matrix

refs #4251

---------

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: Jonathan Liebig <jonathan.liebig@gmail.com>
2026-09-18 01:13:13 +02:00
JJ Liebig 14351f121f test: skip windows symlink tests without symlink privilege (#4311)
Windows refuses file symlinks with ERROR_PRIVILEGE_NOT_HELD (1314) unless
the test process is elevated or Developer Mode is enabled, which broke
non-admin local runs. Share a helper that reports the missing privilege so
the two symlink tests skip only the symlink-dependent assertions.
2026-09-17 22:43:35 +02:00
JJ Liebig 101ccc20d3 fix(windows): prefer pwsh for the default pane shell (#4297)
* fix(windows): prefer pwsh for the default pane shell

Windows panes launched Windows PowerShell 5.1 (powershell.exe) whenever [terminal] default_shell was unset, ignoring PowerShell 7 even when pwsh.exe resolved on PATH. Resolve the unset default against PATH and prefer pwsh.exe, falling back to the inbox powershell.exe. An explicit default_shell still wins.

* fix(windows): validate pwsh before using it as the default shell

portable-pty resolves the configured shell with Path::exists and passes that path to CreateProcessW, which does not fall through to later PATH entries. Selecting an invalid pwsh.exe would therefore break new panes instead of falling back. Only prefer a pwsh.exe that starts with the PE MZ magic, and return its path so the validated binary is the one launched.

* fix(windows): validate the full PE header before preferring pwsh

Checking only the DOS MZ signature still accepted truncated images, DLLs, and foreign-architecture binaries. Because portable-pty passes the resolved path straight to CreateProcessW without trying later PATH entries, validate the PE signature, the COFF header (machine, executable-image bit, not a DLL, section count), and the optional header before preferring pwsh.exe.

* fix(windows): accept native ARM64 pwsh and validate the section table

Herdr ships an x64 Windows build that also runs on Windows ARM64 under x64 emulation, so cfg!(target_arch) cannot tell whether a native ARM64 pwsh.exe is launchable. Accept every executable machine type Windows supports instead of rejecting ARM64 on the x86_64 build. Also bound-check the section table (40 bytes per declared section) after the optional header so a truncated table falls back instead of being selected.

* fix(windows): detect the native host machine for pwsh compatibility

Machine compatibility was derived from cfg!(target_arch), which reports the emulated x64 process on Windows ARM64, and then briefly accepted ARM64 on every host. Read the native machine with IsWow64Process2 in the platform layer instead: ARM64 Windows accepts ARM64/x64/x86 images, x64 accepts x64/x86, and x86 accepts only x86.
2026-09-17 17:45:07 +02:00
JJ Liebig 5c61d8ec2e fix(windows): temporarily revert VT only mode on Windows (#4295)
refs #4251
2026-09-17 15:33:04 +02:00
JJ Liebig 529eeca41d test: make windows config backup legacy fixture explicit (#4290)
backup_preserves_legacy relied on a freshly created temp file already having a legacy DACL (D:(...)). Directories that grant inheritable ACEs produce D:AI(...) instead, so the fixture failed before exercising the backup path. Install the legacy DACL explicitly, preserving the existing ACEs while clearing the auto-inherit and protected control bits.
2026-09-17 14:24:48 +02:00
JJ Liebig e7e3dfa60e fix(windows): recover VT input without changing readers (#4269)
refs #4251
2026-09-17 03:14:57 +02:00