aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2026-01-21 15:54:43 +0100
committerGitHub <noreply@github.com>2026-01-21 15:54:43 +0100
commita56e586b115331076d98bfa67b17d0742e0cda55 (patch)
tree983a9d9d237d63fdde435ed085eadff460f92b1d
parentfeat(web): add base_url option (#4409) (diff)
downloadsl0ppij-a56e586b115331076d98bfa67b17d0742e0cda55.tar.gz
sl0ppij-a56e586b115331076d98bfa67b17d0742e0cda55.tar.xz
sl0ppij-a56e586b115331076d98bfa67b17d0742e0cda55.zip
Fix breaking panes behavior (#4622)
* fix: pane becoming borderless when breaking to new tab * don't treat floating panes specially when breaking to new tab * fix tests * rustfmt * add pr
-rw-r--r--CHANGELOG.md1
-rw-r--r--zellij-server/src/screen.rs37
-rw-r--r--zellij-server/src/tab/mod.rs19
-rw-r--r--zellij-server/src/unit/screen_tests.rs38
-rw-r--r--zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_pane_to_a_new_tab-2.snap24
-rw-r--r--zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_pane_to_a_new_tab-4.snap24
-rw-r--r--zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_plugin_pane_to_a_new_tab-3.snap22
-rw-r--r--zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_plugin_pane_to_a_new_tab-4.snap22
-rw-r--r--zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_plugin_pane_to_a_new_tab-6.snap22
-rw-r--r--zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_plugin_pane_to_a_new_tab-7.snap22
-rw-r--r--zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_left-3.snap40
-rw-r--r--zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_left-4.snap23
-rw-r--r--zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_left-5.snap24
-rw-r--r--zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_left-6.snap5
-rw-r--r--zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_right-3.snap40
-rw-r--r--zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_right-4.snap23
-rw-r--r--zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_right-5.snap24
-rw-r--r--zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_right-6.snap5
18 files changed, 261 insertions, 154 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 00064c5b..c3bda16f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -30,6 +30,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
* feat: allow opening panes as `borderless` or toggling/changing the borderless status of existing panes (https://github.com/zellij-org/zellij/pull/4615 and https://github.com/zellij-org/zellij/pull/4618)
* fix: query webserver through ipc rather than https (https://github.com/zellij-org/zellij/pull/4620)
* feat: add web client `base_url` option (https://github.com/zellij-org/zellij/pull/4409)
+* fix: breaking floating panes to a new tab no longer keeps them floating (https://github.com/zellij-org/zellij/pull/4622)
## [0.43.1] - 2025-08-08
diff --git a/zellij-server/src/screen.rs b/zellij-server/src/screen.rs
index 1d0713e8..63404cbf 100644
--- a/zellij-server/src/screen.rs
+++ b/zellij-server/src/screen.rs
@@ -2573,6 +2573,7 @@ impl Screen {
new_active_tab.add_tiled_pane(
plugin_pane_to_move_to_active_tab,
pane_id,
+ false,
Some(client_id),
)?;
}
@@ -2677,7 +2678,6 @@ impl Screen {
let active_pane_id = active_tab
.get_active_pane_id(client_id)
.with_context(err_context)?;
- let pane_to_break_is_floating = active_tab.are_floating_panes_visible();
let active_pane = active_tab
.extract_pane(active_pane_id, false)
.with_context(err_context)?;
@@ -2689,20 +2689,15 @@ impl Screen {
);
self.new_tab(tab_index, swap_layouts, None, Some(client_id))?;
let tab = self.tabs.get_mut(&tab_index).with_context(err_context)?;
- let (mut tiled_panes_layout, mut floating_panes_layout) = default_layout.new_tab();
- if pane_to_break_is_floating {
- tab.show_floating_panes();
- tab.add_floating_pane(active_pane, active_pane_id, None, true)?;
- if let Some(already_running_layout) = floating_panes_layout
- .iter_mut()
- .find(|i| i.run == active_pane_run_instruction)
- {
- already_running_layout.already_running = true;
- }
- } else {
- tab.add_tiled_pane(active_pane, active_pane_id, Some(client_id))?;
- tiled_panes_layout.ignore_run_instruction(active_pane_run_instruction.clone());
- }
+ let (mut tiled_panes_layout, floating_panes_layout) = default_layout.new_tab();
+ let without_relayout = true;
+ tab.add_tiled_pane(
+ active_pane,
+ active_pane_id,
+ without_relayout,
+ Some(client_id),
+ )?;
+ tiled_panes_layout.ignore_run_instruction(active_pane_run_instruction.clone());
let should_change_focus_to_new_tab = true;
let is_web_client = self
.connected_clients
@@ -2779,7 +2774,8 @@ impl Screen {
let pane_id = pane.pid();
// here we pass None instead of the ClientId, because we do not want this pane to be
// necessarily focused
- tab.add_tiled_pane(pane, pane_id, None)?;
+ let without_relayout = true;
+ tab.add_tiled_pane(pane, pane_id, without_relayout, None)?;
tiled_panes_layout.ignore_run_instruction(run_instruction.clone());
}
let is_web_client = self
@@ -2836,7 +2832,12 @@ impl Screen {
new_active_tab.add_floating_pane(active_pane, active_pane_id, None, true)?;
} else {
new_active_tab.hide_floating_panes();
- new_active_tab.add_tiled_pane(active_pane, active_pane_id, Some(client_id))?;
+ new_active_tab.add_tiled_pane(
+ active_pane,
+ active_pane_id,
+ false,
+ Some(client_id),
+ )?;
}
self.log_and_report_session_state()?;
@@ -2918,7 +2919,7 @@ impl Screen {
} else {
// here we pass None instead of the ClientId, because we do not want this pane to be
// necessarily focused
- new_active_tab.add_tiled_pane(pane, pane_id, None)?;
+ new_active_tab.add_tiled_pane(pane, pane_id, false, None)?;
}
}
} else {
diff --git a/zellij-server/src/tab/mod.rs b/zellij-server/src/tab/mod.rs
index 98743bf8..fac0494f 100644
--- a/zellij-server/src/tab/mod.rs
+++ b/zellij-server/src/tab/mod.rs
@@ -1265,6 +1265,7 @@ impl Tab {
self.add_tiled_pane(
floating_pane_to_embed,
focused_floating_pane_id,
+ false,
Some(client_id),
)?;
}
@@ -1303,7 +1304,7 @@ impl Tab {
format!("failed to find floating pane (ID: {pane_id:?}) to embed",)
})
.with_context(err_context)?;
- self.add_tiled_pane(floating_pane_to_embed, pane_id, client_id)?;
+ self.add_tiled_pane(floating_pane_to_embed, pane_id, false, client_id)?;
}
} else if self.tiled_panes.panes_contain(&pane_id) {
if self.get_selectable_tiled_panes().count() <= 1 {
@@ -1578,13 +1579,13 @@ impl Tab {
if self.floating_panes.panes_are_visible() {
self.add_floating_pane(new_pane, pid, None, true)
} else {
- self.add_tiled_pane(new_pane, pid, client_id)
+ self.add_tiled_pane(new_pane, pid, false, client_id)
}
} else {
if self.floating_panes.panes_are_visible() {
self.add_floating_pane(new_pane, pid, None, false)
} else {
- self.add_tiled_pane(new_pane, pid, client_id)
+ self.add_tiled_pane(new_pane, pid, false, client_id)
}
}
}
@@ -1687,7 +1688,7 @@ impl Tab {
.insert(pid, (is_scrollback_editor, new_pane));
Ok(())
} else {
- self.add_tiled_pane(new_pane, pid, client_id)
+ self.add_tiled_pane(new_pane, pid, false, client_id)
}
}
pub fn new_floating_pane(
@@ -5275,7 +5276,7 @@ impl Tab {
Ok(())
} else {
self.hide_floating_panes();
- self.add_tiled_pane(pane, pane_id, Some(client_id))
+ self.add_tiled_pane(pane, pane_id, false, Some(client_id))
}
},
None => Ok(()),
@@ -5317,7 +5318,7 @@ impl Tab {
self.add_floating_pane(pane, pane_id, None, true)
.non_fatal();
} else {
- self.add_tiled_pane(pane, pane_id, None).non_fatal();
+ self.add_tiled_pane(pane, pane_id, false, None).non_fatal();
}
},
None => {
@@ -5338,7 +5339,7 @@ impl Tab {
self.add_floating_pane(pane, pane_id, None, true)
.non_fatal();
} else {
- self.add_tiled_pane(pane, pane_id, None).non_fatal();
+ self.add_tiled_pane(pane, pane_id, false, None).non_fatal();
}
},
None => {
@@ -5465,12 +5466,14 @@ impl Tab {
&mut self,
mut pane: Box<dyn Pane>,
pane_id: PaneId,
+ without_relayout: bool,
client_id: Option<ClientId>,
) -> Result<()> {
if self.tiled_panes.fullscreen_is_active() {
self.tiled_panes.unset_fullscreen();
}
- let should_auto_layout = self.auto_layout && !self.swap_layouts.is_tiled_damaged();
+ let should_auto_layout =
+ self.auto_layout && !self.swap_layouts.is_tiled_damaged() && !without_relayout;
if self.tiled_panes.has_room_for_new_pane() {
pane.set_active_at(Instant::now());
if should_auto_layout {
diff --git a/zellij-server/src/unit/screen_tests.rs b/zellij-server/src/unit/screen_tests.rs
index d3608e5c..010da186 100644
--- a/zellij-server/src/unit/screen_tests.rs
+++ b/zellij-server/src/unit/screen_tests.rs
@@ -4074,10 +4074,8 @@ pub fn screen_can_break_floating_pane_to_a_new_tab() {
let _ = mock_screen.to_screen.send(ScreenInstruction::ApplyLayout(
TiledPaneLayout::default(),
floating_panes_layout,
- vec![(1, None)], // tiled pane ids - send these because one needs to be created under the
- // ejected floating pane, lest the tab be closed as having no tiled panes
- // (this happens in prod in the pty thread)
- vec![], // floating panes ids
+ vec![], // tiled pane ids
+ vec![], // floating pane ids
Default::default(),
1,
true,
@@ -4228,10 +4226,8 @@ pub fn screen_can_break_floating_plugin_pane_to_a_new_tab() {
let _ = mock_screen.to_screen.send(ScreenInstruction::ApplyLayout(
TiledPaneLayout::default(),
floating_panes_layout,
- vec![(1, None)], // tiled pane ids - send these because one needs to be created under the
- // ejected floating pane, lest the tab be closed as having no tiled panes
- // (this happens in prod in the pty thread)
- vec![], // floating panes ids
+ vec![], // tiled pane ids
+ vec![], // floating pane ids
Default::default(),
1,
true,
@@ -4290,6 +4286,20 @@ pub fn screen_can_move_pane_to_a_new_tab_right() {
1,
None,
));
+
+ std::thread::sleep(std::time::Duration::from_millis(100));
+ let _ = mock_screen.to_screen.send(ScreenInstruction::ApplyLayout(
+ TiledPaneLayout::default(),
+ Default::default(),
+ vec![], // tiled pane ids
+ vec![], // floating pane ids
+ Default::default(),
+ 1,
+ true,
+ (1, false),
+ None,
+ None,
+ ));
std::thread::sleep(std::time::Duration::from_millis(100));
let _ = mock_screen
.to_screen
@@ -4339,6 +4349,18 @@ pub fn screen_can_move_pane_to_a_new_tab_left() {
1,
None,
));
+ let _ = mock_screen.to_screen.send(ScreenInstruction::ApplyLayout(
+ TiledPaneLayout::default(),
+ Default::default(),
+ vec![], // tiled pane ids
+ vec![], // floating pane ids
+ Default::default(),
+ 1,
+ true,
+ (1, false),
+ None,
+ None,
+ ));
std::thread::sleep(std::time::Duration::from_millis(100));
let _ = mock_screen
.to_screen
diff --git a/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_pane_to_a_new_tab-2.snap b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_pane_to_a_new_tab-2.snap
index c4170f54..ffee22b2 100644
--- a/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_pane_to_a_new_tab-2.snap
+++ b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_pane_to_a_new_tab-2.snap
@@ -1,26 +1,24 @@
---
source: zellij-server/src/./unit/screen_tests.rs
-assertion_line: 3395
expression: "format!(\"{}\", snapshot)"
---
-00 (C): ┌ Pane #2 ─────────────────────────────────────────────────────────────────────┐
+00 (C): ┌ floating_pane_to_eject ──────────────────────────────────────────────────────┐
01 (C): │ │
02 (C): │ │
03 (C): │ │
04 (C): │ │
-05 (C): │ ┌ floating_pane_to_eject ───── PIN [ ] ┐ │
-06 (C): │ │ │ │
-07 (C): │ │ │ │
-08 (C): │ │ │ │
-09 (C): │ │ │ │
-10 (C): │ │ │ │
-11 (C): │ │ │ │
-12 (C): │ │ │ │
-13 (C): │ │ │ │
-14 (C): │ └──────────────────────────────────────┘ │
+05 (C): │ │
+06 (C): │ │
+07 (C): │ │
+08 (C): │ │
+09 (C): │ │
+10 (C): │ │
+11 (C): │ │
+12 (C): │ │
+13 (C): │ │
+14 (C): │ │
15 (C): │ │
16 (C): │ │
17 (C): │ │
18 (C): │ │
19 (C): └──────────────────────────────────────────────────────────────────────────────┘
-
diff --git a/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_pane_to_a_new_tab-4.snap b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_pane_to_a_new_tab-4.snap
index c4170f54..ffee22b2 100644
--- a/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_pane_to_a_new_tab-4.snap
+++ b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_pane_to_a_new_tab-4.snap
@@ -1,26 +1,24 @@
---
source: zellij-server/src/./unit/screen_tests.rs
-assertion_line: 3395
expression: "format!(\"{}\", snapshot)"
---
-00 (C): ┌ Pane #2 ─────────────────────────────────────────────────────────────────────┐
+00 (C): ┌ floating_pane_to_eject ──────────────────────────────────────────────────────┐
01 (C): │ │
02 (C): │ │
03 (C): │ │
04 (C): │ │
-05 (C): │ ┌ floating_pane_to_eject ───── PIN [ ] ┐ │
-06 (C): │ │ │ │
-07 (C): │ │ │ │
-08 (C): │ │ │ │
-09 (C): │ │ │ │
-10 (C): │ │ │ │
-11 (C): │ │ │ │
-12 (C): │ │ │ │
-13 (C): │ │ │ │
-14 (C): │ └──────────────────────────────────────┘ │
+05 (C): │ │
+06 (C): │ │
+07 (C): │ │
+08 (C): │ │
+09 (C): │ │
+10 (C): │ │
+11 (C): │ │
+12 (C): │ │
+13 (C): │ │
+14 (C): │ │
15 (C): │ │
16 (C): │ │
17 (C): │ │
18 (C): │ │
19 (C): └──────────────────────────────────────────────────────────────────────────────┘
-
diff --git a/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_plugin_pane_to_a_new_tab-3.snap b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_plugin_pane_to_a_new_tab-3.snap
index 9f6c79b0..aa41a802 100644
--- a/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_plugin_pane_to_a_new_tab-3.snap
+++ b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_plugin_pane_to_a_new_tab-3.snap
@@ -2,21 +2,21 @@
source: zellij-server/src/./unit/screen_tests.rs
expression: "format!(\"{}\", snapshot)"
---
-00 (C): ┌ Pane #1 ─────────────────────────────────────────────────────────────────────┐
+00 (C): ┌ floating_plugin_pane_to_eject ───────────────────────────────────────────────┐
01 (C): │ │
02 (C): │ │
03 (C): │ │
04 (C): │ │
-05 (C): │ ┌ floating_plugin_pane_to_eject ───────┐ │
-06 (C): │ │ │ │
-07 (C): │ │ │ │
-08 (C): │ │ │ │
-09 (C): │ │ │ │
-10 (C): │ │ │ │
-11 (C): │ │ │ │
-12 (C): │ │ │ │
-13 (C): │ │ │ │
-14 (C): │ └──────────────────────────────────────┘ │
+05 (C): │ │
+06 (C): │ │
+07 (C): │ │
+08 (C): │ │
+09 (C): │ │
+10 (C): │ │
+11 (C): │ │
+12 (C): │ │
+13 (C): │ │
+14 (C): │ │
15 (C): │ │
16 (C): │ │
17 (C): │ │
diff --git a/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_plugin_pane_to_a_new_tab-4.snap b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_plugin_pane_to_a_new_tab-4.snap
index 9f6c79b0..aa41a802 100644
--- a/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_plugin_pane_to_a_new_tab-4.snap
+++ b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_plugin_pane_to_a_new_tab-4.snap
@@ -2,21 +2,21 @@
source: zellij-server/src/./unit/screen_tests.rs
expression: "format!(\"{}\", snapshot)"
---
-00 (C): ┌ Pane #1 ─────────────────────────────────────────────────────────────────────┐
+00 (C): ┌ floating_plugin_pane_to_eject ───────────────────────────────────────────────┐
01 (C): │ │
02 (C): │ │
03 (C): │ │
04 (C): │ │
-05 (C): │ ┌ floating_plugin_pane_to_eject ───────┐ │
-06 (C): │ │ │ │
-07 (C): │ │ │ │
-08 (C): │ │ │ │
-09 (C): │ │ │ │
-10 (C): │ │ │ │
-11 (C): │ │ │ │
-12 (C): │ │ │ │
-13 (C): │ │ │ │
-14 (C): │ └──────────────────────────────────────┘ │
+05 (C): │ │
+06 (C): │ │
+07 (C): │ │
+08 (C): │ │
+09 (C): │ │
+10 (C): │ │
+11 (C): │ │
+12 (C): │ │
+13 (C): │ │
+14 (C): │ │
15 (C): │ │
16 (C): │ │
17 (C): │ │
diff --git a/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_plugin_pane_to_a_new_tab-6.snap b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_plugin_pane_to_a_new_tab-6.snap
index 9f6c79b0..aa41a802 100644
--- a/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_plugin_pane_to_a_new_tab-6.snap
+++ b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_plugin_pane_to_a_new_tab-6.snap
@@ -2,21 +2,21 @@
source: zellij-server/src/./unit/screen_tests.rs
expression: "format!(\"{}\", snapshot)"
---
-00 (C): ┌ Pane #1 ─────────────────────────────────────────────────────────────────────┐
+00 (C): ┌ floating_plugin_pane_to_eject ───────────────────────────────────────────────┐
01 (C): │ │
02 (C): │ │
03 (C): │ │
04 (C): │ │
-05 (C): │ ┌ floating_plugin_pane_to_eject ───────┐ │
-06 (C): │ │ │ │
-07 (C): │ │ │ │
-08 (C): │ │ │ │
-09 (C): │ │ │ │
-10 (C): │ │ │ │
-11 (C): │ │ │ │
-12 (C): │ │ │ │
-13 (C): │ │ │ │
-14 (C): │ └──────────────────────────────────────┘ │
+05 (C): │ │
+06 (C): │ │
+07 (C): │ │
+08 (C): │ │
+09 (C): │ │
+10 (C): │ │
+11 (C): │ │
+12 (C): │ │
+13 (C): │ │
+14 (C): │ │
15 (C): │ │
16 (C): │ │
17 (C): │ │
diff --git a/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_plugin_pane_to_a_new_tab-7.snap b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_plugin_pane_to_a_new_tab-7.snap
index 9f6c79b0..aa41a802 100644
--- a/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_plugin_pane_to_a_new_tab-7.snap
+++ b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_break_floating_plugin_pane_to_a_new_tab-7.snap
@@ -2,21 +2,21 @@
source: zellij-server/src/./unit/screen_tests.rs
expression: "format!(\"{}\", snapshot)"
---
-00 (C): ┌ Pane #1 ─────────────────────────────────────────────────────────────────────┐
+00 (C): ┌ floating_plugin_pane_to_eject ───────────────────────────────────────────────┐
01 (C): │ │
02 (C): │ │
03 (C): │ │
04 (C): │ │
-05 (C): │ ┌ floating_plugin_pane_to_eject ───────┐ │
-06 (C): │ │ │ │
-07 (C): │ │ │ │
-08 (C): │ │ │ │
-09 (C): │ │ │ │
-10 (C): │ │ │ │
-11 (C): │ │ │ │
-12 (C): │ │ │ │
-13 (C): │ │ │ │
-14 (C): │ └──────────────────────────────────────┘ │
+05 (C): │ │
+06 (C): │ │
+07 (C): │ │
+08 (C): │ │
+09 (C): │ │
+10 (C): │ │
+11 (C): │ │
+12 (C): │ │
+13 (C): │ │
+14 (C): │ │
15 (C): │ │
16 (C): │ │
17 (C): │ │
diff --git a/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_left-3.snap b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_left-3.snap
index d3d25148..1a41cccd 100644
--- a/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_left-3.snap
+++ b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_left-3.snap
@@ -2,23 +2,23 @@
source: zellij-server/src/./unit/screen_tests.rs
expression: "format!(\"{}\", snapshot)"
---
-00 (C): ┌ pane_to_stay ────────────────────────┐┌ pane_to_break_free ──────────────────┐
-01 (C): │ ││ │
-02 (C): │ ││ │
-03 (C): │ ││ │
-04 (C): │ ││ │
-05 (C): │ ││ │
-06 (C): │ ││ │
-07 (C): │ ││ │
-08 (C): │ ││ │
-09 (C): │ ││ │
-10 (C): │ ││ │
-11 (C): │ ││ │
-12 (C): │ ││ │
-13 (C): │ ││ │
-14 (C): │ ││ │
-15 (C): │ ││ │
-16 (C): │ ││ │
-17 (C): │ ││ │
-18 (C): │ ││ │
-19 (C): └──────────────────────────────────────┘└──────────────────────────────────────┘
+00 (C): ┌ pane_to_stay ────────────────────────────────────────────────────────────────┐
+01 (C): │ │
+02 (C): │ │
+03 (C): │ │
+04 (C): │ │
+05 (C): │ │
+06 (C): │ │
+07 (C): │ │
+08 (C): │ │
+09 (C): │ │
+10 (C): │ │
+11 (C): │ │
+12 (C): │ │
+13 (C): │ │
+14 (C): │ │
+15 (C): │ │
+16 (C): │ │
+17 (C): │ │
+18 (C): │ │
+19 (C): └──────────────────────────────────────────────────────────────────────────────┘
diff --git a/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_left-4.snap b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_left-4.snap
index 6f985b85..33a1d24d 100644
--- a/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_left-4.snap
+++ b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_left-4.snap
@@ -1,5 +1,24 @@
---
source: zellij-server/src/./unit/screen_tests.rs
-expression: "format!(\"{}\", snapshot_count)"
+expression: "format!(\"{}\", snapshot)"
---
-3
+00 (C): ┌ pane_to_break_free ──────────────────┐┌ pane_to_stay ────────────────────────┐
+01 (C): │ ││ │
+02 (C): │ ││ │
+03 (C): │ ││ │
+04 (C): │ ││ │
+05 (C): │ ││ │
+06 (C): │ ││ │
+07 (C): │ ││ │
+08 (C): │ ││ │
+09 (C): │ ││ │
+10 (C): │ ││ │
+11 (C): │ ││ │
+12 (C): │ ││ │
+13 (C): │ ││ │
+14 (C): │ ││ │
+15 (C): │ ││ │
+16 (C): │ ││ │
+17 (C): │ ││ │
+18 (C): │ ││ │
+19 (C): └──────────────────────────────────────┘└──────────────────────────────────────┘
diff --git a/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_left-5.snap b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_left-5.snap
index 53aa1b2c..33a1d24d 100644
--- a/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_left-5.snap
+++ b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_left-5.snap
@@ -1,6 +1,24 @@
---
source: zellij-server/src/./unit/screen_tests.rs
-assertion_line: 3081
-expression: "format!(\"{}\", snapshot_count)"
+expression: "format!(\"{}\", snapshot)"
---
-4
+00 (C): ┌ pane_to_break_free ──────────────────┐┌ pane_to_stay ────────────────────────┐
+01 (C): │ ││ │
+02 (C): │ ││ │
+03 (C): │ ││ │
+04 (C): │ ││ │
+05 (C): │ ││ │
+06 (C): │ ││ │
+07 (C): │ ││ │
+08 (C): │ ││ │
+09 (C): │ ││ │
+10 (C): │ ││ │
+11 (C): │ ││ │
+12 (C): │ ││ │
+13 (C): │ ││ │
+14 (C): │ ││ │
+15 (C): │ ││ │
+16 (C): │ ││ │
+17 (C): │ ││ │
+18 (C): │ ││ │
+19 (C): └──────────────────────────────────────┘└──────────────────────────────────────┘
diff --git a/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_left-6.snap b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_left-6.snap
new file mode 100644
index 00000000..84b05c9c
--- /dev/null
+++ b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_left-6.snap
@@ -0,0 +1,5 @@
+---
+source: zellij-server/src/./unit/screen_tests.rs
+expression: "format!(\"{}\", snapshot_count)"
+---
+5
diff --git a/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_right-3.snap b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_right-3.snap
index d3d25148..1a41cccd 100644
--- a/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_right-3.snap
+++ b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_right-3.snap
@@ -2,23 +2,23 @@
source: zellij-server/src/./unit/screen_tests.rs
expression: "format!(\"{}\", snapshot)"
---
-00 (C): ┌ pane_to_stay ────────────────────────┐┌ pane_to_break_free ──────────────────┐
-01 (C): │ ││ │
-02 (C): │ ││ │
-03 (C): │ ││ │
-04 (C): │ ││ │
-05 (C): │ ││ │
-06 (C): │ ││ │
-07 (C): │ ││ │
-08 (C): │ ││ │
-09 (C): │ ││ │
-10 (C): │ ││ │
-11 (C): │ ││ │
-12 (C): │ ││ │
-13 (C): │ ││ │
-14 (C): │ ││ │
-15 (C): │ ││ │
-16 (C): │ ││ │
-17 (C): │ ││ │
-18 (C): │ ││ │
-19 (C): └──────────────────────────────────────┘└──────────────────────────────────────┘
+00 (C): ┌ pane_to_stay ────────────────────────────────────────────────────────────────┐
+01 (C): │ │
+02 (C): │ │
+03 (C): │ │
+04 (C): │ │
+05 (C): │ │
+06 (C): │ │
+07 (C): │ │
+08 (C): │ │
+09 (C): │ │
+10 (C): │ │
+11 (C): │ │
+12 (C): │ │
+13 (C): │ │
+14 (C): │ │
+15 (C): │ │
+16 (C): │ │
+17 (C): │ │
+18 (C): │ │
+19 (C): └──────────────────────────────────────────────────────────────────────────────┘
diff --git a/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_right-4.snap b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_right-4.snap
index 6f985b85..33a1d24d 100644
--- a/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_right-4.snap
+++ b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_right-4.snap
@@ -1,5 +1,24 @@
---
source: zellij-server/src/./unit/screen_tests.rs
-expression: "format!(\"{}\", snapshot_count)"
+expression: "format!(\"{}\", snapshot)"
---
-3
+00 (C): ┌ pane_to_break_free ──────────────────┐┌ pane_to_stay ────────────────────────┐
+01 (C): │ ││ │
+02 (C): │ ││ │
+03 (C): │ ││ │
+04 (C): │ ││ │
+05 (C): │ ││ │
+06 (C): │ ││ │
+07 (C): │ ││ │
+08 (C): │ ││ │
+09 (C): │ ││ │
+10 (C): │ ││ │
+11 (C): │ ││ │
+12 (C): │ ││ │
+13 (C): │ ││ │
+14 (C): │ ││ │
+15 (C): │ ││ │
+16 (C): │ ││ │
+17 (C): │ ││ │
+18 (C): │ ││ │
+19 (C): └──────────────────────────────────────┘└──────────────────────────────────────┘
diff --git a/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_right-5.snap b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_right-5.snap
index da6e99bb..33a1d24d 100644
--- a/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_right-5.snap
+++ b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_right-5.snap
@@ -1,6 +1,24 @@
---
source: zellij-server/src/./unit/screen_tests.rs
-assertion_line: 3034
-expression: "format!(\"{}\", snapshot_count)"
+expression: "format!(\"{}\", snapshot)"
---
-4
+00 (C): ┌ pane_to_break_free ──────────────────┐┌ pane_to_stay ────────────────────────┐
+01 (C): │ ││ │
+02 (C): │ ││ │
+03 (C): │ ││ │
+04 (C): │ ││ │
+05 (C): │ ││ │
+06 (C): │ ││ │
+07 (C): │ ││ │
+08 (C): │ ││ │
+09 (C): │ ││ │
+10 (C): │ ││ │
+11 (C): │ ││ │
+12 (C): │ ││ │
+13 (C): │ ││ │
+14 (C): │ ││ │
+15 (C): │ ││ │
+16 (C): │ ││ │
+17 (C): │ ││ │
+18 (C): │ ││ │
+19 (C): └──────────────────────────────────────┘└──────────────────────────────────────┘
diff --git a/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_right-6.snap b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_right-6.snap
new file mode 100644
index 00000000..84b05c9c
--- /dev/null
+++ b/zellij-server/src/unit/snapshots/zellij_server__screen__screen_tests__screen_can_move_pane_to_a_new_tab_right-6.snap
@@ -0,0 +1,5 @@
+---
+source: zellij-server/src/./unit/screen_tests.rs
+expression: "format!(\"{}\", snapshot_count)"
+---
+5