aboutsummaryrefslogtreecommitdiff
path: root/src/app/creation.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-06-14 05:30:20 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-06-14 05:30:20 +0300
commit226e87306deaba017d36583f51ae34e42b303aad (patch)
tree2a1155689b75007c15d93735aedfa58db7a05edf /src/app/creation.rs
parent17544c36ee397233e2f7b3319d86e3b517e3b5d0 (diff)
fix: preserve tab identity across restored sessions
Diffstat (limited to 'src/app/creation.rs')
-rw-r--r--src/app/creation.rs18
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()