Repository navigation
Releases
v0.5.0
oh-my-pi (omp)
- Revive now brings back oh-my-pi (
omp) sessions too. omp has no hooks file, soinstalllinks an extension into~/.omp/agent/extensions/(only when~/.omp/agentexists;--no-ompskips it). After a reboot, a core restart or akillthe session comes back withomp … --resume <id>, and the dialog forks it withomp … --fork <id>./exit, Ctrl+C and Ctrl+D forget the session;/new,/resumeand/forkrecord the new one. One-shot runs (-p,--print,--no-session,--mode json|rpc|rpc-ui,--export) are not recorded. Tested with omp 18.16. (#18, thanks @Srv-02)
What a resume takes from the record
- Flags are filtered again when they are read back from the terminal's labels, not only when they are recorded. Permission and sandbox modes still come back as they ran.
- Flags that make the agent load code, configuration, instructions or extra folders at start are no longer carried:
--settings,--mcp-config,--plugin-dir,-e/--extension,--approve-mcps,--system-prompt,--append-system-prompt(-file),--skill,--add-dir, Cursor's--workspaceand the like. A session started with one of them comes back without it. - Config folders (
CLAUDE_CONFIG_DIR,CODEX_HOME,PI_CODING_AGENT_DIR, …) are recorded by name only, never by value. A session started under one resumes by itself only when the new shell sets that variable on its own (in your rc file, say). A session started with pi's or omp's--session-dirnever resumes by itself. Instead the shell prints one dim line, and the dialog shows the command to run, with a Copy command button. - The session's folder is used by its real path, and only when it exists, is yours and is not writable by everyone. Otherwise the session is not resumed, not even by hand.
Dialog
- Resume is disabled for a session that can't be resumed by hand, and the card says why before you click. Fork is disabled for it too. (#23, thanks @Srv-02)
Install
- On Linux the bash block goes into
~/.bashrc, since herdr-core starts bash there without-l(herdr-core#99). A block an earlier version put into~/.profileor~/.bash_profileis moved there. macOS is unchanged.
Internal
- The pi and omp extensions share one helper (
lib/extension.js). pi's extension gains what only omp's had: a failedspawnno longer breaks its queue, and its signal listeners are added once however often a session starts. (#24, thanks @Srv-02)
keys.json is unchanged. To update, replace ~/.config/herdr-app/mods/revive with the new mods/revive and run revive.mjs install (see Updates in the README). Run install even if you don't use omp: on Linux it moves the bash block to ~/.bashrc.
v0.4.1
Linux
- Revive now records sessions on systems with procps-ng 3.3 (Amazon Linux 2 and others of its age). There
psread the combined-o pid=,ppid=,lstart=,args=as a single pid column, so the process table had no parents or command lines, the session hook never found its terminal, and norevive.*labels were written; nothing came back after a reboot.psnow gets one-oper column, which prints the same thing on newer procps and on macOS. (#19, thanks @9pace)
keys.json is unchanged. To update, replace ~/.config/herdr-app/mods/revive with the new mods/revive (see Updates in the README).
v0.4.0
Factory Droid and the Cursor CLI
- Revive now brings back Factory Droid and Cursor CLI sessions too, alongside Claude Code, Codex and pi. Each one's session hook records the session id on its terminal, and after a reboot, a core restart or a
killthe agent comes back with--resume <id>and the flags it was started with. (#1, thanks @juliorr) - Droid: resumes with
droid … --resume <id>and forks withdroid … --fork <id>. Only interactive flags are carried (--auto,--settings,--use-spec,--disable-builtin-skills,--append-system-prompt(-file));droid execruns are not recorded. - Cursor: resumes with
cursor-agent … --resume <id>. Cursor has no fork, so the dialog offers none for it.-f/--force,--yolo,--model,--sandbox,--mode,--planand a few more are carried;--api-keyand-Hnever are./exitand Ctrl+C forget the session; a shutdown or a closed terminal keeps it.cursor-agent -pruns are not recorded. - A Droid or Cursor session started before the hooks were installed is still found from its session files, so the dialog shows it.
Install
revive.mjs installwrites Droid's hooks (~/.factory/hooks.jsonif it exists, else~/.factory/settings.json) only when thedroidCLI is installed, and Cursor's (~/.cursor/hooks.json) only whencursor-agentis installed. A~/.cursorfolder from the Cursor IDE alone doesn't count.--no-droidand--no-cursorskip them.- An agent file that isn't valid JSON now skips that agent only, with a note (
Skipped Droid: ~/.factory/settings.json is not valid JSON; fix it and run install again.). The file is left untouched, and the other agents and the shell block are still installed. This applies to Claude Code'ssettings.jsontoo, which used to stop the whole install. uninstalltakes out only Revive's entries, and no longer rewrites a file that has none.
Dialog
- The footer shows
✓ Droid hooksand✓ Cursor hookswhen those CLIs are installed. The empty card now says "No agent session in the focused terminal."
keys.json is unchanged. To update, replace ~/.config/herdr-app/mods/revive with the new mods/revive and run revive.mjs install (see Updates in the README). Run install even if you don't use Droid or Cursor: it adds their hooks only when their CLI is installed.
v0.3.0
pi
- Revive now brings back pi sessions too, alongside Claude Code and Codex. pi has no hooks file, so the mod ships a pi extension (
mods/revive/pi/revive.ts) that runsrevive.mjs hookat pi's session start and end.revive.mjs installlinks it as~/.pi/agent/extensions/herdr-revive.tswhen~/.pi/agent(orPI_CODING_AGENT_DIR) exists;--no-piskips it. An extension already at that path (a copy your package manager placed, say) is left alone, anduninstalltakes out only its own link. (#11, thanks @llehouerou) - After a reboot, a core restart or a
kill, the session resumes withpi --session <id>and the flags it was started with (model, thinking, tools, extensions, …)./quitforgets it, like Claude Code. Fork usespi --fork <id>and is enabled once the session has a message. - Only an interactive pi in a herdr terminal is recorded:
-p,--mode json|rpc,--no-sessionand pi's subagents are not. A pi started before the extension was installed is recorded from its next start (or/reload). - pi support is experimental and community-maintained, tested with pi 1.4.
Dialog
- The footer shows
✓ pi extensionwhen pi is installed, and the empty card mentions pi.
keys.json is unchanged. To update, replace ~/.config/herdr-app/mods/revive with the new mods/revive and run revive.mjs install (see Updates in the README). Run install even if you don't use pi: it links the extension only when pi is installed.
v0.2.2
Claude Code
- Claude Code's hooks are now optional, like Codex's.
revive.mjs installwrites them only when~/.claude(orCLAUDE_CONFIG_DIR) exists, so a setup without Claude Code no longer gets a~/.claude/settings.jsonit doesn't use.doctorreportsclaude: nullthere, and the dialog footer stops showing a red✕ Claude Code hooksand an Install button that never went away. If you install Claude Code after Revive, runinstallagain. (#12, thanks @llehouerou)
Resume
revive.mjs resumerun from inside a herdr terminal (by an agent, or by hand) now types the resume command into the target terminal. Before,hc sendwrapped it as a note (<hc from="t9">…</hc>), the shell failed to parse it and nothing resumed. The dialog and the automatic resume after a reboot were not affected. (#13, thanks @llehouerou)
Docs
- The README recommends copying the mod folder during development, not symlinking it.
keys.json is unchanged. To update, replace ~/.config/herdr-app/mods/revive with the new mods/revive and run revive.mjs install (see Updates in the README).
v0.2.1
Codex
revive.mjs installno longer rewrites~/.codex/hooks.json(or Claude Code'ssettings.json) when Revive's hooks are already there. Other tools write that file too; after one of them reformatted it,installsaid "Updated" and that Codex would ask to trust the hooks again, although nothing had changed. (#9)- Codex's
SessionEndhook gets a 3 second timeout. Codex clamps it to 3 and warned about it at every start. Runinstallonce to apply it. (#9) - A running Codex that Revive has no record of now shows in the dialog's focused card, with its folder and why it can't be forked or brought back, instead of No Claude Code or Codex session. Codex's shared background server runs its hooks, so a session it runs is never recorded; the README's Limits say how to run Codex without it. (#9)
keys.json is unchanged. To update, replace ~/.config/herdr-app/mods/revive with the new mods/revive and run revive.mjs install (see Updates in the README).
v0.2.0
Fork
- A Claude Code session that never got a message can't be forked. Before, Fork opened a pane that only said "No conversation found". Now the Fork buttons are disabled and the card says the session has no message yet. They come back within a few seconds of its first message. (#5, #7)
- When Revive can't tell which config folder a session uses (
CLAUDE_CONFIG_DIR), Fork stays open rather than being blocked. (#7)
Dialog
- New look, closer to the README preview: the dialog is as tall as its content, folders show the home folder as
~, Running is green and Lost to a restart / Interrupted are yellow, the focused card has a border, and the rows have more room. (#6) - On a short window the dialog stops at 85% of its height and the session list scrolls, so the footer and Install always show. (#7)
keys.json is unchanged. To update, replace ~/.config/herdr-app/mods/revive with the new mods/revive and run revive.mjs install (see Updates in the README).
v0.1.0
First release. Bring back the coding agent a Herdr terminal lost to a restart or reboot, and fork a live session beside it.
From here on each release lists what changed and whether keys.json did. The version you have is "version" in the installed mod.json; see Updates in the README for how to update.