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.
/// `"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 {
match value {
"auto" => "Auto",
"groknight" => "Grok Night",
"grokday" => "Grok Day",
"groknight" => "Kigi Night",
"grokday" => "Kigi Day",
"tokyonight" => "Tokyo Night",
"rosepine-moon" => "Rose Pine Moon",
other => other,
@@ -74,7 +74,7 @@ pub(super) fn handle_permission_request(
{
app.notification_service.notify(NotificationEvent {
kind: NotificationEventKind::ApprovalRequired,
title: "Grok".into(),
title: "Kigi".into(),
body: NotificationEventKind::ApprovalRequired.as_str().into(),
session_id: Some(perm.request.session_id.0.to_string()),
});
@@ -1619,8 +1619,8 @@ mod question_no_freeform_tests {
Question {
question: "You hit your free usage limit.".into(),
options: vec![
opt("Upgrade to SuperGrok", "For everyday coding"),
opt("Upgrade to SuperGrok Heavy", "Highest usage limits"),
opt("Option A", "For everyday coding"),
opt("Option B", "Highest usage limits"),
],
multi_select: Some(false),
id: None,
@@ -2993,8 +2993,8 @@ fn set_theme_toast_format_uses_display_name() {
"toast must contain label, got: {toast:?}",
);
assert!(
toast.contains("Grok Day"),
"toast must use display name `Grok Day`, not canonical `grokday`, got: {toast:?}",
toast.contains("Kigi Day"),
"toast must use display name `Kigi Day`, not canonical `grokday`, got: {toast:?}",
);
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 toast = read_toast(&app);
assert!(toast.contains("Auto dark theme"));
assert!(toast.contains("Grok Day"));
assert!(toast.contains("Kigi Day"));
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 toast = read_toast(&app);
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
+2 -2
View File
@@ -640,7 +640,7 @@ pub fn color_support_warning(
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);
}
@@ -677,7 +677,7 @@ pub fn color_support_warning(
Some("export COLORTERM=truecolor"),
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)
}
+4 -4
View File
@@ -46,12 +46,12 @@ const THEME_CHOICES: &[EnumChoice] = &[
},
EnumChoice {
canonical: "groknight",
display: "Grok Night",
display: "Kigi Night",
description: "Neutral dark with magenta accent.",
},
EnumChoice {
canonical: "grokday",
display: "Grok Day",
display: "Kigi Day",
description: "Light theme for bright environments.",
},
EnumChoice {
@@ -295,12 +295,12 @@ const SCREEN_MODE_CHOICES: &[EnumChoice] = &[
const CONCRETE_THEME_CHOICES: &[EnumChoice] = &[
EnumChoice {
canonical: "groknight",
display: "Grok Night",
display: "Kigi Night",
description: "Neutral dark with magenta accent.",
},
EnumChoice {
canonical: "grokday",
display: "Grok Day",
display: "Kigi Day",
description: "Light theme for bright environments.",
},
EnumChoice {
@@ -74,7 +74,7 @@ impl SettingCategory {
pub struct EnumChoice {
/// Canonical persisted value (e.g. `"groknight"`).
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,
/// Sub-text shown in the chooser sheet (e.g. `"Dark + magenta accent"`).
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.
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};
@@ -19,7 +19,7 @@ use base64::Engine as _;
use kigi_pager_render::clipboard::{ImageData, osc52_sink_active};
/// 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`).
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}");
}
eprintln!("grok v{} installed successfully!", version);
eprintln!(" Please restart Grok.");
eprintln!("kigi v{} installed successfully!", version);
eprintln!(" Please restart Kigi.");
return Ok(Some(version.to_string()));
}
@@ -2324,7 +2324,7 @@ pub async fn run_update(
eprintln!(" ✓ grok v{} installed successfully!", target_version);
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()))
}