generated from nhcarrigan/template
feat: expose --name CLI flag as session name at startup (#226)
Adds session_name to ClaudeStartOptions and passes --name to Claude Code on initial session start, keeping tab names in sync with Claude Code.
This commit is contained in:
@@ -287,6 +287,13 @@ impl WslBridge {
|
||||
}
|
||||
}
|
||||
|
||||
// Pass session name to Claude Code if specified
|
||||
if let Some(ref name) = options.session_name {
|
||||
if !name.is_empty() {
|
||||
cmd.args(["--name", name]);
|
||||
}
|
||||
}
|
||||
|
||||
// Add worktree flag if requested
|
||||
if options.use_worktree {
|
||||
cmd.arg("--worktree");
|
||||
@@ -466,6 +473,14 @@ impl WslBridge {
|
||||
}
|
||||
}
|
||||
|
||||
// Pass session name to Claude Code if specified
|
||||
if let Some(ref name) = options.session_name {
|
||||
if !name.is_empty() {
|
||||
let escaped = name.replace('\'', "'\\''");
|
||||
claude_cmd.push_str(&format!(" --name '{}'", escaped));
|
||||
}
|
||||
}
|
||||
|
||||
// Add worktree flag if requested
|
||||
if options.use_worktree {
|
||||
claude_cmd.push_str(" --worktree");
|
||||
@@ -3577,4 +3592,45 @@ mod tests {
|
||||
"Session stopped due to an unknown API error"
|
||||
);
|
||||
}
|
||||
|
||||
/// Build the --name argument string without executing a command (for testing)
|
||||
#[cfg(test)]
|
||||
fn build_session_name_arg(name: &str) -> Option<(String, String)> {
|
||||
if name.is_empty() {
|
||||
return None;
|
||||
}
|
||||
Some(("--name".to_string(), name.to_string()))
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_e2e_session_name_passed_when_set() {
|
||||
let name = "Sakura";
|
||||
let result = build_session_name_arg(name);
|
||||
assert!(result.is_some());
|
||||
let (flag, value) = result.unwrap();
|
||||
assert_eq!(flag, "--name");
|
||||
assert_eq!(value, "Sakura");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_e2e_session_name_not_passed_when_none() {
|
||||
let options = ClaudeStartOptions {
|
||||
session_name: None,
|
||||
..Default::default()
|
||||
};
|
||||
// When session_name is None, no --name arg should be produced
|
||||
let has_name = options.session_name.as_deref().map(|n| !n.is_empty()).unwrap_or(false);
|
||||
assert!(!has_name);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_e2e_session_name_not_passed_when_empty() {
|
||||
let options = ClaudeStartOptions {
|
||||
session_name: Some(String::new()),
|
||||
..Default::default()
|
||||
};
|
||||
// When session_name is Some(""), no --name arg should be produced
|
||||
let has_name = options.session_name.as_deref().map(|n| !n.is_empty()).unwrap_or(false);
|
||||
assert!(!has_name);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user