Skip to content

Releases: andyed/session-cartographer

v0.8.3: release: prepare 0.8.3

Choose a tag to compare

@github-actions github-actions released this 08 Oct 04:44

Session Cartographer 0.8.3

This release is about time spent for nothing. A performance review on
2026-10-07 read the recall telemetry, timed every hook, and profiled the
semantic leg: recall over Turbo was fast, but a filtered Qdrant search was
scanning payloads, the hooks were paying for process starts rather than work,
and the catch-up at session start was inspecting transcripts it had already
indexed. Each is fixed here, and each fix is held by a test that reproduces
the measurement.

0.8.2 was tagged first and never published: its release gate failed on Linux,
where the hook-rows fixture had built its workspace under /tmp (a path the
hooks drop as scratch) and retro-index.sh's mtime helper returned GNU stat's
filesystem block instead of a number. Both are fixed here, so 0.8.3 is the
same change set as a release that actually passes its gate on both platforms.

Filtered semantic search is indexed

The session-cartographer collection had no payload indexes. Every recall
filters on project and timestamp, and Qdrant evaluated both by scanning:
on 157k points a project-filtered search cost 200-420 ms of server time and a
timestamp range 100-170 ms, against 3-6 ms unfiltered. That was the dominant
cost in the semantic stage and why some recalls blew the 4000 ms Turbo budget
and fell back to the portable CLI.

  • scripts/qdrant-collection.js owns collection bootstrap: the collection
    plus a keyword index on project and a datetime index on timestamp.
  • embed-events.js creates both with the collection. index-event.sh, the
    Explorer's /api/health and Turbo at boot read payload_schema and create
    whatever is missing, so an upgraded install is indexed from its first hook
    event with no reindex.
  • The same filtered searches now cost 4-16 ms with identical top-50 results.

Hooks start fewer processes

The two hot hooks spent their time starting processes. log-tool-use.sh
spawned 64 for a plain npm test (19 jq, 12 awk, 8 head, 5 tr, 5 grep); the
per-turn Stop hook spawned 24, including a python3 interpreter to URL-encode
one path, and then logged nothing.

  • Each hook reads its payload with one jq | @sh, reads the command text in
    one awk pass, resolves the project only when it writes, and builds both rows
    of a pair with one jq. The transcript path is encoded with jq's @uri, so
    python is no longer a hook dependency.
  • Measured: a plain command 64 processes to 7, the Claude Stop no-op 24 to 2,
    an Edit 37 to 6, a SessionEnd 38 to 11.
  • The rows do not change. tests/fixtures/hook-rows/expected.txt is what the
    pre-rewrite hooks wrote for a fixed set of payloads, and
    hook-rows-golden.test.js holds the live hooks to it byte for byte.

Catch-up skips before it reads

The background Codex catch-up at session start took 26 s median even with
nothing to index, because retro-index.sh ran two transcript-wide jq passes
and a node project-inference process on every transcript before reading the
checkpoint that said to skip it. A Codex rollout file carries its session id
in its name, so a prefix match against the progress file now skips a
checkpointed session without opening it. Anything that does not match falls
through to the full derivation and full key check, unchanged.

Standup: SILENT and UNCLAIMED

/standup now reports two things the event log never saw: Codex transcripts
written in the window with no logged events, and tracked files changed in the
window that no logged session claims.

Upgrading

Live hooks run from the plugin cache, so the hook and catch-up changes apply
after claude plugin update session-cartographer@session-cartographer and a
restart. The payload indexes are created by the first hook event, health
poll or Turbo start on the new version; node scripts/qdrant-collection.js ensure-indexes --json does it by hand.

v0.8.1

Choose a tag to compare

@github-actions github-actions released this 27 Sep 21:31

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 a cd into 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 new commit_action field: commit,
    amend, merge, cherry-pick, revert or am.
  • Merges and cherry-picks were never detected; they are now logged, as are
    reverts and git am.
  • In Claude Code, a commit in a call that exited non-zero (git commit … && npm test with a failing test) is logged.
  • git commit inside 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 commit is 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 yesterday adds 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.

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 26 Sep 22:23

