Release history
Changelog
Changes from the plugin’s canonical changelog, refreshed whenever this website is built. See GitHub releases for downloads and comparison links.
[0.1.25] - 2026-10-10
- Fix stale Codex cache clocks after prompt rewind/edit creates another transcript with the same thread ID. Read Codex’s current transcript pointer from its database instead of selecting the first matching file.
- Preserve Bash/jq-only compatibility by comparing valid usage timestamps across matching files. Python 3.6+ is recommended for exact branch selection; the fallback cannot distinguish a discarded branch with newer usage.
- Add regressions for duplicate transcripts, discarded branches, touched old files, and malformed or mismatched records; add Python 3.6 CI coverage alongside macOS, Linux and Windows Git Bash.
[0.1.24] - 2026-10-10
- Make the Claude and OpenCode session-recovery tests compatible with Python 3.6, matching the supported runtime and GWDG installations. Runtime behavior is unchanged.
[0.1.23] - 2026-10-10
- Support native Windows Herdr through Git Bash, with a Windows AMD64 helper binary and verified downloads.
- Recover Claude and OpenCode session identities when Herdr has no native session ID, including Windows paths and executable names.
- Keep late usage discovery working while retiring timers for expired caches, including write-only caches whose usage record disappears.
- Preserve native macOS Bash 3.2 compatibility when decoding empty pane paths; verify watcher behavior on macOS, Linux and Windows Git Bash.
[0.1.22] - 2026-10-10
- Keep background refreshes running when a fired timer becomes the watcher process or its parent. This fixes stale expiry displays and restores scheduled cache-warmer checks.
- Test repeated background wake-ups and automatic hot-to-cold transitions without pane events.
[0.1.21] - 2026-10-05
- Skip Claude warming while the latest reply is an API rejection such as a usage limit; the warm turn would be rejected too and queue into the user’s next turn. Warming resumes after a successful reply. Transient
server_errorreplies do not block.
[0.1.20] - 2026-10-05
- Detect Claude background shells from Claude Code’s own markers (
run_in_background,backgroundTaskId, or its background notice), including commands moved to the background after a timeout. Foreground output that merely mentions background work no longer blocks warming.
[0.1.19] - 2026-10-05
- Fix Claude warming being skipped permanently after any failed tool call, whose transcript
toolUseResultis a string rather than an object. - Clear Claude background shell tasks and background agents when their
<task-notification>reports a final status; read shell task IDs frombackgroundTaskId.
[0.1.18] - 2026-10-04
- Recognize Codex
task_startedandtask_completelifecycle events so idle sessions can be warmed safely with current Codex transcript logs.
[0.1.17] - 2026-10-04
Added
- Add an optional per-session warmer duration in hours;
0keeps the default unlimited behavior. - Add independent opt-ins to warm a focused pane or a pane with an existing prompt draft; both remain off by default. ### Changed
- Require transcript lifecycle evidence that Codex, Claude, and AGY are idle before warming; unknown activity state skips the attempt.
- Detect unfinished delegated tasks in AGY transcripts even when Herdr reports the foreground turn as done.
[0.1.16] - 2026-10-03
- Clarify the command-palette distinction between per-agent settings and global mode; remove the default global-warming shortcut from Mac and GWDG configs.
[0.1.15] - 2026-10-03
- Add per-session and global cache-warmer actions to Herdr’s plugin action list and command palette.
- Resolve the command-palette session target from the active workspace only when exactly one identified agent session is present.
[0.1.14] - 2026-10-03
- Route active Claude panes through the cache warmer. Fix ShellCheck and watcher-test failures that had been blocking CI.
[0.1.13] - 2026-10-03
- Add opt-in Claude Code cache warming with session/global toggles, a visible armed marker, and a 60-second default margin. Claude warming requires a tracked 5-minute or 1-hour cache lifetime and skips unknown lifetimes.
[0.1.12] - 2026-10-03
- Set AGY’s default cache warmer margin to 60 seconds before expiration; Codex stays at 300 seconds. Both remain configurable.
[0.1.11] - 2026-10-03
- Prevent duplicate warmer prompts within the same unchanged cache window.
- Skip AGY warming while its transcript shows an unfinished delegated background task, even when Herdr reports the foreground turn as done.
[0.1.10] - 2026-10-03
Added
- Add optional Codex and AGY cache warming with per-session and global toggles, visible status markers, and quiet Herdr notifications.
- Continue warming opted-in sessions indefinitely by default; allow a finite per-session attempt limit through configuration. ### Changed
- Exclude survival observations affected by synthetic warmer turns.
[0.1.9] - 2026-10-03
Fixed
- Rebase persisted Codex cache deadlines during startup even when usage data is temporarily unavailable.
[0.1.8] - 2026-10-03
Changed
- Use a 30-minute baseline for Codex cache countdowns; only shorten it after at least three lower survival observations for the same provider/model, and do not extend it from longer observations.
- Rebase persisted active Codex countdowns to the new policy while preserving the original cache-hit time.
[0.1.7] - 2026-09-30
Fixed
- Recover explicitly resumed Codex sessions when
--no-daemonappears before theresumesubcommand.
[0.1.6] - 2026-09-30
Fixed
- Recover Codex cache metadata when Herdr has no native session ID, using foreground process information with guards against same-directory panes, subagents, and ambiguous roots.
- Read Codex
event_msg/token_countper-request usage alongsidetoken_usage_record, and recover model/provider metadata from the rollout. - Respect
CODEX_HOMEand preserve empty snapshot columns when parsing pane records. - Refresh cold Codex panes every 15 seconds so the first cache hit appears without a focus change.
[0.1.4] - 2026-09-11
Fixed
- Claude Streaming Parser Optimization: Replaced
tail -n 500 | jq -R -swith an \(O(1)\) streaming reverse reader (rev_lines | jq -Rrn 'first(inputs | fromjson? ...)') to prevent multi-second parser bottlenecks on large JSONL transcripts and networked filesystems (such as HPC Lustre/VAST). - Graceful Partial-Line Handling: Added newline padding and
fromjson?protection to safely ignore in-flight, unclosed JSON lines during active Claude Code generation. - Lock Contention Elimination: Prevents long-running
jqprocesses from holding the plugin lock and dropping interactivepane.focusedUI click events.
[0.1.3] - 2026-09-11
Fixed
- Mobile Layout Compatibility: Injected the formatted cache string into the pane’s
--display-agentmetadata to ensure prompt-cache statistics remain visible when Herdr dynamically collapses into its hardcoded mobile layout (e.g., on narrow terminal windows or Termux). Herdr’s mobile layout ignores customconfig.tomlrows and customagent.view.setsorting rules, rendering{pane_title} · {status} · {agent}. This fix ensures the cache hit data is preserved within the{agent}slot.