Skip to content

Releases: phansen314/sesshin

v1.2.1

Choose a tag to compare

@github-actions github-actions released this 17 Oct 19:59
  • 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 -p session. (Placement)

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 03:32
  • Spawn templates. A template is a named, partial spawn input kept as <config dir>/templates/<name>.json; sesshin spawn --template opus --prompt '…' merges your options over it, in the operation, so -i callers get templates too ({"template": "opus", …}). Its keys are job, cwd, type, name, prompt or prompt_file, args, vars, start_timeout_secs, and description; yours win, args add after the template's, and cwd falls back to the directory you ran sesshin in. sesshin templates lists them, flagging any spawn would refuse. (Templates, Merging a template, configuration)
  • Which template launched a session is recorded: template in sesshin.json and the session view, null for a session launched without one. Needs migrate: migration 2 adds template to every sesshin.json (format 2 → 3), and reservations go to format 3 too. Run sesshin migrate after 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 from SESSHIN_JOB only, with extra {}.
  • Error changes. not-found gains templates in its details, empty unless a template is what is missing. spawn no longer requires cwd in 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 before busy, and invalid-input for a missing cwd after them.

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 10 Oct 19:07
  • macOS, on amd64 and arm64: release archives sesshin_<version>_darwin_<arch>.tar.gz, and Claude's process found through sysctl, so a session's pid and start time are recorded, liveness is known while it runs, self works, send and focus find its window by pid, and superseded and nested sessions are told apart, as on Linux. jump shows 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 terminal with the new reason unsupported, 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, and send and focus work from anywhere on a session placed in iTerm2, driven through AppleScript, with no setup beyond macOS's permission for the app you run sesshin from to control iTerm2 (System Settings → Privacy & Security → Automation). spawn's vars become user.<name> variables. It has no tab-title or variable sync: the pickers show a session's name, and resume reopens it under that. spawn and resume refuse to launch when the path of sesshin itself 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 with resume or restart). prune also removes launch files left in launches/ and reports them as launch_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. No migrate is needed.

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 09 Oct 02:39

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: list and show for reading sessions as JSON; spawn, resume, send, focus, and update for driving them; install and uninstall, which propose changes to Claude Code's settings.json for you to apply; prune and migrate for upkeep; version.
  • Pickers: restart brings back the sessions a reboot ended, and jump goes to the live session that most needs you.
  • Agents: a Claude Code plugin with the sesshin skill, and scripts/opencode.sh for 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.