diff options
| author | JJ Liebig <jonathan.liebig@gmail.com> | 2026-08-10 20:49:41 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-08-10 21:49:41 +0300 |
| commit | 1ac44afcc091ef70890ebcb5ff409ae6dc0eef53 (patch) | |
| tree | 6c399ab93fa285093920844927610c7c4d0cdba8 | |
| parent | 7e4ab7b034078b5ac22b514fb7008f0b288687a6 (diff) | |
fix(windows): strip elevated terminal title decoration (#2632)
| -rw-r--r-- | src/platform/mod.rs | 5 | ||||
| -rw-r--r-- | src/platform/windows.rs | 5 | ||||
| -rw-r--r-- | src/terminal/title.rs | 16 |
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); + } } |
