aboutsummaryrefslogtreecommitdiff
path: root/src/persist/snapshot.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-05-28 04:11:56 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-05-28 04:12:53 +0300
commitbf9cc201244946496b4d950046bf7edcc4892994 (patch)
tree920c866e67783cf31d2feff9642457204999c8eb /src/persist/snapshot.rs
parent789738cada5afaa20bbd77a0d479fb689c455bfe (diff)
fix: preserve live handoff terminal state
Diffstat (limited to 'src/persist/snapshot.rs')
-rw-r--r--src/persist/snapshot.rs12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/persist/snapshot.rs b/src/persist/snapshot.rs
index 36df83b1..7cd01a64 100644
--- a/src/persist/snapshot.rs
+++ b/src/persist/snapshot.rs
@@ -97,6 +97,8 @@ pub struct PaneSnapshot {
pub agent_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub agent_session: Option<PaneAgentSessionSnapshot>,
+ #[serde(default, skip_serializing_if = "Option::is_none")]
+ pub launch_argv: Option<Vec<String>>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
@@ -314,6 +316,11 @@ fn capture_tab(
.get(id)
.and_then(|pane| terminals.get(&pane.attached_terminal_id))
.and_then(|terminal| terminal.agent_name.clone());
+ let launch_argv = tab
+ .panes
+ .get(id)
+ .and_then(|pane| terminals.get(&pane.attached_terminal_id))
+ .and_then(|terminal| terminal.launch_argv.clone());
let agent_session =
tab.panes
.get(id)
@@ -345,6 +352,7 @@ fn capture_tab(
label,
agent_name,
agent_session,
+ launch_argv,
},
);
}
@@ -580,6 +588,7 @@ mod tests {
label: None,
agent_name: None,
agent_session: None,
+ launch_argv: None,
},
);
panes.insert(
@@ -589,6 +598,7 @@ mod tests {
label: Some("website".into()),
agent_name: None,
agent_session: None,
+ launch_argv: None,
},
);
@@ -1109,6 +1119,7 @@ mod tests {
label: None,
agent_name: None,
agent_session: None,
+ launch_argv: None,
},
);
panes.insert(
@@ -1120,6 +1131,7 @@ mod tests {
label: None,
agent_name: None,
agent_session: None,
+ launch_argv: None,
},
);