Release notes

PERF

Usage stops doing busywork while idle, saving CPU and disk activity

When you are not even using Usage, your CPU and disk should not be stuck riffling through old records. This release makes its background housekeeping work like a library checking only books that were just returned: FSEvents, macOS notifications about changed files, tells it which files to inspect. It now reads only changed Claude and Codex session JSONL logs, rather than re-walking and checking thousands of files on every refresh; a full scan still runs from time to time as a safety net. On startup, the pricing table and update check now honor their existing cache, saved results that remain valid for a while, instead of downloading again every time. Codex rate-limit reads share the file index, unchanged SQLite database files are skipped, and the parse cache is split into 32 buckets so an active session rewrites only its own. The result: substantially less idle CPU and disk I/O, plus less needless work at launch.

Original changelog

Original changelogUsage stops doing busywork while idle, saving CPU and disk activity
**Idle CPU and disk I/O cut significantly across the board.** History scanning now uses FSEvents-reported paths to stat only changed files instead of re-walking and stat'ing every Claude/Codex session JSONL (thousands of files) on every refresh tick; a full rescan still runs periodically as a safety net. Startup no longer unconditionally re-downloads the pricing table or checks for updates — both now respect their existing cache freshness windows. Codex rate-limit reads reuse the same file index instead of re-scanning session directories, and SQLite reads (thread metadata, rate limits) are skipped entirely when the underlying database file hasn't changed. The on-disk parse cache is now sharded into 32 buckets so a single active session only rewrites its own shard instead of the whole multi-megabyte cache file.