Release notes

FEATURE

Terminal UI stops freezing, and underlying file scans are much more efficient

Previously, when viewing your usage in the terminal, a buggy programming loop (which accidentally skipped the update step) caused the screen to freeze permanently at the exact second you opened it, never automatically refreshing again. This loop is now fixed, and the screen faithfully updates on time. Simultaneously, we've optimized the underlying file scans: before, every time the screen refreshed, the system foolishly read the exact same history file 4 times to calculate numbers for different time ranges; it's now smart enough to read the longest range once and pass the data down, drastically cutting down on wasted hard drive reads. Additionally, legacy environment variables and stale internal names have been unified. It's like a security guard who used to forget to check his watch and never changed shifts, while also climbing up and down the same floor four times during a patrol — now he hands over exactly on time and knows it's easiest to just patrol from the top floor down once.

Original changelog

Original changelogTerminal UI stops freezing, and underlying file scans are much more efficient
**TUI polling never updated after first fetch**: a `continue` in `poll_usage` caused every timeout to jump back to the loop head, leaving the UI frozen at the initial state. Changed to `pass` so the polling path is actually reached.
**Inconsistent env var name**: `USAG_FORCE_GROUP` (v0.1.x legacy prefix) renamed to `USAGE_FORCE_GROUP` to match all other env vars in the project.
**Redundant filesystem scans per refresh**: `_refresh_in_background` was calling `history_loader.load_entries` four times per cycle (24h × 2, 168h × 1, 720h × 1). Now loads the 720h superset once and passes it down, eliminating the duplicate I/O.
`pricing.py` User-Agent updated from the stale `usage/0.2` to `usage/0.9`.
`--setup` no longer prints a "no migration needed" message on clean installs.