diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-28 04:11:56 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-28 04:12:53 +0300 |
| commit | bf9cc201244946496b4d950046bf7edcc4892994 (patch) | |
| tree | 920c866e67783cf31d2feff9642457204999c8eb /src/persist/snapshot.rs | |
| parent | 789738cada5afaa20bbd77a0d479fb689c455bfe (diff) | |
fix: preserve live handoff terminal state
Diffstat (limited to 'src/persist/snapshot.rs')
| -rw-r--r-- | src/persist/snapshot.rs | 12 |
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, }, ); |
