Skip to content

Releases: aqua5230/usage

v0.28.15

Choose a tag to compare

@github-actions github-actions released this 19 Jul 13:41

Changed

  • Auto-start is now one shared switch for Claude and Antigravity. It starts both keepers together; users who previously enabled either individual switch are automatically treated as having both enabled.

Fixed

  • Antigravity auto-start never fired, and the card showed a phantom countdown. The Antigravity quota API reports a sliding reset time (always "in ~5 hours") while a 5-hour window is still untouched at 100% remaining. The 0.28.14 auto-start gate treated any reported countdown as "a window is already running", so it never pinged; it now treats 100% remaining itself as "no active window" (the 5-hour self-throttle still applies). The card likewise stopped rendering that placeholder as a live countdown — at 100% remaining it now shows "Quota full" until a real window starts.

v0.28.14

Choose a tag to compare

@github-actions github-actions released this 19 Jul 03:38

Added

  • Antigravity can now auto-start its next 5-hour session. A new opt-in menu toggle watches fresh, non-mock agy quota results and, when the selected model group's session is fully reset with no countdown running, dispatches one background agy -p ok --model 'Gemini 3.5 Flash (Low)'. It is off by default, self-throttles for five hours, uses only the local agy CLI, and shows the same Mac sleep warning as the Claude window keeper when enabled.

v0.28.13

Choose a tag to compare

@github-actions github-actions released this 18 Jul 08:00

Fixed

  • Auto-start 5-hour Session now actually fires: the claude CLI resolution list was missing ~/.local/bin/claude (where the native installer puts it), so inside the .app bundle's narrow PATH the ping silently found nothing to run and gave up. Also hardened against a false "expired" read: the reset-time check now only trusts the live statusLine hook data source (fallback sources can default a missing resets_at to parse time, which the next refresh would misread as already-expired) and requires the expiry to be at least 2 minutes old before firing, filtering out that false positive without meaningfully delaying a real away-from-keyboard ping. Dialog copy from 0.28.12 also simplified — leads with "pauses on sleep, resumes on wake, nothing to manage" and routes the sleep-setting instructions through System Settings search (the exact pane/wording varies by Mac model and macOS version) with a fallback suggestion to ask Claude Code to walk through it.

v0.28.12

Choose a tag to compare

@github-actions github-actions released this 18 Jul 07:04

Added

  • New opt-in menu toggle: Auto-start 5-hour Session. When enabled, usage detects that your Claude 5-hour quota window has just reset and no session is currently running, then fires a single claude -p ok --model haiku in the background to immediately start the next window — useful if you're stepping away and want the next 5 hours counting down before you're back. Off by default; sends at most once per 5-hour window (self-throttled), never touches the Anthropic quota API, and silently no-ops if the claude CLI can't be found. Enabling it shows a one-time dialog explaining that it needs usage (and the Mac) to stay awake to fire — closing the lid always sleeps the Mac regardless of this setting.

v0.28.11

Choose a tag to compare

@github-actions github-actions released this 18 Jul 04:40

Changed

  • The HTML usage report looks less like a template and reads more cleanly: gold is no longer a blanket accent — it's now reserved for four focal points (headline tail, primary KPI number, the Wrapped kicker badge, the terminal cursor), with the contribution heatmap and donut chart moved to a cohesive teal/mauve palette instead. Fixed three alignment bugs: the KPI card grid now keeps a consistent rhythm across all six cards, the Wrapped section's total-token figure no longer overlaps the phoenix illustration at high digit counts, and the trailing metric card in that section no longer orphans onto its own row. Also cleans up several small "obviously AI-generated" tells: transition: all rules now list only the properties that actually animate, card/section borders read at a clearer contrast in both color schemes, disabled/active button states are now styled instead of falling back to defaults, motion respects prefers-reduced-motion, and the three share-dialog emoji icons are now matched-stroke SVGs.

v0.28.10

Choose a tag to compare

@github-actions github-actions released this 18 Jul 03:40

Fixed

  • Switching panels no longer stalls the UI with a beachball: cold-rebuilding a panel view (evicted from the small LRU cache) reread and reassembled its HTML from disk every time — now the assembled markup is cached per panel and only built once. Selecting a panel no longer forces NSUserDefaults.synchronize() on the main thread. Unchanged panel state is no longer redundantly re-serialized and re-injected when a switch triggers two refresh passes back to back. Evicting an old cached panel view from the LRU cache is now deferred off the click's run-loop turn instead of running inline with the new panel's setup.

