Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,13 @@ Notable changes to Claude Code Usage Monitor are documented here, newest first.
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), with
changes grouped into Added, Changed, Fixed, and Removed where applicable.

## [Unreleased]

### Changed

- Show Antigravity's Gemini usage labels at rest and reveal the Claude/GPT labels while the cursor is over the Antigravity tile, replacing the timed 8 s / 2 s alternation.
- With only one Antigravity pool enabled, hovering the Antigravity tile crossfades to the other pool's labels and gauges, the same way as with both pools enabled.

## [2.22.4] - 2026-10-25

### Fixed
Expand Down
24 changes: 24 additions & 0 deletions src/app_settings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ pub struct SettingsFile {
/// the widget counts down towards a limit rather than up from zero.
#[serde(default)]
pub usage_countdown: bool,
#[serde(default = "default_true")]
pub show_pace: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub active_theme_path: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
Expand Down Expand Up @@ -139,6 +141,7 @@ impl Default for SettingsFile {
show_copilot: false,
custom_theme_enabled: true,
usage_countdown: false,
show_pace: true,
active_theme_path: None,
dashboard_width: None,
dashboard_height: None,
Expand Down Expand Up @@ -669,6 +672,27 @@ mod tests {
assert_eq!(settings_json(&counting_down)["usage_countdown"], true);
}

#[test]
fn show_pace_defaults_to_on_and_round_trips() {
let settings = SettingsFile::default();
assert!(settings.show_pace);
assert_eq!(settings_json(&settings)["show_pace"], true);

let legacy = decode_settings(r#"{"poll_interval_ms":900000}"#).unwrap();
assert!(legacy.show_pace);

for show_pace in [false, true] {
let settings = SettingsFile {
show_pace,
..Default::default()
};
let json = settings_json(&settings);
assert_eq!(json["show_pace"], show_pace);
let loaded = decode_settings(&json.to_string()).unwrap();
assert_eq!(loaded.show_pace, show_pace);
}
}

#[test]
fn settings_always_use_the_theme_widget() {
let mut settings = SettingsFile {
Expand Down
46 changes: 36 additions & 10 deletions src/context_menu.rs
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,13 @@ pub enum ContextMenuAction {
},
ToggleAntigravityGemini,
ToggleAntigravityExternal,
ToggleClaudeMain,
ToggleClaudeX,
ToggleCodexMain,
ToggleCodexX,
ToggleStartup,
ToggleTaskbarLock,
ToggleShowPace,
ToggleWidget,
/// Accepted only so menus saved by older versions can be loaded and
/// cleaned up. New menus cannot create or execute this legacy action.
Expand Down Expand Up @@ -310,7 +315,11 @@ pub fn rendered_label(
"Refresh" => language.text("Refresh"),
"Exit" => language.text("Exit"),
"Claude Code" => language.text("Claude Code"),
"Claude Code (Main)" => language.text("Claude Code (Main)"),
"Claude Code X" => language.text("Claude Code X"),
"Codex" => language.text("Codex"),
"Codex (Main)" => language.text("Codex (Main)"),
"Codex X" => language.text("Codex X"),
"Antigravity" => language.text("Antigravity"),
"OpenCode" => language.text("OpenCode"),
"Cursor" => language.text("Cursor"),
Expand All @@ -325,6 +334,7 @@ pub fn rendered_label(
"Check for updates" => language.text("Check for updates"),
"Lock in taskbar" => language.text("Lock in taskbar"),
"Show widget" => language.text("Show widget"),
"Show pace" => language.text("Show pace"),
_ => label,
};
crate::theme_engine::format_template(translated, context)
Expand Down Expand Up @@ -373,19 +383,17 @@ pub fn classic_context_menu() -> ContextMenuDocument {
"Providers",
vec![
ContextMenuItem::action(
"provider-claude",
"Claude Code",
Action::ToggleProvider {
provider: Provider::Claude,
},
"provider-claude-main",
"Claude Code (Main)",
Action::ToggleClaudeMain,
),
ContextMenuItem::action("provider-claude-x", "Claude Code X", Action::ToggleClaudeX),
ContextMenuItem::action(
"provider-codex",
"Codex",
Action::ToggleProvider {
provider: Provider::Codex,
},
"provider-codex-main",
"Codex (Main)",
Action::ToggleCodexMain,
),
ContextMenuItem::action("provider-codex-x", "Codex X", Action::ToggleCodexX),
ContextMenuItem::action(
"provider-antigravity-gemini",
"Antigravity (Gemini)",
Expand Down Expand Up @@ -457,6 +465,7 @@ pub fn classic_context_menu() -> ContextMenuDocument {
Action::ToggleStartup,
),
ContextMenuItem::action("lock-taskbar", "Lock in taskbar", Action::ToggleTaskbarLock),
ContextMenuItem::action("show-pace", "Show pace", Action::ToggleShowPace),
ContextMenuItem::submenu("language", "Language", languages),
ContextMenuItem::separator("settings-separator"),
ContextMenuItem::action(
Expand Down Expand Up @@ -718,6 +727,23 @@ mod tests {
assert!(menu.validate().is_empty());
assert!(menu.items.iter().any(|item| item.id == "refresh"));
assert!(menu.items.iter().any(|item| item.id == "update-frequency"));
let settings = menu
.items
.iter()
.find(|item| item.id == "settings")
.unwrap();
let ContextMenuItemKind::Submenu { items } = &settings.kind else {
panic!("Settings must be a submenu");
};
assert!(items.iter().any(|item| {
item.label == "Show pace"
&& matches!(
&item.kind,
ContextMenuItemKind::Action {
action: ContextMenuAction::ToggleShowPace
}
)
}));
assert!(serde_json::to_string(&menu)
.unwrap()
.contains("provider-opencode"));
Expand Down
5 changes: 5 additions & 0 deletions src/localization/locales/de.toml
Original file line number Diff line number Diff line change
Expand Up @@ -123,10 +123,14 @@ copilot_window_title = "Copilot-Nutzungsmonitor"
"Choose asset..." = "Medium auswählen..."
"Choose one action for this context menu item." = "Wählen Sie eine Aktion für diesen Kontextmenüeintrag."
"Claude Code" = "Claude Code"
"Claude Code (Main)" = "Claude Code (Main)"
"Claude Code X" = "Claude Code X"
"Click" = "Click"
"Close asset library" = "Close asset library"
"Close Builder" = "Baukasten schließen"
"Codex" = "Codex"
"Codex (Main)" = "Codex (Main)"
"Codex X" = "Codex X"
"Collect usage from Anthropic" = "Nutzungsdaten von Anthropic abrufen"
"Collect usage from GitHub" = "Nutzungsdaten von GitHub abrufen"
"Collect usage from Google" = "Nutzungsdaten von Google abrufen"
Expand Down Expand Up @@ -360,6 +364,7 @@ copilot_window_title = "Copilot-Nutzungsmonitor"
"Short duration" = "Kurze Dauer"
"Show context menu" = "Kontextmenü anzeigen"
"Show dashboard" = "Dashboard anzeigen"
"Show pace" = "Show pace"
"Show widget" = "Widget anzeigen"
"Size" = "Größe"
"Smaller value" = "Kleinerer Wert"
Expand Down
5 changes: 5 additions & 0 deletions src/localization/locales/en.toml
Original file line number Diff line number Diff line change
Expand Up @@ -123,10 +123,14 @@ copilot_window_title = "Copilot Usage Monitor"
"Choose asset..." = "Choose asset..."
"Choose one action for this context menu item." = "Choose one action for this context menu item."
"Claude Code" = "Claude Code"
"Claude Code (Main)" = "Claude Code (Main)"
"Claude Code X" = "Claude Code X"
"Click" = "Click"
"Close asset library" = "Close asset library"
"Close Builder" = "Close Builder"
"Codex" = "Codex"
"Codex (Main)" = "Codex (Main)"
"Codex X" = "Codex X"
"Collect usage from Anthropic" = "Collect usage from Anthropic"
"Collect usage from GitHub" = "Collect usage from GitHub"
"Collect usage from Google" = "Collect usage from Google"
Expand Down Expand Up @@ -360,6 +364,7 @@ copilot_window_title = "Copilot Usage Monitor"
"Short duration" = "Short duration"
"Show context menu" = "Show context menu"
"Show dashboard" = "Show dashboard"
"Show pace" = "Show pace"
"Show widget" = "Show widget"
"Size" = "Size"
"Smaller value" = "Smaller value"
Expand Down
5 changes: 5 additions & 0 deletions src/localization/locales/es.toml
Original file line number Diff line number Diff line change
Expand Up @@ -123,10 +123,14 @@ copilot_window_title = "Monitor de uso de Copilot"
"Choose asset..." = "Elegir recurso..."
"Choose one action for this context menu item." = "Elija una acción para este elemento del menú contextual."
"Claude Code" = "Claude Code"
"Claude Code (Main)" = "Claude Code (Main)"
"Claude Code X" = "Claude Code X"
"Click" = "Click"
"Close asset library" = "Close asset library"
"Close Builder" = "Cerrar Constructor"
"Codex" = "Codex"
"Codex (Main)" = "Codex (Main)"
"Codex X" = "Codex X"
"Collect usage from Anthropic" = "Recopilar uso de Anthropic"
"Collect usage from GitHub" = "Recopilar uso de GitHub"
"Collect usage from Google" = "Recopilar uso de Google"
Expand Down Expand Up @@ -360,6 +364,7 @@ copilot_window_title = "Monitor de uso de Copilot"
"Short duration" = "Duración corta"
"Show context menu" = "Mostrar menú contextual"
"Show dashboard" = "Mostrar panel"
"Show pace" = "Show pace"
"Show widget" = "Mostrar widget"
"Size" = "Tamaño"
"Smaller value" = "Valor menor"
Expand Down
5 changes: 5 additions & 0 deletions src/localization/locales/fr.toml
Original file line number Diff line number Diff line change
Expand Up @@ -123,10 +123,14 @@ copilot_window_title = "Moniteur d'utilisation Copilot"
"Choose asset..." = "Choisir une ressource..."
"Choose one action for this context menu item." = "Choisissez une action pour cet élément du menu contextuel."
"Claude Code" = "Claude Code"
"Claude Code (Main)" = "Claude Code (Main)"
"Claude Code X" = "Claude Code X"
"Click" = "Click"
"Close asset library" = "Close asset library"
"Close Builder" = "Fermer le Constructeur"
"Codex" = "Codex"
"Codex (Main)" = "Codex (Main)"
"Codex X" = "Codex X"
"Collect usage from Anthropic" = "Collecter l'utilisation depuis Anthropic"
"Collect usage from GitHub" = "Collecter l'utilisation depuis GitHub"
"Collect usage from Google" = "Collecter l'utilisation depuis Google"
Expand Down Expand Up @@ -360,6 +364,7 @@ copilot_window_title = "Moniteur d'utilisation Copilot"
"Short duration" = "Durée courte"
"Show context menu" = "Afficher le menu contextuel"
"Show dashboard" = "Afficher le tableau de bord"
"Show pace" = "Show pace"
"Show widget" = "Afficher le widget"
"Size" = "Taille"
"Smaller value" = "Valeur la plus petite"
Expand Down
5 changes: 5 additions & 0 deletions src/localization/locales/ja.toml
Original file line number Diff line number Diff line change
Expand Up @@ -125,10 +125,14 @@ copilot_window_title = "Copilot 使用量モニター"
"Choose asset..." = "アセットを選択..."
"Choose one action for this context menu item." = "このコンテキストメニュー項目のアクションを1つ選択します。"
"Claude Code" = "Claude Code"
"Claude Code (Main)" = "Claude Code (Main)"
"Claude Code X" = "Claude Code X"
"Click" = "Click"
"Close asset library" = "Close asset library"
"Close Builder" = "ビルダーを閉じる"
"Codex" = "Codex"
"Codex (Main)" = "Codex (Main)"
"Codex X" = "Codex X"
"Collect usage from Anthropic" = "Anthropic から使用量を取得"
"Collect usage from GitHub" = "GitHub から使用量を取得"
"Collect usage from Google" = "Google から使用量を取得"
Expand Down Expand Up @@ -362,6 +366,7 @@ copilot_window_title = "Copilot 使用量モニター"
"Short duration" = "短い期間"
"Show context menu" = "コンテキストメニューを表示"
"Show dashboard" = "ダッシュボードを表示"
"Show pace" = "Show pace"
"Show widget" = "ウィジェットを表示"
"Size" = "サイズ"
"Smaller value" = "小さい値"
Expand Down
5 changes: 5 additions & 0 deletions src/localization/locales/ko.toml
Original file line number Diff line number Diff line change
Expand Up @@ -125,10 +125,14 @@ copilot_window_title = "Copilot 사용량 모니터"
"Choose asset..." = "에셋 선택..."
"Choose one action for this context menu item." = "이 컨텍스트 메뉴 항목에 사용할 작업 하나를 선택하세요."
"Claude Code" = "Claude Code"
"Claude Code (Main)" = "Claude Code (Main)"
"Claude Code X" = "Claude Code X"
"Click" = "Click"
"Close asset library" = "Close asset library"
"Close Builder" = "빌더 닫기"
"Codex" = "Codex"
"Codex (Main)" = "Codex (Main)"
"Codex X" = "Codex X"
"Collect usage from Anthropic" = "Anthropic에서 사용량 수집"
"Collect usage from GitHub" = "GitHub에서 사용량 수집"
"Collect usage from Google" = "Google에서 사용량 수집"
Expand Down Expand Up @@ -362,6 +366,7 @@ copilot_window_title = "Copilot 사용량 모니터"
"Short duration" = "간단한 기간"
"Show context menu" = "컨텍스트 메뉴 표시"
"Show dashboard" = "대시보드 표시"
"Show pace" = "Show pace"
"Show widget" = "위젯 표시"
"Size" = "크기"
"Smaller value" = "더 작은 값"
Expand Down
5 changes: 5 additions & 0 deletions src/localization/locales/nl.toml
Original file line number Diff line number Diff line change
Expand Up @@ -123,10 +123,14 @@ copilot_window_title = "Copilot-gebruiksmonitor"
"Choose asset..." = "Media kiezen..."
"Choose one action for this context menu item." = "Kies één actie voor dit contextmenu-item."
"Claude Code" = "Claude Code"
"Claude Code (Main)" = "Claude Code (Main)"
"Claude Code X" = "Claude Code X"
"Click" = "Click"
"Close asset library" = "Mediabibliotheek sluiten"
"Close Builder" = "Bouwer sluiten"
"Codex" = "Codex"
"Codex (Main)" = "Codex (Main)"
"Codex X" = "Codex X"
"Collect usage from Anthropic" = "Gebruiksgegevens ophalen bij Anthropic"
"Collect usage from GitHub" = "Gebruiksgegevens ophalen bij GitHub"
"Collect usage from Google" = "Gebruiksgegevens ophalen bij Google"
Expand Down Expand Up @@ -360,6 +364,7 @@ copilot_window_title = "Copilot-gebruiksmonitor"
"Short duration" = "Korte duur"
"Show context menu" = "Contextmenu tonen"
"Show dashboard" = "Dashboard tonen"
"Show pace" = "Show pace"
"Show widget" = "Widget tonen"
"Size" = "Grootte"
"Smaller value" = "Kleinste waarde"
Expand Down
5 changes: 5 additions & 0 deletions src/localization/locales/pl.toml
Original file line number Diff line number Diff line change
Expand Up @@ -123,10 +123,14 @@ copilot_window_title = "Monitor zużycia Copilot"
"Choose asset..." = "Wybierz zasób..."
"Choose one action for this context menu item." = "Wybierz jedną akcję dla tego elementu menu kontekstowego."
"Claude Code" = "Claude Code"
"Claude Code (Main)" = "Claude Code (Main)"
"Claude Code X" = "Claude Code X"
"Click" = "Kliknięcie"
"Close asset library" = "Zamknij bibliotekę zasobów"
"Close Builder" = "Zamknij kreator"
"Codex" = "Codex"
"Codex (Main)" = "Codex (Main)"
"Codex X" = "Codex X"
"Collect usage from Anthropic" = "Zbieraj dane o zużyciu z Anthropic"
"Collect usage from GitHub" = "Zbieraj dane o zużyciu z GitHuba"
"Collect usage from Google" = "Zbieraj dane o zużyciu z Google"
Expand Down Expand Up @@ -360,6 +364,7 @@ copilot_window_title = "Monitor zużycia Copilot"
"Short duration" = "Skrócony czas trwania"
"Show context menu" = "Pokaż menu kontekstowe"
"Show dashboard" = "Pokaż panel"
"Show pace" = "Show pace"
"Show widget" = "Pokaż widżet"
"Size" = "Rozmiar"
"Smaller value" = "Mniejsza z wartości"
Expand Down
5 changes: 5 additions & 0 deletions src/localization/locales/pt-BR.toml
Original file line number Diff line number Diff line change
Expand Up @@ -123,10 +123,14 @@ copilot_window_title = "Monitor de uso do Copilot"
"Choose asset..." = "Escolher recurso..."
"Choose one action for this context menu item." = "Escolha uma ação para este item do menu de contexto."
"Claude Code" = "Claude Code"
"Claude Code (Main)" = "Claude Code (Main)"
"Claude Code X" = "Claude Code X"
"Click" = "Click"
"Close asset library" = "Close asset library"
"Close Builder" = "Fechar Construtor"
"Codex" = "Codex"
"Codex (Main)" = "Codex (Main)"
"Codex X" = "Codex X"
"Collect usage from Anthropic" = "Coletar uso da Anthropic"
"Collect usage from GitHub" = "Coletar uso do GitHub"
"Collect usage from Google" = "Coletar uso do Google"
Expand Down Expand Up @@ -360,6 +364,7 @@ copilot_window_title = "Monitor de uso do Copilot"
"Short duration" = "Duração curta"
"Show context menu" = "Mostrar menu de contexto"
"Show dashboard" = "Mostrar painel"
"Show pace" = "Show pace"
"Show widget" = "Mostrar widget"
"Size" = "Tamanho"
"Smaller value" = "Menor valor"
Expand Down
5 changes: 5 additions & 0 deletions src/localization/locales/ru.toml
Original file line number Diff line number Diff line change
Expand Up @@ -123,10 +123,14 @@ copilot_window_title = "Монитор использования Copilot"
"Choose asset..." = "Выбрать ресурс..."
"Choose one action for this context menu item." = "Выберите одно действие для этого пункта контекстного меню."
"Claude Code" = "Claude Code"
"Claude Code (Main)" = "Claude Code (Основной)"
"Claude Code X" = "Claude Code X"
"Click" = "Click"
"Close asset library" = "Close asset library"
"Close Builder" = "Закрыть конструктор"
"Codex" = "Codex"
"Codex (Main)" = "Codex (Основной)"
"Codex X" = "Codex X"
"Collect usage from Anthropic" = "Получать данные об использовании Anthropic"
"Collect usage from GitHub" = "Получать данные об использовании GitHub"
"Collect usage from Google" = "Получать данные об использовании Google"
Expand Down Expand Up @@ -360,6 +364,7 @@ copilot_window_title = "Монитор использования Copilot"
"Short duration" = "Краткая длительность"
"Show context menu" = "Показать контекстное меню"
"Show dashboard" = "Показать панель"
"Show pace" = "Показывать темп"
"Show widget" = "Показать виджет"
"Size" = "Размер"
"Smaller value" = "Меньшее значение"
Expand Down
Loading
Loading