Skip to content

sess v0.3.0 Release

Latest

Choose a tag to compare

@sess-linux sess-linux released this 31 Aug 01:26
· 6 commits to main since this release
2025eea

sess v0.3.0

Session state, the interactive switcher, background auto-save, opt-in
environment persistence, and a health check — plus two real bugs fixed
along the way.

New

  • Session states. Every session is now RUNNING, SAVED, STALE, or
    BROKEN, detected from real system state (not guessed) and used
    consistently by list, status, switch, and the picker.
  • sess switch — opens the interactive picker (same as running sess
    with no arguments). Selecting a session now behaves according to its
    state: attach if running, restore if saved, ask before restoring a stale
    one, show what's wrong if it's broken.
  • TUI upgrades — state column, window/pane counts, and inline actions:
    r rename, c clone, s save the currently attached session, without
    leaving the picker.
  • Background auto-savesess start <name> --auto-save, or
    sess auto-save <name> / --stop for a session already running.
    Interval configurable via ~/.config/sess/config.toml.
  • Opt-in environment variable persistence — nothing is captured by
    default; you allow-list variable names explicitly in
    ~/.config/sess/config.toml. Names that look like secrets
    (*_KEY, *_TOKEN, *_SECRET, PASSWORD, AUTH, CREDENTIAL) still
    get a warning on save even when explicitly listed.
  • sess doctor (--fix for safe, non-destructive repairs) — checks
    tmux, storage, and saved session integrity.
  • Clarified command semantics — new sess close <name> closes a live
    session without touching its snapshot; sess delete now only deletes
    the snapshot (previously it also killed the live session — see
    "Behavior change" below).

Fixed

  • Interactive attach was silently broken. restore::attach used
    Command::output(), which pipes stdout/stderr instead of inheriting the
    real terminal — tmux couldn't attach interactively as a result. Now uses
    .status(), which inherits stdio correctly.
  • Self-capture bug. Running sess save from inside one of the panes
    being saved could capture sess save ... itself as that pane's
    "current command" (since the process hadn't returned to the shell prompt
    yet at the instant of capture). Restoring later would silently re-run
    that save, potentially resurrecting an old snapshot. Now filtered out the
    same way idle shells are.

Behavior change

sess delete <name> no longer kills a live tmux session with the same
name — it only removes the saved snapshot. Use the new sess close <name>
for that, or sess kill-session <name> to do both at once (unchanged).

Snapshot format

Snapshots now carry a version field and an optional env map. Fully
backward compatible — snapshots saved by earlier versions still load
without any migration step.

Quality

25 tests (21 unit, 4 CLI integration), cargo fmt / cargo clippy clean.

Installing

tar -xzf sess-0.3.0-linux-x86_64.tar.gz
sudo mv sess /usr/local/bin/

Full changelog: see docs/ for the updated command reference,
or the commit history for the exact diff since v0.2.2.