aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJJ Liebig <jonathan.liebig@gmail.com>2026-08-10 20:49:41 +0200
committerGitHub <noreply@github.com>2026-08-10 21:49:41 +0300
commit1ac44afcc091ef70890ebcb5ff409ae6dc0eef53 (patch)
tree6c399ab93fa285093920844927610c7c4d0cdba8
parent7e4ab7b034078b5ac22b514fb7008f0b288687a6 (diff)
fix(windows): strip elevated terminal title decoration (#2632)
-rw-r--r--src/platform/mod.rs5
-rw-r--r--src/platform/windows.rs5
-rw-r--r--src/terminal/title.rs16
3 files changed, 25 insertions, 1 deletions
diff --git a/src/platform/mod.rs b/src/platform/mod.rs
index d8613be4..e3f9c7f4 100644
--- a/src/platform/mod.rs
+++ b/src/platform/mod.rs
@@ -40,6 +40,11 @@ pub(crate) fn apply_pane_runtime_marker(command: &mut portable_pty::CommandBuild
}
#[cfg(not(windows))]
+pub(crate) fn terminal_title_for_presentation(title: &str) -> &str {
+ title
+}
+
+#[cfg(not(windows))]
fn apply_pane_runtime_marker_platform(_command: &mut portable_pty::CommandBuilder) {}
pub(crate) fn configure_background_command(command: &mut std::process::Command) {
diff --git a/src/platform/windows.rs b/src/platform/windows.rs
index aef528e5..05fdfe72 100644
--- a/src/platform/windows.rs
+++ b/src/platform/windows.rs
@@ -82,6 +82,11 @@ use super::{ClipboardImage, ForegroundJob, Signal};
const STILL_ACTIVE: u32 = 259;
const FOREGROUND_PROCESS_SNAPSHOT_CACHE_TTL: Duration = Duration::from_millis(250);
const PANE_RUNTIME_MARKER_ENV_VAR: &str = "HERDR_PANE_RUNTIME_ID";
+
+pub(crate) fn terminal_title_for_presentation(title: &str) -> &str {
+ title.strip_prefix("Administrator: ").unwrap_or(title)
+}
+
const MAX_PROCESS_ENVIRONMENT_BYTES: usize = 256 * 1024;
const PROCESS_ENVIRONMENT_READ_CHUNK_BYTES: usize = 16 * 1024;
const PROCESS_RUNTIME_MARKER_CACHE_CAPACITY: usize = 1_024;
diff --git a/src/terminal/title.rs b/src/terminal/title.rs
index 32ba19c4..6958be00 100644
--- a/src/terminal/title.rs
+++ b/src/terminal/title.rs
@@ -1,7 +1,7 @@
const CLAUDE_ACTIVITY_GLYPHS: &str = "·✢✳✶✻✽";
pub(crate) fn stripped_terminal_title(title: &str) -> Option<String> {
- let title = title.trim();
+ let title = crate::platform::terminal_title_for_presentation(title).trim();
if title.is_empty() {
return None;
}
@@ -61,4 +61,18 @@ mod tests {
assert_eq!(stripped_terminal_title(" "), None);
assert_eq!(stripped_terminal_title("⠋ "), None);
}
+
+ #[cfg(windows)]
+ #[test]
+ fn strips_one_windows_elevation_decoration_before_activity_glyph() {
+ assert_eq!(
+ stripped_terminal_title("Administrator: ⠋ task").as_deref(),
+ Some("task")
+ );
+ assert_eq!(
+ stripped_terminal_title("Administrator: Administrator: task").as_deref(),
+ Some("Administrator: task")
+ );
+ assert_eq!(stripped_terminal_title("Administrator: "), None);
+ }
}