Session Cartographer 0.8.0

This release retires /focus, whose orientation moves into /remember. It
brings Hermes Agent into the corpus, warns before two sessions edit the same
file, and makes Turbo both easier to turn on and slower to give up. Most of the
remaining changes fix places where events went missing, carried the wrong type,
or were credited to the wrong session, without anything reporting an error.

/focus is now /remember --project (breaking)

  • Claude Code 2.1.269 ships a built-in /focus view, which shadows this
    plugin's skill of the same name. Orient on a project by giving /remember a
    project and no question:

    /remember --project <name>
    

    It runs the same recency search plus the related-threads and recurring-maneuvers
    lenses /focus did.

  • skills/focus stays as a pointer for this release, so older instructions and
    other agents are redirected rather than broken. Update any custom instructions
    that still say /focus.

  • CARTOGRAPHER_FOCUS_ON_START keeps its name.

Hermes Agent

  • Hermes sessions and configured workspace notes can now enter the corpus, where
    search, facts and /standup see them and the Explorer marks them with a
    hermes badge. The adapter reads every Hermes profile's state.db read-only and does
    nothing until you write a policy file:

    node plugins/session-cartographer/scripts/hermes-source.js --print-config-path
    node plugins/session-cartographer/scripts/hermes-source.js          # dry run: counts only
    node plugins/session-cartographer/scripts/hermes-source.js --write

    The policy can drop whole sessions by project or path and redact matching
    lines. Cron prompts and tool results are never indexed. Once a policy exists,
    the session-start catch-up runs the adapter for you. --show <session>
    prints one session's turns, since Hermes keeps no transcript file.

  • Recall calls made from Hermes now say they came from Hermes. To record which
    Hermes session made them, have the wrapper Hermes runs export the session
    itself. See "Recall telemetry from Hermes" in SETUP.md.

Turbo

  • /carto now turns Turbo on for you on machines with 16 GB or more of RAM,
    when Turbo's estimated memory use is within 8% of it. Elsewhere it reports the
    estimate and changes nothing. Below 16 GB, a running service exits after 30 idle minutes
    (turbo.idle_minutes overrides this). status shows the memory plan.

  • A slow recall now falls back to the portable search once, instead of being
    run a second time first. The default wait before falling back rises from
    1.5 s to 4 s, which covers the slowest searches measured. Configs written by
    an earlier /turbo enable keep 1.5 s until you raise it:

    node plugins/session-cartographer/scripts/cartographer-turbo.js enable --timeout 4000 --no-start
  • A running service now answers the same as a freshly restarted one. It no
    longer misses events written while it was starting or written in two parts,
    and it merges an event logged twice instead of keeping only the first copy.

  • status checks that the service is still following your logs, not just that
    it is running. It reports index_freshness as live, stale or
    unverified, with details for each log.

  • When Turbo fails to start, server.log now says whether it was stopped at
    the start deadline or exited first. CARTOGRAPHER_TURBO_READY_TIMEOUT_MS
    changes the deadline.

Collision warning before an edit

  • Before Claude Code or Codex edits a file, a new hook checks whether another
    session edited or committed that file in the last 45 minutes. If so, it tells
    the agent whether the other session is in the same checkout (a commit here
    could sweep up its uncommitted changes) or a separate worktree (the conflict
    arrives at merge). It never blocks, and stays silent otherwise. Turn it off
    with CARTOGRAPHER_COLLISION_CHECK=0.

Memory Desk (alpha)

  • A new Recall view lists every /remember call in the window, grouped by
    session, with each call's ranked results. Results an agent marked with
    --touch show as "marked used" at the rank where they were served. Calls with
    no session are grouped as Unattributed rather than hidden.
  • /wrapup notes and Hermes runs are now typed as what they are, not as generic
    milestones, so a session's wrapup appears among its outcomes and the type
    filter lists each kind.
  • In the full-size Activity view, the Field readout no longer hides its first
    line under the header or covers the point it describes.

