aboutsummaryrefslogtreecommitdiff
path: root/docs/next/website/src/content
AgeCommit message (Collapse)Author
2026-09-02fix: reliably submit delayed agent prompts (#3506)JJ Liebig
2026-09-02feat: support independent multi-client tab views (#3526)Can Celik
2026-09-02feat: add stable client endpoint compatibility (#3509)Can Celik
* feat: add stable client endpoint compatibility * fix: keep portable-pty patch checks composable * ci: run maintenance checks in pull requests * fix: reject endpoint errors from terminal clients * feat: keep compatible servers running across updates
2026-09-01refactor: render the shell in the client (#3487)Can Celik
* feat: add opt-in client-rendered shell * feat: add client-owned shell mouse controls * feat: complete client-owned shell chrome * feat: add client-owned shell settings and notifications * feat: run client shell custom commands * feat: render popup terminals in client shell * feat: add client-owned scrollback and copy mode * fix: preserve client worktree trust defaults * feat: render startup diagnostics in client shell * feat: render onboarding in client shell * feat: render product announcements in client shell * feat: render release notes in client shell * feat: render mobile switcher in client shell * feat: render kitty graphics in client shell * fix: preserve client shell lifecycle coherence * refactor: route client shell commands through endpoint connections * refactor: make the client-rendered shell the default * refactor: remove monolithic launch mode * refactor: complete client-rendered shell cutover * perf: retain client pane surface updates * perf: scale retained pane surface updates * perf: remove remote pane input latency * test: make client shell checks platform-independent * fix: prevent client timer starvation * test: fix client shell platform gates * test: accept retained surfaces in cross-area checks * test: make client mode assertions platform-neutral * fix: badge only outdated integrations
2026-08-28fix: trust worktree repositories per request (#3344)Can Celik
refs #3044
2026-08-27feat(detect): add muse agent with generic Pick blocked detection (#2489)Ömer Hamid Kamışlı
* feat(detect): add muse agent with generic Pick blocked detection Add Muse agent manifests and runtime detection for idle/working/blocked states. Blocked Pick is generic on footer 'Enter to select' so any question title/message triggers, fixing missed waiting answer where previous AND-gated rule required specific hint combos. Cover process names muse, muse-bin, muse-code variants and YOLO footer. refs #herdr * fix(detect): tighten muse manifest and agent lookup - manifests: change working_esc_interrupt and blocked_approval from whole_recent to bottom_non_empty_lines(8) to use captured bottom-buffer controls instead of incidental whole-pane text - manifests: anchor idle_prompt line_regex to ^\s*⟩\s*$ so working chrome "⟩ ..." does not match idle - runtime: restrict muse lookup to explicit aliases (muse|muse-bin|muse-code|muse-cli), remove starts_with("muse") fallback that misclassified museum/muse-helper/muser; add positive/negative identification tests - keep website mirror identical; verified with agent_detection manifest check --require-website refs #2489 refs #2456 * fix(detect): address mjdouglas vendor findings for muse - manifests: widen pick_request_blocked to bottom_non_empty_lines(8) and add Enter to toggle for multi-select; add menu_request_blocked for user-opened pickers (enter confirm/esc go back/esc close/space toggle); add workspace_trust_blocked for Do you trust dialog; tighten blocked_approval to footer chrome Allow once/Always allow/Yes proceed; split idle_prompt into any gate for empty and typed draft and not-gate pick/menu anchors; change idle_status_fallback from YOLO to model \u00b7 effort \u00b7 cwd shape - runtime: replace bare muse-bin alias with muse-bin-<version> digit check to match versioned launcher binary and avoid museum/muse-binary false positives - cross-checked with vendor-side captures reported on PR #2489 against strings in shipped muse-bin binary refs #2489 * fix(detect): handle path-qualified muse-bin versioned binary lookup_agent now uses path_basename before matching so a launcher exec with absolute argv0 like /usr/local/lib/muse/muse-bin-0.1.0-R708.1 is correctly identified. is_muse_versioned_binary also checks basename so direct path-qualified names succeed without relying on the argv0_argv fallback path. Prevents missed Muse detection when screen state and sound overrides are not applied. refs #2489 * fix(detect): add enter save to muse menu detection Evidence documents /theme with enter save footer which was not matched. Add enter save to menu_request_blocked any list and to idle_prompt not-gate (highlighted row ⟩ <choice> shares glyph) and keep website mirror in sync. Update evidence comment counts from four to five. refs #2489 * docs: add Muse to supported agents table Muse detection (manifest, process identification, sound) was added earlier but docs/next agents table omitted the row. Add Muse as screen manifest / none (no integration hook, consistent with Amp/Kiro/Maki) to en/ja/zh-cn translations. * fix(detect): resize agent arrays for new upstream variant Agent::ALL and SCREEN_MANIFEST_AGENTS gained an entry from master but kept stale size annotations, breaking compilation after rebase. refs #2489 * docs: add muse detection entry to next changelog refs #2489 * docs: add muse sound override to config reference refs #2489 * fix(detect): prevent false muse blocked states refs #2489 --------- Co-authored-by: Omer Hamid Kamisli <ohkamisli@poikus.com> Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-08-25fix: require explicit workspace group close (#3206)akbash
refs #2874 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-08-23fix(api): start lifecycle subscriptions from live events (#3134)Can Celik
refs #1270
2026-08-23fix(windows): add local cmd installer bootstrap (#3133)Can Celik
* fix(windows): add local cmd installer bootstrap refs #2751 * fix(windows): bound installer downloads refs #2751
2026-08-23feat: add per-mode theme overrides (#2324)Alex
* feat: add per-mode theme overrides allow [theme.custom.light] and [theme.custom.dark] blocks so custom overrides can differ per resolved appearance when auto_switch flips. precedence: theme defaults, then [theme.custom], then the block for the active mode. configs without the new blocks resolve unchanged. refs #837 * docs: complete per-mode theme documentation --------- Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-08-21docs: document macos keychain launch contextOgulcan Celik
refs #966
2026-08-20fix: strip ansi sequences from tab bar status (#3003)akbash
* fix: strip ansi sequences from tab bar status refs #3001 * docs: clarify tab bar escape sequence scope refs #3001 --------- Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-08-19docs: finalize 0.8.2 release notesOgulcan Celik
2026-08-18feat: make Windows generally availableOgulcan Celik
2026-08-17docs: sync localized configuration updatesOgulcan Celik
2026-08-15fix(theme): keep default active rows subtle and add navigate cursor color ↵Can Celik
(#2838) refs #2792
2026-08-15feat: make headless terminal size configurable (#2829)Can Celik
refs #2828
2026-08-14fix: keep active sidebar rows visible (#2794)Can Celik
refs #2792
2026-08-14fix: reject prompts to blocked agents (#2790)akbash
* fix: reject prompts to blocked agents refs #2788 * docs: clarify agent prompt timing refs #2788 --------- Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-08-13fix(graphics): support high-dpi direct file frames (#2680)Can Celik
2026-08-13feat: add qwen code detection and restore (#2743)Can Celik
refs #2730
2026-08-11chore: refresh english documentationOgulcan Celik
2026-08-11fix: wait for agent prompt readiness (#2537)JJ Liebig
* fix: wait for agent prompt readiness refs #2410 * fix: return pane updates after tab bar command refs #2410 --------- Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-08-11feat: keep the outer terminal window title in sync with the session (#2627)David Heinemeier Hansson
* feat: keep the outer terminal window title in sync with the session Herdr emulates the terminals in its panes, so an OSC 0/OSC 2 title written inside a pane stops at Herdr and never reaches the terminal Herdr itself runs in. That outer title is what window managers read for title bars, tab bars, and group bars, so it kept showing whatever the shell or ssh happened to leave behind. Add `ui.window_title`, rendered from {hostname}, {workspace}, {tab}, {pane}, and {terminal_title}, and push it to the foreground client whenever it changes. It renders on the server, so {hostname} names the machine the panes actually run on rather than the machine a thin remote client runs on, and it is gated on a pending render so an idle loop never pays for it. A title is only remembered as delivered once a foreground client takes it, so the first client to attach is written to rather than skipped. `client.window_title.set` still wins over the configured title, and clearing it now hands the title back to `ui.window_title` instead of only "herdr". * fix: deliver the outer window title to a newly attached client ClientConnected assigns the foreground client directly rather than going through promote_client_to_foreground, so clearing the sent-title cache there missed the case that matters most: attaching a second terminal to a running session. The title was usually unchanged, so the sync returned early and the new terminal kept whatever its shell or ssh had left. Key the cache on the client that received the title instead of relying on every foreground assignment to invalidate it. * perf: keep hidden pane output off the window title path Output from a hidden or background pane sets needs_render without setting needs_full_render, and the retained render plan then skips presentation for it entirely. Syncing the title on needs_render meant every coalesced hidden-output tick still formatted, sanitized, and allocated a title that could not have changed, against the hidden-source early exit AGENTS.md requires. Every input to the title is app state, which always requests a full render, so gate on that instead. The one exception is the focused pane's own terminal title, which arrives through PTY parsing, so ask for a full render when that changes and the configured title uses it. * fix: only cache a window title a client writer received * fix: carry an api set window title across a live handoff * fix: make outer window title updates event-driven --------- Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-08-10feat: add configurable tab bar status (#2586)Can Celik
* feat: show a zoom indicator in the desktop tab bar Reserve the right edge of the tab row for a ZOOM pill while the focused pane is zoomed, matching the accent style of the mode bars. The per-tab Z suffix stays; the pill makes the zoomed state visible at a glance like tmux's status-right flag. * feat: optionally show the hostname in the desktop tab bar Add ui.tab_bar_hostname to display the machine's hostname at the right edge of the tab row, like tmux's #h in status-right. The value resolves where the server renders, so remote sessions show the remote host. Off by default. * fix: strip control characters from the tab bar hostname * fix: hide the hostname when it would squeeze out the tab strip * feat: add configurable tab bar status * fix: harden tab bar status updates * fix: terminate tab bar status process trees * fix: disable status commands on unsupported platforms * fix: skip unchanged status command renders * fix: keep tab bar status opt-in by default --------- Co-authored-by: David Heinemeier Hansson <david@hey.com>
2026-08-09feat: add direct pane resize keybindings (#2558)David Heinemeier Hansson
2026-08-09feat(graphics): add direct pane frame streaming (#2523)Can Celik
* feat(graphics): add direct pane frame streaming * feat(graphics): expose pane visibility * test(graphics): preserve legacy terminal image output * fix(graphics): harden streaming lifecycle * fix(input): preserve mouse releases outside panes
2026-08-08feat(input): add per-pane right-click routing (#2504)Can Celik
2026-08-07feat: support all agent integrations on windows (#2496)Can Celik
2026-08-06feat(copy-mode): add big-word motions (#2270)JP Lew
Co-authored-by: Ubuntu <ubuntu@ip-172-31-252-234.ca-west-1.compute.internal> Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-08-06docs: document custom agent integrationsOgulcan Celik
2026-08-05feat(windows): support remote attach to unix hosts (#2329)Can Celik
* feat(windows): support remote attach to unix hosts * fix(remote): preserve unix bridge behavior
2026-08-05feat(theme): add optional sidebar backgroundOgulcan Celik
2026-08-04feat(ui): add distinct status indicators (#2282)Can Celik
refs #2260
2026-08-04fix(docs): allow corrections to published versionsOgulcan Celik
refs #916
2026-08-04feat(plugins): index marketplace manifestsOgulcan Celik
2026-08-03docs: finalize 0.8.0 release documentationOgulcan Celik
2026-08-03fix(docs): publish only released documentationOgulcan Celik
2026-08-01fix: stop advertising worktree json flag (#2174)akbash
refs #2171 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-08-01feat: add antigravity-cli integration (#2087)Ludovico Magnocavallo
* 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-01chore: remove experiments from settings tuiOgulcan Celik
2026-07-31feat: support bottom tab bar placement (#2118)Can Celik
* feat: support bottom tab bar placement * fix: preserve mouse cleanup under bottom mode bar refs #2117
2026-07-31fix: read alternate-screen agent historyOgulcan Celik
2026-07-30fix: add opt-in child-group process detection (#2052)Can Celik
* fix: add opt-in child-group process detection refs #1982 * fix: preserve lifecycle probes without foreground groups refs #1982
2026-07-30chore: finish repository organization migrationOgulcan Celik
2026-07-29fix: scope agent skill installationOgulcan Celik
refs #2022
2026-07-27fix: close workspace when api closes its last tab (#1899)Season Saw
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-26fix: improve sidebar worktree hierarchy and reordering (#1873)Can Celik
* fix: clarify sidebar worktree hierarchy refs #1694 * feat: reorder worktree groups as a unit refs #1694
2026-07-25feat: switch IME to ASCII in prefix mode on Windows (Korean IME) (#1823)joonhwan
* 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-25fix: bundle modern ConPTY on Windows (#1828)Can Celik
refs #1533 refs #1644