Turnlog

Changelog

What shipped, in plain words.

Every released version, newest first — written for the person using Turnlog, not for the commit log. The same notes ship inside the app under What’s New. Nothing here is a plan; for that, see the roadmap.

0.6.0

26 July 2026

Resumed conversations stop looking like duplicates, sessions can leave as a styled web page, and the index tells you what it could not read.

  • Added

    Resume chains are stitched together. Resuming a session used to show up as a near-duplicate row. Parts of one conversation are now linked: the sidebar lists the latest part with a badge for the part count, and the replay header gains part-by-part navigation.

  • Added

    Subagent transcripts nested in replay. Task runs that newer Claude Code versions write to their own files now appear inside the parent replay, folded under the Task call that spawned them, and load when you expand them.

  • Added

    Static HTML export. Any session can leave as one self-contained styled web page — light or dark, prompts and replies as cards, tool calls collapsible, diffs coloured. Nothing in the file loads from the network. Available as a download button, turnlog export <id> --html, or over the API.

  • Added

    Redaction for exports. Pass --redact to scrub API-key-shaped tokens, JWTs, key=value secrets, email addresses, and home-directory paths from an export before you share it — on both the markdown and HTML formats.

  • Added

    Index health panel on the home screen: how many session files and events are indexed, how big the index is on disk, any files the last scan could not read and why, and a count of unrecognized record types. A Claude Code format change now shows up as a number instead of as silent data loss.

  • Improved

    Your preferences survive restarts. Theme, sidebar visibility, hide-empty, spine-or-log choice, and dismissed update notices now live in the local index instead of the browser — the random per-launch port used to hand the browser a fresh slate every run.

  • Improved

    After an update, the header status dot wears a ring until you open What’s New once.

0.5.0

24 July 2026

Your history becomes something your agent can query, and something you can search from the terminal.

  • Added

    Agent memory over MCP. turnlog mcp serves your session history to Claude Code — or any MCP client — as read-only memory over stdio, with five tools: search, list sessions, get session, get messages, and file history. Register it with claude mcp add turnlog -- npx turnlog mcp. No network, no writes.

  • Added

    Message bookmarks. Mark any moment in a replay from the left gutter and cycle between your marks on a jump rail beside the error rail. Bookmarks live in the local index and survive rebuilds.

  • Added

    turnlog search from the terminal. The same operators as the UI, hits grouped by session with matches highlighted, --limit and --json flags — and, when the app is running, a deep link per session that opens the UI at the first match.

  • Added

    Disk usage view. A third tab under Spend ranks sessions by what they weigh on disk, with a reveal-in-file-manager button per row. Turnlog stays read-only — deleting is yours to do.

  • Fixed

    The Spend header scrolled away with the content; it now stays pinned while the body scrolls.

0.4.0

24 July 2026

Search grows a query language, and one file's whole history becomes a screen.

  • Added

    Search operators. Narrow any query with tool:Bash, kind:prompt, is:error, project:name, model:opus, before:2026-07, after:2026-01 — combinable with text or usable alone. A cheat-line under the search box lists them.

  • Added

    Saved searches. Save the query you keep re-running under a name; saved searches show as chips under the search box, one click re-runs them.

  • Added

    Cross-session file history. A Files screen: pick a path and see every session that ever touched it, newest first, expanding into that session's edits with jumps back into context.

  • Added

    What’s New in the app. Release notes in plain language, opened from the status dot. The notes ship inside the package — nothing is fetched.

  • Improved

    The diffs lens now opens as a per-file pivot — touched files with edit and failure counts on the left, that file's edits in order on the right — instead of a chronological filtered log.

0.3.1

23 July 2026
  • Added

    Stop Turnlog from the browser. A power button in the header (click twice — it arms first) shuts the CLI down cleanly and leaves a farewell card with a copyable npx turnlog to start again.

  • Added

    Spend periods for one year and all time, alongside 7, 30, and 90 days. The chart now starts at your first recorded day instead of zero-filling empty history.

  • Improved

    Session notes surface as a small tilted sticky-note marker; hovering it opens the note as a folded-corner paper block. Pinned sessions get a warm row wash so the pinned block reads at a glance.

  • Fixed

    The note editor fell back to the browser's monospace default; both annotation fields now use the app font.