Event capture

  • Commits are recorded when made with git -C <repo> or git -c, when
    git commit comes after the first 500 characters of the command (for example
    after a long message written with cat > file <<EOF), and when the command
    starts with cat. Before, these were logged as ordinary commands or dropped,
    and /wrapup showed no commits.

  • A command line is no longer dropped as noise because its first command is
    cat or echo: each part is judged on its own. Expect up to about 22% more
    command rows in tool-use-log.jsonl.

  • Commits by other people in repositories you cloned no longer count as your
    session's work in search, digests, /standup or the profile. To fix rows
    written before this release (a dry run unless you pass --apply, which keeps
    a backup):

    node plugins/session-cartographer/scripts/repair-foreign-commit-sessions.js
    node plugins/session-cartographer/scripts/repair-foreign-commit-sessions.js --apply

Search

  • The portable search now reads text after an escaped quote in a log entry.
    More than a quarter of summaries, mostly commands with quoted arguments, were
    partly invisible to /remember with Turbo off.
  • The portable search honours CARTOGRAPHER_SEMANTIC=0.
  • The Explorer's search returns no results instead of an error for a query with
    no searchable words, such as punctuation only.
  • The facts delta verb describes an event the same way census does.

Recall telemetry

  • Every served, search-call and access row now records where its session came
    from (session_source). Served and search-call rows say no_session when
    there was none, instead of leaving the field empty. A session value of
    unknown is treated as no session rather than as an identity.

Explorer readability

  • Text across the Timeline, Sessions, Search, the search box and the Transcript
    viewer now meets an 8:1 contrast floor. Badges and filter pills are outlined
    in a single set of hues, and in the search suggestions the completed part of
    each option is set in bold.

Upgrading

Update the plugin in every agent you use, then start a new session:

claude plugin update session-cartographer@session-cartographer --scope user
codex plugin add session-cartographer@session-cartographer

Then, if they apply to you:

  • Replace /focus in any custom instructions with /remember --project <name>.
  • Raise a Turbo config written before this release to the 4 s wait (see Turbo
    above).
  • Codex will ask you to review the changed hooks in /hooks. This release adds
    the pre-edit hook.
  • Run the foreign-commit repair once if you import git history from repositories
    other people commit to.

Update Claude Code and Codex together if you use Turbo. They share one
background server, and the first recall after an update replaces a server from
a different version, so two versions would keep replacing each other. Paths
above are relative to the extracted release archive or a source checkout.

v0.7.9

Choose a tag to compare

@github-actions github-actions released this 23 Sep 15:30

Session Cartographer 0.7.9

This release brings Codex's own memory into /remember, sharpens /standup,
and rebuilds /investigate around recall. It includes everything from 0.7.8,
so if you are upgrading from 0.7.7, these notes cover both.

Codex memory in recall

  • /remember can now search what Codex has saved in its native memory, next to
    your Claude Code and Codex session history. Import it once, and again whenever
    Codex's memory changes:

    node plugins/session-cartographer/scripts/backfill-codex-memories.js

    Add --dry-run to preview, or --index to include the entries in semantic
    search when Qdrant and the embedding server are running. The import never
    writes to Codex's files.

  • When a Codex memory entry changes or is removed, recall shows only the current
    version. Earlier versions stay in the log as history.

  • Current Codex preferences feed the standing profile (.carto/profile.md).

  • See the Codex memory migration guide if you are
    upgrading an existing install.

/investigate remembers past diagnoses

  • Before you diagnose a bug, /investigate now searches earlier investigations
    of similar symptoms and files, and shows whether each was confirmed or
    refuted. A hypothesis that was already ruled out is the most useful thing it
    can surface.
  • It records your hypothesis, and once the fix is verified, the outcome, so the
    next session starts from what was learned.
  • It no longer imposes a debugging procedure; how to debug is left to you and
    your agent.

/standup

  • Edits to the same file from a Codex worktree and its main checkout now count
    as a collision, as Claude Code worktrees already did.
  • --project matches files by the repository they belong to, not by any folder
    that happens to share the project's name.
  • --commit respects --since.
  • Session labels stay distinct when two session ids share a prefix.

