usage-cli 0.29.32__tar.gz → 0.30.23__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. {usage_cli-0.29.32/usage_cli.egg-info → usage_cli-0.30.23}/PKG-INFO +34 -25
  2. {usage_cli-0.29.32 → usage_cli-0.30.23}/README.md +33 -24
  3. {usage_cli-0.29.32 → usage_cli-0.30.23}/adapters/agy.py +2 -2
  4. usage_cli-0.30.23/adapters/claude.py +290 -0
  5. {usage_cli-0.29.32 → usage_cli-0.30.23}/adapters/codex.py +5 -3
  6. usage_cli-0.30.23/adapters/grok.py +47 -0
  7. usage_cli-0.30.23/adapters/muse.py +43 -0
  8. {usage_cli-0.29.32 → usage_cli-0.30.23}/adapters/registry.py +2 -2
  9. {usage_cli-0.29.32 → usage_cli-0.30.23}/adapters/types.py +6 -1
  10. {usage_cli-0.29.32 → usage_cli-0.30.23}/analyzer/diagnoser.py +16 -24
  11. {usage_cli-0.29.32 → usage_cli-0.30.23}/analyzer/insights.py +2 -4
  12. usage_cli-0.30.23/analyzer/persona_loader.py +452 -0
  13. {usage_cli-0.29.32 → usage_cli-0.30.23}/analyzer/reporter.py +337 -62
  14. {usage_cli-0.29.32 → usage_cli-0.30.23}/analyzer/subscription.py +9 -3
  15. usage_cli-0.30.23/analyzer/usage_snapshot.py +686 -0
  16. {usage_cli-0.29.32 → usage_cli-0.30.23}/doctor.py +87 -23
  17. {usage_cli-0.29.32 → usage_cli-0.30.23}/fsevents_watch.py +1 -1
  18. {usage_cli-0.29.32 → usage_cli-0.30.23}/i18n.json +330 -690
  19. {usage_cli-0.29.32 → usage_cli-0.30.23}/i18n.py +1 -1
  20. {usage_cli-0.29.32 → usage_cli-0.30.23/installer}/login_item.py +27 -5
  21. {usage_cli-0.29.32 → usage_cli-0.30.23/installer}/session_hooks.py +133 -65
  22. {usage_cli-0.29.32 → usage_cli-0.30.23/installer}/setup_hook.py +429 -58
  23. {usage_cli-0.29.32 → usage_cli-0.30.23/installer}/statusline_settings.py +33 -13
  24. usage_cli-0.30.23/loaders/__init__.py +0 -0
  25. {usage_cli-0.29.32 → usage_cli-0.30.23/loaders}/agy_disk_cache.py +5 -3
  26. {usage_cli-0.29.32 → usage_cli-0.30.23/loaders}/agy_loader.py +40 -14
  27. {usage_cli-0.29.32 → usage_cli-0.30.23/loaders}/agy_quota_probe.py +5 -5
  28. usage_cli-0.30.23/loaders/claude_paths.py +66 -0
  29. {usage_cli-0.29.32 → usage_cli-0.30.23/loaders}/codex_disk_cache.py +14 -7
  30. {usage_cli-0.29.32 → usage_cli-0.30.23/loaders}/codex_fork_replay.py +1 -1
  31. {usage_cli-0.29.32 → usage_cli-0.30.23/loaders}/codex_loader.py +82 -65
  32. {usage_cli-0.29.32 → usage_cli-0.30.23/loaders}/disk_cache_common.py +9 -5
  33. {usage_cli-0.29.32 → usage_cli-0.30.23/loaders}/disk_cache_lifecycle.py +3 -2
  34. usage_cli-0.30.23/loaders/grok_loader.py +442 -0
  35. usage_cli-0.30.23/loaders/grok_quota_probe.py +137 -0
  36. {usage_cli-0.29.32 → usage_cli-0.30.23/loaders}/history_disk_cache.py +53 -21
  37. {usage_cli-0.29.32 → usage_cli-0.30.23/loaders}/history_loader.py +136 -49
  38. {usage_cli-0.29.32 → usage_cli-0.30.23/loaders}/jsonl_utils.py +1 -1
  39. usage_cli-0.30.23/loaders/muse_loader.py +169 -0
  40. {usage_cli-0.29.32 → usage_cli-0.30.23}/main.py +16 -19
  41. usage_cli-0.30.23/menubar/__init__.py +0 -0
  42. usage_cli-0.29.32/menubar_actions.py → usage_cli-0.30.23/menubar/actions.py +8 -10
  43. usage_cli-0.30.23/menubar/agy.py +308 -0
  44. usage_cli-0.29.32/menubar.py → usage_cli-0.30.23/menubar/app.py +146 -256
  45. usage_cli-0.29.32/menubar_chrome.py → usage_cli-0.30.23/menubar/chrome.py +25 -33
  46. usage_cli-0.30.23/menubar/grok.py +127 -0
  47. usage_cli-0.29.32/menubar_menu.py → usage_cli-0.30.23/menubar/menu.py +51 -33
  48. usage_cli-0.29.32/menubar_notify.py → usage_cli-0.30.23/menubar/notify.py +9 -2
  49. usage_cli-0.29.32/menubar_popover.py → usage_cli-0.30.23/menubar/popover.py +55 -6
  50. usage_cli-0.29.32/menubar_prefs.py → usage_cli-0.30.23/menubar/prefs.py +27 -1
  51. usage_cli-0.29.32/menubar_refresh.py → usage_cli-0.30.23/menubar/refresh.py +34 -51
  52. usage_cli-0.29.32/menubar_state.py → usage_cli-0.30.23/menubar/state.py +135 -107
  53. usage_cli-0.29.32/menubar_title.py → usage_cli-0.30.23/menubar/title.py +46 -63
  54. usage_cli-0.29.32/menubar_update.py → usage_cli-0.30.23/menubar/update.py +7 -5
  55. {usage_cli-0.29.32 → usage_cli-0.30.23}/panels/__init__.py +38 -21
  56. {usage_cli-0.29.32 → usage_cli-0.30.23}/panels/base.py +2 -1
  57. {usage_cli-0.29.32 → usage_cli-0.30.23}/panels/dynamic_height.py +63 -5
  58. usage_cli-0.30.23/panels/panel_scale.py +57 -0
  59. {usage_cli-0.29.32 → usage_cli-0.30.23/panels}/panel_window.py +1 -3
  60. {usage_cli-0.29.32 → usage_cli-0.30.23/panels}/panel_window_state.py +6 -5
  61. {usage_cli-0.29.32 → usage_cli-0.30.23}/panels/payload.py +7 -2
  62. {usage_cli-0.29.32 → usage_cli-0.30.23}/panels/web_panel.py +25 -59
  63. {usage_cli-0.29.32 → usage_cli-0.30.23}/pricing.py +136 -7
  64. {usage_cli-0.29.32 → usage_cli-0.30.23}/project_resolver.py +11 -3
  65. {usage_cli-0.29.32 → usage_cli-0.30.23}/pyproject.toml +8 -65
  66. usage_cli-0.30.23/quota/__init__.py +0 -0
  67. {usage_cli-0.29.32 → usage_cli-0.30.23/quota}/agy_window_keeper.py +6 -8
  68. {usage_cli-0.29.32 → usage_cli-0.30.23/quota}/burn_rate.py +39 -0
  69. usage_cli-0.30.23/quota/codex_window_keeper.py +271 -0
  70. {usage_cli-0.29.32 → usage_cli-0.30.23/quota}/usage_rate.py +2 -6
  71. {usage_cli-0.29.32 → usage_cli-0.30.23/quota}/window_keeper.py +4 -4
  72. {usage_cli-0.29.32 → usage_cli-0.30.23}/service_status.py +9 -8
  73. {usage_cli-0.29.32 → usage_cli-0.30.23}/setup_app.py +19 -38
  74. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_adapters_claude.py +81 -3
  75. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_adapters_codex.py +3 -7
  76. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_agy_adapter.py +6 -2
  77. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_agy_disk_cache.py +6 -7
  78. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_agy_loader.py +77 -2
  79. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_agy_quota_probe.py +16 -25
  80. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_agy_window_keeper.py +10 -22
  81. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_analyzer_pipeline.py +254 -21
  82. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_burn_rate.py +91 -11
  83. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_cache_quarantine.py +5 -9
  84. usage_cli-0.30.23/tests/test_claude_paths.py +276 -0
  85. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_codex_consistency.py +3 -7
  86. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_codex_loader.py +66 -38
  87. usage_cli-0.30.23/tests/test_codex_window_keeper.py +643 -0
  88. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_diagnoser.py +1 -1
  89. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_disk_cache_shards.py +143 -20
  90. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_doctor.py +137 -16
  91. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_dynamic_height.py +23 -11
  92. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_fsevents_watch.py +1 -3
  93. usage_cli-0.30.23/tests/test_grok_loader.py +793 -0
  94. usage_cli-0.30.23/tests/test_grok_quota_probe.py +126 -0
  95. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_history_loader.py +188 -60
  96. usage_cli-0.30.23/tests/test_hook_scripts_are_standalone.py +42 -0
  97. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_html_report_snapshot.py +467 -45
  98. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_insights.py +6 -17
  99. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_jsonl_utils.py +7 -7
  100. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_login_item.py +90 -26
  101. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_main.py +84 -11
  102. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_menubar.py +587 -206
  103. usage_cli-0.30.23/tests/test_menubar_agy.py +480 -0
  104. usage_cli-0.30.23/tests/test_menubar_grok.py +94 -0
  105. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_menubar_prefs.py +21 -3
  106. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_menubar_state.py +90 -44
  107. usage_cli-0.30.23/tests/test_muse_loader.py +179 -0
  108. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_packaged_resources.py +1 -3
  109. usage_cli-0.30.23/tests/test_panel_scale.py +90 -0
  110. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_panel_window_state.py +13 -7
  111. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_panels.py +29 -24
  112. usage_cli-0.30.23/tests/test_persona_loader.py +575 -0
  113. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_pricing.py +72 -1
  114. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_project_resolver.py +19 -2
  115. usage_cli-0.30.23/tests/test_report_daily_chart.py +102 -0
  116. usage_cli-0.30.23/tests/test_report_filter_js.py +813 -0
  117. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_reporter_build_data.py +401 -11
  118. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_service_status.py +2 -6
  119. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_session_resume.py +252 -2
  120. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_setup_hook.py +450 -19
  121. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_setup_hook_coexistence.py +1 -1
  122. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_setup_hook_resume.py +12 -1
  123. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_setup_hook_terse.py +202 -3
  124. usage_cli-0.30.23/tests/test_subprocess_utils.py +28 -0
  125. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_subscription.py +132 -72
  126. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_time_utils.py +1 -1
  127. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_tui.py +1 -1
  128. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_tui_sprite.py +1 -1
  129. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_update_checker.py +1 -1
  130. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_update_gate.py +17 -11
  131. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_update_release_notes.py +1 -1
  132. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_usage_cli.py +74 -22
  133. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_usage_client.py +51 -19
  134. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_usage_diagnosis_snapshot.py +1 -4
  135. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_usage_dir_sweeper.py +3 -3
  136. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_usage_lang.py +25 -4
  137. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_usage_logging.py +1 -1
  138. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_usage_notifications.py +76 -6
  139. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_usage_rate.py +2 -2
  140. usage_cli-0.30.23/tests/test_usage_snapshot.py +440 -0
  141. usage_cli-0.30.23/tests/test_usage_snapshot_replay.py +697 -0
  142. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_usage_statusline.py +278 -59
  143. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_usage_statusline_agy.py +53 -39
  144. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_usage_statusline_forwarder.py +4 -0
  145. usage_cli-0.30.23/tests/test_usage_statusline_grok.py +381 -0
  146. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_usage_terse_mode.py +86 -2
  147. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_usage_terse_reminder.py +86 -2
  148. usage_cli-0.30.23/tests/test_web_panel_payload.py +274 -0
  149. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_win_login_item.py +35 -1
  150. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_window_keeper.py +60 -45
  151. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_wintray.py +849 -97
  152. usage_cli-0.30.23/tui/__init__.py +0 -0
  153. usage_cli-0.29.32/tui.py → usage_cli-0.30.23/tui/app.py +5 -3
  154. usage_cli-0.30.23/ui/__init__.py +5 -0
  155. usage_cli-0.30.23/ui/html_report.py +1395 -0
  156. usage_cli-0.30.23/ui/report_charts.py +26 -0
  157. usage_cli-0.30.23/ui/report_daily_chart.py +434 -0
  158. usage_cli-0.30.23/ui/report_filter.py +1098 -0
  159. usage_cli-0.30.23/ui/report_scripts.py +296 -0
  160. usage_cli-0.30.23/ui/report_styles.py +636 -0
  161. {usage_cli-0.29.32 → usage_cli-0.30.23}/ui/tables.py +151 -52
  162. usage_cli-0.30.23/updates/__init__.py +0 -0
  163. usage_cli-0.29.32/update_gate.py → usage_cli-0.30.23/updates/gate.py +1 -1
  164. {usage_cli-0.29.32 → usage_cli-0.30.23/usage_cli.egg-info}/PKG-INFO +34 -25
  165. {usage_cli-0.29.32 → usage_cli-0.30.23}/usage_cli.egg-info/SOURCES.txt +88 -64
  166. usage_cli-0.30.23/usage_cli.egg-info/top_level.txt +32 -0
  167. {usage_cli-0.29.32 → usage_cli-0.30.23}/usage_cli.py +145 -46
  168. {usage_cli-0.29.32 → usage_cli-0.30.23}/usage_client.py +34 -16
  169. usage_cli-0.30.23/usage_common/__init__.py +0 -0
  170. usage_cli-0.30.23/usage_common/subprocess_utils.py +21 -0
  171. {usage_cli-0.29.32 → usage_cli-0.30.23/usage_common}/usage_lang.py +6 -6
  172. {usage_cli-0.29.32 → usage_cli-0.30.23}/usage_diagnosis_snapshot.py +1 -1
  173. {usage_cli-0.29.32 → usage_cli-0.30.23}/usage_notifications.py +17 -8
  174. {usage_cli-0.29.32 → usage_cli-0.30.23}/usage_session_resume.py +62 -38
  175. {usage_cli-0.29.32 → usage_cli-0.30.23}/usage_statusline.py +79 -17
  176. {usage_cli-0.29.32 → usage_cli-0.30.23}/usage_statusline_agy.py +17 -5
  177. {usage_cli-0.29.32 → usage_cli-0.30.23}/usage_statusline_forwarder.py +13 -2
  178. usage_cli-0.30.23/usage_statusline_grok.py +428 -0
  179. usage_cli-0.30.23/usage_terse_mode.py +271 -0
  180. {usage_cli-0.29.32 → usage_cli-0.30.23}/usage_terse_reminder.py +43 -26
  181. usage_cli-0.30.23/wintray/__init__.py +0 -0
  182. usage_cli-0.29.32/wintray.py → usage_cli-0.30.23/wintray/app.py +310 -97
  183. usage_cli-0.29.32/win_login_item.py → usage_cli-0.30.23/wintray/login_item.py +4 -2
  184. usage_cli-0.29.32/wintray_menu.py → usage_cli-0.30.23/wintray/menu.py +8 -0
  185. usage_cli-0.29.32/windows_watch.py → usage_cli-0.30.23/wintray/watch.py +5 -7
  186. usage_cli-0.29.32/adapters/claude.py +0 -215
  187. usage_cli-0.29.32/analyzer/persona_loader.py +0 -199
  188. usage_cli-0.29.32/critter_frames.py +0 -26
  189. usage_cli-0.29.32/discussion_bridge.py +0 -1196
  190. usage_cli-0.29.32/discussion_cli.py +0 -844
  191. usage_cli-0.29.32/discussion_session.py +0 -622
  192. usage_cli-0.29.32/discussion_usage.py +0 -13
  193. usage_cli-0.29.32/discussion_window.py +0 -955
  194. usage_cli-0.29.32/menubar_agy.py +0 -193
  195. usage_cli-0.29.32/talent_market_bridge.py +0 -243
  196. usage_cli-0.29.32/tests/test_critter_frames.py +0 -30
  197. usage_cli-0.29.32/tests/test_discussion_bridge.py +0 -1671
  198. usage_cli-0.29.32/tests/test_discussion_cli.py +0 -903
  199. usage_cli-0.29.32/tests/test_discussion_session.py +0 -754
  200. usage_cli-0.29.32/tests/test_discussion_window.py +0 -1354
  201. usage_cli-0.29.32/tests/test_menubar_agy.py +0 -206
  202. usage_cli-0.29.32/tests/test_persona_loader.py +0 -304
  203. usage_cli-0.29.32/tests/test_talent_market_bridge.py +0 -118
  204. usage_cli-0.29.32/tests/test_web_panel_payload.py +0 -156
  205. usage_cli-0.29.32/ui/html_report.py +0 -923
  206. usage_cli-0.29.32/ui/report_scripts.py +0 -251
  207. usage_cli-0.29.32/ui/report_styles.py +0 -370
  208. usage_cli-0.29.32/usage_cli.egg-info/top_level.txt +0 -80
  209. usage_cli-0.29.32/usage_terse_mode.py +0 -223
  210. {usage_cli-0.29.32 → usage_cli-0.30.23}/LICENSE +0 -0
  211. {usage_cli-0.29.32 → usage_cli-0.30.23}/adapters/__init__.py +0 -0
  212. {usage_cli-0.29.32 → usage_cli-0.30.23}/adapters/rate_limits.py +0 -0
  213. {usage_cli-0.29.32 → usage_cli-0.30.23}/analyzer/__init__.py +0 -0
  214. {usage_cli-0.29.32 → usage_cli-0.30.23}/analyzer/aggregator.py +0 -0
  215. {usage_cli-0.29.32 → usage_cli-0.30.23}/analyzer/blocks.py +0 -0
  216. {usage_cli-0.29.32/ui → usage_cli-0.30.23/installer}/__init__.py +0 -0
  217. {usage_cli-0.29.32 → usage_cli-0.30.23/loaders}/cache_quarantine.py +0 -0
  218. {usage_cli-0.29.32 → usage_cli-0.30.23/loaders}/codex_events.py +0 -0
  219. {usage_cli-0.29.32 → usage_cli-0.30.23/loaders}/codex_paths.py +0 -0
  220. {usage_cli-0.29.32 → usage_cli-0.30.23/loaders}/jsonl_limits.py +0 -0
  221. {usage_cli-0.29.32 → usage_cli-0.30.23}/panels/window_drag.py +0 -0
  222. {usage_cli-0.29.32 → usage_cli-0.30.23}/prefs.py +0 -0
  223. {usage_cli-0.29.32 → usage_cli-0.30.23}/setup.cfg +0 -0
  224. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_adapters_rate_limits.py +0 -0
  225. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_aggregator.py +0 -0
  226. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_analyzer_blocks.py +0 -0
  227. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_i18n_format_fallback.py +0 -0
  228. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_i18n_key_parity.py +0 -0
  229. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_i18n_packaged_path.py +0 -0
  230. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_packaging.py +0 -0
  231. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_panels_lazy_import.py +0 -0
  232. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_setup_app.py +0 -0
  233. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_ui_tables.py +0 -0
  234. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_wheel_packaging.py +0 -0
  235. {usage_cli-0.29.32 → usage_cli-0.30.23}/tests/test_windows_manifest.py +0 -0
  236. /usage_cli-0.29.32/tui_sprite.py → /usage_cli-0.30.23/tui/sprite.py +0 -0
  237. /usage_cli-0.29.32/update_checker.py → /usage_cli-0.30.23/updates/checker.py +0 -0
  238. /usage_cli-0.29.32/update_release_notes.py → /usage_cli-0.30.23/updates/release_notes.py +0 -0
  239. {usage_cli-0.29.32 → usage_cli-0.30.23}/usage_cli.egg-info/dependency_links.txt +0 -0
  240. {usage_cli-0.29.32 → usage_cli-0.30.23}/usage_cli.egg-info/entry_points.txt +0 -0
  241. {usage_cli-0.29.32 → usage_cli-0.30.23}/usage_cli.egg-info/requires.txt +0 -0
  242. {usage_cli-0.29.32 → usage_cli-0.30.23/usage_common}/time_utils.py +0 -0
  243. {usage_cli-0.29.32 → usage_cli-0.30.23/usage_common}/usage_dir_sweeper.py +0 -0
  244. {usage_cli-0.29.32 → usage_cli-0.30.23/usage_common}/usage_logging.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: usage-cli
