diff options
| author | Aram Drevekenin <aram@poor.dev> | 2026-06-29 18:10:59 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-06-29 18:10:59 +0200 |
| commit | 245f5141c9bb7eb91f003efac4defc94470243fd (patch) | |
| tree | 52ae6d003366f97e41c8a1450602aef63c8fdca2 /src | |
| parent | feat: reload config on theme change (#5135) (diff) | |
| download | sl0ppij-245f5141c9bb7eb91f003efac4defc94470243fd.tar.gz sl0ppij-245f5141c9bb7eb91f003efac4defc94470243fd.tar.xz sl0ppij-245f5141c9bb7eb91f003efac4defc94470243fd.zip | |
Title frames (#5318)
* initial implementation
* improve single line title design
* hint text plugin infra
* add proto regen task
* display alt text in status bar
* don't display text with full frames
* style alt hover text
* fix + style control own pane hover
* make multiplayer indications responsive
* update snapshots
* plugin api
* single pane as tab
* better scroll styling
* fix tests
* tab-bar plus hover
* plugin surface tests
* integration tests
* adjust all integration tests
* reduce hover noise
* add pane id to in place
* more integration tests
* style: rustfmt
* update plugin assets
* update assets and snapshots
* add pr
Diffstat (limited to 'src')
7 files changed, 127 insertions, 126 deletions
diff --git a/src/main.rs b/src/main.rs index c6ebebea..a5faf7d3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -76,6 +76,7 @@ fn main() { floating, in_place, close_replaced_pane, + pane_id: None, name, close_on_exit, start_suspended, @@ -127,6 +128,7 @@ fn main() { floating, in_place, close_replaced_pane, + pane_id: None, name: None, close_on_exit: false, start_suspended: false, diff --git a/src/tests/e2e/cases.rs b/src/tests/e2e/cases.rs index c20eb2c8..b83a7c6a 100644 --- a/src/tests/e2e/cases.rs +++ b/src/tests/e2e/cases.rs @@ -125,7 +125,7 @@ pub fn starts_with_one_terminal() { name: "Wait for app to load", instruction: |remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; - if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(3, 2) + if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(2, 1) { step_is_complete = true; } @@ -160,7 +160,7 @@ pub fn typing_exit_closes_pane() { instruction: |mut remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; if remote_terminal.status_bar_appears() - && remote_terminal.cursor_position_is(3, 2) + && remote_terminal.cursor_position_is(2, 1) { remote_terminal.send_key(&PANE_MODE); std::thread::sleep(std::time::Duration::from_millis(100)); @@ -174,7 +174,7 @@ pub fn typing_exit_closes_pane() { name: "Type exit", instruction: |mut remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; - if remote_terminal.cursor_position_is(63, 2) + if remote_terminal.cursor_position_is(62, 2) && remote_terminal.status_bar_appears() { remote_terminal.send_key("e".as_bytes()); @@ -196,7 +196,7 @@ pub fn typing_exit_closes_pane() { name: "Wait for pane to close", instruction: |remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; - if remote_terminal.cursor_position_is(3, 2) && remote_terminal.status_bar_appears() + if remote_terminal.cursor_position_is(2, 1) && remote_terminal.status_bar_appears() { // cursor is in the original pane step_is_complete = true; @@ -232,7 +232,7 @@ pub fn resize_terminal_window() { instruction: |mut remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; if remote_terminal.status_bar_appears() - && remote_terminal.cursor_position_is(3, 2) + && remote_terminal.cursor_position_is(2, 1) { remote_terminal.send_key(&PANE_MODE); std::thread::sleep(std::time::Duration::from_millis(100)); @@ -246,7 +246,7 @@ pub fn resize_terminal_window() { name: "Change terminal window size", instruction: |mut remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; - if remote_terminal.cursor_position_is(63, 2) + if remote_terminal.cursor_position_is(62, 2) && remote_terminal.status_bar_appears() { // new pane has been opened and focused @@ -261,7 +261,7 @@ pub fn resize_terminal_window() { name: "wait for terminal to be resized and app to be re-rendered", instruction: |remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; - if remote_terminal.cursor_position_is(53, 2) && remote_terminal.ctrl_plus_appears() + if remote_terminal.cursor_position_is(52, 2) && remote_terminal.ctrl_plus_appears() { // size has been changed step_is_complete = true; @@ -358,7 +358,7 @@ pub fn send_blocking_command_through_the_cli() { instruction: |mut remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; if remote_terminal.status_bar_appears() - && remote_terminal.cursor_position_is(3, 2) + && remote_terminal.cursor_position_is(2, 1) { std::thread::sleep(std::time::Duration::from_millis(100)); remote_terminal @@ -415,7 +415,7 @@ pub fn send_blocking_command_through_the_cli() { // wait until echo $? is visible, the exit status rendered, and the cursor is back // at a blank prompt, which means the shell command actually executed if remote_terminal.snapshot_contains("echo $?") - && remote_terminal.snapshot_contains("│42") + && remote_terminal.snapshot_contains("42") && remote_terminal.snapshot_contains("$ \u{2588}") && remote_terminal.status_bar_appears() { diff --git a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__quit_and_resurrect_session.snap b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__quit_and_resurrect_session.snap index 2cc662bb..cee30f74 100644 --- a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__quit_and_resurrect_session.snap +++ b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__quit_and_resurrect_session.snap @@ -1,29 +1,28 @@ --- source: src/tests/e2e/cases.rs -assertion_line: 1212 expression: last_snapshot --- - Zellij (e2e-test) Tab #1 Tab #2 Tab #3 Tab #4 -┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────────────────────┐ -│$ ││$ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ┌ Pane #4 ────────────────────────────────────── PIN [ ] ┐ │ -│ │$ │ │ -│ │ ┌ top ────────────────────────────────────────── PIN [ ] ┐ │ -│ │ │ │ │ -│ │ │ │ ┐ │ -│ │ │ │ │────────────────────────────┘ -│ │ │ Waiting to run: top │ │────────────────────────────┐ -│ │ │ │ │ │ -│ │ │ <ENTER> run, <ESC> drop to shell, <Ctrl-c> exit │ │ │ -│ └─│ │ │ │ -│ │ │ │ │ -│ └─ <ENTER> run, <ESC> drop to shell, <Ctrl-c> exit ──────┘ │ │ -│ │ │ │ -│ └────────────────────────────────────────────────────────┘ │ -│ ││ │ -└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘ + Zellij (e2e-test) Tab #1 Tab #2 Tab #3 Tab #4 + + Pane #1 │ Pane #2 +$ │$ + │ + │ + │ + ┌ Pane #4 ────────────────────────────────────── PIN [ ] ┐ + │$ │ + │ ┌ top ────────────────────────────────────────── PIN [ ] ┐ + │ │ │ + │ │ │ ┐ + │ │ │ │───────────────────────────── + │ │ Waiting to run: top │ │ #3 + │ │ │ │ + │ │ <ENTER> run, <ESC> drop to shell, <Ctrl-c> exit │ │ + └─│ │ │ + │ │ │ + └─ <ENTER> run, <ESC> drop to shell, <Ctrl-c> exit ──────┘ │ + │ │ + └────────────────────────────────────────────────────────┘ + │ + │ Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT BASE - (FLOATING PANES VISIBLE): Press Ctrl p, <w> to hide. + (FLOATING PANES VISIBLE): Press Ctrl p, <w> to hide. diff --git a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__resize_terminal_window.snap b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__resize_terminal_window.snap index 86285b60..f7e731a0 100644 --- a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__resize_terminal_window.snap +++ b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__resize_terminal_window.snap @@ -2,27 +2,27 @@ source: src/tests/e2e/cases.rs expression: last_snapshot --- - Zellij (e2e-test) Tab #1 -┌ Pane #1 ───────────────────────────────────────┐┌ Pane #2 ───────────────────────────────────────┐ -│$ ││$ █ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -└────────────────────────────────────────────────┘└────────────────────────────────────────────────┘ + Zellij (e2e-test) Tab #1 + + Pane #1 │ Pane #2 +$ │$ █ + │ + │ + │ + │ + │ + │ + │ + │ + │ + │ + │ + │ + │ + │ + │ + │ + │ + │ + │ + │ Ctrl + g p t n h s o q ... diff --git a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__send_blocking_command_through_the_cli.snap b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__send_blocking_command_through_the_cli.snap index 38453712..c1a0ac4c 100644 --- a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__send_blocking_command_through_the_cli.snap +++ b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__send_blocking_command_through_the_cli.snap @@ -2,27 +2,27 @@ source: src/tests/e2e/cases.rs expression: last_snapshot --- - Zellij (e2e-test) Tab #1 -┌ Pane #1 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ -│$ /usr/src/zellij/zellij run --blocking --floating --close-on-exit -- bash -c 'sleep 2 && exit 42' │ -│$ │ -│$ echo $? │ -│42 │ -│$ │ -│$ █ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ - Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT Alt + <n> New Pane <f> Floating + Zellij (e2e-test) Tab #1 + +$ /usr/src/zellij/zellij run --blocking --floating --close-on-exit -- bash -c 'sleep 2 && exit 42' +$ +$ echo $? +42 +$ +$ █ + + + + + + + + + + + + + + + + + Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT Alt + <n> New Pane <f> Floating diff --git a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__starts_with_one_terminal.snap b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__starts_with_one_terminal.snap index 9a9b2265..cb5cc64c 100644 --- a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__starts_with_one_terminal.snap +++ b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__starts_with_one_terminal.snap @@ -2,27 +2,27 @@ source: src/tests/e2e/cases.rs expression: last_snapshot --- - Zellij (e2e-test) Tab #1 -┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ -│$ █ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ + Zellij (e2e-test) Tab #1 + +$ █ + + + + + + + + + + + + + + + + + + + + + Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT ... diff --git a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__typing_exit_closes_pane.snap b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__typing_exit_closes_pane.snap index 9a9b2265..cb5cc64c 100644 --- a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__typing_exit_closes_pane.snap +++ b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__typing_exit_closes_pane.snap @@ -2,27 +2,27 @@ source: src/tests/e2e/cases.rs expression: last_snapshot --- - Zellij (e2e-test) Tab #1 -┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ -│$ █ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ + Zellij (e2e-test) Tab #1 + +$ █ + + + + + + + + + + + + + + + + + + + + + Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT ... |
