Rebrand remaining user-visible Grok strings to Kigi/Kimi

The welcome hero subtitle still read "Thanks for trying Grok Build";
theme display names, the NO_COLOR/COLORTERM diagnostics notes, the
permission notification title, the self-update restart hints, and the
clipboard-wrap protocol marker all still said Grok. Canonical theme keys
(groknight/grokday) are unchanged — only display strings move.
This commit is contained in:
2026-07-17 18:22:00 -04:00
parent 9e70a8fa18
commit 5406fb7d68
10 changed files with 22 additions and 22 deletions
@@ -139,12 +139,12 @@ pub fn canonical_name(value: &str) -> Option<&'static str> {
} }
/// Human-friendly display name for a canonical theme value (e.g. /// Human-friendly display name for a canonical theme value (e.g.
/// `"groknight"` → `"Grok Night"`). Falls back to `value` verbatim. /// `"groknight"` → `"Kigi Night"`). Falls back to `value` verbatim.
pub fn display_name_for_canonical(value: &str) -> &str { pub fn display_name_for_canonical(value: &str) -> &str {
match value { match value {
"auto" => "Auto", "auto" => "Auto",
"groknight" => "Grok Night", "groknight" => "Kigi Night",
"grokday" => "Grok Day", "grokday" => "Kigi Day",
"tokyonight" => "Tokyo Night", "tokyonight" => "Tokyo Night",
"rosepine-moon" => "Rose Pine Moon", "rosepine-moon" => "Rose Pine Moon",
other => other, other => other,
@@ -74,7 +74,7 @@ pub(super) fn handle_permission_request(
{ {
app.notification_service.notify(NotificationEvent { app.notification_service.notify(NotificationEvent {
kind: NotificationEventKind::ApprovalRequired, kind: NotificationEventKind::ApprovalRequired,
title: "Grok".into(), title: "Kigi".into(),
body: NotificationEventKind::ApprovalRequired.as_str().into(), body: NotificationEventKind::ApprovalRequired.as_str().into(),
session_id: Some(perm.request.session_id.0.to_string()), session_id: Some(perm.request.session_id.0.to_string()),
}); });
@@ -1619,8 +1619,8 @@ mod question_no_freeform_tests {
Question { Question {
question: "You hit your free usage limit.".into(), question: "You hit your free usage limit.".into(),
options: vec![ options: vec![
opt("Upgrade to SuperGrok", "For everyday coding"), opt("Option A", "For everyday coding"),
opt("Upgrade to SuperGrok Heavy", "Highest usage limits"), opt("Option B", "Highest usage limits"),
], ],
multi_select: Some(false), multi_select: Some(false),
id: None, id: None,
@@ -2993,8 +2993,8 @@ fn set_theme_toast_format_uses_display_name() {
"toast must contain label, got: {toast:?}", "toast must contain label, got: {toast:?}",
); );
assert!( assert!(
toast.contains("Grok Day"), toast.contains("Kigi Day"),
"toast must use display name `Grok Day`, not canonical `grokday`, got: {toast:?}", "toast must use display name `Kigi Day`, not canonical `grokday`, got: {toast:?}",
); );
assert!(toast.contains('\u{2713}'), "toast must contain the ✓ glyph"); assert!(toast.contains('\u{2713}'), "toast must contain the ✓ glyph");
}); });
@@ -3006,7 +3006,7 @@ fn set_auto_dark_theme_toast_format_uses_display_name() {
let _ = dispatch(Action::SetAutoDarkTheme("grokday".into()), &mut app); let _ = dispatch(Action::SetAutoDarkTheme("grokday".into()), &mut app);
let toast = read_toast(&app); let toast = read_toast(&app);
assert!(toast.contains("Auto dark theme")); assert!(toast.contains("Auto dark theme"));
assert!(toast.contains("Grok Day")); assert!(toast.contains("Kigi Day"));
assert!(toast.contains('\u{2713}')); assert!(toast.contains('\u{2713}'));
}); });
} }
@@ -3017,7 +3017,7 @@ fn set_auto_light_theme_toast_format_uses_display_name() {
let _ = dispatch(Action::SetAutoLightTheme("groknight".into()), &mut app); let _ = dispatch(Action::SetAutoLightTheme("groknight".into()), &mut app);
let toast = read_toast(&app); let toast = read_toast(&app);
assert!(toast.contains("Auto light theme")); assert!(toast.contains("Auto light theme"));
assert!(toast.contains("Grok Night")); assert!(toast.contains("Kigi Night"));
}); });
} }
/// `apply_setting_rollback` for theme keys: a failed persist /// `apply_setting_rollback` for theme keys: a failed persist
+2 -2
View File
@@ -640,7 +640,7 @@ pub fn color_support_warning(
None, None,
None, None,
); );
warning.note = Some("Unset NO_COLOR and restart Grok.".to_string()); warning.note = Some("Unset NO_COLOR and restart Kigi.".to_string());
return Some(warning); return Some(warning);
} }
@@ -677,7 +677,7 @@ pub fn color_support_warning(
Some("export COLORTERM=truecolor"), Some("export COLORTERM=truecolor"),
None, None,
); );
warning.note = Some("Persist in ~/.zshrc / ~/.bashrc and restart Grok.".to_string()); warning.note = Some("Persist in ~/.zshrc / ~/.bashrc and restart Kigi.".to_string());
Some(warning) Some(warning)
} }
+4 -4
View File
@@ -46,12 +46,12 @@ const THEME_CHOICES: &[EnumChoice] = &[
}, },
EnumChoice { EnumChoice {
canonical: "groknight", canonical: "groknight",
display: "Grok Night", display: "Kigi Night",
description: "Neutral dark with magenta accent.", description: "Neutral dark with magenta accent.",
}, },
EnumChoice { EnumChoice {
canonical: "grokday", canonical: "grokday",
display: "Grok Day", display: "Kigi Day",
description: "Light theme for bright environments.", description: "Light theme for bright environments.",
}, },
EnumChoice { EnumChoice {
@@ -295,12 +295,12 @@ const SCREEN_MODE_CHOICES: &[EnumChoice] = &[
const CONCRETE_THEME_CHOICES: &[EnumChoice] = &[ const CONCRETE_THEME_CHOICES: &[EnumChoice] = &[
EnumChoice { EnumChoice {
canonical: "groknight", canonical: "groknight",
display: "Grok Night", display: "Kigi Night",
description: "Neutral dark with magenta accent.", description: "Neutral dark with magenta accent.",
}, },
EnumChoice { EnumChoice {
canonical: "grokday", canonical: "grokday",
display: "Grok Day", display: "Kigi Day",
description: "Light theme for bright environments.", description: "Light theme for bright environments.",
}, },
EnumChoice { EnumChoice {
@@ -74,7 +74,7 @@ impl SettingCategory {
pub struct EnumChoice { pub struct EnumChoice {
/// Canonical persisted value (e.g. `"groknight"`). /// Canonical persisted value (e.g. `"groknight"`).
pub canonical: &'static str, pub canonical: &'static str,
/// Display label shown in the chooser (e.g. `"Grok Night"`). /// Display label shown in the chooser (e.g. `"Kigi Night"`).
pub display: &'static str, pub display: &'static str,
/// Sub-text shown in the chooser sheet (e.g. `"Dark + magenta accent"`). /// Sub-text shown in the chooser sheet (e.g. `"Dark + magenta accent"`).
pub description: &'static str, pub description: &'static str,
@@ -23,7 +23,7 @@ const H_INSET: u16 = 2;
/// Horizontal gap (cols) between the logo and the right column inside the box. /// Horizontal gap (cols) between the logo and the right column inside the box.
const LOGO_H_PAD: u16 = 3; const LOGO_H_PAD: u16 = 3;
const HERO_SUBTITLE: &str = "Thanks for trying Grok Build, give feedback with /feedback!"; const HERO_SUBTITLE: &str = "Thanks for trying Kigi, give feedback with /feedback!";
use super::{PROMPT_HEIGHT, VERSION_GAP}; use super::{PROMPT_HEIGHT, VERSION_GAP};
@@ -19,7 +19,7 @@ use base64::Engine as _;
use kigi_pager_render::clipboard::{ImageData, osc52_sink_active}; use kigi_pager_render::clipboard::{ImageData, osc52_sink_active};
/// OSC body after `ESC ]` for a host image request. /// OSC body after `ESC ]` for a host image request.
pub const REQUEST_BODY: &[u8] = b"999;GrokWrapClipboardImage?"; pub const REQUEST_BODY: &[u8] = b"999;KigiWrapClipboardImage?";
/// Full request sequence written to stderr by the remote pager (`ESC ]` body `BEL`). /// Full request sequence written to stderr by the remote pager (`ESC ]` body `BEL`).
pub fn request_osc_bytes() -> Vec<u8> { pub fn request_osc_bytes() -> Vec<u8> {
@@ -2206,8 +2206,8 @@ pub async fn run_update(
{ {
tracing::warn!("Failed to persist auto_update=false for pinned install: {e}"); tracing::warn!("Failed to persist auto_update=false for pinned install: {e}");
} }
eprintln!("grok v{} installed successfully!", version); eprintln!("kigi v{} installed successfully!", version);
eprintln!(" Please restart Grok."); eprintln!(" Please restart Kigi.");
return Ok(Some(version.to_string())); return Ok(Some(version.to_string()));
} }
@@ -2324,7 +2324,7 @@ pub async fn run_update(
eprintln!(" ✓ grok v{} installed successfully!", target_version); eprintln!(" ✓ grok v{} installed successfully!", target_version);
if !force && std::env::var_os("KIGI_AUTO_UPDATE").is_none() { if !force && std::env::var_os("KIGI_AUTO_UPDATE").is_none() {
eprintln!(" Please restart Grok."); eprintln!(" Please restart Kigi.");
} }
Ok(Some(target_version.to_string())) Ok(Some(target_version.to_string()))
} }