Commit Graph

1398 Commits

Author SHA1 Message Date
JJ Liebig 9354761112 fix: select windows python command in commit hook (#1994) 2026-07-29 01:22:07 +03:00
kangal-bot 6a0ba22615 chore: approve merged contributor bioform 2026-07-28 22:21:07 +00:00
Andrew Krasnoff a0a6e13f11 fix: count ptmx master fds under devpts layouts (#1984)
live_server_holds_one_pty_master_fd_per_pane counted only /proc/<pid>/fd links
resolving to exactly /dev/ptmx. On devpts setups such as WSL2 and many
containers, a PTY master fd resolves to /dev/pts/ptmx instead, so the test found
zero masters and failed with "had 0 ptmx master fds; expected 1" even though the
server held the pane's master fd. Match both ptmx node paths; pty slaves still
resolve to /dev/pts/<N> and stay uncounted, so the one-master-per-pane invariant
is unchanged.
2026-07-29 01:20:58 +03:00
Ogulcan Celik e27a4ea427 perf: skip rendering hidden pty updates 2026-07-28 23:29:11 +03:00
Ogulcan Celik e16d7d8c07 fix: preserve linked worktree workspace labels 2026-07-28 15:34:13 +03:00
Ogulcan Celik 81f355fada perf: replace agent spinners with static status marks 2026-07-28 14:56:53 +03:00
JJ Liebig 1491b7dd9c fix: ignore nested codex session reports (#1927)
* fix: ignore nested codex session reports

refs #1789

* test: cover matching codex thread id

---------

Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-07-28 04:13:35 +03:00
Ogulcan Celik b499e611b6 fix: resolve relative plugin commands from plugin root
refs #1949
2026-07-28 02:19:33 +03:00
Ogulcan Celik 7383f120c6 docs: update sponsor acknowledgements 2026-07-28 00:59:17 +03:00
Season Saw a979916568 fix: keep focus on the current workspace when another self-closes (#1912)
handle_pane_died only clamped the stale active/selected indices after
removing a workspace that closed itself, so it never shifted them down
when the removed workspace sat before the focused one. With workspaces
[x, y, z] and focus on y, removing x left active pointing at z, silently
moving the user into a workspace they did not select.

Resolve both indices by workspace id across the removal, as
close_selected_workspace already does, keeping the clamp as the fallback
for when the removed workspace was the focused one. Also scroll the
focused workspace back into view, which the explicit-close path already
did and this one did not.

refs #1621

Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-07-27 16:17:14 +03:00
JJ Liebig 6d1bedee3e fix: make native windows checks reliable (#1925) 2026-07-27 14:15:23 +03:00
kangal-bot dc2506ea8c chore: approve merged contributor season179 2026-07-26 23:25:39 +00:00
Season Saw a79b3d5580 fix: close workspace when api closes its last tab (#1899)
herdr tab close on a workspace's only tab returned tab_close_failed,
while the TUI close-tab action on the same tab closes the tab and
cascades to closing the workspace. Cascade in the API too, emitting
tab.closed then workspace.closed. When the cascade would close a whole
worktree group, return confirmation_required instead, matching
pane.close and the TUI prompt.

refs #1760
2026-07-27 02:25:29 +03:00
kangal-bot 7e96b1b7e8 chore: approve merged contributor Pimpmuckl 2026-07-26 23:17:08 +00:00
JJ Liebig 04205ac070 fix: preserve shift-enter in windows panes (#1909)
refs #1743
2026-07-27 02:16:57 +03:00
Ogulcan Celik bb29eedb72 fix: delay agent prompt submission
refs #1878
2026-07-27 00:12:25 +03:00
Ogulcan Celik 471041690a fix: ignore empty clipboard writes
refs #1893
2026-07-26 17:08:03 +03:00
Ogulcan Celik 2debcec74c fix: restrict unapproved pull requests to bug fixes 2026-07-26 15:57:59 +03:00
Ogulcan Celik e1a32e5865 ci: harden pull request workflow execution 2026-07-26 15:40:59 +03:00
kangal-bot 65713cefcc chore: approve merged contributor olafkfreund 2026-07-26 12:36:04 +00:00
Olaf Krasicki-Freund d231fc0663 fix(nix): include SKILL.md in the package fileset (#1890)
refs #1889
2026-07-26 15:35:52 +03:00
Ogulcan Celik 61f6400675 fix: repaint after transient terminal resizes 2026-07-26 15:05:28 +03:00
Ogulcan Celik 19cd372f25 fix: preserve prefix mode for modifier events
refs #1870
2026-07-26 14:43:48 +03:00
Ogulcan Celik cb2e17a4a5 feat: print bundled agent skill and hint next cli steps 2026-07-26 14:29:37 +03:00
kangal-bot 51744cef01 chore: approve merged contributor yianL 2026-07-26 11:25:58 +00:00
Yi-An Lai 165dca453d fix: preserve focus when closing a non-focused workspace (#1877)
refs #1328
2026-07-26 14:25:46 +03:00
Can Celik e536bd8bd9 fix: support non-us shifted keybindings (#1876)
* fix: support non-us shifted keybindings

refs #1870

* docs: require current pull request base
2026-07-26 04:22:05 +03:00
Can Celik 8843bbb0c4 fix: improve sidebar worktree hierarchy and reordering (#1873)
* fix: clarify sidebar worktree hierarchy

refs #1694

* feat: reorder worktree groups as a unit

refs #1694
2026-07-26 02:45:44 +03:00
Can Celik 547aba8e0a fix: avoid renders for passive mouse motion (#1872)
refs #1865
2026-07-26 00:28:11 +03:00
Can Celik b01fc37e66 perf: avoid full pane renders for spinner animation (#1868) 2026-07-25 23:20:08 +03:00
Ogulcan Celik da40b1aa34 ci: gate pull request review by scope 2026-07-25 23:04:43 +03:00
Ogulcan Celik c7b3d8abcc fix(nix): add rust-analyzer to development shell 2026-07-25 22:28:54 +03:00
Ogulcan Celik f67803f4ca chore: consolidate project skills 2026-07-25 21:04:01 +03:00
Ogulcan Celik b9ebd238f8 docs: define maintainer and agent contribution workflows 2026-07-25 20:58:20 +03:00
joonhwan 6cfaa079a9 feat: switch IME to ASCII in prefix mode on Windows (Korean IME) (#1823)
* feat: switch IME to ASCII in prefix mode on Windows

Extend switch_ascii_input_source_in_prefix to Windows: detect IME state
via WM_IME_CONTROL and toggle to ASCII with SendInput for the Korean IME.
Other IME languages are detected and left unchanged.

refs #1802

* docs: clarify Windows (Korean IME) support for prefix ASCII switching

Follow-up to the Windows prefix ASCII switch, which extended
switch_ascii_input_source_in_prefix to Windows but left the surrounding
text describing macOS only.

- Settings row label: "(macOS)" -> "(macOS/Windows)", plus its test.
- Generalize the Windows behavior wording to "switches the IME to
  English (ASCII) input" in the config-reference.json entry and the
  model.rs doc comment, and state that Windows support is currently
  limited to the Korean IME.
- Add a :::caution aside noting the Korean-IME-only limitation to the
  en/ja/zh preview docs, keeping the three translations in sync.

refs #1802

* fix: warn when prefix IME toggle injection is incomplete

SendInput can queue fewer events than requested (for example when blocked
by UIPI), which would otherwise leave the IME silently stuck in ASCII or
native mode. Log a warning with the sent and expected counts so the failure
is diagnosable.

refs #1802

* fix: guard prefix IME restore and correct open-status naming

Address maintainer review on the Windows prefix ASCII switch:

- Restore only when safe: store the foreground window at switch time and,
  before toggling back, require that the same window is still focused and
  the IME is still in English. This stops restore from toggling another
  application or overriding a manual return to Hangul during prefix mode.
- Report injection success from send_vk_tap and only arm restoration when
  the initial toggle landed; on a partial injection retry the dropped
  key-up so a key is not left logically held down. The injection policy is
  split into send_vk_tap_with(inject) so the success, partial, and failure
  branches are unit-tested without the real SendInput.
- Correct the WM_IME_CONTROL sub-command naming: 0x0005 is IMC_GETOPENSTATUS
  (IME open state), not IMC_GETCONVERSIONMODE. Behavior is unchanged; the
  constant, comments, and tests now describe the open-status read.

refs #1802

* fix: bound IME open-status read with a timeout

The prefix IME switch reads IMC_GETOPENSTATUS via WM_IME_CONTROL, which
crosses into the terminal-emulator process. A plain SendMessageW would block
herdr's client thread until that process responds, indefinitely if it hangs.
Read through SendMessageTimeoutW with SMTO_ABORTIFHUNG and a short timeout
instead; on timeout the switch is skipped and restore does nothing, so a hung
host process can no longer freeze prefix-mode entry or exit.

refs #1802

* fix: preserve windows ime restoration after partial injection

refs #1802

---------

Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-07-25 20:52:45 +03:00
Can Celik d4e0dd3d90 perf: eliminate repeated workspace git discovery (#1842)
* perf: eliminate repeated workspace git discovery

refs #1838

* fix: keep workspace labels current without extra redraws

refs #1838

* fix: retain discovered workspace git metadata

refs #1838
2026-07-25 04:26:55 +03:00
Ogulcan Celik b33e5f973f fix: copy retained mouse selections with keyboard shortcuts
refs #1782
2026-07-25 02:54:20 +03:00
Ogulcan Celik 0065a0ef34 fix: run pi worktree ext on background 2026-07-25 02:54:12 +03:00
kangal-bot fc0ce8f32f chore: approve merged contributor ogulcancelik 2026-07-24 23:40:24 +00:00
Can Celik 8afd52ae57 fix: bundle modern ConPTY on Windows (#1828)
refs #1533
refs #1644
2026-07-25 02:40:14 +03:00
Ogulcan Celik 5f1957c27b fix: harden hermes lifecycle detection 2026-07-25 01:05:14 +03:00
corrius 38d2b0780c feat: filter keybind help (#1832)
* feat: filter keybind help

refs #1825

* fix: recognize shifted slash in keybind help

---------

Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-07-24 22:52:17 +03:00
Enrico Carlesso e9b22084e0 feat: add grok cli integration for native session restore (#1807)
* feat: add grok cli integration for native session restore

tl;dr: adds `herdr integration install grok` (session-identity tier: a
SessionStart hook reports the grok session id for native restore; state
stays screen-detected via the bundled manifest).

Grok merges every ~/.grok/hooks/*.json, so install writes a
self-contained hooks/herdr.json registering a SessionStart hook next to
hooks/herdr-agent-state.sh, and never touches other hook files. The hook
prefers $GROK_SESSION_ID (injected into every grok hook process) and
reports through the socket API; herdr:grok is a reserved-native-state
source so screen detection stays authoritative. Restore uses
`grok --resume <id>`. Additive JSON API change; no protocol bump; the
schema artifact is regenerated.

refs #1800

* fix: honor GROK_HOME and validate grok hook config in status

Review follow-ups: grok_dir now resolves GROK_CONFIG_DIR (herdr test
seam) before GROK_HOME (the grok CLI's own config-home override) before
~/.grok, so hook installs land where grok actually looks. Integration
status now also validates the herdr-owned hooks/herdr.json next to the
hook script — missing, corrupt, or no-longer-referencing configs report
the install as outdated instead of masking a hook grok never invokes.

refs #1800

* fix: validate the exact grok session hook command in status

The config validator matched on a filename substring, so a SessionStart
command like `echo herdr-agent-state.sh`, or one invoking the script
without the `session` action, still reported the integration as current
while grok never delivered a session id. Status now compares against the
exact command the installer writes, via a shared builder, and the
degradation tests cover both nonfunctional shapes.

refs #1800

* fix: require a command-type grok session hook in status validation

A config entry carrying the exact generated command under a non-command
hook type (e.g. "http") is never executed by grok, so it must not report
the integration as current. The validator now also requires
type = "command", with a degradation test for the mismatched-type shape.

refs #1800

* fix: validate the complete grok hook config

refs #1800

---------

Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-07-24 22:05:20 +03:00
kangal-bot b56baee9d6 chore: approve contributor corrius 2026-07-24 12:12:17 +00:00
kangal-bot 83c7bde7a6 chore: approve contributor adamkrellenstein 2026-07-24 11:44:20 +00:00
Ogulcan Celik c0fb777ed7 fix: report truncated pane reads
refs #1717
2026-07-24 04:00:13 +03:00
Ogulcan Celik e608a75159 fix: make known-agent exit process-owned
refs #1792
refs #1648
2026-07-24 02:50:58 +03:00
Ogulcan Celik 169a4fd90c fix: answer XTWINOPS size queries in panes
refs #835
2026-07-24 02:39:51 +03:00
kangal-bot 1bcc55e47d chore: approve contributor joonhwan 2026-07-23 23:25:54 +00:00
Ogulcan Celik a45ce225fe fix: prefer branded homepage search image 2026-07-24 02:13:06 +03:00