Project registry

  • The plugin now ships without project aliases. Build yours from your own
    history, and refresh it later without losing your edits:

    node plugins/session-cartographer/scripts/bootstrap-project-registry.js --dry-run
    node plugins/session-cartographer/scripts/bootstrap-project-registry.js
    node plugins/session-cartographer/scripts/bootstrap-project-registry.js --update --dry-run

    --project substring matching works without a registry, so most scoped
    searches need no setup.

Turbo

  • The README now leads with measured recall speed: about 0.3 s with Turbo
    against about 12 s without, on a 150,000-event corpus. Reproduce it on your own
    history with bash plugins/session-cartographer/scripts/bench-grep-vs-turbo.sh.
  • Turbo no longer leaves a stray background server behind when its state
    directory is reset.

Upgrading

Update the plugin in every agent you use, then start a new session:

claude plugin update session-cartographer@session-cartographer --scope user
codex plugin add session-cartographer@session-cartographer

Update Claude Code and Codex together if you use Turbo. They share one
background server, and the first recall after an update replaces a server from
a different version, so two versions would keep replacing each other. Codex may
ask you to review changed hooks in /hooks. Paths above are relative to the
extracted release archive or a source checkout.

v0.7.8

Choose a tag to compare

@github-actions github-actions released this 23 Sep 13:50

Session Cartographer 0.7.8

This release brings Codex's curated memory into Cartographer recall and improves
the evidence behind /standup. It also includes the managed Turbo server lease
fix recorded in the changelog. The previous public release was 0.7.7.

The related-project survey now includes Michael
Albers's claude-memory-context
as a complementary write-forward memory practice.

Codex memory

  • Import the native Codex memory registry, overview, and rollout summaries as
    versioned events. Source files are read only. A repeat import appends only
    changed or removed entries.
  • CLI and Explorer/Turbo search suppress superseded events before ranking.
    Current Codex user preferences can contribute to the standing profile.
  • Keyword recall needs no service. Semantic recall is refreshed explicitly with
    --index when Qdrant and the embedding server are available. Import remains
    on demand; it does not watch Codex memory files.
  • Existing users should follow the migration guide
    after updating their installed plugin copy. Refresh a running Turbo process
    separately from restarting the client.

Standup

  • --commit applies its requested time window. --project retains file edits
    recorded under the workspace-root project label.
  • Verified Codex worktrees and their main checkout now resolve to the same file
    for contention. An unverifiable worktree is counted as unmapped instead of
    being paired by a similar directory name.
  • Display labels expand when session IDs share an eight-character prefix.
    Activity markers reflect event recency, not process liveness. Shared-goal
    coordination is documented as a future design, not a shipped feature.

Turbo and installation

The managed Turbo server now exits when its ready-file lease disappears, and
the controller reaps a child that fails to become ready. The unified archive
installs for Claude Code and Codex. Follow the archive README for installation,
fresh-session and hook-review steps. Publication and managed-install verification
are separate from building the archive.

v0.7.7

Choose a tag to compare

@github-actions github-actions released this 14 Sep 04:20

Session Cartographer 0.7.7

This release adds the peer view, bounds file review to the session that did the
work, and closes three ways a real commit or edit could vanish from the corpus
without an error. The previous public release was 0.7.6.

Peer view: /standup

  • /focus answers what has happened in a project. /standup answers who else
    is in it right now: every session active in the window with its provider,
    projects, idle time, span, and commits, followed by CONTENTION — the files two
    sessions are both editing. Read that section first; the roster is ambient.
  • --commit <sha> names the session behind a commit that landed underneath
    you. --project scopes the roster and the contention list alike.
  • A worktree edit and a main-checkout edit of one repository file count as one
    file. Workspace-root and worktree directory names are filtered from project
    labels but never from file paths. Unresolved edit candidates are reported in a
    NOT COUNTED footer rather than dropped, since a silent miss and a clean
    workspace otherwise print the same thing.
  • Reads the session-attributed events the hooks already write. Captures nothing
    new, writes nothing.