3
- Version: 0.29.32
3
+ Version: 0.30.23
4
4
  Summary: usage — 在 macOS menu bar 與 Windows 系統匣顯示 Claude Code、Codex、Antigravity 用量的小工具(也提供終端機 TUI)
5
5
  License-Expression: AGPL-3.0-only
6
6
  Requires-Python: >=3.13
@@ -24,22 +24,23 @@ Dynamic: license-file
24
24
 
25
25
  # usage
26
26
 
27
- ### Quota visibility for Claude Code, Codex, and Antigravity, built into the macOS menu bar and Windows system tray.
27
+ ### Quota visibility for Claude Code, Codex, Antigravity, and Grok CLI, built into the macOS menu bar and Windows system tray.
28
28
 
29
29
  Running out of quota mid-session is expensive — especially during a long refactor or debugging run that depends on Claude Code. `usage` surfaces 5-hour and weekly limits *before* you hit the wall, and keeps them visible the whole time. There's no command to run and no page to open; the answer is just there, where you already look.
30
30
 
31
- [繁體中文](README.zh-TW.md) · [简体中文](README.zh-CN.md) · English · [日本語](README.ja.md) · [한국어](README.ko.md)  |  [Discussions](https://github.com/aqua5230/usage/discussions)  |  [Landing page](https://aqua5230.github.io/usage/)
31
+ [繁體中文](docs/README.zh-TW.md) · [简体中文](docs/README.zh-CN.md) · English · [日本語](docs/README.ja.md) · [한국어](docs/README.ko.md)  |  [Discussions](https://github.com/aqua5230/usage/discussions)  |  [Landing page](https://aqua5230.github.io/usage/)
32
32
 
33
33
  [![GitHub stars](https://img.shields.io/github/stars/aqua5230/usage?style=flat)](https://github.com/aqua5230/usage/stargazers)
34
34
  [![CI](https://github.com/aqua5230/usage/actions/workflows/check.yml/badge.svg)](https://github.com/aqua5230/usage/actions/workflows/check.yml)
35
35
  [![Latest Release](https://img.shields.io/github/v/release/aqua5230/usage)](https://github.com/aqua5230/usage/releases/latest)
36
+ [![PyPI](https://img.shields.io/pypi/v/usage-cli)](https://pypi.org/project/usage-cli/)
36
37
  [![Python](https://img.shields.io/badge/python-3.13-blue.svg)](https://www.python.org/)
37
38
  [![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Windows-lightgrey.svg)](https://github.com/aqua5230/usage/releases/latest)
38
39
  [![License: AGPL-3.0](https://img.shields.io/badge/license-AGPL--3.0-blue.svg)](LICENSE)
39
40
  [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/13538/badge)](https://www.bestpractices.dev/projects/13538)
40
41
 
41
42
  <p align="center">
42
- <img src="docs/showcase.en.png" alt="usage — Claude Code, Codex, and Antigravity quota pinned to the macOS menu bar" width="820">
43
+ <img src="docs/showcase-v3.en.png" alt="usage — Claude Code, Codex, and Antigravity quota pinned to the macOS menu bar" width="820">
43
44
  </p>
44
45
 
45
46
  Claude Code and Codex numbers are read passively from log files already on your machine, so **watching your quota never calls Anthropic or OpenAI's LLM APIs** and never costs you a token. Antigravity is the one exception: its quota comes from Google's official quota endpoint using the sign-in the Antigravity CLI already stores locally — a metadata call that doesn't consume your model quota either.
@@ -50,7 +51,9 @@ Claude Code and Codex numbers are read passively from log files already on your
50
51
  brew install --cask aqua5230/usage/usage
51
52
  ```
52
53
 
53
- It lands in your Applications folder automatically. Right-click **Open** once to pass Gatekeeper, then click the menu bar icon. Prefer a direct download or want the full setup flow? See [Install](#install) below.
54
+ **Not on macOS?** `uvx usage-cli` runs the terminal interface anywhere, Linux included — no install, no menu bar.
55
+
56
+ It lands in your Applications folder automatically. Open it once; if macOS 15 or later blocks it, go to System Settings → Privacy & Security, scroll down, and click **Open Anyway**. On macOS 14 or earlier, right-click **Open** once to pass Gatekeeper. Then click the menu bar icon. Prefer a direct download or want the full setup flow? See [Install](#install) below.
54
57
 
55
58
  **Jump to:** [What You Get](#what-you-get) · [Privacy](#privacy--data-sources) · [Requirements](#requirements) · [Install](#install) · [Status Line](#first-launch-set-up-the-status-line) · [Windows](#windows-support) · [Themes](#theme-gallery) · [Troubleshooting](#troubleshooting) · [Comparison](#comparison) · [Not a Fit?](#when-usage-isnt-the-right-fit) · [Development](#development)
56
59
 
@@ -59,22 +62,23 @@ It lands in your Applications folder automatically. Right-click **Open** once to
59
62
  ### Live Visibility
60
63
 
61
64
  - **Always-on Monitor:** Your quota lives in the menu bar, color-coded from green to red. Click when you want the full session, weekly, and per-project breakdown.
62
- - **Antigravity Support:** Antigravity (Gemini) session and weekly quota show up as a third card in every theme except World Cup 2026, which stays a two-team HUD. Numbers come straight from the official quota API, using the sign-in the Antigravity CLI already keeps on your machine — refreshed every few minutes, with live reset countdowns.
65
+ - **Antigravity Support:** Antigravity (Gemini) session and weekly quota show up as a third card in every theme except World Cup 2026, which stays a two-team HUD. Numbers come straight from the official quota API, using the sign-in the Antigravity CLI already keeps on your machine — refreshed every few minutes, with live reset countdowns. Antigravity keeps two separate quota pools: the card shows Gemini by default, and tapping the `Gemini ⇄` tag next to the title switches it to Claude / GPT — the choice is remembered.
66
+ - **Grok CLI Support:** A fourth card reads Grok CLI's weekly credit percentage straight from its own local debug log — no network call. Grok CLI doesn't expose session or burn-rate data, so the card shows a single weekly bar; its per-request token usage still counts toward today's cost and project totals like Claude Code and Codex.
67
+ - **Muse Code Spending:** Muse Code's per-request tokens and cost count toward today's cost, project totals, the HTML report, and the `usage` CLI, read from its own local session logs. Muse keeps no local quota data, so there is no Muse quota card.
63
68
  - **Service Status Alerts:** An orange-red banner appears when Claude Code, Claude API, or Codex API has an outage or degraded performance, read from their public Statuspage.io pages — never an LLM usage API. Antigravity isn't covered; it has no public status page.
64
- - **Context Nudges & Notifications:** When your context window hits 70%, the status line nudges you to `/clear` or `/compact` to prevent token waste. You can also opt-in to system notifications for quota limits and recoveries.
65
- - **Hide Sections:** Only use one or two of the tools? Hide the Claude Code, Codex, or Antigravity section from the menu bar and panels completely with a single click.
69
+ - **Context Nudges & Notifications:** When your context window hits 70% — or earlier when it is filling fast — the status line nudges you to `/clear` or `/compact` to prevent token waste. You can also opt-in to system notifications for quota limits and recoveries.
70
+ - **Prompt Cache Health:** The status line shows Claude Code's prompt cache hit rate with a countdown to expiry, so you can tell at a glance whether finishing now still reuses the cached context or lets it go cold and re-sends everything. Needs Claude Code 2.1.251 or newer; on older versions the segment simply doesn't appear.
71
+ - **Hide Sections:** Only use one or two of the tools? Hide the Claude Code, Codex, Grok CLI, or Antigravity section from the menu bar and panels completely with a single click.
66
72
 
67
73
  ### Workflow Helpers
68
74
 
69
75
  - **Progress Concierge:** Open a new Claude Code session and `usage` hands your last progress straight to the AI, including your last request, uncommitted changes, and unfinished todos. No `/resume`, no recap. Fully local, off by default.
70
- - **Token Saver:** A menu-bar toggle asks Claude Code and Codex to answer more tersely, saving output tokens while keeping code and error messages byte-exact. A light reminder keeps long conversations from drifting back to verbose — in an A/B test on real sessions, late replies stayed ~40% shorter instead of drifting 84% longer.
76
+ - **Token Saver:** A menu-bar toggle asks Claude Code and Codex to answer more tersely and in plainer language, saving output tokens while keeping code and error messages byte-exact. A light reminder keeps long conversations from drifting back to verbose — in an A/B test on real sessions, late replies stayed ~40% shorter instead of drifting 84% longer.
71
77
  - **Terminal Integration:** `usage status --json` hands your Claude Code and Codex quota to any tool that can run a command — Starship, tmux, or your own scripts. Reads the same local files as the menu bar, no network call. [Ready-made snippets](docs/DEVELOPMENT.md#quota-status-for-other-tools-usage-status).
72
78
  - **Token-waste Health Check:** A daily background diagnosis scans your logs for waste, including repeated file reads, polluter directories, and noisy Bash output. If it finds issues, a one-line heads-up appears; say "show me" and the AI walks you through fixes.
73
79
 
74
80
  ### AI Teamwork
75
81
 
76
- - **AI Talent Market:** Bring a ready-made AI team into Claude Code. Browse and install curated subagent personas into `~/.claude/agents/` instantly. Runs fully locally via the bundled CLI.
77
- - **AI Council:** Open a dedicated window and run a multi-round discussion between Claude Code, Codex, and Antigravity — pick participants, models, and a debate style, with a token estimate up front. Steer it between rounds, see who dissents in the consensus tally, and let it stop early once everyone agrees. Seats can wear AI Talent Market personas and reference real files via an optional read-only folder.
78
82
  - **AI Update Daily:** Opens a daily-updated public [page](https://aqua5230.github.io/ai-updates/) covering Claude Code, Codex, and Antigravity, with the full history kept. Reviewed items get a plain-language summary in all five UI languages; unreviewed ones show the original source text.
79
83
 
80
84
  ### Reporting & Insight
@@ -83,10 +87,9 @@ It lands in your Applications folder automatically. Right-click **Open** once to
83
87
 
84
88
  ### Experience & Customization
85
89
 
86
- - **13 Visual Themes:** Switch between panel styles including Classic, Matrix, Windows 95, Newspaper, Cloud Observation, Midnight Aquarium, Prism Arcade, Black Hole, World Cup 2026, Lepidoptera (blueprint), Stained Glass, Origami, and Catppuccin (official palette, all four flavors).
90
+ - **14 Visual Themes:** Switch between panel styles including Default, Matrix, Windows 95, Vintage Newspaper, Cloud Observation, Midnight Aquarium, Prism Arcade, Black Hole, World Cup 2026, Lepidoptera, Migration, Stained Glass, Origami, and Catppuccin (official palette, all four flavors).
87
91
  - **Place the Panel Anywhere:** The panel is no longer pinned under the menu bar icon. Drag it from any empty spot to wherever you want it, and it reopens there next time. It stays put when another app takes focus — a second click on the menu bar icon, or Escape, closes it.
88
92
  - **Drag to Reorder:** Grab any quota card and drag it up or down to swap the order — the arrangement is shared across every theme with quota cards (all except World Cup 2026) and survives restarts.
89
- - **Spirit Companions:** A small animated white silhouette lives beside your usage percentages — a phoenix for Claude, a dragon for Codex, a lion for Antigravity. Each accelerates dynamically as its own tool's token burn rate climbs.
90
93
  - **Automatic Localization:** UI text is available in Traditional Chinese, Simplified Chinese, English, Japanese, and Korean, automatically matching your system settings.
91
94
 
92
95
  ## Privacy & Data Sources
@@ -111,13 +114,13 @@ Installing via Homebrew means a single `brew upgrade --cask usage` keeps it curr
111
114
  brew install --cask aqua5230/usage/usage
112
115
  ```
113
116
 
114
- *(First launch: right-click `usage.app` in Finder → **Open** to pass Gatekeeper).*
117
+ *(First launch: on macOS 15 or later, open System Settings → Privacy & Security, scroll down, and click **Open Anyway**. On macOS 14 or earlier, right-click `usage.app` in Finder → **Open** to pass Gatekeeper.)*
115
118
 
116
119
  ### 2. Download for macOS
117
120
 
118
121
  1. Download the latest `usage.app.zip` from the [GitHub Releases page](https://github.com/aqua5230/usage/releases/latest).
119
122
  2. Unzip it and drag `usage.app` into your Applications folder.
120
- 3. First launch: in Finder, right-click `usage.app` → **Open** → confirm Open.
123
+ 3. First launch: on macOS 15 or later, open System Settings → Privacy & Security, scroll down, and click **Open Anyway**. On macOS 14 or earlier, in Finder, right-click `usage.app` → **Open** → confirm Open.
121
124
 
122
125
  ### 3. uvx (zero install, any OS)
123
126
 
@@ -125,12 +128,14 @@ Run `uvx usage-cli` to open the terminal interface directly. uv automatically pr
125
128
 
126
129
  For a persistent command, run `uv tool install usage-cli`, then use `usage` (for example, `usage status --json`). This installation path provides the CLI only, not the menu bar app.
127
130
 
131
+ On Linux, `usage setup` installs the Claude Code status line as well, so quota shows up under your prompt the same way it does on macOS and Windows. CI verifies this on Ubuntu. The menu bar and system tray apps remain macOS- and Windows-only.
132
+
128
133
  ## First Launch: Set Up the Status Line
129
134
 
130
135
  If you've used Codex, `usage` picks up its history automatically. For Claude Code, click the **"Set Up Status Line"** button in the app popover to install the sync hook.
131
136
  Restart the relevant tool afterward (on macOS, fully Cmd+Q Claude Code and re-open it; on Windows, restart your terminal or start a new session).
132
137
 
133
- The same button also sets up a status line for the Antigravity CLI when it is installed on your machine, and does nothing at all when it isn't. Any status line you configured there yourself is backed up first and restored when you turn the switch off.
138
+ The same button also sets up a status line for the Antigravity CLI and for Grok CLI when they are installed on your machine, and does nothing at all when they aren't. Any status line you configured there yourself is backed up first and restored when you turn the switch off.
134
139
 
135
140
  Once set up, the bottom of the Claude Code window will show a status line like this:
136
141
 
@@ -140,11 +145,11 @@ Once set up, the bottom of the Claude Code window will show a status line like t
140
145
 
141
146
  ## Windows Support
142
147
 
143
- Windows has the full core experience: the system-tray UI, Claude Code status-line hook, and Codex history parsing all work natively. Download `usage-windows.zip` from the [latest GitHub Release](https://github.com/aqua5230/usage/releases/latest), unzip it, then run `usage.exe`—no installer is needed. The tray UI requires Microsoft Edge WebView2 Runtime, which is normally included with Windows 10 and 11.
148
+ Windows has the full core experience: the system-tray UI, Claude Code status-line hook, and Codex history parsing all work natively. Download `usage-windows.zip` from the [latest GitHub Release](https://github.com/aqua5230/usage/releases/latest), unzip it, then run `usage.exe`—no installer is needed. If SmartScreen shows **Windows protected your PC** on first launch, click **More info** → **Run anyway**. The tray UI requires Microsoft Edge WebView2 Runtime, which is normally included with Windows 10 and 11.
144
149
 
145
- The system-tray icon updates with your Claude quota percentage; its tooltip summarizes the Claude and Codex windows. Left-click opens the same 13 quota themes available on macOS (Classic plus the other twelve) in WebView2. Right-click provides Reset Panel Position and Quit; panel switching, refresh, launch at login, and update checks are in the panel menu.
150
+ The system-tray icon updates with your Claude quota percentage; its tooltip summarizes the Claude and Codex windows. Left-click opens the same 14 quota themes available on macOS (Default plus the other thirteen) in WebView2. Right-click provides Reset Panel Position and Quit; panel switching, refresh, launch at login, and update checks are in the panel menu.
146
151
 
147
- Windows differences: the panel opens at the bottom-right of the working area rather than next to the tray icon; update prompts use a system Yes/No dialog; and the AI Talent Market and AI Council panels are macOS-only.
152
+ Windows differences: the panel opens at the bottom-right of the working area rather than next to the tray icon; update prompts use a system Yes/No dialog.
148
153
 
149
154
  ### Code signing policy
150
155
 
@@ -159,7 +164,7 @@ Privacy policy: this program will not transfer any information to other networke
159
164
 
160
165
  ## Theme Gallery
161
166
 
162
- Switch between **13 visual themes** directly from the UI:
167
+ Switch between **14 visual themes** directly from the UI:
163
168
 
164
169
  <p align="center">
165
170
  <img src="docs/classic.en.png" width="32%" alt="Classic theme" />
@@ -169,9 +174,12 @@ Switch between **13 visual themes** directly from the UI:
169
174
  <img src="docs/cloud_observation.en.png" width="32%" alt="Cloud Observation theme" />
170
175
  <img src="docs/aquarium.en.png" width="32%" alt="Midnight Aquarium theme" />
171
176
  <img src="docs/prism_arcade.en.png" width="32%" alt="Prism Arcade theme" />
177
+ <img src="docs/stained_glass.en.png" width="32%" alt="Stained Glass theme" />
178
+ <img src="docs/origami.en.png" width="32%" alt="Origami theme" />
172
179
  <img src="docs/black_hole.en.png" width="32%" alt="Black Hole theme" />
173
- <img src="docs/world_cup.en.png" width="32%" alt="World Cup HUD theme" />
174
180
  <img src="docs/lepidoptera.en.png" width="32%" alt="Lepidoptera theme" />
181
+ <img src="docs/migration.en.png" width="32%" alt="Migration theme" />
182
+ <img src="docs/catppuccin.en.png" width="32%" alt="Catppuccin theme" />
175
183
  </p>
176
184
 
177
185
  ## Troubleshooting
@@ -187,7 +195,8 @@ If the menu bar shows `--`, it's usually not broken — there's just no local da
187
195
  | Codex section is empty | No Codex history found | Run a Codex conversation to generate logs |
188
196
  | Today's cost shows $0.00 | Model pricing missing | Delete `~/.usage/pricing_cache.json` or check `USAGE_DEBUG=1` |
189
197
  | Antigravity card is missing | Antigravity CLI not installed or not signed in | Install and sign in to the Antigravity CLI; the card appears automatically once a background quota fetch succeeds |
190
- | App won't open | macOS Gatekeeper blocked it | Right-click `usage.app` in Finder → Open |
198
+ | App won't open | macOS Gatekeeper blocked it | macOS 15 or later: System Settings → Privacy & Security → scroll down → Open Anyway. macOS 14 or earlier: right-click `usage.app` in Finder → Open |
199
+ | Windows shows "Windows protected your PC" | SmartScreen doesn't recognize the download yet | Click More info → Run anyway |
191
200
 
192
201
  ## Comparison
193
202
 
@@ -196,11 +205,11 @@ If the menu bar shows `--`, it's usually not broken — there's just no local da
196
205
  | Always on screen | ✅ | — | ✅ |
197
206
  | macOS menu bar & Windows system tray | ✅ | — | macOS only |
198
207
  | Claude Code & Codex usage | ✅ | Claude only | ✅ |
199
- | Antigravity (Gemini) usage | ✅ | — | — |
208
+ | Antigravity usage (Gemini and Claude / GPT) | ✅ | — | — |
209
+ | Grok CLI usage | ✅ | — | — |
210
+ | Muse Code token spend | ✅ | — | — |
200
211
  | Claude Code & Codex service-status alerts | ✅ | — | — |
201
212
  | HTML deep reports & UI | ✅ | ✅ | — |
202
- | AI Talent Market | macOS only | — | — |
203
- | AI Council | macOS only | — | — |
204
213
  | AI Update Daily | ✅ | — | — |
205
214
  | Progress Concierge & Token Saver | ✅ | — | — |
206
215
  | Token-waste Health Check | ✅ | — | — |
@@ -4,22 +4,23 @@
4
4
 
5
5
  # usage
6
6
 
7
- ### Quota visibility for Claude Code, Codex, and Antigravity, built into the macOS menu bar and Windows system tray.
7
+ ### Quota visibility for Claude Code, Codex, Antigravity, and Grok CLI, built into the macOS menu bar and Windows system tray.
8
8
 
9
9
  Running out of quota mid-session is expensive — especially during a long refactor or debugging run that depends on Claude Code. `usage` surfaces 5-hour and weekly limits *before* you hit the wall, and keeps them visible the whole time. There's no command to run and no page to open; the answer is just there, where you already look.
10
10
 
11
- [繁體中文](README.zh-TW.md) · [简体中文](README.zh-CN.md) · English · [日本語](README.ja.md) · [한국어](README.ko.md) &nbsp;|&nbsp; [Discussions](https://github.com/aqua5230/usage/discussions) &nbsp;|&nbsp; [Landing page](https://aqua5230.github.io/usage/)
11
+ [繁體中文](docs/README.zh-TW.md) · [简体中文](docs/README.zh-CN.md) · English · [日本語](docs/README.ja.md) · [한국어](docs/README.ko.md) &nbsp;|&nbsp; [Discussions](https://github.com/aqua5230/usage/discussions) &nbsp;|&nbsp; [Landing page](https://aqua5230.github.io/usage/)
12
12
 
13
13
  [![GitHub stars](https://img.shields.io/github/stars/aqua5230/usage?style=flat)](https://github.com/aqua5230/usage/stargazers)
14
14
  [![CI](https://github.com/aqua5230/usage/actions/workflows/check.yml/badge.svg)](https://github.com/aqua5230/usage/actions/workflows/check.yml)
15
15
  [![Latest Release](https://img.shields.io/github/v/release/aqua5230/usage)](https://github.com/aqua5230/usage/releases/latest)
16
+ [![PyPI](https://img.shields.io/pypi/v/usage-cli)](https://pypi.org/project/usage-cli/)
16
17
  [![Python](https://img.shields.io/badge/python-3.13-blue.svg)](https://www.python.org/)
17
18
  [![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Windows-lightgrey.svg)](https://github.com/aqua5230/usage/releases/latest)
18
19
  [![License: AGPL-3.0](https://img.shields.io/badge/license-AGPL--3.0-blue.svg)](LICENSE)
19
20
  [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/13538/badge)](https://www.bestpractices.dev/projects/13538)
20
21
 
21
22
  <p align="center">
22
- <img src="docs/showcase.en.png" alt="usage — Claude Code, Codex, and Antigravity quota pinned to the macOS menu bar" width="820">
23
+ <img src="docs/showcase-v3.en.png" alt="usage — Claude Code, Codex, and Antigravity quota pinned to the macOS menu bar" width="820">
23
24
  </p>
24
25
 
25
26
  Claude Code and Codex numbers are read passively from log files already on your machine, so **watching your quota never calls Anthropic or OpenAI's LLM APIs** and never costs you a token. Antigravity is the one exception: its quota comes from Google's official quota endpoint using the sign-in the Antigravity CLI already stores locally — a metadata call that doesn't consume your model quota either.
@@ -30,7 +31,9 @@ Claude Code and Codex numbers are read passively from log files already on your
30
31
  brew install --cask aqua5230/usage/usage
31
32
  ```
32
33
 
33
- It lands in your Applications folder automatically. Right-click **Open** once to pass Gatekeeper, then click the menu bar icon. Prefer a direct download or want the full setup flow? See [Install](#install) below.
34
+ **Not on macOS?** `uvx usage-cli` runs the terminal interface anywhere, Linux included — no install, no menu bar.
35
+
36
+ It lands in your Applications folder automatically. Open it once; if macOS 15 or later blocks it, go to System Settings → Privacy & Security, scroll down, and click **Open Anyway**. On macOS 14 or earlier, right-click **Open** once to pass Gatekeeper. Then click the menu bar icon. Prefer a direct download or want the full setup flow? See [Install](#install) below.
34
37
 
35
38
  **Jump to:** [What You Get](#what-you-get) · [Privacy](#privacy--data-sources) · [Requirements](#requirements) · [Install](#install) · [Status Line](#first-launch-set-up-the-status-line) · [Windows](#windows-support) · [Themes](#theme-gallery) · [Troubleshooting](#troubleshooting) · [Comparison](#comparison) · [Not a Fit?](#when-usage-isnt-the-right-fit) · [Development](#development)
36
39
 
@@ -39,22 +42,23 @@ It lands in your Applications folder automatically. Right-click **Open** once to
39
42
  ### Live Visibility
40
43
 
41
44
  - **Always-on Monitor:** Your quota lives in the menu bar, color-coded from green to red. Click when you want the full session, weekly, and per-project breakdown.
42
- - **Antigravity Support:** Antigravity (Gemini) session and weekly quota show up as a third card in every theme except World Cup 2026, which stays a two-team HUD. Numbers come straight from the official quota API, using the sign-in the Antigravity CLI already keeps on your machine — refreshed every few minutes, with live reset countdowns.
45
+ - **Antigravity Support:** Antigravity (Gemini) session and weekly quota show up as a third card in every theme except World Cup 2026, which stays a two-team HUD. Numbers come straight from the official quota API, using the sign-in the Antigravity CLI already keeps on your machine — refreshed every few minutes, with live reset countdowns. Antigravity keeps two separate quota pools: the card shows Gemini by default, and tapping the `Gemini ⇄` tag next to the title switches it to Claude / GPT — the choice is remembered.
46
+ - **Grok CLI Support:** A fourth card reads Grok CLI's weekly credit percentage straight from its own local debug log — no network call. Grok CLI doesn't expose session or burn-rate data, so the card shows a single weekly bar; its per-request token usage still counts toward today's cost and project totals like Claude Code and Codex.
47
+ - **Muse Code Spending:** Muse Code's per-request tokens and cost count toward today's cost, project totals, the HTML report, and the `usage` CLI, read from its own local session logs. Muse keeps no local quota data, so there is no Muse quota card.
43
48
  - **Service Status Alerts:** An orange-red banner appears when Claude Code, Claude API, or Codex API has an outage or degraded performance, read from their public Statuspage.io pages — never an LLM usage API. Antigravity isn't covered; it has no public status page.
44
- - **Context Nudges & Notifications:** When your context window hits 70%, the status line nudges you to `/clear` or `/compact` to prevent token waste. You can also opt-in to system notifications for quota limits and recoveries.
45
- - **Hide Sections:** Only use one or two of the tools? Hide the Claude Code, Codex, or Antigravity section from the menu bar and panels completely with a single click.
49
+ - **Context Nudges & Notifications:** When your context window hits 70% — or earlier when it is filling fast — the status line nudges you to `/clear` or `/compact` to prevent token waste. You can also opt-in to system notifications for quota limits and recoveries.
50
+ - **Prompt Cache Health:** The status line shows Claude Code's prompt cache hit rate with a countdown to expiry, so you can tell at a glance whether finishing now still reuses the cached context or lets it go cold and re-sends everything. Needs Claude Code 2.1.251 or newer; on older versions the segment simply doesn't appear.
51
+ - **Hide Sections:** Only use one or two of the tools? Hide the Claude Code, Codex, Grok CLI, or Antigravity section from the menu bar and panels completely with a single click.
46
52
 
47
53
  ### Workflow Helpers
48
54
 
49
55
  - **Progress Concierge:** Open a new Claude Code session and `usage` hands your last progress straight to the AI, including your last request, uncommitted changes, and unfinished todos. No `/resume`, no recap. Fully local, off by default.
50
- - **Token Saver:** A menu-bar toggle asks Claude Code and Codex to answer more tersely, saving output tokens while keeping code and error messages byte-exact. A light reminder keeps long conversations from drifting back to verbose — in an A/B test on real sessions, late replies stayed ~40% shorter instead of drifting 84% longer.
56
+ - **Token Saver:** A menu-bar toggle asks Claude Code and Codex to answer more tersely and in plainer language, saving output tokens while keeping code and error messages byte-exact. A light reminder keeps long conversations from drifting back to verbose — in an A/B test on real sessions, late replies stayed ~40% shorter instead of drifting 84% longer.
51
57
  - **Terminal Integration:** `usage status --json` hands your Claude Code and Codex quota to any tool that can run a command — Starship, tmux, or your own scripts. Reads the same local files as the menu bar, no network call. [Ready-made snippets](docs/DEVELOPMENT.md#quota-status-for-other-tools-usage-status).
52
58
  - **Token-waste Health Check:** A daily background diagnosis scans your logs for waste, including repeated file reads, polluter directories, and noisy Bash output. If it finds issues, a one-line heads-up appears; say "show me" and the AI walks you through fixes.
53
59
 
54
60
  ### AI Teamwork
55
61
 
56
- - **AI Talent Market:** Bring a ready-made AI team into Claude Code. Browse and install curated subagent personas into `~/.claude/agents/` instantly. Runs fully locally via the bundled CLI.
57
- - **AI Council:** Open a dedicated window and run a multi-round discussion between Claude Code, Codex, and Antigravity — pick participants, models, and a debate style, with a token estimate up front. Steer it between rounds, see who dissents in the consensus tally, and let it stop early once everyone agrees. Seats can wear AI Talent Market personas and reference real files via an optional read-only folder.
58
62
  - **AI Update Daily:** Opens a daily-updated public [page](https://aqua5230.github.io/ai-updates/) covering Claude Code, Codex, and Antigravity, with the full history kept. Reviewed items get a plain-language summary in all five UI languages; unreviewed ones show the original source text.
59
63
 
60
64
  ### Reporting & Insight
@@ -63,10 +67,9 @@ It lands in your Applications folder automatically. Right-click **Open** once to
63
67
 
64
68
  ### Experience & Customization
65
69
 
66
- - **13 Visual Themes:** Switch between panel styles including Classic, Matrix, Windows 95, Newspaper, Cloud Observation, Midnight Aquarium, Prism Arcade, Black Hole, World Cup 2026, Lepidoptera (blueprint), Stained Glass, Origami, and Catppuccin (official palette, all four flavors).
70
+ - **14 Visual Themes:** Switch between panel styles including Default, Matrix, Windows 95, Vintage Newspaper, Cloud Observation, Midnight Aquarium, Prism Arcade, Black Hole, World Cup 2026, Lepidoptera, Migration, Stained Glass, Origami, and Catppuccin (official palette, all four flavors).
67
71
  - **Place the Panel Anywhere:** The panel is no longer pinned under the menu bar icon. Drag it from any empty spot to wherever you want it, and it reopens there next time. It stays put when another app takes focus — a second click on the menu bar icon, or Escape, closes it.
68
72
  - **Drag to Reorder:** Grab any quota card and drag it up or down to swap the order — the arrangement is shared across every theme with quota cards (all except World Cup 2026) and survives restarts.
69
- - **Spirit Companions:** A small animated white silhouette lives beside your usage percentages — a phoenix for Claude, a dragon for Codex, a lion for Antigravity. Each accelerates dynamically as its own tool's token burn rate climbs.
70
73
  - **Automatic Localization:** UI text is available in Traditional Chinese, Simplified Chinese, English, Japanese, and Korean, automatically matching your system settings.
71
74
 
72
75
  ## Privacy & Data Sources
@@ -91,13 +94,13 @@ Installing via Homebrew means a single `brew upgrade --cask usage` keeps it curr
91
94
  brew install --cask aqua5230/usage/usage
92
95
  ```
93
96
 
94
- *(First launch: right-click `usage.app` in Finder → **Open** to pass Gatekeeper).*
97
+ *(First launch: on macOS 15 or later, open System Settings → Privacy & Security, scroll down, and click **Open Anyway**. On macOS 14 or earlier, right-click `usage.app` in Finder → **Open** to pass Gatekeeper.)*
95
98
 
96
99
  ### 2. Download for macOS
97
100
 
98
101
  1. Download the latest `usage.app.zip` from the [GitHub Releases page](https://github.com/aqua5230/usage/releases/latest).
99
102
  2. Unzip it and drag `usage.app` into your Applications folder.
100
- 3. First launch: in Finder, right-click `usage.app` → **Open** → confirm Open.
103
+ 3. First launch: on macOS 15 or later, open System Settings → Privacy & Security, scroll down, and click **Open Anyway**. On macOS 14 or earlier, in Finder, right-click `usage.app` → **Open** → confirm Open.
101
104
 
102
105
  ### 3. uvx (zero install, any OS)
103
106
 
@@ -105,12 +108,14 @@ Run `uvx usage-cli` to open the terminal interface directly. uv automatically pr
105
108
 
106
109
  For a persistent command, run `uv tool install usage-cli`, then use `usage` (for example, `usage status --json`). This installation path provides the CLI only, not the menu bar app.
107
110
 
111
+ On Linux, `usage setup` installs the Claude Code status line as well, so quota shows up under your prompt the same way it does on macOS and Windows. CI verifies this on Ubuntu. The menu bar and system tray apps remain macOS- and Windows-only.
112
+
108
113
  ## First Launch: Set Up the Status Line
109
114
 
110
115
  If you've used Codex, `usage` picks up its history automatically. For Claude Code, click the **"Set Up Status Line"** button in the app popover to install the sync hook.
111
116
  Restart the relevant tool afterward (on macOS, fully Cmd+Q Claude Code and re-open it; on Windows, restart your terminal or start a new session).
112
117
 
113
- The same button also sets up a status line for the Antigravity CLI when it is installed on your machine, and does nothing at all when it isn't. Any status line you configured there yourself is backed up first and restored when you turn the switch off.
118
+ The same button also sets up a status line for the Antigravity CLI and for Grok CLI when they are installed on your machine, and does nothing at all when they aren't. Any status line you configured there yourself is backed up first and restored when you turn the switch off.
114
119
 
115
120
  Once set up, the bottom of the Claude Code window will show a status line like this:
116
121
 
@@ -120,11 +125,11 @@ Once set up, the bottom of the Claude Code window will show a status line like t
120
125
 
121
126
  ## Windows Support
122
127
 
123
- Windows has the full core experience: the system-tray UI, Claude Code status-line hook, and Codex history parsing all work natively. Download `usage-windows.zip` from the [latest GitHub Release](https://github.com/aqua5230/usage/releases/latest), unzip it, then run `usage.exe`—no installer is needed. The tray UI requires Microsoft Edge WebView2 Runtime, which is normally included with Windows 10 and 11.
128
+ Windows has the full core experience: the system-tray UI, Claude Code status-line hook, and Codex history parsing all work natively. Download `usage-windows.zip` from the [latest GitHub Release](https://github.com/aqua5230/usage/releases/latest), unzip it, then run `usage.exe`—no installer is needed. If SmartScreen shows **Windows protected your PC** on first launch, click **More info** → **Run anyway**. The tray UI requires Microsoft Edge WebView2 Runtime, which is normally included with Windows 10 and 11.
124
129
 
125
- The system-tray icon updates with your Claude quota percentage; its tooltip summarizes the Claude and Codex windows. Left-click opens the same 13 quota themes available on macOS (Classic plus the other twelve) in WebView2. Right-click provides Reset Panel Position and Quit; panel switching, refresh, launch at login, and update checks are in the panel menu.
130
+ The system-tray icon updates with your Claude quota percentage; its tooltip summarizes the Claude and Codex windows. Left-click opens the same 14 quota themes available on macOS (Default plus the other thirteen) in WebView2. Right-click provides Reset Panel Position and Quit; panel switching, refresh, launch at login, and update checks are in the panel menu.
126
131
 
127
- Windows differences: the panel opens at the bottom-right of the working area rather than next to the tray icon; update prompts use a system Yes/No dialog; and the AI Talent Market and AI Council panels are macOS-only.
132
+ Windows differences: the panel opens at the bottom-right of the working area rather than next to the tray icon; update prompts use a system Yes/No dialog.
128
133
 
129
134
  ### Code signing policy
130
135
 
@@ -139,7 +144,7 @@ Privacy policy: this program will not transfer any information to other networke
139
144
 
140
145
  ## Theme Gallery
141
146
 
142
- Switch between **13 visual themes** directly from the UI:
147
+ Switch between **14 visual themes** directly from the UI:
143
148
 
144
149
  <p align="center">
145
150
  <img src="docs/classic.en.png" width="32%" alt="Classic theme" />
@@ -149,9 +154,12 @@ Switch between **13 visual themes** directly from the UI:
149
154
  <img src="docs/cloud_observation.en.png" width="32%" alt="Cloud Observation theme" />
150
155
  <img src="docs/aquarium.en.png" width="32%" alt="Midnight Aquarium theme" />
151
156
  <img src="docs/prism_arcade.en.png" width="32%" alt="Prism Arcade theme" />
157
+ <img src="docs/stained_glass.en.png" width="32%" alt="Stained Glass theme" />
158
+ <img src="docs/origami.en.png" width="32%" alt="Origami theme" />
152
159
  <img src="docs/black_hole.en.png" width="32%" alt="Black Hole theme" />
153
- <img src="docs/world_cup.en.png" width="32%" alt="World Cup HUD theme" />
154
160
  <img src="docs/lepidoptera.en.png" width="32%" alt="Lepidoptera theme" />
161
+ <img src="docs/migration.en.png" width="32%" alt="Migration theme" />
162
+ <img src="docs/catppuccin.en.png" width="32%" alt="Catppuccin theme" />
155
163
  </p>
156
164
 
157
165
  ## Troubleshooting
@@ -167,7 +175,8 @@ If the menu bar shows `--`, it's usually not broken — there's just no local da
167
175
  | Codex section is empty | No Codex history found | Run a Codex conversation to generate logs |
168
176
  | Today's cost shows $0.00 | Model pricing missing | Delete `~/.usage/pricing_cache.json` or check `USAGE_DEBUG=1` |
169
177
  | Antigravity card is missing | Antigravity CLI not installed or not signed in | Install and sign in to the Antigravity CLI; the card appears automatically once a background quota fetch succeeds |
170
- | App won't open | macOS Gatekeeper blocked it | Right-click `usage.app` in Finder → Open |
178
+ | App won't open | macOS Gatekeeper blocked it | macOS 15 or later: System Settings → Privacy & Security → scroll down → Open Anyway. macOS 14 or earlier: right-click `usage.app` in Finder → Open |
179
+ | Windows shows "Windows protected your PC" | SmartScreen doesn't recognize the download yet | Click More info → Run anyway |
171
180
 
172
181
  ## Comparison
173
182
 
@@ -176,11 +185,11 @@ If the menu bar shows `--`, it's usually not broken — there's just no local da
176
185
  | Always on screen | ✅ | — | ✅ |
177
186
  | macOS menu bar & Windows system tray | ✅ | — | macOS only |
178
187
  | Claude Code & Codex usage | ✅ | Claude only | ✅ |
179
- | Antigravity (Gemini) usage | ✅ | — | — |
188
+ | Antigravity usage (Gemini and Claude / GPT) | ✅ | — | — |
189
+ | Grok CLI usage | ✅ | — | — |
190
+ | Muse Code token spend | ✅ | — | — |
180
191
  | Claude Code & Codex service-status alerts | ✅ | — | — |
181
192
  | HTML deep reports & UI | ✅ | ✅ | — |
182
- | AI Talent Market | macOS only | — | — |
183
- | AI Council | macOS only | — | — |
184
193
  | AI Update Daily | ✅ | — | — |
185
194
  | Progress Concierge & Token Saver | ✅ | — | — |
186
195
  | Token-waste Health Check | ✅ | — | — |
@@ -6,7 +6,7 @@
6
6
 
7
7
  from __future__ import annotations
8
8
 
9
- import agy_loader as shared_agy_loader
9
+ from loaders import agy_loader as shared_agy_loader
10
10
 
11
11
  from i18n import t
12
12
 
@@ -59,7 +59,7 @@ def _to_usage_entry(entry: shared_agy_loader.AgyUsageEntry) -> UsageEntry:
59
59
  cache_creation_tokens=0,
60
60
  cache_read_tokens=entry.cache_read_tokens,
61
61
  cost_usd=None,
62
- project=_PROJECT_NAME,
62
+ project=entry.project or _PROJECT_NAME,
63
63
  agent_id="antigravity",
64
64
  )
65
65