fix: pause usage polling on auth errors
- Show the same auth warning state for expired, invalid, or missing credentials
- Replace the widget auth text with a warning symbol and updated the toast notification
- Stop usage polling and countdown timers while auth is required
- Reuse the configured poll interval to watch credential file metadata instead of polling the API
- Auto-recover when credentials change, while still supporting manual refresh and restart flows
Updated translations
- Add `show_widget` field to Strings struct and all 6 language files
- Replace hardcoded "Show Widget" in window.rs with strings.show_widget
- Translate session_window ("5시간") and weekly_window ("7일") for Korean
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add Korean language support with full UI translations including
menu items, update messages, and time format suffixes.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Added a native system tray icon that shows current 5-hour usage as a percentage badge.
- Added tray icon tooltip support showing both 5h and 7d countdown/usage values.
- Added tray icon interactions: left-click toggles the taskbar widget, right-click opens the context menu.
- Anchored widget to the bottom of the taskbar
- Added embedded app icon loading so tray fallback uses the app's own icon.
- Updated countdown timer logic to stop cases where 61m is shown
- Updated README.md
- Added a native system tray icon with a live usage badge for the current 5-hour window.
- Left-clicking the tray icon now toggles the taskbar widget on and off.
- Right-click tray menu support now mirrors the widget menu, including refresh, startup, position reset, language, updates, and exit.
- The app now remembers whether the taskbar widget was hidden or visible between launches.
- Improved Windows app identity by using the proper app name and embedded icon metadata in shell surfaces.
- Refined tray icon styling and usage-state colouring for clearer at-a-glance monitoring.
wsl.exe -l -q can hang indefinitely on some systems (e.g. WSL
installed but not fully configured), which blocks the poll thread
forever and prevents any usage data from loading.
Adds a run_with_timeout helper (5s deadline) and uses it for both
list_wsl_distros and read_wsl_credentials. The refresh paths
already had timeouts — these two were missed.
- Added ability to drag widget to desired position
- Using C:\Users\CraigConstable\AppData\Roaming\ClaudeCodeUsageMonitor\settings.json to store position and update frequency
- Updated README.md
- Added new function to find the claude CLI
- Using `claude -p .` to force OAuth refresh as `claude auth status` did not work
- Fixed handling of 'Start with Windows'
- Widened text display to fit values like '80% . 44m' (thank you @wangsu)
- Removed custom OAuth token refresh logic that was inadvertently invalidating Claude Code's refresh token via token rotation
- Removed hardcoded OAuth constants (token URL, client ID, scopes) no longer needed
- Removed in-memory token cache (CachedTokens, TOKEN_CACHE) no longer needed
- Delegate token refresh to the Claude CLI (claude auth status) so it manages its own credentials and writes updated tokens to disk
- Re-read credentials file after CLI refresh to pick up the fresh access token
- Simplified Credentials struct by removing unused refresh_token field
- Seconds countdown below 61s - shows 1m at 61s, then 60, 59... 0 counting down each second, then now when reset time passes
- Fast polling at reset - when either timer shows now, polls the API every 5s to pick up fresh rate limit data
- Auto-restores normal polling - stops the 5s fast poll as soon as fresh data comes back with a new reset time