Commit Graph

1370 Commits

Author SHA1 Message Date
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
Ogulcan Celik 58e812b238 fix: consume handled url click gestures
refs #1761
2026-07-24 02:10:47 +03:00
Ogulcan Celik 36de78dd4f fix: preserve kitty graphics during host repaints
refs #1628
2026-07-24 01:31:06 +03:00
akbash 503613c8ec
fix: inherit host palette in pane queries (#1759)
refs #1752

Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-07-24 01:28:35 +03:00
kangal-bot 58ad2c6438 chore: approve contributor carlesso 2026-07-23 21:08:17 +00:00
Ogulcan Celik d901239474 chore: approve contributor badlogic 2026-07-23 23:33:40 +03:00
Ogulcan Celik e7fc85bfdb fix: preserve kitty printable key releases
refs #1746
2026-07-23 03:47:44 +03:00
Ogulcan Celik 2a20e90a02 fix: preserve physical escape on windows
refs #1736
2026-07-23 01:49:54 +03:00
Ogulcan Celik 7e821ba7a3 fix: respect OMP config directory override
refs #1696
2026-07-22 23:06:52 +03:00
Ogulcan Celik cd5ea1be0e chore: relicense herdr under apache-2.0 2026-07-22 22:56:57 +03:00
Ogulcan Celik a02c3a69bb refactor: centralize new terminal cwd selection
replaces contributions from Pitchfork-and-Torch
2026-07-22 22:41:01 +03:00
Ogulcan Celik 9524d0a3bc refactor: name darwin nix toolchain inputs
replaces contributions from DeevsDeevs
2026-07-22 22:29:58 +03:00
Ogulcan Celik a8be6117f6 refactor: simplify macos input source ownership
replaces contributions from sf-jin-ku
2026-07-22 22:10:23 +03:00
Ogulcan Celik f23e3779dc refactor: clarify opencode event state mapping
replaces contributions from soar
2026-07-22 21:54:49 +03:00
Ogulcan Celik 73d17682ce refactor: simplify cursor session reporting
replaces contributions from udirom
2026-07-22 21:40:05 +03:00
Ogulcan Celik 08ca798518 refactor: simplify kimi lifecycle reporting
replaces contributions from wbxl2000
2026-07-22 20:00:54 +03:00
Ogulcan Celik d3b4d5b0e1 refactor: simplify qoder session reporting
replaces contributions from wayneleelwc
2026-07-22 19:36:40 +03:00
Ogulcan Celik 1d238bc9a3 refactor: replace pane mouse and clipboard internals
replaces contributions from othavi0
2026-07-22 18:59:01 +03:00
Ogulcan Celik c234f221f9 feat(docs): publish versioned release documentation 2026-07-22 14:59:09 +03:00
Ogulcan Celik ef85fa0c7e fix: keep reading while pty input is blocked
refs #1295
2026-07-22 04:00:28 +03:00
Ogulcan Celik 08640bb3dd fix: fall back to sh for remote path discovery
refs #1201
2026-07-22 03:12:13 +03:00
Ogulcan Celik 0f161fac28 docs: add alternate-screen output fallback 2026-07-21 22:09:38 +03:00
kangal-bot 62d423515c docs: update preview manifest 2026-07-21 19:02:41 +00:00
Ogulcan Celik 0f10e1453a fix(website): add agent automation to docs sidebar 2026-07-21 21:19:10 +03:00
github-actions[bot] c5293af690 docs: update website manifest for v0.7.5 2026-07-21 18:11:30 +00:00
Ogulcan Celik ef4c23f577 release: v0.7.5 2026-07-21 21:04:32 +03:00
Ogulcan Celik bc064e9d03 docs: finalize release docs and refresh agent skill 2026-07-21 21:01:27 +03:00
Ogulcan Celik 7c18900346 docs: document alternate-screen automation limits 2026-07-21 19:09:04 +03:00
Ogulcan Celik 1955406eaf fix: link plugins without a running server
refs #1670
2026-07-21 17:37:43 +03:00