Commit Graph

332 Commits

Author SHA1 Message Date
akbash e6fa5289f2
fix(ui): preserve sidebar scroll across clients (#2280)
refs #2255

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-08-04 15:37:33 +03:00
Can Celik adb50cba9b
fix(input): preserve shift-tab in pane automation (#2259)
refs #1561
2026-08-04 05:19:40 +03:00
Ogulcan Celik cffc6c4b50 fix(docs): allow corrections to published versions
refs #916
2026-08-04 03:59:22 +03:00
Ogulcan Celik b12da23918 feat(plugins): index marketplace manifests 2026-08-04 03:58:21 +03:00
Ogulcan Celik 346411fa21 release: v0.8.0 2026-08-03 21:52:56 +03:00
Ogulcan Celik 977a4f16e8 docs: finalize 0.8.0 release documentation 2026-08-03 21:50:32 +03:00
Can Celik 10eb0bc744
fix: propagate host color scheme to pane apps (#2214)
refs #714
2026-08-03 02:05:27 +03:00
Ogulcan Celik 0e434881b3 fix(docs): publish only released documentation 2026-08-03 01:21:30 +03:00
akbash 9a4ce5e13c
fix: stop advertising worktree json flag (#2174)
refs #2171

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-08-01 23:55:04 +03:00
Ogulcan Celik 6fb0d80357 fix(detect): recognize opencode2 as opencode
refs #2169
2026-08-01 23:33:27 +03:00
akbash bd287b0158
fix: route vscode remote copies through osc52 (#2173)
refs #2015

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-08-01 23:04:03 +03:00
Can Celik df2cb2c3a5
fix(windows): detect agents across git bash exec boundaries (#2170)
refs #2107
2026-08-01 21:25:20 +03:00
Ludovico Magnocavallo 679584fdd4
feat: add antigravity-cli integration (#2087)
* feat: add antigravity_cli integration harness

Register the `antigravity_cli` target, resolve its configuration
directory to `~/.gemini/antigravity-cli/`, wire target actions,
and add lifecycle hook scripts for Unix and Windows.

* feat: support session resume for antigravity-cli

* fix: correct antigravity-cli hook config path, shape, and agent label

Antigravity CLI reads global customizations from ~/.gemini/config, keys
hooks.json by hook name, and only accepts the matcher/hooks wrapper for
the tool events. The previous install wrote event arrays at the top level
of ~/.gemini/antigravity-cli/hooks.json, which agy never reads and would
reject anyway, so no Herdr hook ever ran.

Session reports were dropped for a third reason: the hooks reported the
agent as antigravity-cli, but the server normalizes that to the canonical
label agy before matching, so is_official_agent_source never matched and
agy --conversation resume was unreachable.

- Resolve the config dir to ~/.gemini/config
- Nest Herdr entries under a Herdr-owned "herdr" block that install
  rewrites and uninstall removes, leaving other named hooks untouched
- Emit grouped entries for PreToolUse/PostToolUse and flat handler lists
  for PreInvocation/PostInvocation/Stop
- Report the canonical agy label from both hook assets and match it in
  agent_resume
- Compile-gate the hook asset constants and stop shadowing $args in the
  PowerShell hook
- Document the real directory, that it must already exist, and the
  named-block behavior

refs #1011
refs #1571

* fix: make antigravity-cli integration session-only

antigravity cli cannot express lifecycle safely: there is no blocked
event, postinvocation is skipped on interruption, and stop fires at the
end of a turn rather than on process exit, which left stale state and
released authority at the wrong time.

report only the conversation on preinvocation and let screen detection
own agent state. resume via `agy --conversation <id>` is unchanged.

* fix: update antigravity session after conversation switch

---------

Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-08-01 19:32:47 +03:00
Can Celik f6031f7fb0
feat(ui): make pane scrollbars optional (#2166)
refs #2167
2026-08-01 17:25:43 +03:00
Ogulcan Celik 26a7bc860e fix(windows): preserve semantic escape key taps 2026-08-01 05:08:17 +03:00
Can Celik b76adc155d
fix(input): preserve native key lifecycle across routing (#2142)
refs #2077

Co-authored-by: Jonathan Liebig <jonathan.liebig@gmail.com>
2026-08-01 04:27:50 +03:00
Ogulcan Celik 8d190eddda chore: remove experiments from settings tui 2026-08-01 03:36:11 +03:00
Can Celik 02fe7d7659
feat: support bottom tab bar placement (#2118)
* feat: support bottom tab bar placement

* fix: preserve mouse cleanup under bottom mode bar

refs #2117
2026-07-31 18:15:55 +03:00
Ogulcan Celik bc1c052d15 fix: read alternate-screen agent history 2026-07-31 16:22:04 +03:00
Ogulcan Celik 7db744ab47 fix(sidebar): keep worktree groups packed 2026-07-31 15:40:20 +03:00
Can Celik 0732039eaf
fix: preserve windows sessions after ssh logout (#2098)
* fix: preserve windows sessions after ssh logout

refs #2008

* chore: document windows wmi safety

refs #2008
2026-07-30 23:39:03 +03:00
Can Celik ac47b9e679
fix: resume agents after headless restore (#2088)
refs #2064
2026-07-30 19:15:00 +03:00
Can Celik 53199270f6
fix: launch argument-free agents on windows (#2075)
refs #2072
2026-07-30 15:38:56 +03:00
Can Celik 38b7b540e1
fix: add opt-in child-group process detection (#2052)
* fix: add opt-in child-group process detection

refs #1982

* fix: preserve lifecycle probes without foreground groups

refs #1982
2026-07-30 15:14:27 +03:00
akbash cfa112e741
fix: preserve kitty associated text (#2051)
refs #2020

Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-07-30 03:18:16 +03:00
Ogulcan Celik b44b5b1013 chore: finish repository organization migration 2026-07-30 02:45:05 +03:00
Ogulcan Celik f6060cf682 fix: scope agent skill installation
refs #2022
2026-07-29 21:21:22 +03:00
Can Celik 5b0be42e04
fix(windows): restore system notifications and sound playback (#2019) 2026-07-29 15:02:32 +03:00
Patrick Xin b7317c97ef
docs: add simplified chinese readme (#1990)
* docs: add simplified chinese readme

* fix: publish simplified chinese readme

* fix: require localized readme for releases

* docs: publish simplified chinese readme

---------

Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-07-29 02:18:30 +03:00
Ogulcan Celik 81f355fada perf: replace agent spinners with static status marks 2026-07-28 14:56:53 +03: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
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
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
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
Ogulcan Celik b33e5f973f fix: copy retained mouse selections with keyboard shortcuts
refs #1782
2026-07-25 02:54:20 +03:00
Can Celik 8afd52ae57
fix: bundle modern ConPTY on Windows (#1828)
refs #1533
refs #1644
2026-07-25 02:40: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
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 58e812b238 fix: consume handled url click gestures
refs #1761
2026-07-24 02:10:47 +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
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 0f161fac28 docs: add alternate-screen output fallback 2026-07-21 22:09:38 +03:00