All notable changes to rejoin are documented here.
Format loosely follows Keep a Changelog; version numbers follow Semantic Versioning.
- Better titler prompt. Earlier versions occasionally produced single-
word titles like "Hey" when the user's first prompt was a greeting or a
ping. The prompt now has an explicit FALLBACK RULE: if the input is too
thin to identify a topic (greetings, capability questions, yes/no,
<local-command-caveat>noise, etc.), the model must output exactlyBrief Exchange. - Titler input now also includes the session's cwd and message/tool-call counts, giving the model more signal for ambiguous first prompts.
- Regeneration skips sessions whose title hash ends in
-native— so provider-native titles (e.g. Hermes's) aren't overwritten by the LLM. - PROMPT_VERSION bumped to 3; existing titles regenerate once.
- Hermes Agent support via direct read of
~/.hermes/state.db(SQLite). Shapes Hermes's sessions/messages tables into our SessionRecord + Turn model without writing to the DB. - Uses Hermes's native title when present. Inserted into our
titlestable with content_hashhermes-nativeso the OpenRouter titler doesn't waste tokens regenerating. - Resume:
hermes --resume <id>(Hermes's native flag; fully interactive). - Magenta
#7A3F74tag color in both front-ends.
- OpenClaw support via native JSONL parser at
~/.openclaw/agents/<agentId>/sessions/<sessionId>.jsonl— Pi-based tree format with session-header line + typed message entries (text / toolCall / toolResult). openclawtag color (rust-red#B8432A) in both web and TUI.- Resume command:
openclaw agent --session-id <id> -m continue. OpenClaw has no native interactive resume subcommand, so the follow-up message defaults tocontinueand the user can edit it inside the spawned tmux window.
- Parser is schema-based against OpenClaw's documented format; tested with synthetic fixtures. Please file an issue if your real OpenClaw sessions don't parse — the JSONL format may differ in details we don't cover yet.
- Two front-ends sharing one SQLite cache: a web dashboard (FastAPI + HTMX) with Claude.ai-inspired warm Pampas/Crail palette, and a terminal UI (Textual, tmux-aware).
- Support for four coding-agent session sources: Claude Code and Codex via our own
parsers (richer detail), OpenCode and Pi via the
agent-sessionslibrary. - Auto-titling via OpenRouter (
qwen/qwen3-30b-a3b-instruct-2507) — ~$7e-6 per title; content-hash skip avoids redundant regeneration. - Rejoin in tmux: one click / Enter spawns a detached session in the original
cwd; inside tmux the TUI opens a new window in the current server instead. - Incremental reindex every 60 s (mtime skip), FTS5 search with highlighting, pin
favorites (★ floats to top), group-by-cwd, active-session pulse via mtime window
OR ps-scan of running
--resumeprocesses. - Keyboard-first:
j/k/Enter/p///t/?/qin both front-ends. - TOML config at
~/.config/rejoin/config.toml; every knob has a default. - Schema-version guard on the SQLite cache; friendly error on migration mismatch.
- 27 pytest cases, ruff config, GitHub Actions CI on Python 3.11 + 3.12.
- Console scripts:
rejoin(web),rejoin-tui(terminal).