Repository navigation
Releases: phansen314/sesshin
Releases · phansen314/sesshin
Release list
v1.2.1
- A session with no pid reads as ended instead of live for up to 24 hours past its last seen. (Liveness)
- A headless session records no placement. One the Python Agent SDK starts inside a kitty session no longer takes that session's window, and neither does any other Agent SDK or
claude -psession. (Placement)
v1.2.0
- Spawn templates. A template is a named, partial
spawninput kept as<config dir>/templates/<name>.json;sesshin spawn --template opus --prompt '…'merges your options over it, in the operation, so-icallers get templates too ({"template": "opus", …}). Its keys arejob,cwd,type,name,promptorprompt_file,args,vars,start_timeout_secs, anddescription; yours win,argsadd after the template's, andcwdfalls back to the directory you ransesshinin.sesshin templateslists them, flagging anyspawnwould refuse. (Templates, Merging a template, configuration) - Which template launched a session is recorded:
templateinsesshin.jsonand the session view,nullfor a session launched without one. Needsmigrate: migration 2 addstemplateto everysesshin.json(format 2 → 3), and reservations go to format 3 too. Runsesshin migrateafter upgrading. A session launched by the previous version that has not started when the new hooks arrive (waiting at the workspace-trust dialog, say) gets its job fromSESSHIN_JOBonly, withextra{}. - Error changes.
not-foundgainstemplatesin itsdetails, empty unless a template is what is missing.spawnno longer requirescwdin its input schema (a template, or the working directory, can give it), and its errors are checked in a new order: a template's own errors come beforebusy, andinvalid-inputfor a missingcwdafter them.
v1.1.0
- macOS, on amd64 and arm64: release archives
sesshin_<version>_darwin_<arch>.tar.gz, and Claude's process found throughsysctl, so a session's pid and start time are recorded, liveness is known while it runs,selfworks,sendandfocusfind its window by pid, and superseded and nested sessions are told apart, as on Linux.jumpshows a failed focus and waits for a key. Clear the quarantine flag on binaries a browser downloaded (Install). - Terminal backends: kitty now sits behind a contract, so another terminal can be added without changing a file format or a hook. A backend that lacks an ability a command needs fails
terminalwith the new reasonunsupported, having done nothing; kitty has every ability a command needs, so nothing changes for it (Terminal backends). - iTerm2 (macOS) is a second terminal:
spawn,resume, and the pickers work from an iTerm2 session, andsendandfocuswork from anywhere on a session placed in iTerm2, driven through AppleScript, with no setup beyond macOS's permission for the app you runsesshinfrom to control iTerm2 (System Settings → Privacy & Security → Automation).spawn'svarsbecomeuser.<name>variables. It has no tab-title or variable sync: the pickers show a session's name, andresumereopens it under that.spawnandresumerefuse to launch when the path ofsesshinitself holds a single quote, a backslash, or a control character, which iTerm2's splitting of a command can't be given. A tab iTerm2 restores after a restart shows an error and waits for Enter (reopen the session withresumeorrestart).prunealso removes launch files left inlaunches/and reports them aslaunch_files_removed(The iTerm2 backend). - Upgrading on macOS: sessions recorded by 1.0.0 on a Mac have no pid in
lifecycle.json. One still running gets its pid from its statusline's next refresh, which looks Claude up on every tick; one that ended keeps the no-pid rule. Nomigrateis needed.
v1.0.0
The first release. sesshin records every Claude Code session on one machine in plain JSON files, written by Claude Code's hooks, with no daemon and no database.
- Statusline: each session's sesshin ID, name, context, prompt cache, directory, branch, model, cost, burn rate, API time, and rate limits (what it shows).
- Commands:
listandshowfor reading sessions as JSON;spawn,resume,send,focus, andupdatefor driving them;installanduninstall, which propose changes to Claude Code'ssettings.jsonfor you to apply;pruneandmigratefor upkeep;version. - Pickers:
restartbrings back the sessions a reboot ended, andjumpgoes to the live session that most needs you. - Agents: a Claude Code plugin with the sesshin skill, and
scripts/opencode.shfor OpenCode. - Linux, with kitty as the terminal.
Before 1.0.0, sesshin was built and used from source as a rebuild of herd; its history is in git.