Skip to content

Releases: muckybuzzwoo/token-dashboard

v0.6.0 — Register galleries (Plugins/MCP/Hooks), skill descriptions, short range filters

Choose a tag to compare

@muckybuzzwoo muckybuzzwoo released this 22 Jul 19:48

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.json plus 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.md frontmatter.
  • 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

Choose a tag to compare

@muckybuzzwoo muckybuzzwoo released this 16 Jun 13:30

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)

Choose a tag to compare

@muckybuzzwoo muckybuzzwoo released this 15 Jun 14:33

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_use blocks living in non-final snapshot siblings were dropped (~28% of tool calls on real data). The snapshot dedup now re-points evicted siblings' tool_calls onto the surviving keeper (deduped by tool_use_id) instead of deleting them — recovered 553 tool calls locally, with no orphaned rows so the tool_calls->messages joins 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 NULL across 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

Choose a tag to compare

@muckybuzzwoo muckybuzzwoo released this 15 Jun 13:28

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. New session_model_tokens() in db.py and cost_usd/cost_estimated on /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 via tool_use_id join.
  • #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

Choose a tag to compare

@muckybuzzwoo muckybuzzwoo released this 15 Jun 12:55

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 prompt
  • test_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

Choose a tag to compare

@muckybuzzwoo muckybuzzwoo released this 10 Jun 15:37

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 a fable tier-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-prompt records, with the assistant turn re-parented through an attachment node) broke the parent_uuid link 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). Rewrote expensive_prompts to link each typed prompt to the main-thread assistant work it triggered by session + time window instead of parent_uuid. billable_tokens now 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 attachment interposition and the shared-prompt_id collapse). Version bumped 0.1.0 → 0.2.0.

🤖 Generated with Claude Code