64 Commits

Author SHA1 Message Date
yure
dcaeb5e4fd refactor: rename Quiet Hours to Idle Hours across all locales
The feature is fundamentally about time periods when the user is not
actively using Claude Code — the reset clock is unaffected because no
conversation is started. "Idle Hours" conveys this intent more clearly
than "Quiet Hours" (which implies only notification silencing).

Translations:
  en: Idle Hours
  nl: Inactieve uren
  fr: Heures inactives
  de: Inaktive Stunden
  ja: アイドル時間
  ko: 유휴 시간
  es: Horas inactivas
  zh-TW: 閒置時段

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-09 22:21:43 +08:00
yure
a4203af8a6 feat: apply quiet hours and pacing indicator to Codex widget
Codex now has the same behavior as Claude Code during quiet hours:
- Usage bar frozen at last polled value before reset_at
- Pacing bar (green) continues growing time-based during quiet hours
- At reset_at: both bars go to 0% (window reset, no conversation started)
- After reset_at (still quiet): both bars stay at 0%

Also adds codex_session_pacing_pct / codex_weekly_pacing_pct fields
so the Codex pacing indicator updates correctly on every poll and
when the user toggles the pacing setting.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-09 21:46:41 +08:00
yure
7ee8e7d080 fix: resolve drag deadlock and stuck cursor in taskbar widget
Three related fixes:

1. Fix thread deadlock during drag (root cause of stuck cursor):
   WM_MOUSEMOVE held lock_state() mutex and called total_widget_width(),
   which also called lock_state(). Rust's std::sync::Mutex (SRWLOCK on
   Windows) is non-reentrant, causing the message thread to deadlock.
   Fixed by using total_widget_width_for() with active_models read from
   the already-held state.

2. Add WM_CAPTURECHANGED and WM_CANCELMODE handlers:
   Reset dragging state whenever mouse capture is transferred away for
   any reason, providing a safety net beyond WM_LBUTTONUP.

3. Add left_button_held() self-correction in WM_SETCURSOR and WM_MOUSEMOVE:
   If dragging=true but the left button is not physically held, cancel
   the drag immediately rather than waiting for a message that may never arrive.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-09 21:39:21 +08:00
yure
e361b38cc5 merge: sync with upstream v1.4.0 (v1.3.6-v1.3.9 + Codex)
Merged upstream changes:
- v1.3.6-v1.3.9: token expiry notifications, Dutch localization, UI improvements
- v1.4.0: Codex model support via model menu

Resolved conflicts by preserving both:
- Our features: quiet hours, pacing indicator, Traditional Chinese localization
- Upstream features: Codex model support, Dutch localization, new UI fields

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-09 20:52:12 +08:00
Craig Constable
4676f6f72e feat: Codex usage now available through the model menu
- Option to have both or a single model visible

- Tray icon for each visible model

- Coloured text in duel mode to assist in identifying which model
v1.4.0
2026-05-09 08:06:27 +10:00
Craig Constable
d54588bf6e v1.3.9
feat: check for other credential sources on permanent credential failure.
v1.3.9
2026-05-05 18:46:57 +10:00
Craig Constable
f2b378462d v1.3.8
fix: stop focus steal by ignoring tray location events from our own icon updates
v1.3.8
2026-05-05 09:38:36 +10:00
Craig Constable
ae9be6704a v1.3.7
feat: add Dutch localisation
v1.3.7
2026-05-04 16:39:11 +10:00
Craig Constable
63806d5421 v1.3.6
feat: enable proxy env support for ureq requests
v1.3.6
2026-05-01 10:42:07 +10:00
yure
6e068b27d0 merge: sync with upstream v1.3.5 2026-04-23 22:56:45 +08:00
yure
1dc1d9db8e feat: hide pacing indicator during quiet hours
Green pacing zone is now suppressed in both render paths when quiet
hours are active, consistent with the quiet-hours design intent of
pausing all live activity indicators.
2026-04-20 16:32:17 +08:00
yure
85dc12eb52 feat: add pacing indicator to progress bars
Shows a green zone between actual usage and expected usage based on
elapsed time within the 5h/7d rolling windows. Updated at each poll
interval so the indicator grows in discrete steps matching the chosen
update frequency. Toggle via Settings > Show Pacing Indicator.

Also add Win32_System_SystemInformation feature (required for GetLocalTime)
and TIMER_QUIET_BOUNDARY constant to native_interop.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 14:48:34 +08:00
yure
3f2d88aa29 refactor: translate Traditional Chinese comments to English
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 13:47:23 +08:00
yure
cae0950301 merge: sync with upstream v1.3.4, resolve conflicts
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 13:40:06 +08:00
Craig Constable
35f945daa9 v1.3.5
fix: align usage percentage and tray icon numbers
v1.3.5
2026-04-20 09:18:01 +10:00
Craig Constable
17c63517ca v1.3.4
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
2026-04-19 15:36:20 +10:00
Craig Constable
b5ae662084 Merge pull request #15 from itskolbyk/fix/token-expired-notification 2026-04-19 13:55:46 +10:00
Craig Constable
3bc9be442e v1.3.3
feat: add Traditional Chinese localisation

