Repository navigation
v0.6.1 — the menu bar updates itself
Two menu bar bugs, both reported from real use, both invisible to every check the
project had.
The number only moved when you clicked it
The poll timer fired every two seconds and re-read the payload — but nothing
regenerated it. The only code path that scans ran on launch, on opening the
popover, and from Scan now. The timer assumed the background agent was
keeping that file current, and that agent is optional and off by default, so on
most machines nothing was. The title showed whatever was true when the popover
last opened.
The timer now scans for itself whenever the payload is older than a minute, and
skips it otherwise — which is exactly the case when the agent is running, so the
two never duplicate work. A scan is 15–250ms against a warm database.
A stale reading was presented as current
A quota's age came from the payload's own age_seconds, which the engine computes
once, when it writes the file, and never revises. With nothing rewriting the
file that number stayed frozen — so a reading hours past its 15-minute sampling
interval still classified as current, still led the menu bar, and still had its
percentage rendered as a statement about now. Reported as the percentage sitting
at an old value after the limit had actually been reached.
Age is now derived from observed_at against the clock, so it grows, and a
reading that ages out is drawn back instead of trusted. The "as of X ago" labels
and the stale banner read the same frozen number and are fixed by the same change.
The source was never at fault: Claude's own history does reach 100, and 100%
renders correctly in every menu bar style.
Guarding both
--check-freshness joins --check-layout as a CI self-check on the app binary.
It pins the freshness boundaries, asserts a stale reading never reaches the menu
bar and that 100% does, covers a payload with no observed_at so an older engine
still works, and covers a future timestamp so clock skew cannot produce a negative
age. Reintroducing either bug fails it.
Full notes in CHANGELOG.md.
Upgrading
brew update && brew upgrade devopsinside/burn-o-meter/burn-o-meterIf you run the menu bar app, rebuild and reinstall it — the fix is in the app
bundle, not the CLI:
git pull && macos/make-app.sh --install && open /Applications/burn-o-meter.app--install matters: macOS will not register a login item for an app outside
/Applications, so one built in place never comes back after a reboot. The bundle is
ad-hoc signed and still needs Developer ID notarisation for distribution, which
this project does not yet have.