Releases: muckybuzzwoo/token-dashboard
Release list
v0.6.0 — Register galleries (Plugins/MCP/Hooks), skill descriptions, short range filters
A new Register ▾ nav group collects four read-only, local "what's installed" views, plus short range filters and skill descriptions.
Highlights
- Register nav group with three new catalog pages:
- Plugins — installed plugins with enabled state, source marketplace, version, component counts (skills / agents / commands), and an approximate always-on token cost.
- MCP — configured MCP servers: local ones from
~/.claude.jsonplus servers shipped by installed, enabled plugins (their.mcp.json). Account-level claude.ai connectors (Gmail, Calendar, Slack) are intentionally not listed — they have no local config to read, and the dashboard stays fully local. - Hooks / Commands / Agents — configured hooks from
settings.json(with a broken-script check), user commands from~/.claude/commands/, and plugin-shipped commands/agents.
- Skill descriptions on the Skills tab, parsed from each
SKILL.mdfrontmatter. - 1d / 2d / 3d short range filters on the Overview and Skills tabs.
All catalog scanning is read-only and manifest-driven (installed plugins only, marketplace clones and disabled plugins excluded), and runs on Windows, macOS and Linux.
Upstream credit
- Adapted from upstream PR nateherkai#29 by fesak7 (galleries + nav grouping). The PR's remote plan-usage / quota panels were deliberately left out to keep the dashboard fully local (no OAuth token copied into the DB, no calls to the Anthropic API).
- Short range filters from upstream PR nateherkai#31 by RKdev.
See FORK_NOTES.md for the full record of what was integrated and what was excluded.
v0.4.0 — clearer in-app explanations + Team pricing fix
Clearer, collapsible in-app explanations
Every data-heavy tab now has a collapsible, plain-language legend — the same <details> glossary pattern as the Overview''s "What do these numbers mean?", collapsed by default with a "— click to expand" hint:
- Prompts — column guide, plus a note explaining
<synthetic>-model rows (Claude Code''s auto-injected "Continue from where you left off." continuations carry token counts but no price). - Skills & Commands — full column guide (You ran, Claude invoked, Tokens per call, Budget, p50/p95, Total $, Total inc. subagents, Sessions, Last used).
- Subagents — agent kind, entrypoint, dispatch tree, top sessions, and the per-(kind, model) breakdown table.
- Workspaces — Sankey flow legend.
Dense jargon paragraphs were rewritten into scannable term -> definition lists with concrete examples and a "what you can read out of it" framing. The Settings plan text now makes clear that picking a subscription never changes the displayed figures (always the API pay-per-token value) — it only adds your flat monthly fee for comparison.
Fixes
- Pricing: corrected Team plan monthly prices — Team Standard $25/seat, Team Premium $125/seat (billed monthly), matching claude.com/pricing.
No new dependencies. Full test suite green (259 tests).
v0.3.1 - fix scanner accounting (per-content-block format)
Fixes the dashboard's accounting for the current Claude Code transcript format (one disjoint record per content block sharing a message.id, each repeating the final usage), based on the analysis in nateherkai#25 by @sdkkds.
Fixes
- Tool/skill undercount (bug #1): parallel
tool_useblocks living in non-final snapshot siblings were dropped (~28% of tool calls on real data). The snapshot dedup now re-points evicted siblings'tool_callsonto the surviving keeper (deduped bytool_use_id) instead of deleting them — recovered 553 tool calls locally, with no orphaned rows so thetool_calls->messagesjoins still resolve. - Turn inflation (bug #3): "turns" counted tool-result-as-user records, inflating it ~6-8x. Turn counts now filter
prompt_text IS NOT NULLacross the live queries and the materialised summary tables. - Bug #2 (prompt linkage) was already fixed in this fork via session+time-window linkage.
Token/cost figures are unchanged. Verified idempotent and token-neutral across full rescans on real transcripts. Existing DBs need one rescan to recover the previously-dropped tool rows.
v0.3.0 — community PRs #3-#6
Integrates four community pull requests, reviewed for security and verified with a green test suite (254 passing) plus a Chrome UI smoke.
Changes
- #6
feat(sessions): cost column + filter UI with live totals(epicvinny) — per-session cost column, client-side filter bar (project autocomplete, date ranges, min$/tokens), live totals footer, URL-persisted. Newsession_model_tokens()indb.pyandcost_usd/cost_estimatedon/api/sessions. - #5
fix(tips): measure subagent return payload, not internal burn(sant3e) — subagent-sprawl tip now flags bloated tool_result returns into main context, not internal sidechain burn. Fixes a false positive on well-delegated sessions. - #4
fix(tips): name source tools in tool-bloat tip body(sant3e) — the tool-bloat tip now names the offending tools viatool_use_idjoin. - #3
fix: made blur work and hide private costs and info(hacker4ofakind) — working privacy blur (transparent text + pointer-events), topbar toggle with localStorage + Ctrl/Cmd/Alt+B, blur-sensitive markers across all tabs.
No new dependencies (stdlib Python + vanilla JS). See FORK_NOTES.md for details.
v0.2.1: keep prompts whose first assistant has a NULL model
Fix
expensive_prompts dropped a prompt entirely when the first assistant message in its window was an API-error / synthetic row with model = NULL (the scanner stores model = NULL whenever a transcript record carries no message.model). The model-pick subquery had no model IS NOT NULL guard, so together with the outer WHERE model IS NOT NULL filter the whole prompt - including the billable tokens of the real response that followed - disappeared from the Prompts tab.
The displayed model is now taken from the first assistant in the window that actually has a model; the token sums still span the full turn (incl. the tool loop).
Tests
test_expensive_prompts_skips_null_model_first_assistant- a NULL-model-first ordering no longer drops the prompttest_expensive_prompts_sums_multiple_assistants_in_window- multi-assistant (tool-loop) summing
Pure query change - no schema migration or re-scan needed.
Full changelog: v0.2.0...v0.2.1
v0.2.0 — Fable 5 support + Prompts-tab fix
Added
- Claude Fable 5 pricing (
claude-fable-5) — a new tier above Opus. $10 / $50 per MTok (input / output); cache rates $1.00 read / $12.50 5m-write / $20.00 1h-write (Anthropic's standard 0.1× / 1.25× / 2× input multipliers). New gold tier badge across the UI, plus afabletier-fallback so future dated/suffixed variants still price. - Opus 4.8 was already supported — Claude Code persists it as the bare
claude-opus-4-8, which already matched the pricing table, so it prices correctly everywhere.
Fixed
- Prompts tab no longer freezes, and now shows Opus 4.8. A newer Claude Code transcript format (new
attachment/queue-operation/last-promptrecords, with the assistant turn re-parented through anattachmentnode) broke theparent_uuidlink the Prompts query relied on — it silently fell to 0 matches from late May, so the tab appeared frozen at 2026-05-29 and never showed Opus 4.8 (the model used from June). Rewroteexpensive_promptsto link each typed prompt to the main-thread assistant work it triggered by session + time window instead ofparent_uuid.billable_tokensnow reflects the full turn (incl. its tool loop).- Pure query change — no database migration or re-scan needed. The database and every aggregate view (Overview, per-model, Projects, Sessions) were correct throughout; only this one join was affected.
Notes
- All 248 unit tests pass (regression tests added for the
attachmentinterposition and the shared-prompt_idcollapse). Version bumped 0.1.0 → 0.2.0.
🤖 Generated with Claude Code