Working memory

  • File review diffs are bounded by the session: base is the last commit at or
    before the session's first event, head is the last commit within two minutes
    of its last event, falling back to the working tree while a session is in
    flight or committed nothing for that file. Both ends are named, and the review
    lists the ways the range can mislead. Split is the default layout, with the
    dependency-free unified table behind diff=unified.
  • Artifacts group by document: one row per path, documents ahead of code,
    newest edit first, each carrying the threads that touched it. kind=md is a
    permalinked documents-only toggle.
  • Windows run from 1 hour through 90 days. Search, filters, catch-up state,
    paging, sort, brushing, camera, and comparison axes are canonical browser
    history, so Back, Forward, reload, and Copy link restore the same desk.
  • Every Explorer view names the agent that produced the row. Claude and Codex
    sessions keep their identities through transcript enrichment, and the facet
    bar can narrow to one agent.
  • Heavyweight routes each have a recovery boundary, so a render failure no
    longer blanks the Explorer shell. Transcript text loads independently of its
    optional analysis, with typed missing, blocked, empty, and unreadable states.

Hooks and recall

  • Commits made after a cd on its own line, or after a ;, are recorded. The
    hook previously stripped only the && form and dropped the whole command as
    noise. The commit hash and subject are now read from the repository rather
    than scraped from stdout, so git commit -q no longer produces a commit with
    no row.
  • backfill-git-history.sh recognises commits the hook already logged and no
    longer duplicates them on a recovery run. Existing duplicates are not
    rewritten.
  • Variable-bound python writes (p='file' … open(p,'w')) are recorded as
    edits even when the compound command carries an incidental > such as
    2>/dev/null. Before this, the edit logged as a plain command and the Memory
    Desk reported the file as never edited by that session.
  • Memory and the session digest resolve edited files through one parser, so
    loose shell-detector candidates are counted as unresolved instead of becoming
    fabricated hottest-file entries.

Pre-fix history under-counts commits and edits for sessions that used these
command shapes. scripts/backfill-git-history.sh --project <name> --limit N
recovers the commits; edits are not recoverable retroactively.

Agent documentation

  • The /carto skill documents the Memory Desk permalink grammar in full,
    transcribed from the route parser, with recipes for an agent's own thread, a
    bounded file review, a compare view, and a replayed window. Agents can hand an
    operator a URL instead of a description.
  • /standup is listed everywhere the other skills are listed, and its reporting
    guidance says to hand over a peer session's permalink rather than a bare id.

Installation and verification

The archive is one local marketplace for Claude Code and Codex. Follow its
README for installation and restart the agent client afterward. If a detached
Turbo service is already running, refresh it through the managed controller or
the memory page; restarting the client alone does not refresh that process.

Release metadata, including the root lockfile, is checked before packaging.
Publication requires Node 22 unit tests, the Explorer build and Chromium flow,
and the package smoke test. Managed CLI install checks run when those CLIs are
available; hosted CI does not establish a local managed-install result.

Turbo remains optional and experimental.

v0.7.6

Choose a tag to compare

@github-actions github-actions released this 11 Sep 12:51

Session Cartographer 0.7.6

This release combines the local 0.7.5 development work with the working-memory
Explorer and release-readiness fixes. The previous public release was 0.7.4.

Working memory

  • Open /memory for Field, Wake, and Compare views of recorded sessions across
    projects. Compare duration, activity, generated or processed tokens, edits,
    research, and commits.
  • Select a session to inspect activity and token traces, observations, and
    recently edited files. File review shows the current file and Git diff from
    HEAD; it is not a historical file snapshot.
  • Session and file links preserve the view, axes, review mode, and replay
    window. Reload and browser history restore the selection, and older sessions
    reopen their last recorded window.
  • Start the UI with npm run memory from Explorer. The page can enable, start,
    or refresh the shared managed Turbo service. Opening it alone changes no
    preference and starts no backend. Internals remains available on the UI host
    while Turbo is stopped.
  • Both UI launch commands keep timeline, search, sessions, transcripts, and live
    streaming available whether Turbo is off or running. The UI serves those
    canonical Explorer APIs itself, avoiding 404s from the narrower Turbo backend.