0.3.0

22 July 2026

Sessions become annotatable — the local server's first and only two write endpoints.

  • Added

    Pin sessions. A pin on any sidebar row or in the replay header keeps chosen sessions on top, whatever the sort, and they are never hidden by the hide-empty filter.

  • Added

    Custom names and notes. A custom name replaces the session title everywhere; the note shows under the replay header. Pins, names, and notes live in the local index and survive reindexes.

  • Added

    Show in file manager — reveal a session's JSONL file in Finder, Explorer, or your file manager.

  • Improved

    The replay header became one compact block, the sidebar got a little wider and its controls room to breathe, and one gutter rhythm now runs across every screen.

  • Fixed

    The hide-empty filter now catches real-world empties — sessions that read zero on either axis, not only the both-zero case. Sessions with recorded cost are never hidden.

0.2.7

22 July 2026
  • Added

    Empty sessions can be hidden — an eye toggle beside the sort direction, remembered across launches and applied everywhere sessions are listed.

  • Improved

    A consistency pass across the UI: one emphasis weight, unified label tracking, and stray gaps and radii snapped to the spacing scale.

0.2.6

22 July 2026
  • Improved

    The sidebar sort menu lists “by activity” first, matching the default order.

0.2.5

21 July 2026
  • Improved

    Republished to npm. The package was fully unpublished from the registry on 20 July; npm permanently retires every version number it has seen, so coming back required a new one. Functionally identical to 0.2.4.

0.2.4

11 July 2026
  • Improved

    New typeface across the app — Geist and Geist Mono, still bundled, so nothing loads from the network — matching turnlog.dev. The smallest text sizes went up about a point.

  • Improved

    The browser-tab icon now matches the turnlog.dev mark.

0.2.3

10 July 2026
  • Improved

    The session sidebar became a floating card that slides open and closed, and it now defaults to sorting by activity — the most recently active session first.

  • Improved

    Text arrows gave way to proper icons everywhere, buttons ease on hover and press down on click, and the icon set is now entirely Solar.

0.2.2

10 July 2026
  • Added

    Sort by activity, and a pulsing dot on sessions active in the last five minutes — with live updates, the running session is one glance away.

  • Fixed

    Tooltips near the right edge of the window no longer squeeze to the trigger's width and wrap word by word.

0.2.1

9 July 2026
  • Added

    Live updates, pushed. A dependency-free event stream tells the UI the moment a changed session file is reindexed — list, spine, stats, and spend refresh in about a second. The old seven-second blind poll is gone.

  • Added

    Token usage surfaced where money already was: on session rows, in the spend headline, and as a sort option. The spend chart gained a daily-or-weekly toggle.

  • Fixed

    Spend chart zero-fill used UTC days while the server bucketed by local ones, misplacing bars for anyone outside UTC. Now local and DST-safe.

0.2.0

9 July 2026

The release that made the cost numbers trustworthy.

  • Fixed

    Cost and token estimates were roughly 2.5–3× too high. Claude Code writes one line per content block of a response and repeats the same usage object on every one of them — Turnlog summed them all. Usage is now counted once per API response, and existing indexes rebuild themselves on the next launch.

  • Fixed

    Sessions no longer show Claude Code's internal placeholder as their model, and moving or copying a project directory mid-session no longer corrupts incremental indexing.

  • Added

    Subagent transcripts are indexed: their content is searchable and their usage counts toward the parent session's totals.

  • Improved

    Injected-context records are classified as meta rather than prompts, so they no longer create false turns in the spine or leak into exports.

0.1.0

8 July 2026

Initial public release.

  • Added

    npx turnlog starts a localhost-only server and opens the web UI: full-text search and session replay over your Claude Code history, with a turn spine, lenses, and in-session find.

  • Added

    Incremental indexing with live file watching, and crash-free parsing of an undocumented log format — unrecognized records are kept, never dropped.

  • Added

    Markdown export, and a spend view with daily rollups and model and project splits, priced from a shipped table. All costs are labeled estimates.

  • Added

    Localhost hardening from day one: loopback-only bind, Host and Origin validation, a per-launch session token, and no CORS.