usage-cli 0.32.5__tar.gz → 0.33.0__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 (251) hide show
  1. {usage_cli-0.32.5 → usage_cli-0.33.0}/PKG-INFO +6 -2
  2. {usage_cli-0.32.5 → usage_cli-0.33.0}/README.md +5 -1
  3. {usage_cli-0.32.5 → usage_cli-0.33.0}/i18n.json +165 -10
  4. {usage_cli-0.32.5 → usage_cli-0.33.0}/installer/claude_pane.py +72 -33
  5. {usage_cli-0.32.5 → usage_cli-0.33.0}/installer/session_hooks.py +117 -1
  6. {usage_cli-0.32.5 → usage_cli-0.33.0}/installer/setup_hook.py +1 -1
  7. {usage_cli-0.32.5 → usage_cli-0.33.0}/main.py +9 -2
  8. {usage_cli-0.32.5 → usage_cli-0.33.0}/menubar/actions.py +89 -6
  9. {usage_cli-0.32.5 → usage_cli-0.33.0}/menubar/app.py +9 -20
  10. {usage_cli-0.32.5 → usage_cli-0.33.0}/menubar/menu.py +44 -8
  11. {usage_cli-0.32.5 → usage_cli-0.33.0}/menubar/refresh.py +3 -0
  12. {usage_cli-0.32.5 → usage_cli-0.33.0}/menubar/update.py +26 -0
  13. usage_cli-0.33.0/menubar/whats_new.py +39 -0
  14. {usage_cli-0.32.5 → usage_cli-0.33.0}/pyproject.toml +4 -2
  15. usage_cli-0.33.0/quota/quota_snapshot.py +32 -0
  16. {usage_cli-0.32.5 → usage_cli-0.33.0}/quota/usage_rate.py +39 -3
  17. {usage_cli-0.32.5 → usage_cli-0.33.0}/setup_app.py +1 -0
  18. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_claude_pane.py +76 -0
  19. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_hook_scripts_are_standalone.py +1 -0
  20. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_main.py +1 -0
  21. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_menubar.py +90 -10
  22. usage_cli-0.33.0/tests/test_quota_aware.py +252 -0
  23. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_update_release_notes.py +30 -1
  24. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_usage_rate.py +72 -1
  25. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_usage_statusline.py +285 -1
  26. usage_cli-0.33.0/tests/test_whats_new.py +345 -0
  27. {usage_cli-0.32.5 → usage_cli-0.33.0}/updates/release_notes.py +40 -0
  28. usage_cli-0.33.0/updates/whats_new.py +121 -0
  29. {usage_cli-0.32.5 → usage_cli-0.33.0}/usage_cli.egg-info/PKG-INFO +6 -2
  30. {usage_cli-0.32.5 → usage_cli-0.33.0}/usage_cli.egg-info/SOURCES.txt +8 -1
  31. {usage_cli-0.32.5 → usage_cli-0.33.0}/usage_cli.egg-info/top_level.txt +1 -0
  32. usage_cli-0.33.0/usage_quota_aware.py +150 -0
  33. {usage_cli-0.32.5 → usage_cli-0.33.0}/usage_statusline.py +204 -3
  34. {usage_cli-0.32.5 → usage_cli-0.33.0}/usage_terse_mode.py +24 -6
  35. {usage_cli-0.32.5 → usage_cli-0.33.0}/wintray/app.py +11 -3
  36. usage_cli-0.33.0/wintray/whats_new.py +48 -0
  37. {usage_cli-0.32.5 → usage_cli-0.33.0}/LICENSE +0 -0
  38. {usage_cli-0.32.5 → usage_cli-0.33.0}/THIRD_PARTY_NOTICES.md +0 -0
  39. {usage_cli-0.32.5 → usage_cli-0.33.0}/adapters/__init__.py +0 -0
  40. {usage_cli-0.32.5 → usage_cli-0.33.0}/adapters/agy.py +0 -0
  41. {usage_cli-0.32.5 → usage_cli-0.33.0}/adapters/claude.py +0 -0
  42. {usage_cli-0.32.5 → usage_cli-0.33.0}/adapters/codex.py +0 -0
  43. {usage_cli-0.32.5 → usage_cli-0.33.0}/adapters/grok.py +0 -0
  44. {usage_cli-0.32.5 → usage_cli-0.33.0}/adapters/muse.py +0 -0
  45. {usage_cli-0.32.5 → usage_cli-0.33.0}/adapters/rate_limits.py +0 -0
  46. {usage_cli-0.32.5 → usage_cli-0.33.0}/adapters/registry.py +0 -0
  47. {usage_cli-0.32.5 → usage_cli-0.33.0}/adapters/types.py +0 -0
  48. {usage_cli-0.32.5 → usage_cli-0.33.0}/analyzer/__init__.py +0 -0
  49. {usage_cli-0.32.5 → usage_cli-0.33.0}/analyzer/aggregator.py +0 -0
  50. {usage_cli-0.32.5 → usage_cli-0.33.0}/analyzer/blocks.py +0 -0
  51. {usage_cli-0.32.5 → usage_cli-0.33.0}/analyzer/diagnoser.py +0 -0
  52. {usage_cli-0.32.5 → usage_cli-0.33.0}/analyzer/dispatch_ledger.py +0 -0
  53. {usage_cli-0.32.5 → usage_cli-0.33.0}/analyzer/insights.py +0 -0
  54. {usage_cli-0.32.5 → usage_cli-0.33.0}/analyzer/persona_loader.py +0 -0
  55. {usage_cli-0.32.5 → usage_cli-0.33.0}/analyzer/reporter.py +0 -0
  56. {usage_cli-0.32.5 → usage_cli-0.33.0}/analyzer/subscription.py +0 -0
  57. {usage_cli-0.32.5 → usage_cli-0.33.0}/analyzer/usage_snapshot.py +0 -0
  58. {usage_cli-0.32.5 → usage_cli-0.33.0}/doctor.py +0 -0
  59. {usage_cli-0.32.5 → usage_cli-0.33.0}/fsevents_watch.py +0 -0
  60. {usage_cli-0.32.5 → usage_cli-0.33.0}/i18n.py +0 -0
  61. {usage_cli-0.32.5 → usage_cli-0.33.0}/installer/__init__.py +0 -0
  62. {usage_cli-0.32.5 → usage_cli-0.33.0}/installer/codex_hook_trust.py +0 -0
  63. {usage_cli-0.32.5 → usage_cli-0.33.0}/installer/login_item.py +0 -0
  64. {usage_cli-0.32.5 → usage_cli-0.33.0}/installer/statusline_settings.py +0 -0
  65. {usage_cli-0.32.5 → usage_cli-0.33.0}/loaders/__init__.py +0 -0
  66. {usage_cli-0.32.5 → usage_cli-0.33.0}/loaders/agy_disk_cache.py +0 -0
  67. {usage_cli-0.32.5 → usage_cli-0.33.0}/loaders/agy_loader.py +0 -0
  68. {usage_cli-0.32.5 → usage_cli-0.33.0}/loaders/agy_quota_probe.py +0 -0
  69. {usage_cli-0.32.5 → usage_cli-0.33.0}/loaders/cache_quarantine.py +0 -0
  70. {usage_cli-0.32.5 → usage_cli-0.33.0}/loaders/claude_paths.py +0 -0
  71. {usage_cli-0.32.5 → usage_cli-0.33.0}/loaders/codex_disk_cache.py +0 -0
  72. {usage_cli-0.32.5 → usage_cli-0.33.0}/loaders/codex_events.py +0 -0
  73. {usage_cli-0.32.5 → usage_cli-0.33.0}/loaders/codex_fork_replay.py +0 -0
  74. {usage_cli-0.32.5 → usage_cli-0.33.0}/loaders/codex_loader.py +0 -0
  75. {usage_cli-0.32.5 → usage_cli-0.33.0}/loaders/codex_paths.py +0 -0
  76. {usage_cli-0.32.5 → usage_cli-0.33.0}/loaders/disk_cache_common.py +0 -0
  77. {usage_cli-0.32.5 → usage_cli-0.33.0}/loaders/disk_cache_lifecycle.py +0 -0
  78. {usage_cli-0.32.5 → usage_cli-0.33.0}/loaders/grok_loader.py +0 -0
  79. {usage_cli-0.32.5 → usage_cli-0.33.0}/loaders/grok_quota_probe.py +0 -0
  80. {usage_cli-0.32.5 → usage_cli-0.33.0}/loaders/history_disk_cache.py +0 -0
  81. {usage_cli-0.32.5 → usage_cli-0.33.0}/loaders/history_loader.py +0 -0
  82. {usage_cli-0.32.5 → usage_cli-0.33.0}/loaders/jsonl_limits.py +0 -0
  83. {usage_cli-0.32.5 → usage_cli-0.33.0}/loaders/jsonl_utils.py +0 -0
  84. {usage_cli-0.32.5 → usage_cli-0.33.0}/loaders/muse_loader.py +0 -0
  85. {usage_cli-0.32.5 → usage_cli-0.33.0}/menubar/__init__.py +0 -0
  86. {usage_cli-0.32.5 → usage_cli-0.33.0}/menubar/agy.py +0 -0
  87. {usage_cli-0.32.5 → usage_cli-0.33.0}/menubar/chrome.py +0 -0
  88. {usage_cli-0.32.5 → usage_cli-0.33.0}/menubar/grok.py +0 -0
  89. {usage_cli-0.32.5 → usage_cli-0.33.0}/menubar/manual_refresh.py +0 -0
  90. {usage_cli-0.32.5 → usage_cli-0.33.0}/menubar/new_badge.py +0 -0
  91. {usage_cli-0.32.5 → usage_cli-0.33.0}/menubar/notify.py +0 -0
  92. {usage_cli-0.32.5 → usage_cli-0.33.0}/menubar/popover.py +0 -0
  93. {usage_cli-0.32.5 → usage_cli-0.33.0}/menubar/prefs.py +0 -0
  94. {usage_cli-0.32.5 → usage_cli-0.33.0}/menubar/state.py +0 -0
  95. {usage_cli-0.32.5 → usage_cli-0.33.0}/menubar/title.py +0 -0
  96. {usage_cli-0.32.5 → usage_cli-0.33.0}/panels/__init__.py +0 -0
  97. {usage_cli-0.32.5 → usage_cli-0.33.0}/panels/base.py +0 -0
  98. {usage_cli-0.32.5 → usage_cli-0.33.0}/panels/dynamic_height.py +0 -0
  99. {usage_cli-0.32.5 → usage_cli-0.33.0}/panels/panel_scale.py +0 -0
  100. {usage_cli-0.32.5 → usage_cli-0.33.0}/panels/panel_window.py +0 -0
  101. {usage_cli-0.32.5 → usage_cli-0.33.0}/panels/panel_window_state.py +0 -0
  102. {usage_cli-0.32.5 → usage_cli-0.33.0}/panels/payload.py +0 -0
  103. {usage_cli-0.32.5 → usage_cli-0.33.0}/panels/web_panel.py +0 -0
  104. {usage_cli-0.32.5 → usage_cli-0.33.0}/panels/window_drag.py +0 -0
  105. {usage_cli-0.32.5 → usage_cli-0.33.0}/prefs.py +0 -0
  106. {usage_cli-0.32.5 → usage_cli-0.33.0}/pricing.py +0 -0
  107. {usage_cli-0.32.5 → usage_cli-0.33.0}/project_resolver.py +0 -0
  108. {usage_cli-0.32.5 → usage_cli-0.33.0}/quota/__init__.py +0 -0
  109. {usage_cli-0.32.5 → usage_cli-0.33.0}/quota/agy_window_keeper.py +0 -0
  110. {usage_cli-0.32.5 → usage_cli-0.33.0}/quota/burn_rate.py +0 -0
  111. {usage_cli-0.32.5 → usage_cli-0.33.0}/quota/codex_window_keeper.py +0 -0
  112. {usage_cli-0.32.5 → usage_cli-0.33.0}/quota/keeper_outcome.py +0 -0
  113. {usage_cli-0.32.5 → usage_cli-0.33.0}/quota/window_keeper.py +0 -0
  114. {usage_cli-0.32.5 → usage_cli-0.33.0}/service_status.py +0 -0
  115. {usage_cli-0.32.5 → usage_cli-0.33.0}/setup.cfg +0 -0
  116. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_adapters_claude.py +0 -0
  117. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_adapters_codex.py +0 -0
  118. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_adapters_rate_limits.py +0 -0
  119. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_aggregator.py +0 -0
  120. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_agy_adapter.py +0 -0
  121. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_agy_disk_cache.py +0 -0
  122. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_agy_loader.py +0 -0
  123. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_agy_quota_probe.py +0 -0
  124. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_agy_window_keeper.py +0 -0
  125. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_analyzer_blocks.py +0 -0
  126. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_analyzer_pipeline.py +0 -0
  127. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_burn_rate.py +0 -0
  128. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_cache_quarantine.py +0 -0
  129. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_check_upstream.py +0 -0
  130. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_claude_paths.py +0 -0
  131. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_codex_consistency.py +0 -0
  132. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_codex_hook_trust.py +0 -0
  133. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_codex_loader.py +0 -0
  134. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_codex_window_keeper.py +0 -0
  135. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_diagnoser.py +0 -0
  136. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_disk_cache_shards.py +0 -0
  137. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_dispatch_ledger.py +0 -0
  138. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_doctor.py +0 -0
  139. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_dynamic_height.py +0 -0
  140. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_fsevents_watch.py +0 -0
  141. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_grok_loader.py +0 -0
  142. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_grok_quota_probe.py +0 -0
  143. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_history_loader.py +0 -0
  144. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_html_report_snapshot.py +0 -0
  145. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_i18n_format_fallback.py +0 -0
  146. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_i18n_key_parity.py +0 -0
  147. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_i18n_packaged_path.py +0 -0
  148. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_insights.py +0 -0
  149. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_jsonl_utils.py +0 -0
  150. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_keeper_menu.py +0 -0
  151. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_keeper_outcome.py +0 -0
  152. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_login_item.py +0 -0
  153. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_manual_refresh.py +0 -0
  154. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_menubar_agy.py +0 -0
  155. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_menubar_grok.py +0 -0
  156. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_menubar_notify.py +0 -0
  157. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_menubar_prefs.py +0 -0
  158. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_menubar_state.py +0 -0
  159. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_menubar_update.py +0 -0
  160. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_muse_loader.py +0 -0
  161. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_new_badge.py +0 -0
  162. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_packaged_resources.py +0 -0
  163. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_packaging.py +0 -0
  164. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_panel_footer_layout.py +0 -0
  165. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_panel_scale.py +0 -0
  166. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_panel_window_state.py +0 -0
  167. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_panels.py +0 -0
  168. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_panels_lazy_import.py +0 -0
  169. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_persona_loader.py +0 -0
  170. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_pricing.py +0 -0
  171. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_project_resolver.py +0 -0
  172. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_quota_label.py +0 -0
  173. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_report_daily_chart.py +0 -0
  174. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_report_filter_js.py +0 -0
  175. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_reporter_build_data.py +0 -0
  176. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_service_status.py +0 -0
  177. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_session_resume.py +0 -0
  178. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_setup_app.py +0 -0
  179. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_setup_hook.py +0 -0
  180. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_setup_hook_coexistence.py +0 -0
  181. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_setup_hook_resume.py +0 -0
  182. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_setup_hook_terse.py +0 -0
  183. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_subprocess_utils.py +0 -0
  184. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_subscription.py +0 -0
  185. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_time_utils.py +0 -0
  186. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_tui.py +0 -0
  187. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_tui_sprite.py +0 -0
  188. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_ui_tables.py +0 -0
  189. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_update_checker.py +0 -0
  190. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_update_gate.py +0 -0
  191. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_usage_cli.py +0 -0
  192. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_usage_client.py +0 -0
  193. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_usage_diagnosis_snapshot.py +0 -0
  194. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_usage_dir_sweeper.py +0 -0
  195. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_usage_lang.py +0 -0
  196. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_usage_logging.py +0 -0
  197. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_usage_notifications.py +0 -0
  198. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_usage_snapshot.py +0 -0
  199. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_usage_snapshot_replay.py +0 -0
  200. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_usage_statusline_agy.py +0 -0
  201. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_usage_statusline_forwarder.py +0 -0
  202. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_usage_statusline_grok.py +0 -0
  203. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_usage_terse_mode.py +0 -0
  204. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_usage_terse_reminder.py +0 -0
  205. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_web_panel_payload.py +0 -0
  206. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_wheel_packaging.py +0 -0
  207. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_win_login_item.py +0 -0
  208. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_window_keeper.py +0 -0
  209. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_windows_manifest.py +0 -0
  210. {usage_cli-0.32.5 → usage_cli-0.33.0}/tests/test_wintray.py +0 -0
  211. {usage_cli-0.32.5 → usage_cli-0.33.0}/tui/__init__.py +0 -0
  212. {usage_cli-0.32.5 → usage_cli-0.33.0}/tui/app.py +0 -0
  213. {usage_cli-0.32.5 → usage_cli-0.33.0}/tui/sprite.py +0 -0
  214. {usage_cli-0.32.5 → usage_cli-0.33.0}/ui/__init__.py +0 -0
  215. {usage_cli-0.32.5 → usage_cli-0.33.0}/ui/html_report.py +0 -0
  216. {usage_cli-0.32.5 → usage_cli-0.33.0}/ui/report_charts.py +0 -0
  217. {usage_cli-0.32.5 → usage_cli-0.33.0}/ui/report_daily_chart.py +0 -0
  218. {usage_cli-0.32.5 → usage_cli-0.33.0}/ui/report_filter.py +0 -0
  219. {usage_cli-0.32.5 → usage_cli-0.33.0}/ui/report_ledger.py +0 -0
  220. {usage_cli-0.32.5 → usage_cli-0.33.0}/ui/report_scripts.py +0 -0
  221. {usage_cli-0.32.5 → usage_cli-0.33.0}/ui/report_styles.py +0 -0
  222. {usage_cli-0.32.5 → usage_cli-0.33.0}/ui/tables.py +0 -0
  223. {usage_cli-0.32.5 → usage_cli-0.33.0}/updates/__init__.py +0 -0
  224. {usage_cli-0.32.5 → usage_cli-0.33.0}/updates/checker.py +0 -0
  225. {usage_cli-0.32.5 → usage_cli-0.33.0}/updates/gate.py +0 -0
  226. {usage_cli-0.32.5 → usage_cli-0.33.0}/usage_cli.egg-info/dependency_links.txt +0 -0
  227. {usage_cli-0.32.5 → usage_cli-0.33.0}/usage_cli.egg-info/entry_points.txt +0 -0
  228. {usage_cli-0.32.5 → usage_cli-0.33.0}/usage_cli.egg-info/requires.txt +0 -0
  229. {usage_cli-0.32.5 → usage_cli-0.33.0}/usage_cli.py +0 -0
  230. {usage_cli-0.32.5 → usage_cli-0.33.0}/usage_client.py +0 -0
  231. {usage_cli-0.32.5 → usage_cli-0.33.0}/usage_common/__init__.py +0 -0
  232. {usage_cli-0.32.5 → usage_cli-0.33.0}/usage_common/subprocess_utils.py +0 -0
  233. {usage_cli-0.32.5 → usage_cli-0.33.0}/usage_common/time_utils.py +0 -0
  234. {usage_cli-0.32.5 → usage_cli-0.33.0}/usage_common/usage_dir_sweeper.py +0 -0
  235. {usage_cli-0.32.5 → usage_cli-0.33.0}/usage_common/usage_lang.py +0 -0
  236. {usage_cli-0.32.5 → usage_cli-0.33.0}/usage_common/usage_logging.py +0 -0
  237. {usage_cli-0.32.5 → usage_cli-0.33.0}/usage_diagnosis_snapshot.py +0 -0
  238. {usage_cli-0.32.5 → usage_cli-0.33.0}/usage_notifications.py +0 -0
  239. {usage_cli-0.32.5 → usage_cli-0.33.0}/usage_session_resume.py +0 -0
  240. {usage_cli-0.32.5 → usage_cli-0.33.0}/usage_statusline_agy.py +0 -0
  241. {usage_cli-0.32.5 → usage_cli-0.33.0}/usage_statusline_forwarder.py +0 -0
  242. {usage_cli-0.32.5 → usage_cli-0.33.0}/usage_statusline_grok.py +0 -0
  243. {usage_cli-0.32.5 → usage_cli-0.33.0}/usage_terse_reminder.py +0 -0
  244. {usage_cli-0.32.5 → usage_cli-0.33.0}/wintray/__init__.py +0 -0
  245. {usage_cli-0.32.5 → usage_cli-0.33.0}/wintray/login_item.py +0 -0
  246. {usage_cli-0.32.5 → usage_cli-0.33.0}/wintray/menu.py +0 -0
  247. {usage_cli-0.32.5 → usage_cli-0.33.0}/wintray/prefs.py +0 -0
  248. {usage_cli-0.32.5 → usage_cli-0.33.0}/wintray/quota_label.py +0 -0
  249. {usage_cli-0.32.5 → usage_cli-0.33.0}/wintray/taskbar_obstacles.py +0 -0
  250. {usage_cli-0.32.5 → usage_cli-0.33.0}/wintray/taskbar_overlay.py +0 -0
  251. {usage_cli-0.32.5 → usage_cli-0.33.0}/wintray/watch.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: usage-cli
