claude-usage-widget/CLAUDE.md
2026-05-09 00:00:26 +01:00

1.8 KiB

Project: claude-usage-widget

A small always-on-top Windows desktop widget that visualizes local Claude Code usage — current 5-hour session block, 7-day rolling weekly window, and per-model token breakdown. Reads ~/.claude/projects/**/*.jsonl directly (via \\wsl$\<distro>\… from Windows). No Anthropic API. No auth.

Working agreement

  • This is a git repo. Commit after each logical change with a one-line imperative message.
  • Read memory.md at session start. Update it before ending the session.
  • Never commit secrets — see .gitignore and the rules in ~/claude/CLAUDE.md.

Project-specific notes

  • Stack: Tauri 2 (Rust + Svelte 5 + Vite + TS). Inline SVG for charts, no chart library.
  • Build target: Windows .exe only. Develop the Rust + frontend code in WSL; do pnpm tauri dev / pnpm tauri build on the Windows host (it needs MSVC toolchain + WebView2).
  • Data source: ~/.claude/projects/**/*.jsonl — assistant lines have message.usage.{input_tokens, output_tokens, cache_creation_input_tokens, cache_read_input_tokens} and a requestId / uuid for dedupe (subagent transcripts in <sessionId>/subagents/<id>.jsonl overlap the parent).
  • Aggregation algorithm: ccusage-equivalent. 5-hour blocks are floor_to_hour(first_ts) → +5h; new block on ≥5h gap or when previous block ends. Weekly is rolling 7 days.
  • Plan reference: ~/.claude/plans/snug-mapping-milner.md (the approved plan that drove this scaffold).

Run

# On the Windows host, from this directory:
pnpm install
pnpm tauri dev          # iterate
pnpm tauri build        # NSIS installer in src-tauri/target/release/bundle/nsis/

Verify

See memory.md and the plan file for the 10-step verification checklist (parse correctness, block boundary, dedupe, live tail, watcher fallback, autostart, etc).