A compact work desk

  • Memory now prioritizes tasks across projects, with return-point catch-up,
    observed activity filters, and direct task handoffs. A saved return point
    stays fixed while you catch up; it does not move with polling.
  • The overview pages tasks to fit the window. Phone layouts switch between
    Overview and Charts; laptop and desktop layouts keep the task index beside
    the charts. Field takes the remaining height while Wake and Compare stay
    compact. Full task, transcript, document and diff views retain reading scroll.
  • Brushing or keyboard pinning links the charts and task list. Projects,
    Threads and Artifacts provide semantic depth. Text find and a brushed cohort
    can be cleared independently.
  • Markdown has safe rendered/source views; unified diffs include old and new
    line numbers. Reviews show current workspace state, including possible edits
    from other sessions, rather than claiming a historical reconstruction.
  • The overview keeps task order stable during live polling. Latest first
    explicitly refreshes that order. Readable text and keyboard/touch targets
    retain their size as the window changes; page capacity changes instead.

Recall and ownership

  • The warm backend now separates ranked recall from counted facts: census,
    tempo, and log-position delta queries carry supporting event IDs.
  • Recall applies time windows before truncation and uses consistent project
    scope across keyword and semantic sources. The pulse uses counted facts above
    its relevance feed.
  • Git backfill imports configured owners by default. Full names remain one
    author pattern; empty explicit overrides are rejected. --all-authors remains
    an explicit option. Existing imported history is not rewritten by this update.
  • Project aliases can live in a user-owned registry that replaces the shipped
    defaults. Adoption instructions now describe the actual lookup order.

Installation and verification

The archive is one local marketplace for Claude Code and Codex. Follow its
README for installation and restart the agent client afterward. If a detached
Turbo service is already running, refresh it through the managed controller or
the memory page; restarting the client alone does not refresh that process.

Release metadata, including the root lockfile, is checked before packaging.
Explorer's locked dependencies include security fixes within their existing
version ranges, including Vite, PostCSS, and shell-quote.
Publication requires Node 22 unit tests, the Explorer build and Chromium flow,
and the package smoke test. Managed CLI install checks run when those CLIs are
available; hosted CI does not establish a local managed-install result.

Turbo remains optional and experimental. Missing or partial transcript usage is
labelled, and the utility canary has not established better recall than the
portable backend.

v0.7.4

Choose a tag to compare

@github-actions github-actions released this 06 Sep 05:39

Full Changelog: v0.7.2...v0.7.4

v0.7.2

Choose a tag to compare

@github-actions github-actions released this 02 Sep 13:57

Full Changelog: v0.7.1...v0.7.2

Session Cartographer 0.7.1

Choose a tag to compare

@andyed andyed released this 29 Aug 18:51

Session Cartographer 0.7.1

A follow-up to 0.7.0. The attribution migration under-repaired: events recorded from
a subdirectory of a worktree were skipped.

Who needs this

Anyone who ran the 0.7.0 migration. Re-run it — the pass is idempotent and picks up
only what was missed:

node scripts/migrate-project-attribution.js            # dry run
node scripts/migrate-project-attribution.js --apply

If the dry run reports 0 event(s) would be repointed, you were unaffected and there
is nothing to do.

What was wrong

The migration repointed a record only when its project equalled basename(cwd). The
hook it repairs, though, derived the project from git rev-parse --show-toplevel, which
returns the worktree root no matter how deep the working directory was. An event
recorded in …/worktrees/confident-yalow-e1cdc6/apps/capacitor/android therefore carried
confident-yalow-e1cdc6 as its project alongside a much deeper cwd, and the check
skipped it.

The signature now also accepts a project matching the basename of the cwd's own
toplevel. On the development corpus that recovered 18 further events across 2 phantom
projects.

Nothing else changed, and the 0.7.0 write-time fix was never affected — new events were
always attributed correctly regardless of directory depth.

Full detail in CHANGELOG.md.