Breaking Changes
- Installed and linked plugins, including their enabled state, are now global to the current user instead of isolated by Herdr session. Plugins installed only in a named session on Herdr 0.7.3 must be installed or linked again. (#1174)
Added
- Added a live-agent CLI facade with named
start, atomicprompt, logicalsend-keys, and server-ownedwaitworkflows. Agent startup targets an existing pane without changing topology, validates the requested interactive agent kind and strict agent name, and accepts native arguments after--. - Added transient declarative Agent view queries through
agent.view.set/clear; filtered and sorted views now define sidebar, mobile, mouse, and agent-keybind navigation order. - Added one-shot plugin
[[startup]]hooks for restoring plugin-owned state after server startup and live handoff. - Added per-token foreground, bold, and dim styling to expanded Space and Agent sidebar row layouts.
- Added
ui.sidebar_start_collapsedto launch Herdr with the sidebar collapsed. (#1463) - Added
ui.prompt_new_workspace_nameto ask for a workspace name before interactive TUI creation. - Added macOS support for the
HERDR_AGENT=<agent>foreground-process hint, allowing agents hidden behind host-visible wrappers such asnonoto use the named agent's screen manifest. (#679)
Changed
- Agent commands now accept only a unique live agent name or the pane ID currently hosting that agent. Names are cleared when the occupant exits, is released, or is replaced. The old top-level
waitcommands were replaced byagent waitandpane wait-output, andagent sendwas replaced byagent send-keys. - The session navigator now uses connected tree glyphs, groups matches by workspace, and automatically selects the first result when a search begins. (#1611)
Fixed
- CLI requests now return a machine-readable
protocol_mismatcherror when the client and server protocols differ, while recovery commands remain available. (#1435) - Linux sound notifications now terminate and reap audio players that do not exit, preventing unavailable audio from leaving CPU-bound
mpg123processes behind. (#1622) - Oversized bracketed text pastes are now rejected with a client-local notification instead of disconnecting the client. (#1665)
- Agent prompt waits now report
agent_prompt_stalledafter five seconds without an observed state change instead of waiting indefinitely after an ineffective submission. herdr config checknow reports unknown config keys with their full paths instead of treating ignored typos as valid configuration. (#1573)- Codex panes with customized static terminal titles now fall back to the live working footer instead of remaining idle, while OSC activity remains preferred. (#1563)
- Grok panes now preserve working and blocked state from terminal signals and pinned background-work status instead of falling back to idle mid-turn.
- OpenCode lifecycle reports are now serialized so out-of-order plugin events cannot leave an idle pane marked working. (#1519)
- Kimi question prompts now report blocked until the user answers or dismisses them.
- Pi lifecycle reporting now uses settled events, preventing transient message boundaries from publishing an idle state mid-turn.
- The Pi, OMP, OpenCode, and Kilo Code integrations can now be installed on Windows and report lifecycle state and native session identity through Herdr's named-pipe API. (#1531)
- Named agent prompts now honor live bracketed-paste mode before sending Enter, preserving OpenCode text such as
A != Binstead of triggering shell mode. (#1525) - New panes, tabs, layouts, and workspaces using
new_cwd = "follow"now inherit the foreground process-group leader's working directory instead of an unrelated helper process directory. (#1472) - Cached pane working directories no longer trigger repeated filesystem checks, avoiding slow sidebar rendering on network filesystems such as Ceph. (#1603)
- Windows foreground-process snapshots are now shared across panes, reducing idle CPU use in sessions with many panes. (#1158)
- Terminal diff streams now batch contiguous writes, reducing the visible wave effect while scrolling pane history. (#283)
- A standalone Escape arriving beside another key is now preserved as its own input instead of being combined into a fabricated Alt chord. (#541)
- Pane viewports that were following live output now continue following after a resize.
- Mouse selections now remain visible when
ui.copy_on_select = falsewhile clipboard writes stay disabled. (#1471) - Workspace close confirmation now shows the current workspace name instead of a stale or unrelated label. (#1364)
- Plugin command arrays now preserve whitespace-only arguments. (#1594, #1613)
- Plugins can now be installed or linked while no Herdr server is running. (#1670)
- Remote attach now discovers Herdr installed in mise's canonical tool path before offering to install a sidecar binary. (#1201)
- Noninteractive update, plugin, integration, sound, custom-command, and Git subprocesses no longer flash console windows on Windows. (#1468)
- Live handoff now preserves installed plugins and no longer lets the next plugin installation overwrite the existing registry. (#893)
herdr agent waitnow returnsagent_not_runningpromptly when its target pane closes instead of waiting for the full timeout. (#1439)- Pane graphics streams now shut down cleanly when a client disconnect races stream teardown.