Changelog
Notable changes to Chronicle. Full history and downloads: https://github.com/chizhangucb/chronicle/releases
Unreleased
Removed
The local LiteLLM proxy is gone from the repo. Its runtime, spend logger, job template, installer and test suites are deleted, and the repo's CI no longer installs Python to test them. Chronicle stopped reading that proxy's spend log when the proxy-lane spend tile was removed, and nothing an operator does changes: the proxy was never part of
npx chronicle-cliand never shipped in the tarball.Context causality is gone from Playback. A message row used to carry a
⛓chip listing, with a confidence percentage, which earlier reads a file change "likely" came from. The links were a local guess from the shape of the tool calls — read the same file, read a sibling, match a search pattern, or simply read shortly before — and a percentage on a guess reads as a measurement. Playback still shows every read and every change, in order, each against its snapshot: what the tool actually did, with nothing layered on top. The analysis engine and its per-session route go with the chip, so opening a session makes one request fewer.Chronicle is now only a session-analysis tool. It was built as the console for a personal operations folder and grew a second product's worth of surfaces to do that job. That folder is gone, and every page that read it rendered empty or refused to load on any machine but one. All of it is removed in this release, listed here so an upgrade holds no surprises. What you use Chronicle for is untouched: import, browse, playback, time travel, Insights / Explore / Content / Spend / Sessions, redaction and redacted export, Ask.
Pages gone, their routes now unrouted: Modules, Jobs, Records, Memory, Briefing and Safety. The sidebar carries Insights and Projects and nothing else, on every install and in every mode. A stale bookmark to one of these lands on the ordinary not-found page instead of a "no hub connected" placeholder.
The write gate is gone. Changes used to go propose, read a validated diff card, Confirm or Deny, then backup, temp-rename, verify and audit. That machinery existed to edit configuration files kept outside Chronicle, and Chronicle no longer touches them. Renaming, unlinking, deleting a session or project, editing settings and editing redaction rules all still work, exactly as before. What went with the gate: the confirm card, the proposal step, the backup-and-verify write path, the audit table, the write log on Safety, and Undo on a write-log row. One piece stays, renamed: a per-boot token every mutating route still carries, so a page on another origin cannot change your data.
The daily briefing is gone, with the Run-now action, its two state files, its filtering and history, and the two bands it put above your numbers on the home page. Insights now opens straight on the KPI strip. Chronicle no longer starts a model run on its own. The parts of the briefing you actually used live on the Spend tab, where they always were: the monthly budget and the flagged-day spend anomaly.
The "Work on this" Terminal launcher is gone, and with it the AI "Suggest scope" flow that was on Memory. Chronicle no longer launches another program or spawns a model run of its own accord. Ask is the one model run in the product, it is off by default, and it only ever runs on a question you typed.
The proxy spend lane and the automation-sessions manifest are gone. The Spend figure on the KPI strip and the Spend tab is now one number, estimated from the sessions you imported and priced from the local price table, so there is no second lane to reconcile. Chronicle reads no spend log outside its own data folder, and no manifest written by another tool. The routing-compliance block on the Spend tab goes with them: it graded your models against a roster file kept elsewhere.
The
chronicle hubsubcommand is gone, along with theCHRONICLE_HUBandAIOS_HUBenvironment variables and thehubRootconfig key. Setting one of them now changes nothing.chronicle --helplists only flags the product honours.The contract database views and their version pragma are gone.
chronicle.dbexposes its base tables as they are; anything reading it should expect them to be reshaped without a compatibility ritual.Settings rows gone with their features: the "Home bands" toggle. What remains is auto-sync, pause auto-sync, Claude plan windows, Ask and the monthly budget.
Also removed: the daily-digest job that wrote into the old operations folder, and its launchd template. The published package now ships no job template at all. Demo mode still seeds synthetic sessions and projects, and seeds nothing for the surfaces above, so a demo console and a stock install differ only in whether they have sessions.
Every term above stays looked-up-able: the Reference page's Retired group defines each removed surface and says what, if anything, replaced it.
Nothing in Chronicle deletes a source transcript. The session Overview's "Delete source file" and "Delete everywhere" buttons are gone, and so is the route behind them. Chronicle only ever reads the file your coding tool wrote. "Delete from Chronicle" is unchanged: it removes the imported copy, backs the database up first, and tombstones the session so a later sync does not re-import it, with Undo to take that back.
Chronicle is English only. The EN / 中文 / 日本語 dropdown in the top bar is gone, with the zh and ja dictionaries and the lookup behind them. If you had the console set to one of those languages it now reads in English; nothing else about your install changes, and no data moves. Dates, hours and weekday labels format the same way they did with the language set to English.
Added
- A reference for every number on the console. The Reference page defines every metric Chronicle shows, rendered from the same registry the small "i" tips read, so the page cannot drift from the surfaces. It also keeps definitions for surfaces that were deliberately retired, so a term you remember stays lookup-able even when its page is gone.
- Try Chronicle before importing anything.
npx chronicle-cli --demobuilds a complete synthetic console: four projects, five model vendors, four months of history and a flagged spend day. It never touches your real data and never makes a network call. A zero-data install now offers it directly. - Install it as an app. Chrome and Edge will offer to install Chronicle, and
npx chronicle-cli --appopens it in its own window with no tab strip or address bar. No service worker, so an upgrade is never masked by a cached page. - Consistent page widths. Every non-dashboard page now shares one frame width instead of six different ones, with long prose holding its own comfortable line length.
Changed
One word for the time filter: range. The Today / 7d / 30d / 90d / All control is a range toggle everywhere it appears, and every explanation on
/referencethat used to say "window" now says "range". Window is left to mean only a plan window or a context window, so the two are never confused on the Spend tab.Explore's stacked chart now agrees with its own total. On a range whose edge cuts through a session, the time chart used to draw that session's whole billed usage on the bar it started in while the ranked rows showed only the share inside the range, so the chart read higher than the total beside it. Both now read the in-range share, and summing a chart's bars reproduces its total at every granularity. Numbers on Explore move for exactly this case; every other range is unchanged.
Fixed
- "Above your usual" on the Burn tile now compares local days. The baseline it medians over the trailing fortnight was bucketed by UTC day, so an evening session west of UTC (or an early-morning one east of it) landed on the wrong day, or dropped out of the comparison altogether. Every other bucket in Chronicle is already a local day; this one now is too.
- Explore's project, source and session error counts now include an erroring tool result whose originating call is missing from the transcript. Those three read the error count Chronicle stores per session at import, so the page answers faster too. That count is a whole-session total, the same one the Insights error rate reads, so on a range whose edge cuts through a session those three dimensions now report its full error count rather than only the errors inside the range, and the time chart draws them on the bar the session started in (or the first bar of the range, for a session that started before it). Every dimension that names something inside a session,
toolthroughhour, still counts per message and inside the range. - Turning Ask on now says why it is unavailable when it cannot run, instead of appearing to do nothing.
- The docs, the README and the privacy page no longer claim Chronicle makes no model call at all. It makes none in the analysis path, and Ask, which is off by default, runs
claude -plocally on your own Claude subscription.
1.4.0 - 2026-08-27
- Insights is now five tabs. The analytics home splits into Overview, Explore, Content, Spend, and Sessions. Overview stays the headline read; Spend and Sessions are dedicated deep-views for where your money and your time actually go.
- A dedicated Spend tab. Month-to-date budget with a daily pace and a month-end projection, spend-over-time you can stack by project or by model vendor, per-model and per-source breakdowns, an efficiency panel (cache hit rate, jumbo outputs, long context, right-sizing, cache churn, repeat file reads), roster compliance, and per-skill and per-MCP-server spend. Every derived number carries its own definition.
- A spend anomaly tile on Overview. Replaces the old burn tile: today's spend against your typical day (a 14-day median), the top project and model driving the change, and any recently flagged days. Proxy-lane spend is called out as unattributable rather than smeared across a driver it cannot be tied to.
- Plan windows. See how much of each Claude and Codex usage window is left. Claude reads your own subscription quota (the one outbound call the app makes, on by default, off with a single Settings toggle); Codex is read locally.
- A Sessions tab. Busiest days and projects, automation grouped by job, and a session table you can sort by cost, duration, or recency.
- Ask your data in plain language. A new page answers questions like "how much did I spend on Opus last week?" locally against your Chronicle database. Nothing leaves your machine.
- Ops surfaces for hub users. When an AIOS hub is detected, Chronicle adds Modules, Safety, Jobs, Briefing, Memory, and Records views for reading and managing it, and the daily briefing now raises a spend card when today's spend runs unusually high. These surfaces are hidden entirely when no hub is present, so the standard install is unchanged.
- Relicensed from MIT to Apache-2.0. Chronicle now ships under Apache-2.0 with a NOTICE file, adding an explicit patent grant while staying permissive for downstream use.
1.3.1 - 2026-08-25
- Rebuilt sessions are now labeled where other tools can see it. 1.3.0 already recorded, per session, whether its token numbers were re-read from a transcript or rebuilt after Claude Code had pruned one. That label now rides the
contract_sessionsview asusage_source, so a dashboard reading Chronicle can say which spend is measured and which is reconstructed instead of presenting both as equally solid. Rebuilt sessions read low, by 7% to 15% in the sessions audited. No number changes, and the contract stays at version 1: adding a column does not break a reader that selects the columns it wants.
1.3.0 - 2026-08-25
- Spend was over-reported by roughly 2.2x — corrected. Claude Code writes one API response across several transcript lines (an empty thinking block, then text, then a tool call), and every one of those lines repeats the same token usage. Chronicle counted each line, so a single API call was billed two or three times. It now recognises Anthropic's own per-call identity and counts each call once. Verified against the usage figures Claude Code itself reports: 17 of 17 audited sessions match exactly, where none matched before. Session counts, message counts, tool calls and durations are unchanged; token counts fall alongside cost, because they were double-counted for the same reason.
- Your historical numbers will drop on upgrade, and that is the fix working. A one-time migration rewrites stored usage for sessions already imported. It snapshots your database to
~/.chronicle/backups/db/first. Sessions whose transcript is still on disk are re-read exactly; Claude Code prunes its own logs, so older sessions are instead rebuilt by collapsing repeated usage rows — accurate to about 2%, versus 120% too high left alone. Rebuilt sessions are labeled internally so an estimate is never mistaken for a re-read. - Automation spend no longer double-counts a re-run job. The machine-session manifest is append-only, so a retried background job could record a second entry for the same session and be billed twice in the automation bucket.
- List price vs Billed cost toggle. A new topbar control switches every cost figure between list price (the metered cost of each token) and what you actually pay: models covered by a subscription (Claude tiers, the gpt-5.6 family / Codex) bill about $0 per token, so their billed cost shows as $0. The default is list price, and the active mode is always labeled next to spend so no number silently changes meaning.
- Automation runs are separated from your interactive session count. Headless background runs (weekly/nightly/session-close/spend-advice jobs) no longer inflate the headline Sessions number. They are counted as a separate automation bucket, broken out by job, and their spend is still included in the Spend total (labeled, not hidden). A background run whose transcript is also imported is counted once, never twice.
- Cost figures now match Anthropic's actual Sonnet 5 intro pricing. Chronicle previously priced every Sonnet 5 session at the flat $3/$15 per MTok rate, overstating cost by ~50% for usage during Anthropic's intro window ($2/$10 per MTok through 2026-08-31). Every cost figure across Insights, Explore, Project detail, the recent-sessions ledger, and Session Overview now prices each day's usage at that day's actual rate.
1.2.1 - 2026-08-16
- Sessions no longer look "missing": noise-gate fix. Short sessions were gated out of the main lists if they ran under 5 minutes of agent-active time OR had fewer than 10 messages, so a fast but real 20-to-40-message session could vanish and read as "not synced." The gate now hides a session only when it is small on BOTH counts (brief AND few messages), so substantive sessions always show.
- Visible minor-sessions notice. When any sessions are gated as "minor," the recent-sessions ledger shows a notice at the top with a one-click "Show them" that expands the list inline (promote or ignore each), plus an InfoTip stating the exact rule, so nothing gated ever reads as broken.
- Always-visible scrollbars. The recent-sessions list and the project rail now show a scrollbar at rest instead of only on hover.
1.2.0 - 2026-08-15
- New home: a live Insights dashboard at
/. The landing page is now the Insights hub — a Today/7d/30d KPI strip, a Today-only Activity block (live sessions + "since you left"), a Burn tile, and the Overview charts. The recent-sessions ledger (search, day-grouping, bulk select) and the project list moved together to their own Projects page. - Explore: hourly time brush + session grouping. A new hourly granularity with an "Other" rollup for long tails, plus a per-session grouping view for Explore's pivot table.
- Content: 7 usage characteristics. New scannable callouts — long (8-hour+) sessions, workflow runs, subagent turns, high-context sessions (absolute and relative to the model's window), cache efficiency, and autonomous share — each with its own share/count and an InfoTip explainer.
- Subagent-folder ingestion. Claude Code subagent transcripts written to separate files/folders (direct and nested workflow runs) now import with correct attribution; the Overview Subagents card shows the real run count.
- Synced indicator. A topbar pill shows "synced Xm ago" / "syncing…" / "sync failed Xm ago" and doubles as a click-to-sync-now button from any page.
- Resizable Playback panel. The conversation pane in Playback now has a draggable split against the code/file-tree pane (persisted width), plus clipping and overflow fixes at common desktop widths.
- Quality gates for future releases. A Playwright E2E suite (seeded against a big fixture — 120 subagents, 5000 messages) now gates CI on every PR; a checked-in design rubric (
.claude/design-rubric.md) plus anpm run walkrelease-capture script are the judged gate before everynpm publish. Internal: a server-side result cache and a client stale-while-revalidate fetch layer speed up navigation between cached views. - Worktree sessions no longer dropped by sync. Claude Code sessions run inside a git worktree (
.claude/worktrees/<name>) now import under their parent repo instead of being silently skipped, so worktree-based development shows up in Chronicle like any other session.
1.1.0 - 2026-08-12
- App-wide design-system pass. Consistent typography, spacing, control sizing, and interaction states across Home, Project Detail, Insights, Session Overview/Playback, and app chrome/modals — tabular numeric alignment, one money-formatting policy, one mono icon/glyph vocabulary (no more colored emoji in the UI), and a draggable sidebar + project rail with persisted widths.
- Explore: time-rollup views. New hourly/daily/weekly/monthly stacked time-series, plus detail-column correctness and calibrated-marker fixes.
- Insights: proxy spend tile. Live-reads a LiteLLM
spend.jsonlwhen present; faster range clicks via a covering index and precomputed error counts. - Home: recent-50 lazy-scroll ledger, absolute timestamps, and inline multi-select for bulk actions.
- Assorted correctness fixes in Explore/Insights (error attribution, commit caching) and dead-code cleanup.
1.0.2 - 2026-08-12
- Internal: shared conversation-pane component (
WindowedConvPane) deduped across playback and the subagent drill-in. No user-facing changes. - First release published via automated OIDC trusted publishing.
1.0.1 - 2026-08-12
- Quieter startup. The foreground
npxlauncher no longer prints thenode:sqliteexperimental warning orfatal: not a git repositorylines from probing non-git project folders — both were harmless noise the desktop shell used to hide. - Housekeeping: removed the inert
launchAtLoginsetting and scrubbed leftover desktop-shell references from code comments.
1.0.0 - 2026-08-11
- Install via npm. Chronicle is now
npx chronicle-cli(requires Node 24+). The Electron desktop app and Homebrew/DMG install are retired. - Tabbed Insights (Overview / Explore / Content), first-class Subagents, and per-project Explore/Content/Sessions tabs.
- Full TypeScript, invisible sync with tombstones + noise gate, stable URL routes.
0.2.1 - 2026-08-09
Safety and maintenance follow-up to v0.2.0:
- Database snapshot before deletion — Chronicle now snapshots
~/.chronicle/chronicle.dbbefore any project or session deletion, keeping the newest two snapshots, so an accidental delete is recoverable. - Dependency security fixes — resolved 18 of 21 Dependabot alerts across the app and website (all transitive; no behavior changes). The remaining 3 are dev-server-only issues in Vite 5, pending a VitePress 2.x upgrade.
0.2.0 - 2026-08-09
The substrate release: Chronicle becomes a metrics-grade session database while staying a standalone product. Feature removals make this a minor bump.
- Subagent (sidechain) import — Claude Code subagent transcripts are now imported (with their agent type and skill attribution) instead of dropped. Their token spend counts in Cost & Usage; playback/refine stay main-chain by default. Per-message token columns unlock costliest-message and $-weighted attribution analyses.
- Contract views — external consumers (dashboards) read two stable SQL views,
contract_message_metricsandcontract_sessions(metrics + pointers, no content), versioned viaPRAGMA user_version. - Truer durations, stored at import — Agent Active now counts tool execution in full, caps other gaps at 10 minutes, and excludes only your real prompt pauses; a new Engaged metric (all gaps, 90-minute cap) approximates hands-on time. Both are stored per session and explained with ⓘ tooltips.
- Auto-sync — the tray app keeps imported projects fresh automatically: on launch, on wake from sleep, every 30 minutes, and when source logs change (debounced). Sessions written to in the last 10 minutes show an "ongoing" pill. Toggles in the new Settings modal, plus launch-at-login.
- Full-text search — global search (⌘K) is now FTS5-indexed, with a LIKE fallback on older databases.
chronicle://session/<id>deep links — open a session directly from other apps.- Removed: MCP Hub, Skills Hub, and the pre-tool-use guard hook. Chronicle refocuses on session history and metrics; security scanning, redaction, and share links remain.
0.1.10 - 2026-07-12
A sharper session metric, delivered via auto-update:
- "Agent Active" (renamed from "Active Duration") now measures agent working time correctly. It still excludes the pause before each of your prompts, but no longer counts background-task completions, in-app clicks, or interrupt markers as "you thinking" — those all carry a
userrole in the logs, so a background build finishing was being charged to your idle time. On a real session this moved the number from 33m to 43m of a 59m span. The ⓘ tooltip explains the distinction.
0.1.9 - 2026-07-12
Home-page and session-metric improvements, delivered via auto-update:
- Multi-select project delete — a new Select mode on the home page turns project cards into checkboxes, so you can remove several projects from Chronicle at once (Select-all / Clear + an inline confirm). Your source logs and folders are never touched.
- Always-on toolbar — Search (⌘K) and + Import Sessions are now available from every view, not just the home page.
- Truer Active Duration — now counts all assistant-thinking and tool-execution time in full and excludes only the pause before each of your prompts (your reading/typing/ away time). The old version dropped any gap over 5 minutes, undercounting long builds and deep thinks.
- Cache-write cost split by TTL — the Cost & Usage panel breaks cache-write tokens and dollars into 5-minute and 1-hour tiers, matching how each is billed.
- Readable tooltips — the ⓘ info bubbles open downward and are wider, so the full explanation is always visible.
0.1.8 - 2026-07-09
Download site + developer docs. No app changes — the desktop app is unchanged from v0.1.7, so there's no update to install (like the v0.1.4 docs release).
- getchronicle.dev — a clean download page that auto-detects your OS and offers one signed-&-notarized download, replacing the raw GitHub Releases list. It reads the latest release live, so new versions (and future Windows/Linux builds) appear automatically. Light + dark, mobile-responsive, with a real in-app Playback screenshot. Built as a new
website/deployable on Vercel. - Developer documentation — a layered
docs/set (guide, architecture, reference) covering install, time-travel, MCP/Skills, parsers, packaging, security, and more.
0.1.7 - 2026-07-09
Session UX polish, delivered via auto-update:
- ⇧⌘U — sync a single session from the keyboard.
- Active Duration — the session Overview now shows real working time (idle gaps over 5 minutes excluded) next to wall-clock duration, with an ⓘ explainer.
- Refine → delete by type — keep or drop whole message kinds (User / Assistant / Tool Call / …) in one click.
- Consistent chat labels — Playback and Refine now use the same wording.
- Replay — tidier sandbox toolbar.
- Feedback — optional sender email, set as
Reply-Toso replies reach you. - Fix — switching language no longer jumps back to the home page.
0.1.6 - 2026-07-09
First signed & notarized release.
- One-click auto-update — an in-app "Relaunch to apply" toast installs updates and cleanly relaunches (electron-updater on a notarized Developer ID build).
- Feedback moved to getchronicle.dev.
- No more macOS quarantine. (0.1.5 was unsigned — upgrade to 0.1.6 once manually, then every update is automatic.)
0.1.5 - 2026-07-08
Cost & usage, global search, session titles, Japanese.
- Cost & Usage panel — local per-model token totals + dollar breakdown (no network).
- Global search palette (⌘K) across all session content, with scopes and filters.
- Skill and MCP distribution donuts on the session overview.
- Reads Claude Code
/renametitles; inline rename; per-session Sync Update. - Japanese (日本語) UI; project switcher dropdown; "Today" time filter.
0.1.4 - 2026-07-08
Documentation release — contributor docs (CLAUDE.md) captured the architecture, release checklist, and gotchas. No functional changes since 0.1.3.
0.1.3 - 2026-07-07
Moved-repo fix + sync-all.
- Latest-
cwd-wins so a moved project stops resurfacing under its old dead path. - Sidebar sync-all button — re-import every project in one click.
npm run reinstall:macdeveloper helper.
0.1.2 - 2026-07-07
Sidebar navigation + project analytics.
- Collapsible global sidebar (Projects, session modes, MCP Hub / Skills / Security / Feedback).
- Project home: 8 stat cards, activity trend (line/bar), tool distribution, call ranking, time-range filter.
- Breadcrumbs, session switcher, copyable session ID.
0.1.1 - 2026-07-07
First installable release + Refine polish.
- macOS DMGs (Apple Silicon + Intel) and a Homebrew cask (unsigned;
--no-quarantine). - Refine: Keep All / Delete All, sensible pre-deleted noise, a single clear savings bar.
- MIT license, README overhaul, PRD decision log.