Repository navigation
Releases: jeffarese/herdr-bar
Release list
v0.11.0
What's Changed
- Add a follow_new_sessions setting so the next session in a pane renames its tab by @romaklimenko in #22
Full Changelog: v0.10.0...v0.11.0
v0.10.0
What's Changed
- Add a scope setting for the filter the bar opens with by @romaklimenko in #18
Full Changelog: v0.9.1...v0.10.0
v0.9.1
What's Changed
- Remove the Python implementation; release 0.9.1 by @jeffarese in #16
Full Changelog: v0.9.0...v0.9.1
v0.9.0
herdr-bar 0.8.0 — Windows support
herdr-bar now runs natively on Windows (#7, #12, thanks @romaklimenko), and the per-row running time can be turned off (#11, thanks @mainendra).
- Windows. The bar draws on the Windows console, talks to Herdr over the named pipe behind
HERDR_SOCKET_PATH, and reads running times from the kernel. The title and tab status watcher polls every two seconds on Windows instead of following an event stream. - Windows keybinding. Bind the new
herdr-bar.open-windowsaction instead ofherdr-bar.open. Windows has nosh, and Herdr does not allow two actions with the same id. On Linux and macOS,openis unchanged and keeps itssh -cone-liner, so opening the bar costs no extra interpreter startup. - Windows Python.
python3must start Python 3.9+. The Microsoft Store build of Python provides it; the python.org installer does not. - Task titles skip a Windows console's default title, the path of the program that opened it.
- New
running_timeoption (defaulttrue). Set"running_time": falseto hide the per-row running time and skip thepane.process_infoandpsreads behind it.
Upgrade:
herdr plugin install jeffarese/herdr-bar --ref v0.8.0On Windows, bind the bar in your herdr config.toml:
[[keys.command]]
key = "prefix+k"
type = "plugin_action"
command = "herdr-bar.open-windows"
description = "command bar"After upgrading in an already running server, open the bar or run herdr plugin action invoke herdr-bar.start-titles.
Requires Herdr 0.9.0+ and Python 3.9+.
Validation: 422 tests pass locally on Python 3.9 and 3.14 (8 Windows-only tests skip on macOS). Pinned Ruff, manifest/version checks, static rendering, and render regression checks pass. The contributor tested Windows support live on Windows 11 with herdr 0.9.3, through the same python3 run.py --open command that open-windows now runs.
GitHub CI passed for commit 10d8467c49463d88553115f916711341b29f069b, covering Linux, macOS and Windows with Python 3.9/3.11/3.13 where supported.
herdr-bar 0.7.3 — optional lowercase titles
Add the requested lowercase_titles option for automatic tab titles (#10).
- Set
"lowercase_titles": truein the plugin'sconfig.jsonto lowercase generated Claude and Codex task titles, including Claude transcript fallback. - Defaults to
false, preserving the existing title casing. Custom tab, pane, and agent names retain their original case. - The running watcher reloads this setting within two seconds, without a restart. Turning it off restores the source casing for titles still owned by the plugin.
Upgrade:
herdr plugin install jeffarese/herdr-bar --ref v0.7.3Find the config directory with herdr plugin config-dir herdr-bar and add "lowercase_titles": true to its config.json. After upgrading in an already running server, open the bar or run herdr plugin action invoke herdr-bar.start-titles.
Requires Herdr 0.9.0+ and Python 3.9+.
Validation: 400 tests pass locally, including a real watcher process reloading the lowercase setting with status prefixes enabled. Pinned Ruff, Python 3.9 syntax, manifest/version checks, static rendering, and render regression checks pass. LSP diagnostics show no new errors.
GitHub CI passed for commit e22455068e26340b6be02cec8a07707fc1f11ae1, covering Linux and macOS with Python 3.9/3.11/3.13 where supported.
herdr-bar 0.7.2 — automatic titles by default
Automatic task titles now work without an agent session ID and are enabled by default when no competing tab-renaming plugin is detected.
- Use Claude and Codex terminal task titles even when Herdr has not reported a session ID. Track ownership by pane and terminal, and bind the session ID when it arrives.
- Keep manual names and the existing competing-plugin protections. An explicit
auto_titles: falsestill disables naming; status prefixes remain off by default. - Claude transcript fallback still requires a session ID.
Upgrade:
herdr plugin install jeffarese/herdr-bar --ref v0.7.2After upgrading in an already running server, open the bar or run herdr plugin action invoke herdr-bar.start-titles.
Requires Herdr 0.9.0+ and Python 3.9+.
Validation: 398 tests pass locally, along with pinned lint, manifest validation, static rendering, and render regression checks.
GitHub CI passed for the release commit, covering Linux and macOS with Python 3.9/3.11/3.13 where supported.
herdr-bar 0.7.1 — opt-in tab updates and renaming conflict fixes
Fix the tab-renaming conflict reported in #9. Automatic task titles and tab status prefixes are now independent opt-in features, both off by default.
- Give enabled naming plugins priority: skip all automatic tab writes, including cleanup, when a recognized renamer is present. Detection covers known plugins and naming metadata; custom IDs can be added with
tab_renaming_plugins. - Check the plugin registry before each automatic write. If the registry cannot be read, skip the write.
- Yield a tab after another writer changes its label, preserving that decision across watcher restarts. Restore only status labels still owned by herdr-bar.
- Reload
auto_titlesandtab_statuswhile watching, and exit when both are disabled. Search, agent icons in the popup, and manual renaming work without a watcher.
Upgrade:
herdr plugin install jeffarese/herdr-bar --ref v0.7.1To use optional tab updates without another renaming plugin, enable either auto_titles or tab_status in the plugin's config.json, then open the bar or invoke herdr-bar.start-titles. Existing explicit tab_status: true settings remain enabled. Task titles previously written are kept.
Requires Herdr 0.9.0+ and Python 3.9+.
Validation: 391 tests pass locally; lint, manifest validation, static rendering, and render regression checks pass.
GitHub CI passed for the release commit, covering Linux and macOS with Python 3.9/3.11/3.13 where supported.
herdr-bar 0.7.0 — static agent status and lower redraw overhead
Agent status indicators now stay static, avoiding repeated tab renames and redraws while agents work. Tabs retain their agent logo and status, and update when their name or status changes.
- Add event-driven tab status with an option to restore bare names (
tab_status: false). - Remove popup spinner redraws; legacy
spinnerandtab_flashsettings are ignored. - Preserve user-supplied leading glyphs after failed renames and watcher restarts.
- Bound event reads, preserve events arriving with subscription acknowledgements, and recover from malformed subscription responses.
- Include support for additional Claude configuration directories via
claude_config_dirs. - Document installing the optional agent icon font independently of Radar.
Requires Herdr 0.9.0+ and Python 3.9+.
Validation: 374 tests pass locally on Python 3.9 and 3.14; lint, static rendering, manifest validation, and render regression checks pass. GitHub CI covers Linux and macOS with Python 3.9/3.11/3.13 where supported.
herdr-bar 0.5.0 — continuous Claude and Codex tab titles
Claude and Codex tabs now follow their task titles automatically, even while the command bar is closed. Later title changes update names written by the plugin; existing custom tab, pane, and agent names remain protected.
- One background watcher per Herdr server checks titles every two seconds, reconnects after server restarts, and preserves ownership across watcher restarts.
- Naming work stays out of the popup. Idle checks use one snapshot request, with no repeated renames or ownership-file writes.
- Plugin status comes from Herdr's API. Watchers reload upgraded code while preserving their singleton lock.
- New
herdr-bar.start-titlesandherdr-bar.stop-titlesactions control automatic naming per server. - Improved spacing between vendor logos and status glyphs; working task titles are orange.
Requires Herdr 0.9.0+, Python 3.9+, and macOS or Linux. No third-party Python runtime dependencies.
After installing into an already running server, invoke herdr plugin action invoke herdr-bar.start-titles or open the bar. During server downtime, the watcher stays available with retry backoff up to 30 seconds; the stop action also works offline. Existing custom names, including names from previous releases, are not automatically adopted.
Validation: 343 tests passed locally on macOS and Linux, plus lint, manifest validation, and render benchmarks. The GitHub Actions test matrix and lint job passed for the release commit.
Herdr has no conditional rename API: a manual rename between the final check and write cannot be detected. Names equal to a default tab-position number are indistinguishable from unnamed tabs.