Proto commits in zellij-org/zellij

These commits are when the Protocol Buffers files have changed: (only the last 100 relevant commits are shown)

Commit:82c4a24
Author:Aram Drevekenin
Committer:GitHub

Stacked lists (#5331) * initial implementation * improve ui * fix: stacked resize interaction * title list boundaries fix * fix BEL * mouse parity * float/embed + bulk-op features * fix in-place bug * improve ui * config live reload * improve ui * fix issues, add exit status * fix for serialization * fix tests * integration tests * comments * refactor: duplicate title logic * refactor: consolidate logic * fix: flaky tests * add a stacked swap layout * rustfmt * fix e2e * add pr

Commit:4d618be
Author:Aram Drevekenin

initial implementation

Commit:245f514
Author:Aram Drevekenin
Committer:GitHub

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

Commit:907d461
Author:Aram Drevekenin

plugin surface tests

Commit:44771bd
Author:Aram Drevekenin

single pane as tab

Commit:a748285
Author:Aram Drevekenin

plugin api

Commit:e1c421d
Author:Aram Drevekenin

don't display text with full frames

Commit:90c0f7a
Author:Aram Drevekenin

hint text plugin infra

Commit:19f946d
Author:Aram Drevekenin

initial implementation

Commit:ebd731b
Author:DawidPietrykowski
Committer:GitHub

feat(panes): `FocusLastPane` action (#4241) * feat(panes): focus last pane (#4142) * add tests * add client id parameter to `add_floating_pane` * add action for floating panes * add tests for floating panes * add keybinds to configs * rebase fixes * simplify focus logic when adding stacked pane * formatting fix * formatting fix 2 * fix: make sure expanding pane always focuses it for all clients in stack * add pr * fix rebase --------- Co-authored-by: Aram Drevekenin <aram@poor.dev>

Commit:b6a5ad0
Author:Aram Drevekenin
Committer:GitHub

Mobile layout (#5241) * phase 2+3 * initial mobile plugin (phases 4 + 5 + 6) * some bugfixes * implement stage 7 * mobile interface improvements * improve mobile pane/tab picker * more ui improvements and fixes * various mobile fixes * some mobile fixes * mobile keyboard triggering fix * some cleanups * initial plugin keyboard implementation * improve keyboard hit zones * improve keyboard * pinch resize * pinching fixes * implement scrolling + panning * initial keyboard resizing * fix: mobile first render issues * keyboard responsiveness * fix some issues with the keyboard * implement fit * fix mobile scrolling * add tilde cell to compact * improve mobile keyboard * fix starting mobile terminal font to natural keyboard size * fix mobile resize blank screen flash * shadow focus for mobile * more keyboard fixes * improve mobile status bar * fix: render plugins to mobile clients * allow opening new panes/tabs from the mobile plugin * allow configuring * fix dot slash * improve mobile native soft keyboard interaction * switch to native keyboard - initial implementation * dirty hacks, but phone keyboard works now * adjust keyboard help strip * fix cursor in mobile * fix keyboard and help line * rename keyboard to modifier bar * allow starting new session * make clicking session name bring us to new session menu * allow switching to desktop from the mobile ui * mobile welcome screen initial implementation * mobile welcome screen fixes * various welcome screen fixes * more mobile fixes * moar mobile fixes * mobile ui redesign * fix: swallowed backspace bug * switch session screen improvement * touch up some interfaces * refactor: move mobile state to own struct * refactor: move fit resizing to the server * remove dead flash code * some cleanups * refactor: clear fit on close * refactor: improve fit api * refactor: pane sync functions * refactor: mouse * refactor: break into modules * some cleanups for the sessions screen * fix scrolling and other stuff * refactor: sessions screen * refactor: panes screen * refactor: new session screen * refactor: menu screen * refactor: render * cleanups * refactor: plugin structure * remove unused welcome screen path * Rename api * refactor input.js * cleanup useless comments * fit/mobile refactoring * take out the garbage * remove more comments * remove mobile flash on startup/attach * fix: various mobile startup issues * fix space bugs * cleanup * rustfmt * fix windows build * adjust modifier bar ui * add pr

Commit:6229e37
Author:Aram Drevekenin
Committer:Aram Drevekenin

allow switching to desktop from the mobile ui

Commit:2e273da
Author:Aram Drevekenin
Committer:Aram Drevekenin

remove mobile flash on startup/attach

Commit:470c39e
Author:Aram Drevekenin
Committer:Aram Drevekenin

take out the garbage

Commit:e555483
Author:Aram Drevekenin
Committer:Aram Drevekenin

Rename api

Commit:bbb5590
Author:Aram Drevekenin
Committer:Aram Drevekenin

refactor: improve fit api

Commit:cc9d179
Author:Aram Drevekenin
Committer:Aram Drevekenin

refactor: move fit resizing to the server

Commit:01698a2
Author:Aram Drevekenin
Committer:Aram Drevekenin

dirty hacks, but phone keyboard works now

Commit:c635d98
Author:Aram Drevekenin
Committer:Aram Drevekenin

allow configuring

Commit:dc03ebc
Author:Aram Drevekenin
Committer:Aram Drevekenin

allow opening new panes/tabs from the mobile plugin

Commit:83a7e62
Author:Aram Drevekenin
Committer:Aram Drevekenin

shadow focus for mobile

Commit:e14ec17
Author:Aram Drevekenin
Committer:Aram Drevekenin

implement fit

Commit:c4a4ebd
Author:Aram Drevekenin
Committer:Aram Drevekenin

fix some issues with the keyboard

Commit:4812efb
Author:Aram Drevekenin
Committer:Aram Drevekenin

implement scrolling + panning

Commit:a18347b
Author:Aram Drevekenin
Committer:Aram Drevekenin

pinching fixes

Commit:69c0947
Author:Aram Drevekenin
Committer:Aram Drevekenin

mobile keyboard triggering fix

Commit:a42f320
Author:Aram Drevekenin
Committer:Aram Drevekenin

implement stage 7

Commit:49b217d
Author:Aram Drevekenin
Committer:Aram Drevekenin

phase 2+3

Commit:377476f
Author:Aram Drevekenin
Committer:Aram Drevekenin

Welcome screen del fix (#5160) * fix: session-manager delete * rustfmt * add pr (cherry picked from commit fc6c5942a12d7314f606be390de9d05497f20bd3)

Commit:fc6c594
Author:Aram Drevekenin
Committer:GitHub

Welcome screen del fix (#5160) * fix: session-manager delete * rustfmt * add pr

Commit:618cfaf
Author:Aram Drevekenin

fix: session-manager delete

Commit:227142d
Author:Aram Drevekenin
Committer:GitHub

Support CSI2031 (dark/light theme switching) + remove STDIN cache to avoid stale color queries (#5105) * initial phase 1 implementation * various fies * some fixes * fix fragmented stdin cases * some fixes * renaming * guard against old clients * implement csi 2031 * allow toggling theme with actions * rustfmt * fix: finalize trailing characters in ansi parser as well * add pr

Commit:d2e347d
Author:Aram Drevekenin

allow toggling theme with actions

Commit:059d3d1
Author:Aram Drevekenin

implement csi 2031

Commit:95d0541
Author:Aram Drevekenin

initial phase 1 implementation

Commit:aa29cba
Author:Aram Drevekenin
Committer:GitHub

Some idle CPU and disk/io fixes, new CommandChanged plugin Event (#5063) * initial implementation * fix mouse cpu spam * prevent excess metadata write and prune sessions on startup * consolidate CommandChanged and PaneCommandChanged * tests * rustfmt * add pr

Commit:7de7a31
Author:Aram Drevekenin

consolidate CommandChanged and PaneCommandChanged

Commit:f229d13
Author:Aram Drevekenin

initial implementation

Commit:8ce05f0
Author:Aram Drevekenin
Committer:GitHub

Layout string flag (#4956) * allow sending a stringified layout with --layout-string * add --tab-id to all the things * fix windows tests * add pr

Commit:9b3bb04
Author:Aram Drevekenin

add --tab-id to all the things

Commit:608cc99
Author:Aram Drevekenin
Committer:GitHub

Support OSC-99 desktop notifications (#4931) * initial implementation * tests * fix: always report to zellij, only report to app if it wants a report * rustfmt * fix: always report capabilities to panes requesting them * rustfmt * add pr

Commit:0d1a1da
Author:Aram Drevekenin
Committer:Aram Drevekenin

initial implementation

Commit:802c96f
Author:Aram Drevekenin
Committer:GitHub

CLI focus-pane-id and are-floating-panes-visible actions (#4926) * add zellij action focus-pane-id * zellij action are-floating-panes-visible * fix e2e tests * add pr

Commit:4202267
Author:Aram Drevekenin

zellij action are-floating-panes-visible

Commit:8560f1a
Author:Aram Drevekenin

add zellij action focus-pane-id

Commit:12ee607
Author:Aram Drevekenin
Committer:GitHub

fix: performance regression when switching tabs (#4918) * remove pane render report * only collect pane contents if pane should render * add logs * conditional keybinding serialization * remove logs * rustfmt * fix tests * tests * rustfmt

Commit:a9ca0ce
Author:Aram Drevekenin
Committer:Aram Drevekenin

conditional keybinding serialization

Commit:3fa7744
Author:divens
Committer:GitHub

Add windows support in strider (#4854) * Add Windows path support to strider plugin Strider is a WASM plugin where std::path::PathBuf uses Unix semantics, so Windows backslash paths break parent(), join(), strip_prefix(), etc. Fix by normalizing all incoming paths to forward slashes at plugin boundaries and converting back to native backslashes for display. A new platform.rs module detects the host OS at runtime from the initial_cwd format and centralizes all platform-aware logic. Also fix scan_host_folder on the server side: canonicalize plugin_host_folder so the starts_with security check works on Windows, where canonicalize() adds the \?\ prefix. * Add virtual root view for drive and WSL navigation in strider On Windows, navigating up from a drive root (e.g. C:\) now shows a "Computer" view listing all available drives and WSL distributions. Drives are enumerated via GetLogicalDriveStringsW and WSL distros via `wsl -l -q` (since read_dir on \wsl.localhost fails with OS error 64/67). Drive letters appear before WSL entries, which are displayed as "Ubuntu-24.04 (WSL)" etc. On non-Windows platforms, behavior is unchanged. * Rename ListHostEntries to ListWindowsVolumes and gate behind FullHdAccess The old name was misleading — on Unix it just returned `/`, which isn't "listing host entries." Rename to ListWindowsVolumes to make the Windows-specific intent explicit, gate behind FullHdAccess permission, and replace the Unix implementation with a log::error since the command is not meaningful on non-Windows platforms. * Replace direct array indexing with .get() in strider platform detection Use safe accessors and matches! macro instead of direct byte indexing for bounds-checked access patterns. --------- Co-authored-by: divens <divens.dev@gmail.com>

Commit:4ba41c0
Author:Aram Drevekenin
Committer:GitHub

Release notes and fixes (#4879) * release notes * fix some link issues * rustfmt * fix click wording

Commit:ba076e7
Author:Aram Drevekenin

release notes

Commit:a1e2247
Author:Aram Drevekenin
Committer:GitHub

Ansi dump support (#4848) * add missing pane-id and tab-id arguments to all cli actions * rustfmt * dump-screen --ansi * edit-scrollback --ansi * add --ansi to subscribe * add tests for ansi additions * add ansi render report to plugins * rustfmt * fix e2e tests * add pr

Commit:6518d50
Author:Aram Drevekenin

add ansi render report to plugins

Commit:5552501
Author:Aram Drevekenin

add --ansi to subscribe

Commit:2e81991
Author:Aram Drevekenin

edit-scrollback --ansi

Commit:2ca7080
Author:Aram Drevekenin
Committer:Aram Drevekenin

dump-screen --ansi

Commit:aa5ca34
Author:Aram Drevekenin
Committer:GitHub

Add `--pane-id` and `--tab-id` to all relevant CLI commands (#4846) * add missing pane-id and tab-id arguments to all cli actions * rustfmt * fix tests * update e2e snapshots * add pr

Commit:61365b3
Author:Aram Drevekenin

add missing pane-id and tab-id arguments to all cli actions

Commit:6e521c7
Author:Aram Drevekenin
Committer:GitHub

Focus follows mouse and mouse clickthrough (#4836) * implement focus follows mouse * mouse click through * rustfmt * add pr

Commit:19746fe
Author:Aram Drevekenin

mouse click through

Commit:516bfd2
Author:Aram Drevekenin

implement focus follows mouse

Commit:2035e05
Author:Aram Drevekenin
Committer:GitHub

Highlight priority levels (#4827) * highlight priority levels * add pr

Commit:5f397d6
Author:Aram Drevekenin

highlight priority levels

Commit:47ba633
Author:Aram Drevekenin
Committer:GitHub

allow dumping screen to STDOUT as well (#4823)

Commit:26c5518
Author:Aram Drevekenin
Committer:Aram Drevekenin

allow dumping screen to STDOUT as well

Commit:0172836
Author:Yacine Hmito
Committer:GitHub

feat(cli): add --pane-id option to dump-screen action (#4598) * feat(cli): add --pane-id option to dump-screen action Adds the ability to dump a specific terminal pane's content by passing `--pane-id <ID>` to the `dump-screen` CLI action. When omitted, the existing behavior of dumping the focused pane is preserved. This enables coding agents running inside Zellij to inspect the content of other panes programmatically, without needing complex workarounds. Prior art: https://github.com/theslyprofessor/zellij-pane-tracker, whose design complexity is due to current limitations that this PR addresses. * address review * improve man page entry

Commit:e7985f0
Author:Aram Drevekenin
Committer:GitHub

Single screen session manager (#4821) * initial implementation * adjust ui * preserve selection * width responsiveness * behavior fixes * fix: do not count suppressed panes * ui improvements * multi-screen config and prompt hint * tests + refactoring * improve performance * add pr

Commit:f925b34
Author:Aram Drevekenin
Committer:GitHub

Merge branch 'main' into single-screen-session-manager

Commit:48b5bf6
Author:Aram Drevekenin

behavior fixes

Commit:a8d99b6
Author:Aram Drevekenin
Committer:GitHub

Add cli paste action (#4817) * add cli paste action * add pr

Commit:316e84d
Author:Aram Drevekenin

add cli paste action

Commit:58cb226
Author:Aram Drevekenin
Committer:GitHub

Allow subscribing to pane viewport updates (renders) from the CLI (#4814) * initial subscribe implementation * tests for subscribe * update cli help * rustfmt * add pr

Commit:8e93781
Author:Aram Drevekenin

initial subscribe implementation

Commit:85d29a1
Author:Aram Drevekenin
Committer:GitHub

fix: click links with alt-click (#4809)

Commit:e820ff3
Author:Aram Drevekenin

fix: click links with alt-click

Commit:903cdf5
Author:Aram Drevekenin
Committer:GitHub

Click file paths to open in editor, allow plugins to change styles and hover of viewport (#4802) * initial implementation * implement hover * add styles and foreground/background emphases, fix upsert hover collisions * initial implementation of link plugin * suppress highlighting + clicks on unfocused and mouse mode panes * also make italic * fix env var and ~ expansions * fix regex issues and add defensive validations * fix tests and add plugin assets * add tests * refactor all the things * add pr

Commit:b163898
Author:Aram Drevekenin
Committer:Aram Drevekenin

add styles and foreground/background emphases, fix upsert hover collisions

Commit:44fe032
Author:Aram Drevekenin
Committer:Aram Drevekenin

implement hover

Commit:f26f84d
Author:Aram Drevekenin
Committer:Aram Drevekenin

initial implementation

Commit:f77cdec
Author:Karl Bunch
Committer:GitHub

feat: add per-pane default foreground/background color support (#4737) * feat: add per-pane default foreground/background color support Add per-pane default foreground and background colors, configurable through four surfaces: - OSC 10/11 escape sequences (set/query) and OSC 110/111 (reset) - CLI action: zellij action set-pane-color --pane-id <id> --fg/--bg - Layout config: default_fg/default_bg properties on pane nodes - Plugin API: set_pane_color() SDK function and PaneInfo read-side Colors are applied at render time as a fallback when cells have no explicit foreground/background, without mutating stored grid data. Closes #4712 * refactor: address review feedback for pane color support - Extract adjust_styles_for_custom_bg_fg in output/mod.rs - Move color parsing (xparse_color) from tab into Grid - Move color serialization (ansi_code_to_color_string) into Grid - Pane trait now uses Option<String> for color getters/setters - Add colors to session serialization (dump-layout) - Add default_fg/default_bg to protobuf IPC schema to fix layout-in-session color loss - Update example layout with tab-bar and status-bar * fix stack overflow and ordering * rustfmt * update e2e snapshots --------- Co-authored-by: Karl Bunch <karl@karlbunch.com> Co-authored-by: Aram Drevekenin <aram@poor.dev>

Commit:f618b06
Author:Aram Drevekenin
Committer:GitHub

Visual indication for terminal bells (#4781) * initial implementation * rustfmt * allow disabling with config * add missing kdl * add pr * fix tests

Commit:c8873cb
Author:Aram Drevekenin

allow disabling with config

Commit:f7d109c
Author:Aram Drevekenin

initial implementation

Commit:6e0dd8e
Author:Aram Drevekenin
Committer:GitHub

Atomic show hide floating panes (#4764) * atomic show/hide floating panes (cli, plugin API, keybinding) * rustfmt * add pr

Commit:0444c7f
Author:Aram Drevekenin

atomic show/hide floating panes (cli, plugin API, keybinding)

Commit:2f06914
Author:Aram Drevekenin
Committer:GitHub

Allow closing replaced panes when opening panes in place (#4760) * allow close_replaced_pane from keybind and cli * rustfmt * add pr

Commit:82a4ab3
Author:Aram Drevekenin

allow close_replaced_pane from keybind and cli

Commit:007aa29
Author:Aram Drevekenin
Committer:GitHub

fix: do not attempt to reconnect from the web if kicked from the session (#4730) * fix: do not attempt to reconnect from the web if kicked from the session * fix: add missing protobuf definition * add pr

Commit:69bcf52
Author:Aram Drevekenin

fix: add missing protobuf definition

Commit:3a9cf0a
Author:har7an
Committer:GitHub

Purge `async_std` from the codebase (#4672) * build(utils): Replace `async_std` with `tokio` removing an entire async runtime from the dependency tree. `tokio` has previously been required by `wasmtime` in any case, and the version of async_std we used was ancient (1.3) and relied on unstable features. * build(server): Remove `async_std` from the codebase and replace it with `tokio` instead, which is already used by `zellij-utils` and `wasmtime`. * build(server): Remove dead dependency. * fix: Don't keep an async runtime in the `zellij-utils` subcrate but prefer to reuse an existing runtime from a caller instead. If no such runtime exists, create an ephemeral runtime on the current thread to run async tasks instead. Ideally, the functions needing the async task would be async themselves, but these are called by the `Layout` code based on a `ClientMsg`, and the code handling this currently lives in `zellij-utils` and is sync itself. So, for the time being, there is no way around this runtime requirement without a huge refactoring. * refactor(server): Unclutter async tasks in a few cases where either blocking code was called in an (unnecessary) async task or an entire thread was spawned to block on the result of an async task. * docs(CHANGELOG): Mention PR 4672 * fix(server): Don't terminate when killing a panes children fails but log the error and continue instead. * feat: Add config option for number of async tasks to spawn so users on machines with few resources can configure a task limit without requiring recompilation.

Commit:4e66a0b
Author:Aram Drevekenin
Committer:GitHub

Revamp the sequence plugin (#4713) * initial pipe interface * initial open_x_pane_in_new_tab plugin api implementation * fix: send CommandPaneExited for command panes opened as initial_terminals in new tabs from plugins * open panes in place of specific pane id plugin commands - initial implementation * sequence and plugin api ux * focus self when starting * combine ui and pipe paths * highlight selected pane * initial sequence removal of editing capabilities * fix: translate plugin paths in api * properly trim commands when loaded from pipe or pasted text * minor ux fixes * get ctrl c to work properly * behavior fixes * more ui fixes * fix tests * close tab and end sequence properly * default to AND * zellij sequence alias * add alias * consolidate paths * rustfmt * fix ui padding * add pr * fix: reset scrolling when resetting terminal state

Commit:4d57b58
Author:Aram Drevekenin

open panes in place of specific pane id plugin commands - initial implementation

Commit:da5404d
Author:Aram Drevekenin

initial open_x_pane_in_new_tab plugin api implementation

Commit:e887164
Author:Aram Drevekenin
Committer:GitHub

Allow plugins to read env vars present upon session creation (behind permission) (#4700) * allow plugins to read environment variables * rustfmt * add pr

Commit:998197b
Author:Aram Drevekenin

allow plugins to read environment variables

Commit:90da559
Author:Aram Drevekenin
Committer:GitHub

Propagate plugin alias config changes to plugins (#4698) * propagate plugin alias config changes to plugins * rustfmt * add pr

Commit:958db94
Author:Aram Drevekenin

propagate plugin alias config changes to plugins

Commit:13a82ee
Author:Aram Drevekenin
Committer:GitHub

CLI commands to query tab ids, names and info (#4695) * add equivalent tab_id commands to tab_position commands (cli and plugins) * add list-tabs and current-tab-info cli commands * rustfmt * add pr

Commit:d6cdc51
Author:Aram Drevekenin

add list-tabs and current-tab-info cli commands

Commit:cf9b170
Author:Aram Drevekenin

add equivalent tab_id commands to tab_position commands (cli and plugins)

Commit:e160e9e
Author:Aram Drevekenin
Committer:GitHub

Allow writing characters, bytes and keys to specific panes from the CLI (#4691) * initial implementation * fix tests * implement zellij action send-keys * rustfmt * add test * fix tests and add pr