v0.28.9

Choose a tag to compare

@github-actions github-actions released this 17 Jul 10:54

Fixed

  • The Claude Code statusLine hook now works end-to-end on Windows: four fixes land together. setup_hook now prefers an all-ASCII python.exe path (falling back to system PATH when the venv path isn't ASCII), since Claude Code on Windows fails to spawn statusLine commands whose path contains non-ASCII characters; --setup migrates existing non-ASCII commands. All five hook scripts now read stdin via sys.stdin.buffer and decode UTF-8 explicitly (and the forwarder pins encoding=utf-8 on its subprocess fan-out), since Windows otherwise decodes the piped session JSON with the locale codepage, turning a cwd like GitHub專案 into mojibake and silently breaking usage-status.json writes. Hooks now fall back to GetUserDefaultUILanguage when no LANG-style env var is set (the Windows norm), matching the tray's existing language detection. get_width() now probes the real console width via CONOUT$ + GetConsoleScreenBufferInfo instead of always falling back to a fixed 116 columns, restoring the (left) reset-time suffix on wide terminals. Non-Windows behavior is unchanged.

v0.28.8

Choose a tag to compare

@github-actions github-actions released this 16 Jul 22:58

Fixed

  • The Windows tray no longer falls back to a stale quota cache when the hook already has live data: a complete statusLine payload from the hook could still be overridden by the .claude.json fallback snapshot whenever its cached timestamp looked newer, even though that cache might describe a different or expired session; the tray now always prefers a complete hook payload, and the "complete" check itself is now stricter — malformed non-numeric percentages in the hook payload no longer count as complete, so a broken payload can't silently blank the quota by skipping the cache.
  • Windows tray history scanning no longer re-scans every Codex/Claude session log on each refresh tick: history_source_scan() results are now cached for 30 seconds, removing the main source of UI jank in the tray.

v0.28.7

Choose a tag to compare

@github-actions github-actions released this 16 Jul 21:04

Fixed

  • Claude quota now shows on Windows even when the statusLine hook never fires: a Claude Code regression stops the hook from being invoked on some Windows setups, leaving the Claude quota card permanently blank. usage_client.py now falls back to reading cachedUsageUtilization straight out of Claude Code's own ~/.claude.json when no usage-status.json exists, so the card still populates.
  • Session hooks no longer break on non-ASCII (CJK) project paths on Windows: the resume, terse-mode, and terse-reminder hook commands could point into the project or app-bundle source path, which failed to execute on Windows when that path contained Chinese/Japanese/Korean characters. Self-heal now normalizes these commands to their canonical ~/.claude/ targets, and the migration is idempotent — it no longer rewrites settings.json and appends a duplicate self-heal log entry on every restart once the command is already correct.

v0.28.6

Choose a tag to compare

@github-actions github-actions released this 16 Jul 18:00

Fixed

  • Windows hook and setup output now uses UTF-8: statusLine bars keep their intended Unicode glyphs when Claude Code reads a pipe, and --setup / --unsetup no longer fail in legacy cp950 consoles when localized messages contain characters such as ✓.
  • Windows panel controls now fit and follow the macOS grouping: Change Panel and Hide Sections expand in place inside a scrollable menu instead of opening clipped side submenus; the panel menu now ends with only Refresh Now, avoiding duplicate update, position-reset, and quit actions.
  • Windows quota-card empty areas now drag the panel rather than reorder cards: the Windows shim temporarily marks only non-interactive card presses as native drag regions, retaining saved card order while buttons and links remain clickable.

Added

  • Windows panel switch buttons now open a focused controls menu: clicking a panel's built-in Switch Panel button opens a localized HTML overlay for panel, visibility, refresh, notification, and workflow controls; tray-only update, position-reset, and quit actions stay out of the panel menu.
  • Windows tray panels can now be repositioned: a subtle top drag handle and quota-card empty areas move frameless panels with grab/grabbing cursors; the position is restored on the next open, clamped to the current work area, and can be reset from the tray menu.
  • Windows tray menu parity for daily updates and workflow controls: the Windows system tray now links to AI Update Daily, offers a Hide Sections submenu for Claude, Codex, and Antigravity, supports quota-alert notifications at the same thresholds as macOS, and exposes Resume Last Session and Token Saver toggles. Changes to visible sections are injected into an open panel immediately; quota alerts use native Windows tray notifications. The macOS-only AI Talent Market remains unavailable on Windows.