Skip to content

v0.5.2

Choose a tag to compare

@github-actions github-actions released this 08 Sep 21:55
· 280 commits to main since this release

usagio v0.5.2 — robustness + install-UX round

A follow-up release to v0.5.1: background threads now supervise themselves
and respawn on panic instead of silently dying, every provider HTTP call
gets a hang-proof timeout, "install means install" everywhere, and a batch
of concurrency/state and menu-UX fixes from the latest audit pass. No
schema or CLI-flag changes — safe to brew upgrade / re-run the Windows
installer in place.

Highlights

  • Homebrew formula auto-runs usagio install. brew install mattjackson/tap/usagio and brew upgrade usagio now register the
    LaunchAgent and start the menu bar automatically via a post_install
    hook — no more separate manual usagio install step after a fresh
    install. Run usagio uninstall to stop the menu bar and remove
    autostart.
  • Windows NSIS installer. Windows now ships a proper
    usagio-v0.5.2-x86_64-pc-windows-msvc-setup.exe installer alongside the
    existing .zip: installs to %ProgramFiles%\usagio\, adds it to the
    system Path, creates a Start Menu shortcut, registers an Add/Remove
    Programs entry with a standard uninstaller, and runs usagio install at
    the end. Supports silent/unattended install: usagio-setup.exe /S. The
    .zip distributable is still published for power users who prefer a
    portable unzip-and-run install.
  • Panic supervisors for background threads. Both poll_loop (the
    menu-bar's background poller) and the fsnotify credential-watcher thread
    now catch panics and respawn automatically, instead of leaving usagio
    silently frozen for the rest of the session.
  • HTTP timeouts on every provider call (HIGH). ureq requests for
    Claude usage, Claude OAuth, and Codex OAuth now carry explicit
    read/write timeouts — a stalled proxy or unresponsive endpoint can no
    longer hang the poll thread forever.
  • Shared anti-thrash guard for manual refresh. "Refresh usage now"
    from the menu now shares its SwapGuard with the background poller, so
    manual clicks honor the same cooldown/no-return windows.
  • Menu UX: account blocks separated by HR. Accounts render as
    visually distinct blocks with a horizontal rule between them, replacing
    the previous per-account single-line rows. Flatter Capture and Settings
    submenus; consolidated auto-swap under Settings ▸ Auto-swap ▸.
  • Weekly-aware adaptive cadence. Poll cadence now tightens when
    either session % or weekly % approaches the trigger threshold —
    previously session-only.
  • Stale-after-reset display. When a weekly window has just reset but
    the cached usage predates the reset, the menu now renders -% / -%
    (with a boundary wake) instead of showing stale 0% / 100%.
  • needs_relogin no longer clobbered. Fixed a merge race where a
    concurrently-set needs_relogin=true could be overwritten back to
    false.

Fixed

Further hardening: usagio install now purges legacy System Events login
items (previously only uninstall did); LinuxAutostart::restart()
handles paths with spaces; ~/.config/usagio/ is created at mode 0700 and
usagio.log at 0600 (previously default umask); and
context_ledger::mcp::read_line_with_timeout now enforces a real
wall-clock timeout even if the child process never writes. Dead
Provider::list_accounts and main.rs::capture_current were deleted as
part of the cleanup. Full list in CHANGELOG.md.

Performance

Four efficiency fixes from the post-0.5.1 audit: eliminated a redundant
state.json read+parse on every poll cycle and credential-change event, a
needless state save cycle on idle/degraded poll cycles, redundant
per-account history-window rescans in the menu-rebuild path, and an
unthrottled disk stat() on the macOS main thread's 0.75s timer tick.

Packages

  • macOS: usagio-v0.5.2-universal-apple-darwin.tar.gz (or
    brew upgrade usagio / brew install mattjackson/tap/usagio)
  • Linux (x86_64): usagio-v0.5.2-x86_64-unknown-linux-gnu.tar.gz
  • Windows (x86_64): usagio-v0.5.2-x86_64-pc-windows-msvc-setup.exe
    (installer, new) or usagio-v0.5.2-x86_64-pc-windows-msvc.zip (portable)

Each artifact ships a matching .sha256 checksum, and macOS additionally
ships a combined SHA256SUMS manifest. All three platforms' primary
artifacts are built with
GitHub attestations —
verify with:

gh attestation verify <file> --repo MattJackson/usagio

Known limitations

Same as v0.5.1: Windows and Linux builds are unsigned (no Snap/AppImage/AUR
or MSI/scoop packaging yet — the new NSIS installer is unsigned too), and
macOS usagio.app is ad-hoc signed, not notarised.

See CHANGELOG.md for the complete, unabridged list of changes since
v0.5.1.