- Thanks to @owovouo for the translation work in PR #13
2026-04-19 13:46:08 +10:00
Craig Constable
b0fcd92af4 v1.3.2
fix: resolve taskbar positioning deadlock

- Thanks to @owovouo and @aa333 for surfacing and working on this in PR #13 and PR #14
2026-04-19 12:58:50 +10:00
Kolby Kallweit
1d5c46fd99 fix: show balloon notification when OAuth token is fully expired 2026-04-18 11:41:56 -05:00
owovouo
873f161c38
fix: resolve position_at_taskbar deadlock
Fix non-reentrant mutex deadlock where MoveWindow dispatches WM_PAINT
synchronously, causing wnd_proc to re-enter lock_state() on the same thread.

Credit: aa333 (PR #14)
2026-04-17 12:06:43 +08:00
owovouo
e7cb253dea
feat: add quiet hours time input dialog (HH:MM)
Replace preset quiet hours selection with a custom HH:MM input dialog,
allowing users to set any start/end time for quiet hours.
2026-04-17 11:55:22 +08:00
owovouo
18978f8ac5
Add files via upload 2026-04-15 12:09:43 +08:00
owovouo
494484acf9
Add files via upload 2026-04-15 12:09:06 +08:00
Craig Constable
a407f69453 v1.3.1
- Add Korean localization

- Localize 'Show Widget' label

- Thanks to @u-naro for the contribution in PR #9
v1.3.1
2026-04-07 16:36:52 +10:00
Craig Constable
b4801ff434 Merge pull request #9 from u-naro/feat/korean-localization 2026-04-07 16:26:59 +10:00
u_naro
a37d9632c2 feat: localize "Show Widget" and session/weekly window labels
- 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>
2026-04-07 12:55:05 +09:00
u_naro
830f6f4c9b feat: add Korean (한국어) localization
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>
2026-04-07 12:46:56 +09:00
Craig Constable
643cc0a8b6 v1.3.0
- 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
v1.3.0
2026-03-31 09:30:35 +10:00
Craig
1d8ec6cad0
Merge pull request #6 from usamaiqb/feature/tray-icon
- 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.
2026-03-31 08:18:01 +10:00
Craig Constable
d52bfea21b Merge main into pr-6 2026-03-31 08:02:34 +10:00
Craig Constable
77bd36d3e0 Prepare 1.2.11 changes on pr-6 2026-03-31 08:00:25 +10:00
Craig Constable
ba84737ffb v1.2.10
- Anchor monitor to the bottom of the taskbar to help with any positioning issues
2026-03-30 12:46:14 +10:00
usamaiqb
40d3d1f7e1 misc 2026-03-28 12:46:02 +05:00
usamaiqb
451c205de4 update readme 2026-03-28 12:42:13 +05:00
usamaiqb
5587905329 source code 2026-03-27 17:19:33 +05:00
Craig Constable
7ef75f4c0b v1.2.9
- Improved vertical placement
v1.2.9
2026-03-27 22:01:49 +10:00
Craig Constable
65cf2b5d16 v1.2.8
- Fixed update process for portable vs WinGet installs
v1.2.8
2026-03-26 09:35:15 +10:00
Craig Constable
9c8f73cf69 v1.2.7
- Updated readme for WinGet support
2026-03-26 09:04:22 +10:00
Craig Constable
f527e82928 v1.2.6
- Added --diagnose parameter for troubleshooting startup issues
v1.2.6
2026-03-25 13:22:30 +10:00
Craig Constable
110ae4ac58 v1.2.5
- Added update dialog after manual check for updates when an update is found
2026-03-23 19:52:33 +10:00
Craig
81a26eaf61
v1.2.4
Merge pull request #4 from jacobdwyer16/fix/wsl-timeout
- Added timeout to WSL credential lookups
v1.2.4
2026-03-21 08:39:32 +10:00
Jacob Dwyer
e517eb948b add timeout to WSL credential lookups
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.
2026-03-20 08:17:23 -05:00
Craig Constable
5e039fa7dc v1.2.3
- Updated README.md
2026-03-19 16:25:22 +10:00
Craig Constable
6d03532d50 v1.2.2
- Split localization into seperate files for easy management and contributions
2026-03-19 11:57:34 +10:00
Craig Constable
e28bc51ab1 v1.2.1
- Added WinGet support
2026-03-18 19:30:41 +10:00
Craig Constable
832e70fd72 v1.2.0
- Added check for updates and ability to self-update
v1.2.0
2026-03-18 14:53:30 +10:00
Craig Constable
d6ea143f05 v1.1.0
- Added Windows-aware UI localisation with language override
v1.1.0
2026-03-18 11:15:07 +10:00
Craig Constable
ec4177f7f6 v1.0.15
- Added support for WSL2
v1.0.15
2026-03-15 21:57:43 +10:00
Craig Constable
7960ae9218 v1.0.14
- Added metadata to help improve trust

- Updated file version handling to keep version information synced
v1.0.14
2026-03-15 09:56:53 +10:00