diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-06-14 05:30:20 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-06-14 05:30:20 +0300 |
| commit | 226e87306deaba017d36583f51ae34e42b303aad (patch) | |
| tree | 2a1155689b75007c15d93735aedfa58db7a05edf /src/app/creation.rs | |
| parent | 17544c36ee397233e2f7b3319d86e3b517e3b5d0 (diff) | |
fix: preserve tab identity across restored sessions
Diffstat (limited to 'src/app/creation.rs')
| -rw-r--r-- | src/app/creation.rs | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/src/app/creation.rs b/src/app/creation.rs index a45dae03..e53bce00 100644 --- a/src/app/creation.rs +++ b/src/app/creation.rs @@ -123,13 +123,9 @@ impl App { self.state.mode = Mode::Terminal; } let workspace_id = self.state.workspaces[ws_idx].id.clone(); - let tab_id = self.public_tab_id(ws_idx, idx).unwrap_or_else(|| { - format!( - "{}:t{}", - workspace_id, - crate::workspace::encode_public_number(idx + 1) - ) - }); + let tab_id = self + .public_tab_id(ws_idx, idx) + .unwrap_or_else(|| crate::workspace::public_tab_id_for_number(&workspace_id, idx + 1)); let root_pane = self.state.workspaces[ws_idx].tabs[idx].root_pane.raw(); crate::logging::tab_created(&workspace_id, &tab_id, root_pane); self.schedule_session_save(); @@ -240,7 +236,7 @@ impl App { Some(crate::api::schema::TabInfo { tab_id: self.public_tab_id(ws_idx, tab_idx)?, workspace_id: self.public_workspace_id(ws_idx), - number: tab_idx + 1, + number: tab.number, label: tab.display_name(), focused: self.state.active == Some(ws_idx) && ws.active_tab == tab_idx, pane_count: tab.panes.len(), @@ -349,9 +345,9 @@ impl App { focused: self.state.active == Some(index), pane_count: ws.public_pane_numbers.len(), tab_count: ws.tabs.len(), - active_tab_id: self - .public_tab_id(index, ws.active_tab) - .unwrap_or_else(|| format!("{}:{}", ws.id, ws.active_tab + 1)), + active_tab_id: self.public_tab_id(index, ws.active_tab).unwrap_or_else(|| { + crate::workspace::public_tab_id_for_number(&ws.id, ws.active_tab + 1) + }), agent_status: pane_agent_status(agg_state, seen), worktree: ws .worktree_space() |
