Repository navigation
v0.8.1
Session Cartographer 0.8.1
This release is about commits the log never recorded. On 2026-09-26, 43 of
the 125 commits that landed in git had no git_commit event. The commit hook
now records every commit a Bash call makes, and a new day digest checks the log
against git, so a gap like that shows up instead of reading as a quiet day.
Every commit a call makes is logged
- A Bash call that committed more than once logged only its last commit: a fix
committed with its audit doc lost the fix, and acdinto a second
repository to commit there lost the commits made before it. The hook now reads
the reflog of every repository the command commits in and writes one row per
commit, oldest first. Each row has a newcommit_actionfield:commit,
amend,merge,cherry-pick,revertoram. - Merges and cherry-picks were never detected; they are now logged, as are
reverts andgit am. - In Claude Code, a commit in a call that exited non-zero (
git commit … && npm testwith a failing test) is logged. git commitinside quotes or a comment, such as a grep pattern or a list a
loop iterates over, no longer produces a commit row for a commit that never
happened.- A commit made as
cd <repo> && git commitis filed under that repository,
not the directory the shell ended in. - A repository's first commit lists its files and diff shape.
Replayed on the 38 calls behind the 46 unlogged commits of 2026-09-26 and
2026-09-27, the new hook logs all 46 and no commit the call did not make.
Codex keeps logging one commit per call: its hook payloads carry no call
duration, which the new path needs to tell this call's commits from another
session's. Codex now loads hooks/codex-hooks.json, which leaves out the one
Claude-only event this release registers.
Day digest
One local calendar day across every session, by project, with each commit
checked against git:
node plugins/session-cartographer/scripts/session-digest.js --day yesterday
node plugins/session-cartographer/scripts/session-digest.js --day 2026-09-26 --md # paste-ready receipt
node plugins/session-cartographer/scripts/session-digest.js --day today --json # carto.day-digest/1- Each project shows its commits, sessions, active time, diagnoses, most-edited
files and the repository's current state. Active time is wall clock: the
five-minute periods with any logged event, with every session merged, so three
sessions in one hour count as one hour. - A logged commit is marked landed, moved (landed under a new sha after an
amend, rebase or cherry-pick), rewritten away, not in git, or unchecked. Your
commits that no session logged are listed as git-only. The receipt lists only
commits git has. cartographer-pulse.sh --day-digest yesterdayadds the receipt to a scheduled
pulse, scoped by the pulse's own allowlist. Work outside the allowlist is
reported as a count, never by name.- The Memory Desk has a Day view with a date picker, Today and Yesterday.
Each commit links to the session that made it, and Copy receipt copies the
Markdown. The view runs the same script as the command line, so the two show
the same numbers.
Explorer
- Closing a file review returns focus to that file's row, including rows past
the eighth, and a second Escape closes the task as it should. - The session digest prints paths under your home directory as
~/…, and
counts a file edited in an agent worktree and in the main checkout as one
file.
After updating
-
Restart long-running Claude Code sessions. A session keeps the hooks it
started with. On 2026-09-26, 23 commits went unlogged in sessions still
running the previous version hours after the update was installed. Codex
reads its hooks on every call, but from its own copy of the plugin, which
can update later than Claude Code's. -
Restart Turbo to get the Day view. A Turbo started before the update keeps
serving the old API, and the view says so:node plugins/session-cartographer/scripts/cartographer-turbo.js stop
Then run
/carto, or open the desk and press Start Turbo.