3
- Version: 0.32.5
3
+ Version: 0.33.0
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
@@ -78,6 +78,8 @@ It lands in your Applications folder automatically. Open it once; if macOS 15 or
78
78
  - **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. When you do `/resume` a conversation that sat long enough for its cache to expire, it warns you how many tokens the next message will re-send and suggests `/compact` first. Off by default.
79
79
  - **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.
80
80
  - **Claude Code side pane (macOS and Windows):** Quotas, conversations, and background jobs inside Claude Code. [See the side pane](#claude-code-side-pane).
81
+ - **Beginner Mode (macOS):** Off by default. After Claude Code answers, up to three technical terms from that answer appear above the prompt, each with a one-line plain explanation in your UI language. Press 9 to mark them understood; terms you skip come back after 1, 3, then 7 days. Understood terms return as a one-question multiple-choice quiz 7, 21, then 60 days later, at most one a day; a wrong answer puts the term back in the hints. `/terms` opens your term history. Picking terms asks Claude Haiku through your Claude Code, so it uses a little Claude quota, and it pauses while your 5-hour quota is at 90% or more.
82
+ - **Quota-Aware Mode (macOS):** Off by default. When a 5-hour quota passes 80%, 90%, or 95%, or a weekly quota passes 95%, Claude Code gets one line with what is left and when it resets. Before a big task, Claude then tells you and lets you pick a smaller part or wait for the reset. It covers Claude Code, Codex, and Antigravity quota, says each level once per conversation, and makes no extra model calls.
81
83
  - **Auto-start 5-hour Session:** Off by default. Turn it on and, right after a 5-hour quota resets, `usage` sends one tiny message to each tool (Claude with Haiku, Antigravity with Gemini 3.5 Flash Low, Codex with its cheapest model) so the next 5-hour window starts counting right away. Those messages do use a little quota, but the amount is negligible. Checking your quota never sends a message; only this switch does.
82
84
  - **Terminal Integration:** `usage status --json` hands your Claude Code, Codex, Antigravity, and Grok quota to any tool that can run a command — Starship, tmux, or your own scripts. Reads the same local files as the menu bar. [Ready-made snippets](docs/DEVELOPMENT.md#quota-status-for-other-tools-usage-status).
83
85
  - **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.
@@ -102,6 +104,7 @@ It lands in your Applications folder automatically. Open it once; if macOS 15 or
102
104
  - Claude Code and Codex numbers are read from local log files on your machine.
103
105
  - Antigravity quota requires network access, and only if you use it: quota is fetched from Google's official quota endpoint using the OAuth credential the Antigravity CLI already stored after sign-in — read from macOS Keychain, Windows Credential Manager, or a local token file depending on CLI version. `usage` reads that credential without writing it back and keeps any refreshed access token in memory only; the call itself reads quota metadata.
104
106
  - Background network activity: the Antigravity quota/token endpoints above, public Claude and Codex status pages to flag outages, a public model-pricing table to estimate cost (falls back to built-in prices offline), and occasionally checking GitHub for a new version. Claude Code and Codex log contents are never uploaded.
107
+ - Beginner Mode, only if you turn it on, sends Claude Code's latest answer to Claude Haiku through your own Claude Code sign-in to pick terms. Your term list stays in `~/.usage/glossary.json`.
105
108
 
106
109
  ## Requirements
107
110
 
@@ -162,7 +165,7 @@ See your quota, other conversations, and background jobs without leaving Claude
162
165
 
163
166
  **How to enable**
164
167
 
165
- 1. In the usage menu bar menu (macOS) or the system-tray panel menu (Windows), check **Claude Code side pane**.
168
+ 1. In the usage menu bar menu (macOS) or the system-tray panel menu (Windows), check **Claude Code side pane**. On macOS it sits under the **Claude Code** submenu as **Side pane**.
166
169
  2. Open a new conversation or run `/reload-plugins`.
167
170
  3. At terminal widths ≥144 columns, the pane opens on the right automatically. In narrower terminals, enter `/usage-dash`.
168
171
 
@@ -251,6 +254,7 @@ If the menu bar shows `--`, it's usually not broken — there's just no local da
251
254
  | AI Update Daily | ✅ | — | — |
252
255
  | Progress Concierge & Token Saver | ✅ | — | — |
253
256
  | Token-waste Health Check | ✅ | — | — |
257
+ | Claude Code Beginner Mode & Quota-Aware Mode | ✅ | — | — |
254
258
  | Open-source license | AGPL-3.0 | MIT | — |
255
259
 
256
260
  ## When usage Isn't the Right Fit
@@ -57,6 +57,8 @@ It lands in your Applications folder automatically. Open it once; if macOS 15 or
57
57
  - **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. When you do `/resume` a conversation that sat long enough for its cache to expire, it warns you how many tokens the next message will re-send and suggests `/compact` first. Off by default.
58
58
  - **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.
59
59
  - **Claude Code side pane (macOS and Windows):** Quotas, conversations, and background jobs inside Claude Code. [See the side pane](#claude-code-side-pane).
60
+ - **Beginner Mode (macOS):** Off by default. After Claude Code answers, up to three technical terms from that answer appear above the prompt, each with a one-line plain explanation in your UI language. Press 9 to mark them understood; terms you skip come back after 1, 3, then 7 days. Understood terms return as a one-question multiple-choice quiz 7, 21, then 60 days later, at most one a day; a wrong answer puts the term back in the hints. `/terms` opens your term history. Picking terms asks Claude Haiku through your Claude Code, so it uses a little Claude quota, and it pauses while your 5-hour quota is at 90% or more.
61
+ - **Quota-Aware Mode (macOS):** Off by default. When a 5-hour quota passes 80%, 90%, or 95%, or a weekly quota passes 95%, Claude Code gets one line with what is left and when it resets. Before a big task, Claude then tells you and lets you pick a smaller part or wait for the reset. It covers Claude Code, Codex, and Antigravity quota, says each level once per conversation, and makes no extra model calls.
60
62
  - **Auto-start 5-hour Session:** Off by default. Turn it on and, right after a 5-hour quota resets, `usage` sends one tiny message to each tool (Claude with Haiku, Antigravity with Gemini 3.5 Flash Low, Codex with its cheapest model) so the next 5-hour window starts counting right away. Those messages do use a little quota, but the amount is negligible. Checking your quota never sends a message; only this switch does.
61
63
  - **Terminal Integration:** `usage status --json` hands your Claude Code, Codex, Antigravity, and Grok quota to any tool that can run a command — Starship, tmux, or your own scripts. Reads the same local files as the menu bar. [Ready-made snippets](docs/DEVELOPMENT.md#quota-status-for-other-tools-usage-status).
62
64
  - **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.
@@ -81,6 +83,7 @@ It lands in your Applications folder automatically. Open it once; if macOS 15 or
81
83
  - Claude Code and Codex numbers are read from local log files on your machine.
82
84
  - Antigravity quota requires network access, and only if you use it: quota is fetched from Google's official quota endpoint using the OAuth credential the Antigravity CLI already stored after sign-in — read from macOS Keychain, Windows Credential Manager, or a local token file depending on CLI version. `usage` reads that credential without writing it back and keeps any refreshed access token in memory only; the call itself reads quota metadata.
83
85
  - Background network activity: the Antigravity quota/token endpoints above, public Claude and Codex status pages to flag outages, a public model-pricing table to estimate cost (falls back to built-in prices offline), and occasionally checking GitHub for a new version. Claude Code and Codex log contents are never uploaded.
86
+ - Beginner Mode, only if you turn it on, sends Claude Code's latest answer to Claude Haiku through your own Claude Code sign-in to pick terms. Your term list stays in `~/.usage/glossary.json`.
84
87
 
85
88
  ## Requirements
86
89
 
@@ -141,7 +144,7 @@ See your quota, other conversations, and background jobs without leaving Claude
141
144
 
142
145
  **How to enable**
143
146
 
144
- 1. In the usage menu bar menu (macOS) or the system-tray panel menu (Windows), check **Claude Code side pane**.
147
+ 1. In the usage menu bar menu (macOS) or the system-tray panel menu (Windows), check **Claude Code side pane**. On macOS it sits under the **Claude Code** submenu as **Side pane**.
145
148
  2. Open a new conversation or run `/reload-plugins`.
146
149
  3. At terminal widths ≥144 columns, the pane opens on the right automatically. In narrower terminals, enter `/usage-dash`.
147
150
 
@@ -230,6 +233,7 @@ If the menu bar shows `--`, it's usually not broken — there's just no local da
230
233
  | AI Update Daily | ✅ | — | — |
231
234
  | Progress Concierge & Token Saver | ✅ | — | — |
232
235
  | Token-waste Health Check | ✅ | — | — |
236
+ | Claude Code Beginner Mode & Quota-Aware Mode | ✅ | — | — |
233
237
  | Open-source license | AGPL-3.0 | MIT | — |
234
238
 
235
239
  ## When usage Isn't the Right Fit
@@ -42,6 +42,10 @@
42
42
  "update_btn_download": "前往下載",
43
43
  "update_btn_later": "稍後再說",
44
44
  "update_btn_skip": "跳過此版本",
45
+ "whats_new_title": "usage {version} 更新內容",
46
+ "whats_new_ok": "好",
47
+ "whats_new_open": "完整說明",
48
+ "whats_new_open_prompt": "要在瀏覽器開啟完整說明嗎?",
45
49
  "update_no_new_version": "已是最新版本",
46
50
  "check_update": "檢查更新",
47
51
  "update_check_failed": "檢查更新失敗",
@@ -318,7 +322,7 @@
318
322
  "terse_mode_menu": "省 token 模式",
319
323
  "terse_mode_tooltip": "開新對話時,自動要求 Claude 回覆更簡短、更白話,以節省輸出 token(有裝 Codex 的話也會一起套用);但程式碼、指令、路徑與錯誤訊息不會被縮減。之後你送的每則訊息也會輕聲提醒 Claude 維持精簡。",
320
324
  "terse_reminder_instruction": "[精簡模式仍生效:這則回覆保持精簡、用白話;程式碼、指令、路徑、錯誤訊息照舊一字不改;安全警示與不可逆操作確認仍要講完整;使用者明確要求詳細解說時,以使用者當下的要求為準。]",
321
- "terse_mode_instruction": "(這個對話已開啟「精簡模式」:請在這次對話第一則回覆的最前面提一下這件事——如果你同時收到其他要打招呼的指示(例如進度交接),就把「精簡模式已開啟」自然併入那句招呼裡就好,不要另外多開一句;如果沒有其他招呼可以搭,就自己說一行「🐾 已開啟精簡模式,回覆會盡量簡短,繼續吧!」。整個對話都適用。去掉虛詞贅字、客套語、重複鋪陳與不必要的過渡句;用詞挑簡短的(例如「修」不要「針對這個問題實作解決方案」)。精簡是預算,白話是風格:短不等於難懂。挑最口語的說法,能用日常字就不要用術語(例如「先存檔」不要「先持久化」)。非用不可的技術詞,第一次出現時在後面補十個字以內的白話解釋,之後直接用。工具或子代理的輸出不要原文轉貼:先讀懂再用白話重寫成結論,只有程式碼、指令、路徑、錯誤訊息照原文保留。不要比喻。名詞化還原成動詞:進行修改→改、做出決定→決定。刪只預告不給資訊的句子:接下來我要說明、值得注意的是、在深入之前。每句先已知後新知。收尾就三件事:做了什麼、成功沒、下一步做什麼。不用裝飾性表格;除了開頭那句招呼,內文不放表情符號。不要複述工具名稱或呼叫過程,但開工具前用一句話說明要做什麼是可以的。不要自創縮寫(例如「設定」別縮成「設」、「函式」別縮成「函」)——這類縮寫斷詞長度跟完整詞一樣,省不到字數,反而讓讀者要多想一下,直接用完整詞更省事也更清楚。程式碼、指令、檔案路徑、錯誤訊息一個字都不能省略或改寫。遇到安全警示、不可逆操作的確認、或多步驟中省略連接詞會有誤讀風險的情況,這幾種要先恢復完整、講清楚,講完再切回精簡語氣。如果使用者明確要求詳細解說、逐步教學,或情境需要完整推理,仍以使用者當下的要求為準,不要因為這個模式而省略關鍵資訊。)",
325
+ "terse_mode_instruction": "(這個對話已開啟「精簡模式」:請在這次對話第一則回覆的最前面提一下這件事——如果你同時收到其他要打招呼的指示(例如進度交接),就把「精簡模式已開啟」自然併入那句招呼裡就好,不要另外多開一句;如果沒有其他招呼可以搭,就自己說一行「🐾 已開啟精簡模式,回覆會盡量簡短,繼續吧!」。整個對話都適用。去掉虛詞贅字、客套語、重複鋪陳與不必要的過渡句;用詞挑簡短的(例如「修」不要「針對這個問題實作解決方案」)。精簡是預算,白話是風格:短不等於難懂。挑最口語的說法,能用日常字就不要用術語(例如「先存檔」不要「先持久化」)。非用不可的技術詞,第一次出現時在後面補十個字以內的白話解釋,之後直接用。工具或子代理的輸出不要原文轉貼:先讀懂再用白話重寫成結論,只有程式碼、指令、路徑、錯誤訊息照原文保留。不要比喻。名詞化還原成動詞:進行修改→改、做出決定→決定。刪只預告不給資訊的句子:接下來我要說明、值得注意的是、在深入之前。每句先已知後新知。一句只講一件事,一句盡量在三十字內。用主動句:寫「程式送出金鑰」,不寫「金鑰被程式送出」。同一個東西從頭到尾用同一個詞,叫過「hook」就別再換成「鉤子」。收尾就三件事:做了什麼、成功沒、下一步做什麼。不用裝飾性表格;除了開頭那句招呼,內文不放表情符號。不要複述工具名稱或呼叫過程,但開工具前用一句話說明要做什麼是可以的。不要自創縮寫(例如「設定」別縮成「設」、「函式」別縮成「函」)——這類縮寫斷詞長度跟完整詞一樣,省不到字數,反而讓讀者要多想一下,直接用完整詞更省事也更清楚。程式碼、指令、檔案路徑、錯誤訊息一個字都不能省略或改寫。遇到安全警示、不可逆操作的確認、或多步驟中省略連接詞會有誤讀風險的情況,這幾種要先恢復完整、講清楚,講完再切回精簡語氣。如果使用者明確要求詳細解說、逐步教學,或情境需要完整推理,仍以使用者當下的要求為準,不要因為這個模式而省略關鍵資訊。)",
322
326
  "terse_mode_enabled_msg": "已開啟。以後開新的 Claude Code 對話都會自動要求回覆更精簡、更白話(有裝 Codex 的話也會一起套用);程式碼、指令、路徑和錯誤訊息不會被縮減。下次開新對話即生效。",
323
327
  "terse_mode_disabled_msg": "已關閉。開新對話時不再自動要求精簡回覆。",
324
328
  "resume_enabled_restart": "已開啟。以後開新的 Claude Code 對話,會自動記得這個專案上次做到哪——畫面上不會有提示(這是正常的),但 Claude 已經知道。下次開新對話即生效。",
@@ -486,6 +490,8 @@
486
490
  "claude_pane_sidecar_error": "面板設定讀取失敗:{error}",
487
491
  "menu_badge_new": "新",
488
492
  "claude_pane_menu": "Claude Code 側邊面板",
493
+ "claude_code_section": "Claude Code",
494
+ "claude_pane_section_menu": "側邊面板",
489
495
  "claude_pane_tooltip": "在 Claude Code 顯示額度、對話與背景工作",
490
496
  "claude_pane_enabled_msg": "已開啟側邊面板。開新的 Claude Code 對話(或在對話裡打 /reload-plugins)後生效;終端機寬度不夠時打 /usage-dash 叫出面板。",
491
497
  "claude_pane_fullscreen_enabled_note": "已一併開啟 Claude Code 的全螢幕介面,讓面板顯示在右側。取消勾選側邊面板時會改回。",
@@ -511,7 +517,32 @@
511
517
  "keeper_failed_line": "上次失敗 {time}:{tool}({reason})",
512
518
  "terse_codex_hook_untrusted": "Codex 還沒批准 usage 的精簡模式 hook,Codex 那邊不會生效。在 Codex 裡打 /hooks 批准它。",
513
519
  "terse_codex_hook_disabled": "你在 Codex 停用了 usage 的精簡模式 hook。在 Codex 裡打 /hooks 重新啟用。",
514
- "claude_pane_stopped": "已停止"
520
+ "claude_pane_stopped": "已停止",
521
+ "claude_beginner_menu": "新手模式",
522
+ "claude_beginner_tooltip": "幫你看懂 Claude 的回答:回答完,在輸入框上方用白話提示最多 3 個專有名詞。按 9 標成「懂了」就不再提示,之後開新對話時會出選擇題小考。會用到少量 Claude 額度。",
523
+ "claude_beginner_title": "名詞提示",
524
+ "claude_beginner_history_title": "名詞提示紀錄",
525
+ "claude_beginner_description": "開啟名詞提示紀錄",
526
+ "claude_beginner_all_known": "都懂了",
527
+ "claude_beginner_dismiss": "收起",
528
+ "claude_beginner_known": "懂了",
529
+ "claude_beginner_unknown": "還不懂",
530
+ "claude_beginner_empty": "還沒有名詞紀錄。",
531
+ "claude_beginner_opened": "已開啟名詞提示紀錄。",
532
+ "claude_beginner_quiz_title": "小考",
533
+ "claude_beginner_quiz_question": "{term} 是什麼意思?",
534
+ "claude_beginner_quiz_right": "答對了!{days} 天後再考一次。",
535
+ "claude_beginner_quiz_done": "答對了!這個詞你已經學會了。",
536
+ "claude_beginner_quiz_wrong": "答錯了。正確答案:{answer}。這個詞之後會再出現在名詞提示裡。",
537
+ "claude_beginner_enabled_msg": "已開啟新手模式。重開 Claude Code 後生效。",
538
+ "claude_beginner_disabled_msg": "已關閉新手模式。重開 Claude Code 後生效。",
539
+ "claude_beginner_action_failed": "無法切換新手模式",
540
+ "quota_aware_menu": "額度感知模式",
541
+ "quota_aware_tooltip": "額度快用完時,Claude 開大任務前會先告訴你剩多少、幾點重置,讓你選先做小的還是等重置。",
542
+ "quota_aware_enabled_msg": "已開啟額度感知模式。請重啟 Claude Code 套用。",
543
+ "quota_aware_disabled_msg": "已關閉額度感知模式。請重啟 Claude Code 套用。",
544
+ "quota_aware_action_failed": "無法切換額度感知模式。",
545
+ "claude_beginner_error": "新手模式:{error}"
515
546
  },
516
547
  "en": {
517
548
  "panel_default_name": "Default",
@@ -556,6 +587,10 @@
556
587
  "update_btn_download": "Download",
557
588
  "update_btn_later": "Later",
558
589
  "update_btn_skip": "Skip This Version",
590
+ "whats_new_title": "What's New in usage {version}",
591
+ "whats_new_ok": "OK",
592
+ "whats_new_open": "Release Notes",
593
+ "whats_new_open_prompt": "Open the full release notes in your browser?",
559
594
  "update_no_new_version": "You are up to date",
560
595
  "check_update": "Check for Updates",
561
596
  "update_check_failed": "Update check failed",
@@ -832,7 +867,7 @@
832
867
  "terse_mode_menu": "Token Saver",
833
868
  "terse_mode_tooltip": "When you open a new session, automatically ask Claude to reply more briefly and in plainer language to save output tokens (applies to Codex too, if it's installed); code, commands, paths, and error messages stay untouched. A light reminder is also injected after each message you send to keep replies terse.",
834
869
  "terse_reminder_instruction": "[Terse mode is still on: keep this reply brief and plain-spoken; code, commands, paths, and error messages stay byte-exact; security warnings and irreversible-action confirmations must still be written out in full; if the user explicitly asks for a detailed walkthrough, follow that instead.]",
835
- "terse_mode_instruction": "(Terse mode is on for this entire conversation. Mention this at the very start of your first reply — if you're already leading with another greeting (e.g. a resume handoff), fold \"terse mode is on\" into that same line instead of adding a separate one; if there's no other greeting to fold into, say your own line: \"🐾 Terse mode is on — keeping replies short, let's go!\" Drop filler (just/really/basically/actually) and pleasantries (sure/certainly/happy to). Prefer short synonyms (big, not extensive; fix, not \"implement a solution for\"). Terse is the budget; plain is the style — short must never mean cryptic. Pick the everyday word over the jargon one (\"save it first\", not \"persist it first\"). When a technical term is unavoidable, gloss it once on first use in eight words or fewer, then just use it. Never paste a tool's or subagent's output verbatim: read it, then rewrite it as a plain-language conclusion — only code, commands, paths, and error messages stay verbatim. No analogies. Zombie nouns to verbs: \"make a decision\" to \"decide\". Cut metadiscourse: \"Let me explain\", \"It's worth noting\", \"Before diving in\". Given info first in a sentence, new info last. Close with what you did, whether it worked, and what to do next. No decorative tables, and no emoji in the body beyond the opening greeting. Don't recite tool names or narrate calls — but one line of intent before running a tool is fine. Never invent abbreviations (cfg/impl/req/res) — the tokenizer splits them the same as the full word, so nothing is saved and the reader still has to decode it; use the full word instead. Code, commands, file paths, and error messages must stay byte-exact, never trimmed or rewritten. Drop terseness for security warnings, irreversible-action confirmations, and multi-step instructions where a fragment or dropped conjunction risks being misread — write those out in full, then resume terse mode after. If the user explicitly asks for a detailed walkthrough, step-by-step teaching, or the situation needs full reasoning, follow that instead — don't drop essential information just to stay terse.)",
870
+ "terse_mode_instruction": "(Terse mode is on for this entire conversation. Mention this at the very start of your first reply — if you're already leading with another greeting (e.g. a resume handoff), fold \"terse mode is on\" into that same line instead of adding a separate one; if there's no other greeting to fold into, say your own line: \"🐾 Terse mode is on — keeping replies short, let's go!\" Drop filler (just/really/basically/actually) and pleasantries (sure/certainly/happy to). Prefer short synonyms (big, not extensive; fix, not \"implement a solution for\"). Terse is the budget; plain is the style — short must never mean cryptic. Pick the everyday word over the jargon one (\"save it first\", not \"persist it first\"). When a technical term is unavoidable, gloss it once on first use in eight words or fewer, then just use it. Never paste a tool's or subagent's output verbatim: read it, then rewrite it as a plain-language conclusion — only code, commands, paths, and error messages stay verbatim. No analogies. Zombie nouns to verbs: \"make a decision\" to \"decide\". Cut metadiscourse: \"Let me explain\", \"It's worth noting\", \"Before diving in\". Given info first in a sentence, new info last. One idea per sentence; keep sentences under about 20 words. Use active voice: \"the program sends the key\", not \"the key is sent\". One word for one thing: once you call it \"hook\", don't switch to \"callback\". Close with what you did, whether it worked, and what to do next. No decorative tables, and no emoji in the body beyond the opening greeting. Don't recite tool names or narrate calls — but one line of intent before running a tool is fine. Never invent abbreviations (cfg/impl/req/res) — the tokenizer splits them the same as the full word, so nothing is saved and the reader still has to decode it; use the full word instead. Code, commands, file paths, and error messages must stay byte-exact, never trimmed or rewritten. Drop terseness for security warnings, irreversible-action confirmations, and multi-step instructions where a fragment or dropped conjunction risks being misread — write those out in full, then resume terse mode after. If the user explicitly asks for a detailed walkthrough, step-by-step teaching, or the situation needs full reasoning, follow that instead — don't drop essential information just to stay terse.)",
836
871
  "terse_mode_enabled_msg": "Enabled. New Claude Code sessions will automatically ask for terser, plainer replies (Codex too, if it's installed), while code, commands, paths, and error messages stay untouched. Takes effect the next time you start a session.",
837
872
  "terse_mode_disabled_msg": "Disabled. New sessions will no longer auto-request terse replies.",
838
873
  "resume_enabled_restart": "Enabled. New Claude Code sessions will automatically know where you left off in this project — you won't see a prompt (that's expected), but Claude will. Takes effect the next time you start a session.",
@@ -1000,6 +1035,8 @@
1000
1035
  "claude_pane_sidecar_error": "Cannot read pane settings: {error}",
1001
1036
  "menu_badge_new": "New",
1002
1037
  "claude_pane_menu": "Claude Code side pane",
1038
+ "claude_code_section": "Claude Code",
1039
+ "claude_pane_section_menu": "Side pane",
1003
1040
  "claude_pane_tooltip": "Show quotas, Claude sessions and background jobs in Claude Code",
1004
1041
  "claude_pane_enabled_msg": "Pane enabled. Open a new Claude Code conversation (or run /reload-plugins in a conversation). If the terminal is too narrow, run /usage-dash to open the pane.",
1005
1042
  "claude_pane_fullscreen_enabled_note": "Claude Code's fullscreen layout is now on so the pane can sit on the right. Turning the side pane off switches it back.",
@@ -1025,7 +1062,32 @@
1025
1062
  "keeper_failed_line": "Last failure {time}: {tool} ({reason})",
1026
1063
  "terse_codex_hook_untrusted": "Codex has not approved usage’s terse mode hook, so terse mode will not work in Codex. Run /hooks in Codex to approve it.",
1027
1064
  "terse_codex_hook_disabled": "You disabled usage’s terse mode hook in Codex. Run /hooks in Codex to enable it again.",
1028
- "claude_pane_stopped": "stopped"
1065
+ "claude_pane_stopped": "stopped",
1066
+ "claude_beginner_menu": "Beginner Mode",
1067
+ "claude_beginner_tooltip": "Understand Claude’s answers: after each answer, see up to 3 technical terms explained above the prompt. Press 9 to mark them as understood so they stop appearing; a new conversation will later quiz you on them with a multiple-choice question. Uses a small amount of Claude quota.",
1068
+ "claude_beginner_title": "Terms",
1069
+ "claude_beginner_history_title": "Term history",
1070
+ "claude_beginner_description": "Open your term history",
1071
+ "claude_beginner_all_known": "All understood",
1072
+ "claude_beginner_dismiss": "Dismiss",
1073
+ "claude_beginner_known": "Understood",
1074
+ "claude_beginner_unknown": "Not yet understood",
1075
+ "claude_beginner_empty": "No terms yet.",
1076
+ "claude_beginner_opened": "Term history opened.",
1077
+ "claude_beginner_quiz_title": "Quick quiz",
1078
+ "claude_beginner_quiz_question": "What does {term} mean?",
1079
+ "claude_beginner_quiz_right": "Correct! Next quiz in {days} days.",
1080
+ "claude_beginner_quiz_done": "Correct! You have learned this term.",
1081
+ "claude_beginner_quiz_wrong": "Not quite. The answer is: {answer}. This term will show up in the hints again.",
1082
+ "claude_beginner_enabled_msg": "Beginner Mode enabled. Restart Claude Code to apply.",
1083
+ "claude_beginner_disabled_msg": "Beginner Mode disabled. Restart Claude Code to apply.",
1084
+ "claude_beginner_action_failed": "Could not change Beginner Mode",
1085
+ "quota_aware_menu": "Quota-Aware Mode",
1086
+ "quota_aware_tooltip": "When quota is running low, Claude tells you how much remains and when it resets before starting a large task, so you can choose a smaller part now or wait for the reset.",
1087
+ "quota_aware_enabled_msg": "Quota-Aware Mode enabled. Restart Claude Code to apply.",
1088
+ "quota_aware_disabled_msg": "Quota-Aware Mode disabled. Restart Claude Code to apply.",
1089
+ "quota_aware_action_failed": "Could not change Quota-Aware Mode.",
1090
+ "claude_beginner_error": "Beginner Mode: {error}"
1029
1091
  },
1030
1092
  "zh-CN": {
1031
1093
  "panel_default_name": "默认",
@@ -1070,6 +1132,10 @@
1070
1132
  "update_btn_download": "前往下载",
1071
1133
  "update_btn_later": "稍后再说",
1072
1134
  "update_btn_skip": "跳过此版本",
1135
+ "whats_new_title": "usage {version} 更新内容",
1136
+ "whats_new_ok": "好",
1137
+ "whats_new_open": "完整说明",
1138
+ "whats_new_open_prompt": "要在浏览器打开完整说明吗?",
1073
1139
  "update_no_new_version": "已是最新版本",
1074
1140
  "check_update": "检查更新",
1075
1141
  "update_check_failed": "检查更新失败",
@@ -1346,7 +1412,7 @@
1346
1412
  "terse_mode_menu": "省 token 模式",
1347
1413
  "terse_mode_tooltip": "开新对话时,自动要求 Claude 回复更简短、更白话,以节省输出 token(装了 Codex 的话也会一起套用);但代码、指令、路径和错误信息不会被缩减。之后你发的每则消息也会轻声提醒 Claude 保持精简。",
1348
1414
  "terse_reminder_instruction": "[精简模式仍生效:这则回复保持精简、用白话;代码、指令、路径、错误信息照旧一字不改;安全警示与不可逆操作确认仍要讲完整;用户明确要求详细讲解时,以用户当下的要求为准。]",
1349
- "terse_mode_instruction": "(这个对话已开启「精简模式」:请在这次对话第一则回复的最前面提一下这件事——如果你同时收到其他要打招呼的指示(例如进度交接),就把「精简模式已开启」自然并入那句招呼里就好,不要另外多开一句;如果没有其他招呼可以搭,就自己说一行「🐾 已开启精简模式,回复会尽量简短,继续吧!」。整个对话都适用。去掉虚词赘字、客套语、重复铺陈和不必要的过渡句;用词挑简短的(例如「修」不要「针对这个问题实现解决方案」)。精简是预算,白话是风格:短不等于难懂。挑最口语的说法,能用日常字就不要用术语(例如「先保存」不要「先持久化」)。非用不可的技术词,第一次出现时在后面补十个字以内的白话解释,之后直接用。工具或子代理的输出不要原文转贴:先读懂再用白话重写成结论,只有代码、指令、路径、错误信息照原文保留。不要比喻。名词化还原成动词:进行修改→改、做出决定→决定。删只预告不给信息的句子:接下来我要说明、值得注意的是、在深入之前。每句先已知后新知。收尾就三件事:做了什么、成功没、下一步做什么。不用装饰性表格;除了开头那句招呼,正文不放表情符号。不要复述工具名称或调用过程,但开工具前用一句话说明要做什么是可以的。不要自创缩写(例如「配置」别缩成「配」、「函数」别缩成「函」)——这类缩写分词长度跟完整词一样,省不到字数,反而让读者要多想一下,直接用完整词更省事也更清楚。代码、指令、文件路径、错误信息一个字都不能省略或改写。遇到安全警示、不可逆操作的确认、或多步骤中省略连接词会有误读风险的情况,这几种要先恢复完整、讲清楚,讲完再切回精简语气。如果用户明确要求详细讲解、逐步教学,或情境需要完整推理,仍以用户当下的要求为准,不要因为这个模式而省略关键信息。)",
1415
+ "terse_mode_instruction": "(这个对话已开启「精简模式」:请在这次对话第一则回复的最前面提一下这件事——如果你同时收到其他要打招呼的指示(例如进度交接),就把「精简模式已开启」自然并入那句招呼里就好,不要另外多开一句;如果没有其他招呼可以搭,就自己说一行「🐾 已开启精简模式,回复会尽量简短,继续吧!」。整个对话都适用。去掉虚词赘字、客套语、重复铺陈和不必要的过渡句;用词挑简短的(例如「修」不要「针对这个问题实现解决方案」)。精简是预算,白话是风格:短不等于难懂。挑最口语的说法,能用日常字就不要用术语(例如「先保存」不要「先持久化」)。非用不可的技术词,第一次出现时在后面补十个字以内的白话解释,之后直接用。工具或子代理的输出不要原文转贴:先读懂再用白话重写成结论,只有代码、指令、路径、错误信息照原文保留。不要比喻。名词化还原成动词:进行修改→改、做出决定→决定。删只预告不给信息的句子:接下来我要说明、值得注意的是、在深入之前。每句先已知后新知。一句只讲一件事,一句尽量在三十字内。用主动句:写「程序发送密钥」,不写「密钥被程序发送」。同一个东西从头到尾用同一个词,叫过「hook」就别再换成「钩子」。收尾就三件事:做了什么、成功没、下一步做什么。不用装饰性表格;除了开头那句招呼,正文不放表情符号。不要复述工具名称或调用过程,但开工具前用一句话说明要做什么是可以的。不要自创缩写(例如「配置」别缩成「配」、「函数」别缩成「函」)——这类缩写分词长度跟完整词一样,省不到字数,反而让读者要多想一下,直接用完整词更省事也更清楚。代码、指令、文件路径、错误信息一个字都不能省略或改写。遇到安全警示、不可逆操作的确认、或多步骤中省略连接词会有误读风险的情况,这几种要先恢复完整、讲清楚,讲完再切回精简语气。如果用户明确要求详细讲解、逐步教学,或情境需要完整推理,仍以用户当下的要求为准,不要因为这个模式而省略关键信息。)",
1350
1416
  "terse_mode_enabled_msg": "已开启。以后开新的 Claude Code 对话都会自动要求回复更精简、更白话(装了 Codex 的话也会一起套用);代码、指令、路径和错误信息不会被缩减。下次开新对话即生效。",
1351
1417
  "terse_mode_disabled_msg": "已关闭。开新对话时不再自动要求精简回复。",
1352
1418
  "resume_enabled_restart": "已开启。以后开新的 Claude Code 对话,会自动记得这个项目上次做到哪——画面上不会有提示(这是正常的),但 Claude 已经知道。下次开新对话即生效。",
@@ -1514,6 +1580,8 @@
1514
1580
  "claude_pane_sidecar_error": "面板设置读取失败:{error}",
1515
1581
  "menu_badge_new": "新",
1516
1582
  "claude_pane_menu": "Claude Code 侧边面板",
1583
+ "claude_code_section": "Claude Code",
1584
+ "claude_pane_section_menu": "侧边面板",
1517
1585
  "claude_pane_tooltip": "在 Claude Code 显示额度、对话与后台任务",
1518
1586
  "claude_pane_enabled_msg": "已开启侧边面板。打开新的 Claude Code 对话(或在对话里输入 /reload-plugins)后生效;终端宽度不够时输入 /usage-dash 打开面板。",
1519
1587
  "claude_pane_fullscreen_enabled_note": "已一并开启 Claude Code 的全屏界面,让面板显示在右侧。取消勾选侧边面板时会改回。",
@@ -1539,7 +1607,32 @@
1539
1607
  "keeper_failed_line": "上次失败 {time}:{tool}({reason})",
1540
1608
  "terse_codex_hook_untrusted": "Codex 还没批准 usage 的精简模式 hook,Codex 那边不会生效。在 Codex 里输入 /hooks 批准它。",
1541
1609
  "terse_codex_hook_disabled": "你在 Codex 停用了 usage 的精简模式 hook。在 Codex 里输入 /hooks 重新启用。",
1542
- "claude_pane_stopped": "已停止"
1610
+ "claude_pane_stopped": "已停止",
1611
+ "claude_beginner_menu": "新手模式",
1612
+ "claude_beginner_tooltip": "帮你看懂 Claude 的回答:回答完,在输入框上方用白话提示最多 3 个专业术语。按 9 标成“懂了”就不再提示,之后开新对话时会出选择题小测验。会用到少量 Claude 额度。",
1613
+ "claude_beginner_title": "术语提示",
1614
+ "claude_beginner_history_title": "术语提示记录",
1615
+ "claude_beginner_description": "打开术语提示记录",
1616
+ "claude_beginner_all_known": "都懂了",
1617
+ "claude_beginner_dismiss": "收起",
1618
+ "claude_beginner_known": "懂了",
1619
+ "claude_beginner_unknown": "还不懂",
1620
+ "claude_beginner_empty": "还没有术语记录。",
1621
+ "claude_beginner_opened": "已打开术语提示记录。",
1622
+ "claude_beginner_quiz_title": "小测验",
1623
+ "claude_beginner_quiz_question": "{term} 是什么意思?",
1624
+ "claude_beginner_quiz_right": "答对了!{days} 天后再考一次。",
1625
+ "claude_beginner_quiz_done": "答对了!这个词你已经学会了。",
1626
+ "claude_beginner_quiz_wrong": "答错了。正确答案:{answer}。这个词之后会再出现在术语提示里。",
1627
+ "claude_beginner_enabled_msg": "已开启新手模式。重启 Claude Code 后生效。",
1628
+ "claude_beginner_disabled_msg": "已关闭新手模式。重启 Claude Code 后生效。",
1629
+ "claude_beginner_action_failed": "无法切换新手模式",
1630
+ "quota_aware_menu": "额度感知模式",
1631
+ "quota_aware_tooltip": "额度快用完时,Claude 开大任务前会先告诉你还剩多少、几点重置,让你选先做小的还是等重置。",
1632
+ "quota_aware_enabled_msg": "已开启额度感知模式。请重启 Claude Code 应用。",
1633
+ "quota_aware_disabled_msg": "已关闭额度感知模式。请重启 Claude Code 应用。",
1634
+ "quota_aware_action_failed": "无法切换额度感知模式。",
1635
+ "claude_beginner_error": "新手模式:{error}"
1543
1636
  },
1544
1637
  "ja": {
1545
1638
  "panel_default_name": "デフォルト",
@@ -1584,6 +1677,10 @@
1584
1677
  "update_btn_download": "ダウンロード",
1585
1678
  "update_btn_later": "あとで",
1586
1679
  "update_btn_skip": "このバージョンをスキップ",
1680
+ "whats_new_title": "usage {version} の変更点",
1681
+ "whats_new_ok": "OK",
1682
+ "whats_new_open": "リリースノート",
1683
+ "whats_new_open_prompt": "完全なリリースノートをブラウザで開きますか?",
1587
1684
  "update_no_new_version": "最新バージョンです",
1588
1685
  "check_update": "アップデートを確認",
1589
1686
  "update_check_failed": "アップデート確認に失敗しました",
@@ -1860,7 +1957,7 @@
1860
1957
  "terse_mode_menu": "トークン節約モード",
1861
1958
  "terse_mode_tooltip": "新規セッションを開くと、Claude に短めで平易な言葉での返答を自動で求めて出力 token を節約します(Codex を導入済みならそちらにも適用されます)。コード、コマンド、パス、エラーメッセージは省略しません。その後もあなたが送る各メッセージで、簡潔さを保つよう軽く念押しされます。",
1862
1959
  "terse_reminder_instruction": "[簡潔モードは引き続き有効:この返信は簡潔に、平易な言葉で;コード、コマンド、パス、エラーメッセージは一字そのまま;セキュリティ警告と不可逆操作の確認は引き続き完全に記述すること;ユーザーが明確に詳しい解説を求めた場合は、その要求を優先してください。]",
1863
- "terse_mode_instruction": "(この会話では「簡潔モード」が有効です。最初の返信の冒頭でこのことに触れてください——すでに他の挨拶(進捗の引き継ぎなど)を述べる予定がある場合は、「簡潔モードが有効」であることをその挨拶に自然に組み込み、別の行を追加しないでください。組み込める挨拶がない場合は、自分で一行「🐾 簡潔モードが有効になりました。返答は短くしていきます!」と述べてください。会話全体に適用されます。前置き、丁寧すぎる言い回し、重複した表現、不必要なつなぎ文を省き、短文や箇条書きで済むなら長い段落に広げないでください。言葉は短い方を選んでください(例:「修正」であって「この問題に対する解決策を実装する」ではない)。簡潔さは予算、平易な言葉はスタイルです。短いからといって難解であってはなりません。専門用語よりも日常的な言葉を選んでください(例:「先に永続化する」ではなく「先に保存する」)。どうしても専門用語が必要な場合は、最初の使用時に10文字以内で平易な説明を補足し、以後はそのまま使用してください。ツールやサブエージェントの出力をそのまま貼り付けないこと。まず理解し、平易な言葉で結論として書き直す。原文のまま残すのはコード、コマンド、パス、エラーメッセージだけ。比喩は不要です。名詞化は動詞に戻す(修正を行う→修正する)。予告だけの文は削る(「これから説明します」「注目すべきは」)。各文は既知が先、新情報が後。最後は、何をしたか、成功したか、次に何をするかの3点だけで締めくくってください。装飾的な表は不要です。冒頭の挨拶を除き、本文に絵文字は入れないでください。ツール名や呼び出し過程の実況は不要ですが、ツールを使う前に何をするかを一言添えるのは構いません。独自の省略語は作らないでください(例:「設定」を「設」に略すなど)——トークナイザー上は完全な語と同じ長さになり、何も節約にならず読み手が余計に解読する手間が増えるだけなので、完全な語のままの方が得です。コード、コマンド、ファイルパス、エラーメッセージは一文字たりとも省略・書き換えしないこと。セキュリティ警告、不可逆操作の確認、接続詞を省くと誤読の恐れがある複数手順の説明では、簡潔さより先に完全な文で明確に伝え、伝え終えたら簡潔モードに戻ってください。ユーザーが明確に詳しい解説や段階的な説明を求めた場合、または状況的に十分な推論が必要な場合は、その要求を優先し、このモードのために重要な情報を落とさないでください。)",
1960
+ "terse_mode_instruction": "(この会話では「簡潔モード」が有効です。最初の返信の冒頭でこのことに触れてください——すでに他の挨拶(進捗の引き継ぎなど)を述べる予定がある場合は、「簡潔モードが有効」であることをその挨拶に自然に組み込み、別の行を追加しないでください。組み込める挨拶がない場合は、自分で一行「🐾 簡潔モードが有効になりました。返答は短くしていきます!」と述べてください。会話全体に適用されます。前置き、丁寧すぎる言い回し、重複した表現、不必要なつなぎ文を省き、短文や箇条書きで済むなら長い段落に広げないでください。言葉は短い方を選んでください(例:「修正」であって「この問題に対する解決策を実装する」ではない)。簡潔さは予算、平易な言葉はスタイルです。短いからといって難解であってはなりません。専門用語よりも日常的な言葉を選んでください(例:「先に永続化する」ではなく「先に保存する」)。どうしても専門用語が必要な場合は、最初の使用時に10文字以内で平易な説明を補足し、以後はそのまま使用してください。ツールやサブエージェントの出力をそのまま貼り付けないこと。まず理解し、平易な言葉で結論として書き直す。原文のまま残すのはコード、コマンド、パス、エラーメッセージだけ。比喩は不要です。名詞化は動詞に戻す(修正を行う→修正する)。予告だけの文は削る(「これから説明します」「注目すべきは」)。各文は既知が先、新情報が後。一文に一つの内容だけ、一文はおおむね40字以内。能動態で書く(「キーはプログラムによって送られる」ではなく「プログラムがキーを送る」)。同じものには最後まで同じ語を使う(一度「hook」と呼んだら「フック関数」に言い換えない)。最後は、何をしたか、成功したか、次に何をするかの3点だけで締めくくってください。装飾的な表は不要です。冒頭の挨拶を除き、本文に絵文字は入れないでください。ツール名や呼び出し過程の実況は不要ですが、ツールを使う前に何をするかを一言添えるのは構いません。独自の省略語は作らないでください(例:「設定」を「設」に略すなど)——トークナイザー上は完全な語と同じ長さになり、何も節約にならず読み手が余計に解読する手間が増えるだけなので、完全な語のままの方が得です。コード、コマンド、ファイルパス、エラーメッセージは一文字たりとも省略・書き換えしないこと。セキュリティ警告、不可逆操作の確認、接続詞を省くと誤読の恐れがある複数手順の説明では、簡潔さより先に完全な文で明確に伝え、伝え終えたら簡潔モードに戻ってください。ユーザーが明確に詳しい解説や段階的な説明を求めた場合、または状況的に十分な推論が必要な場合は、その要求を優先し、このモードのために重要な情報を落とさないでください。)",
1864
1961
  "terse_mode_enabled_msg": "有効化しました。今後、新しい Claude Code セッションでは返答をより簡潔で平易な言葉にするよう自動で求めます(Codex を導入済みならそちらにも適用されます)。コード、コマンド、パス、エラーメッセージは省略しません。次回セッション開始時に反映されます。",
1865
1962
  "terse_mode_disabled_msg": "無効化しました。新規セッションで簡潔な返答を自動要求しなくなります。",
1866
1963
  "resume_enabled_restart": "有効化しました。今後、新しい Claude Code セッションを開くと、このプロジェクトで前回どこまで進めたかを自動的に把握します。画面に通知は出ません(正常です)が、Claude は把握しています。次回セッション開始時に反映されます。",
@@ -2028,6 +2125,8 @@
2028
2125
  "claude_pane_sidecar_error": "パネル設定を読み込めません: {error}",
2029
2126
  "menu_badge_new": "新規",
2030
2127
  "claude_pane_menu": "Claude Code サイドパネル",
2128
+ "claude_code_section": "Claude Code",
2129
+ "claude_pane_section_menu": "サイドペイン",
2031
2130
  "claude_pane_tooltip": "Claude Code に使用量、セッション、バックグラウンド作業を表示",
2032
2131
  "claude_pane_enabled_msg": "サイドパネルを有効にしました。新しい Claude Code セッションを開くか、会話で /reload-plugins を実行してください。ターミナルの幅が足りない場合は /usage-dash で開けます。",
2033
2132
  "claude_pane_fullscreen_enabled_note": "Claude Code のフルスクリーンレイアウトを有効にし、パネルを右側に表示できるようにしました。サイドパネルをオフにすると元に戻ります。",
@@ -2053,7 +2152,32 @@
2053
2152
  "keeper_failed_line": "前回の失敗 {time}:{tool}({reason})",
2054
2153
  "terse_codex_hook_untrusted": "Codex が usage の簡潔モード hook をまだ承認していないため、Codex では機能しません。Codex で /hooks を入力して承認してください。",
2055
2154
  "terse_codex_hook_disabled": "Codex で usage の簡潔モード hook が無効になっています。Codex で /hooks を入力して再び有効にしてください。",
2056
- "claude_pane_stopped": "停止済み"
2155
+ "claude_pane_stopped": "停止済み",
2156
+ "claude_beginner_menu": "初心者モード",
2157
+ "claude_beginner_tooltip": "Claude の回答をわかりやすく:回答後、入力欄の上に最大3つの専門用語をやさしく説明します。9を押すと「理解した」と記録して表示しなくなり、後日、新しい会話で選択式のミニテストが出ます。Claude の使用枠を少量使います。",
2158
+ "claude_beginner_title": "用語のヒント",
2159
+ "claude_beginner_history_title": "用語の履歴",
2160
+ "claude_beginner_description": "用語の履歴を開く",
2161
+ "claude_beginner_all_known": "すべて理解した",
2162
+ "claude_beginner_dismiss": "閉じる",
2163
+ "claude_beginner_known": "理解した",
2164
+ "claude_beginner_unknown": "まだわからない",
2165
+ "claude_beginner_empty": "用語の記録はまだありません。",
2166
+ "claude_beginner_opened": "用語の履歴を開きました。",
2167
+ "claude_beginner_quiz_title": "ミニテスト",
2168
+ "claude_beginner_quiz_question": "{term} の意味は?",
2169
+ "claude_beginner_quiz_right": "正解!{days} 日後にもう一度出題します。",
2170
+ "claude_beginner_quiz_done": "正解!この用語は覚えました。",
2171
+ "claude_beginner_quiz_wrong": "不正解。正解は「{answer}」です。この用語はまた用語ヒントに表示されます。",
2172
+ "claude_beginner_enabled_msg": "初心者モードを有効にしました。Claude Code を再起動してください。",
2173
+ "claude_beginner_disabled_msg": "初心者モードを無効にしました。Claude Code を再起動してください。",
2174
+ "claude_beginner_action_failed": "初心者モードを切り替えられません",
2175
+ "quota_aware_menu": "クォータ認識モード",
2176
+ "quota_aware_tooltip": "クォータが少なくなると、大きなタスクを始める前に Claude が残量とリセット時刻を伝えます。小さな部分を先に進めるか、リセットを待つか選べます。",
2177
+ "quota_aware_enabled_msg": "クォータ認識モードを有効にしました。Claude Code を再起動してください。",
2178
+ "quota_aware_disabled_msg": "クォータ認識モードを無効にしました。Claude Code を再起動してください。",
2179
+ "quota_aware_action_failed": "クォータ認識モードを切り替えられませんでした。",
2180
+ "claude_beginner_error": "初心者モード:{error}"
2057
2181
  },
2058
2182
  "ko": {
2059
2183
  "panel_default_name": "기본",
@@ -2098,6 +2222,10 @@
2098
2222
  "update_btn_download": "다운로드",
2099
2223
  "update_btn_later": "나중에",
2100
2224
  "update_btn_skip": "이 버전 건너뛰기",
2225
+ "whats_new_title": "usage {version} 변경 사항",
2226
+ "whats_new_ok": "확인",
2227
+ "whats_new_open": "릴리스 노트",
2228
+ "whats_new_open_prompt": "브라우저에서 전체 릴리스 노트를 여시겠습니까?",
2101
2229
  "update_no_new_version": "최신 버전입니다",
2102
2230
  "check_update": "업데이트 확인",
2103
2231
  "update_check_failed": "업데이트 확인 실패",
@@ -2374,7 +2502,7 @@
2374
2502
  "terse_mode_menu": "토큰 절약 모드",
2375
2503
  "terse_mode_tooltip": "새 세션을 열 때 Claude에게 더 짧고 쉬운 말로 답하도록 자동으로 요청해 출력 token을 아낍니다 (Codex가 설치되어 있으면 그쪽에도 적용됩니다). 코드, 명령어, 경로, 오류 메시지는 줄이지 않습니다. 이후 보내는 각 메시지에서도 간결함을 유지하도록 가볍게 다시 일러줍니다.",
2376
2504
  "terse_reminder_instruction": "[간결 모드 계속 적용 중: 이 답변은 짧게, 쉬운 말로; 코드, 명령어, 경로, 오류 메시지는 한 글자 그대로; 보안 경고와 되돌릴 수 없는 작업 확인은 여전히 완전히 적을 것; 사용자가 자세한 설명이나 단계별 안내를 명확히 요청했다면 그 요구를 우선하세요.]",
2377
- "terse_mode_instruction": "(이 대화에는 '간결 모드'가 켜져 있습니다. 첫 답변 맨 앞에서 이 사실을 언급하세요 — 이미 다른 인사(예: 진행 상황 인수인계)를 할 예정이라면, '간결 모드가 켜졌다'는 내용을 그 인사에 자연스럽게 합쳐서 한 줄로 말하고 따로 추가하지 마세요. 합칠 인사가 없다면 직접 한 줄로 \"🐾 간결 모드를 켰어요. 답변을 짧게 이어갈게요!\"라고 말하세요. 대화 전체에 적용됩니다. 빈말, 지나친 격식, 반복되는 서두, 불필요한 연결 문장은 덜어내고, 짧은 문장이나 목록으로 충분하면 긴 단락으로 늘이지 마세요. 단어는 짧은 쪽을 고르세요 (예: \"이 문제에 대한 해결책을 구현하다\" 대신 \"고치다\"). 간결함은 예산이고, 쉬운 말은 스타일입니다. 짧다고 해서 이해하기 어려워서는 안 됩니다. 전문 용어보다 일상적인 단어를 고르세요(예: \"먼저 영속화하다\" 대신 \"먼저 저장하다\"). 전문 용어를 꼭 써야 한다면, 처음 사용할 때 10글자 이내로 쉬운 설명을 덧붙이고 그 뒤로는 그냥 쓰세요. 도구나 서브에이전트의 출력을 그대로 붙여넣지 말 것: 먼저 이해한 뒤 쉬운 말로 결론으로 다시 쓰고, 코드·명령어·경로·오류 메시지만 원문 그대로 둔다. 비유는 빼주세요. 명사화는 동사로 (수정을 진행한다 → 고친다). 예고만 하는 문장은 삭제 (\"이제 설명하겠습니다\", \"주목할 점은\"). 각 문장은 아는 것 먼저, 새 정보 나중. 마무리는 무엇을 했는지, 성공했는지, 다음에 무엇을 할 것인지 이 3가지만 적으세요. 장식용 표는 넣지 마세요. 첫 인사말을 제외하면 본문에 이모지는 넣지 마세요. 도구 이름이나 호출 과정을 중계할 필요는 없지만, 도구를 쓰기 전에 무엇을 할지 한 줄로 말하는 것은 괜찮습니다. 임의로 줄임말을 만들지 마세요 (예: \"설정\"을 \"설\"로 줄이는 식) — 토크나이저 상으로는 완전한 단어와 길이가 같아서 절약되는 게 없고 읽는 사람만 더 해석해야 하니, 완전한 단어를 쓰는 편이 더 낫습니다. 코드, 명령어, 파일 경로, 오류 메시지는 한 글자도 생략하거나 바꾸면 안 됩니다. 보안 경고, 되돌릴 수 없는 작업의 확인, 접속사를 생략하면 오독 위험이 있는 다단계 설명에서는 간결함보다 먼저 완전하고 명확하게 전달한 뒤, 전달이 끝나면 다시 간결 모드로 돌아가세요. 사용자가 자세한 설명이나 단계별 안내를 명확히 요청했거나, 상황상 충분한 추론이 꼭 필요하다면 그 요구를 우선하고, 이 모드 때문에 핵심 정보를 빼먹지 마세요.)",
2505
+ "terse_mode_instruction": "(이 대화에는 '간결 모드'가 켜져 있습니다. 첫 답변 맨 앞에서 이 사실을 언급하세요 — 이미 다른 인사(예: 진행 상황 인수인계)를 할 예정이라면, '간결 모드가 켜졌다'는 내용을 그 인사에 자연스럽게 합쳐서 한 줄로 말하고 따로 추가하지 마세요. 합칠 인사가 없다면 직접 한 줄로 \"🐾 간결 모드를 켰어요. 답변을 짧게 이어갈게요!\"라고 말하세요. 대화 전체에 적용됩니다. 빈말, 지나친 격식, 반복되는 서두, 불필요한 연결 문장은 덜어내고, 짧은 문장이나 목록으로 충분하면 긴 단락으로 늘이지 마세요. 단어는 짧은 쪽을 고르세요 (예: \"이 문제에 대한 해결책을 구현하다\" 대신 \"고치다\"). 간결함은 예산이고, 쉬운 말은 스타일입니다. 짧다고 해서 이해하기 어려워서는 안 됩니다. 전문 용어보다 일상적인 단어를 고르세요(예: \"먼저 영속화하다\" 대신 \"먼저 저장하다\"). 전문 용어를 꼭 써야 한다면, 처음 사용할 때 10글자 이내로 쉬운 설명을 덧붙이고 그 뒤로는 그냥 쓰세요. 도구나 서브에이전트의 출력을 그대로 붙여넣지 말 것: 먼저 이해한 뒤 쉬운 말로 결론으로 다시 쓰고, 코드·명령어·경로·오류 메시지만 원문 그대로 둔다. 비유는 빼주세요. 명사화는 동사로 (수정을 진행한다 → 고친다). 예고만 하는 문장은 삭제 (\"이제 설명하겠습니다\", \"주목할 점은\"). 각 문장은 아는 것 먼저, 새 정보 나중. 한 문장에는 한 가지 내용만, 문장은 대략 40자 이내로. 능동문으로 쓰세요 (\"키가 프로그램에 의해 전송된다\" 대신 \"프로그램이 키를 보낸다\"). 같은 대상은 끝까지 같은 단어로 부르세요 (한 번 \"hook\"이라고 했으면 \"훅 함수\"로 바꾸지 않기). 마무리는 무엇을 했는지, 성공했는지, 다음에 무엇을 할 것인지 이 3가지만 적으세요. 장식용 표는 넣지 마세요. 첫 인사말을 제외하면 본문에 이모지는 넣지 마세요. 도구 이름이나 호출 과정을 중계할 필요는 없지만, 도구를 쓰기 전에 무엇을 할지 한 줄로 말하는 것은 괜찮습니다. 임의로 줄임말을 만들지 마세요 (예: \"설정\"을 \"설\"로 줄이는 식) — 토크나이저 상으로는 완전한 단어와 길이가 같아서 절약되는 게 없고 읽는 사람만 더 해석해야 하니, 완전한 단어를 쓰는 편이 더 낫습니다. 코드, 명령어, 파일 경로, 오류 메시지는 한 글자도 생략하거나 바꾸면 안 됩니다. 보안 경고, 되돌릴 수 없는 작업의 확인, 접속사를 생략하면 오독 위험이 있는 다단계 설명에서는 간결함보다 먼저 완전하고 명확하게 전달한 뒤, 전달이 끝나면 다시 간결 모드로 돌아가세요. 사용자가 자세한 설명이나 단계별 안내를 명확히 요청했거나, 상황상 충분한 추론이 꼭 필요하다면 그 요구를 우선하고, 이 모드 때문에 핵심 정보를 빼먹지 마세요.)",
2378
2506
  "terse_mode_enabled_msg": "활성화했습니다. 이제 새 Claude Code 세션에서는 더 간결하고 쉬운 말로 답하도록 자동으로 요청합니다 (Codex가 설치되어 있으면 그쪽에도 적용됩니다). 코드, 명령어, 경로, 오류 메시지는 줄이지 않습니다. 다음 세션 시작 시 적용됩니다.",
2379
2507
  "terse_mode_disabled_msg": "비활성화했습니다. 새 세션에서 더 이상 간결한 답변을 자동 요청하지 않습니다.",
2380
2508
  "resume_enabled_restart": "활성화했습니다. 이제 새 Claude Code 세션을 시작하면 이 프로젝트에서 지난번에 어디까지 했는지 자동으로 파악합니다. 화면에는 안내가 표시되지 않지만(정상입니다) Claude는 알고 있습니다. 다음 세션 시작 시 적용됩니다.",
@@ -2542,6 +2670,8 @@
2542
2670
  "claude_pane_sidecar_error": "패널 설정을 읽을 수 없습니다: {error}",
2543
2671
  "menu_badge_new": "신규",
2544
2672
  "claude_pane_menu": "Claude Code 사이드 패널",
2673
+ "claude_code_section": "Claude Code",
2674
+ "claude_pane_section_menu": "사이드 패널",
2545
2675
  "claude_pane_tooltip": "Claude Code에 사용량, 대화 및 백그라운드 작업 표시",
2546
2676
  "claude_pane_enabled_msg": "사이드 패널을 켰습니다. 새 Claude Code 대화를 열거나 대화에서 /reload-plugins를 실행하세요. 터미널이 좁으면 /usage-dash로 패널을 여세요.",
2547
2677
  "claude_pane_fullscreen_enabled_note": "Claude Code의 전체 화면 레이아웃도 켜서 패널이 오른쪽에 표시됩니다. 사이드 패널을 끄면 원래대로 돌아갑니다.",
@@ -2567,6 +2697,31 @@
2567
2697
  "keeper_failed_line": "마지막 실패 {time}: {tool} ({reason})",
2568
2698
  "terse_codex_hook_untrusted": "Codex가 usage의 간결 모드 hook을 아직 승인하지 않아 Codex에서 작동하지 않습니다. Codex에서 /hooks를 입력해 승인하세요.",
2569
2699
  "terse_codex_hook_disabled": "Codex에서 usage의 간결 모드 hook을 비활성화했습니다. Codex에서 /hooks를 입력해 다시 활성화하세요.",
2570
- "claude_pane_stopped": "중지됨"
2700
+ "claude_pane_stopped": "중지됨",
2701
+ "claude_beginner_menu": "초보자 모드",
2702
+ "claude_beginner_tooltip": "Claude의 답변을 쉽게 이해하세요. 답변 후 입력창 위에 전문 용어를 최대 3개까지 쉽게 설명합니다. 9를 누르면 이해한 것으로 기록하여 더 이상 표시하지 않고, 나중에 새 대화에서 객관식 퀴즈를 냅니다. Claude 사용량을 조금 씁니다.",
2703
+ "claude_beginner_title": "용어 안내",
2704
+ "claude_beginner_history_title": "용어 안내 기록",
2705
+ "claude_beginner_description": "용어 안내 기록 열기",
2706
+ "claude_beginner_all_known": "모두 이해했어요",
2707
+ "claude_beginner_dismiss": "닫기",
2708
+ "claude_beginner_known": "이해했어요",
2709
+ "claude_beginner_unknown": "아직 모르겠어요",
2710
+ "claude_beginner_empty": "아직 용어 기록이 없습니다.",
2711
+ "claude_beginner_opened": "용어 안내 기록을 열었습니다.",
2712
+ "claude_beginner_quiz_title": "퀴즈",
2713
+ "claude_beginner_quiz_question": "{term}의 뜻은?",
2714
+ "claude_beginner_quiz_right": "정답! {days}일 후에 다시 출제합니다.",
2715
+ "claude_beginner_quiz_done": "정답! 이 용어를 익혔어요.",
2716
+ "claude_beginner_quiz_wrong": "오답이에요. 정답: {answer}. 이 용어는 용어 힌트에 다시 나타납니다.",
2717
+ "claude_beginner_enabled_msg": "초보자 모드를 켰습니다. Claude Code를 다시 시작하세요.",
2718
+ "claude_beginner_disabled_msg": "초보자 모드를 껐습니다. Claude Code를 다시 시작하세요.",
2719
+ "claude_beginner_action_failed": "초보자 모드를 전환할 수 없습니다",
2720
+ "quota_aware_menu": "할당량 인식 모드",
2721
+ "quota_aware_tooltip": "할당량이 부족해지면 Claude가 큰 작업을 시작하기 전에 남은 양과 초기화 시간을 알려 줍니다. 작은 부분을 먼저 진행하거나 초기화를 기다릴 수 있습니다.",
2722
+ "quota_aware_enabled_msg": "할당량 인식 모드를 켰습니다. Claude Code를 다시 시작해 주세요.",
2723
+ "quota_aware_disabled_msg": "할당량 인식 모드를 껐습니다. Claude Code를 다시 시작해 주세요.",
2724
+ "quota_aware_action_failed": "할당량 인식 모드를 변경할 수 없습니다.",
2725
+ "claude_beginner_error": "초보자 모드: {error}"
2571
2726
  }
2572
2727
  }