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:deadbb5
Author:Aram Drevekenin

fix: query web server from Zellij rather than from each plugin

Commit:5c82512
Author:Aram Drevekenin

only show sessions that allow web clients if this is a web client

Commit:3af1cd1
Author:Aram Drevekenin

allow shutting down web server

Commit:a2b83e7
Author:Aram Drevekenin

formalize sharing/not-sharing configuration

Commit:544c4ed
Author:Aram Drevekenin

Merge branch 'main' into web-client-initial

Commit:27c8986
Author:Aram Drevekenin
Committer:GitHub

feat: multiple Select and Bulk Pane Actions (#4169) * initial implementation with break panes to new tab * break pane group left/right * group embed/eject panes * stack pane group on resize * close pane group * style(fmt): rustfmt * fix tests * group drag and ungroup with the mouse * fix mouse hover for multiple clients * fix for multiple clients * multiple select plugin initial * use real data in plugin * adjust functionality * fix some ux issues * reflect group mouse group selections in plugin * group/ungroup panes in Zellij * highlight frames when marked by the plugin * refactor: render function in plugin * some ui responsiveness * some more responsiveness and adjust hover text * break out functionality * stack functionality * break panes left/right and close multiple panes * fix(tab): only relayout the relevant layout when non-focused pane is closed * status bar UI * embed and float panes * work * fix some ui/ux issues * refactor: move stuff around * some responsiveness and fix search result browsing bug * change plugin pane title * differentiate group from focused pane * add keyboard shortcut * add ui to compact bar * make boundary colors appear properly without pane frames * get plugins to also display their frame color * make hover shortcuts appear on command panes * fix: do not render search string component if it's empty * BeforeClose Event and unhighlight panes on exit * some UI/UX fixes * some fixes to the catppuccin-latte theme * remove ungroup shortcut * make some ui components opaque * fix more opaque elements * fix some issues with stacking pane order * keyboard shortcuts for grouping * config to opt out of advanced mouse actions * make selected + focused frame color distinct * group marking mode * refactor: multiple-select plugin * adjust stacking group behavior * adjust flashing periods * render common modifier in group controls * add to compact bar * adjust key hint wording * add key to presets and default config * some cleanups * some refactoring * fix tests * fix plugin system tests * tests: group/ungroup/hover * test: BeforeClose plugin event * new plugin assets * style(fmt): rustfmt * remove warnings * tests: give plugin more time to load

The documentation is generated from this commit.

Commit:754a2d7
Author:Aram Drevekenin

group marking mode

The documentation is generated from this commit.

Commit:329f3c2
Author:Aram Drevekenin

allow disabling the web session through the config - WIP

Commit:ed98333
Author:Aram Drevekenin

keyboard shortcuts for grouping

Commit:13fef97
Author:Aram Drevekenin

fix some issues with stacking pane order

Commit:636c7c4
Author:Aram Drevekenin

BeforeClose Event and unhighlight panes on exit

Commit:a2724b2
Author:Aram Drevekenin

embed and float panes

Commit:86d53f9
Author:Aram Drevekenin

break panes left/right and close multiple panes

Commit:b7f1d72
Author:Aram Drevekenin

highlight frames when marked by the plugin

Commit:b5cfa06
Author:Aram Drevekenin

group/ungroup panes in Zellij

Commit:d2cfee0
Author:Aram Drevekenin

reflect group mouse group selections in plugin

Commit:968a39f
Author:Aram Drevekenin

remove unnecessary endpoint

Commit:48f799f
Author:Aram Drevekenin

add web client info to session metadata

Commit:518d692
Author:Aram Drevekenin

web session info query endpoint

Commit:7954022
Author:Aram Drevekenin

version query endpoint for server status

Commit:04be264
Author:Aram Drevekenin
Committer:GitHub

feat(plugins): add tab history to the `SessionUpdate` Event (#4014) * feat(plugins): add tab-history to the SessionInfo * update snapshots * style(fmt): rustfmt * update changelog

Commit:afdd626
Author:Aram Drevekenin

feat(plugins): add tab-history to the SessionInfo

Commit:d1a4509
Author:Aram Drevekenin
Committer:GitHub

fix(ux): some filepicker improvements (#4007) * allow closing plugin pane after replacing it * start of strider improvements * improve strider's ux * fix selected text ui component * style(fmt): rustfmt * style(fmt): rustfmt

Commit:da83ab3
Author:Aram Drevekenin

share this session ui

Commit:811a306
Author:Aram Drevekenin

ui indication for session being shared

Commit:4499b5e
Author:Aram Drevekenin

allow closing plugin pane after replacing it

Commit:544982d
Author:Aram Drevekenin
Committer:GitHub

feat(ui): resize shortcuts (#4003) * feat(ui): show resize and focus shortcuts when relevant * update serialization and snapshots * update e2e tests * style(fmt): rustfmt

Commit:675391d
Author:Aram Drevekenin

feat(ui): show resize and focus shortcuts when relevant

Commit:7aaa7ae
Author:Aram Drevekenin
Committer:GitHub

feat(ux): tips on startup (#3988) * add some tips * refactoring and max tip index * add config to disable release notes and startup tips * allow dismissing startup tips from plugin * random tip at startup * custom launch about * fix tests * style(fmt): rustfmt

Commit:f32ce48
Author:Aram Drevekenin

add config to disable release notes and startup tips

Commit:3e493f3
Author:Aram Drevekenin
Committer:GitHub

feat(ui): about plugin and release notes (#3979) * basic about screen * work * finish implementing about plugin except theme spec * show about plugin only on first version run * some cleanups and do the right thing with open/xdg-open * refactor: make ui framework * refactor: remove old stuff * refactor: about plugin * style(fmt): rustfmt * chore(repo): about plugin asset * fix tests * style(fmt): rustfmt!!

Commit:26b99ea
Author:Mark Grey
Committer:GitHub

feat(config): new theme definition spec (#3242) * Implement initial structs from spec * kdl configuration unmarshalling * typo text styling * remove is_selected toggle * incorporate new status bar ui into theming * improve test coverage of config behavior * tab bar correction * correct also compact bar * remove spacing between table columns * refactor table styling * use text_unselected.emphasis_1 for keygroup sep * fix tab bar more text * repair field flattening for theme * remove extra styling KDL node * update tests * updated selected text conversion * padding for header bar * minor corrections for existing themes * background handling * compact bar corrections * properly handle opaque method to activate background * update newer plugins to use styling struct * correct omission of selected state * fix: bold typeface for text elements * fix: fg -> white for list_unselected conversion * fix: emphasis and opacity handling for nested_list * correct stylings in the session-manager * fix emphases translation for table component * correct emphasis for run instructions * correct frame_highlight translation for old themes * provide missing implementation of frame_highlight * fencepost emphasis color names * Set a pseudo-None for frame_unselected in old theme conversion * correct alternating bg for simplified-ui * update snapshots * fix inner text padding and errorneous snapshots * suppress warning about deprecated usage of palette * remove unused import * feat(plugins): API to change floating pane coordinates (#3958) * basic functionality through the cli * added to plugin api * add display area and viewport size to TabInfo * fix tests and add new one * some cleanups * refactor: extract pane_id parsing logic * style(fmt): rustfmt * docs(changelog): floating pane coordinate chagne API * fix(tiled-panes): opening panes from the cli (#3963) * feat(plugins): add `PastedText` Event (#3962) * working with text paste * handle utf8 conversion error * feat(plugins): add PastedText Event * docs(changelog): plugins pasted text event * black for table opaque background * properly apply opacity to table * correct padding for explicit width ribbons * feat(plugins): Allow opening panes near plugin (#3966) * added command + terminal variants * added editor variant * style(fmt): rustfmt * docs(changelog): plugin apis to open panes near plugin * feat(plugins): send info about $EDITOR and $SHELL (#3971) * feat(plugins): send info about $EDITOR and $SHELL * fix(e2e): snapshot update * docs(changelog): plugin editor and shell info * fix(floating-panes): when changing coordinates, if a pane is not floating - make it floating (#3972) * fix(panes): when changing floating pane coordinates, if the pane is not floating, float it * style(fmt): rustfmt * docs(changelog): floating pane coordinate fix * fix(break-pane): strip logical position when inserting pane to new tab (#3973) * docs(changelog): logical position fix * Optional frame_unselected theme * fixture with correct width to account for arrow padding * update snapshot and rustfmt --------- Co-authored-by: Aram Drevekenin <aram@poor.dev>

Commit:c424fd3
Author:Aram Drevekenin

basic about screen

Commit:3267d36
Author:Aram Drevekenin
Committer:GitHub

feat(plugins): send info about $EDITOR and $SHELL (#3971) * feat(plugins): send info about $EDITOR and $SHELL * fix(e2e): snapshot update

Commit:5cb214a
Author:Aram Drevekenin

feat(plugins): send info about $EDITOR and $SHELL

Commit:92e6f0a
Author:Aram Drevekenin
Committer:GitHub

feat(plugins): Allow opening panes near plugin (#3966) * added command + terminal variants * added editor variant * style(fmt): rustfmt

Commit:fdb1e05
Author:Aram Drevekenin

added editor variant

Commit:419d589
Author:Aram Drevekenin

added command + terminal variants

Commit:af120de
Author:Aram Drevekenin
Committer:GitHub

feat(plugins): add `PastedText` Event (#3962) * working with text paste * handle utf8 conversion error * feat(plugins): add PastedText Event

Commit:f3ca8fc
Author:Aram Drevekenin

working with text paste

Commit:c4cb9d3
Author:Aram Drevekenin
Committer:GitHub

feat(plugins): API to change floating pane coordinates (#3958) * basic functionality through the cli * added to plugin api * add display area and viewport size to TabInfo * fix tests and add new one * some cleanups * refactor: extract pane_id parsing logic * style(fmt): rustfmt

Commit:0ed288e
Author:Aram Drevekenin

add display area and viewport size to TabInfo

Commit:4cdb17c
Author:Aram Drevekenin

added to plugin api

Commit:1ca7477
Author:Autumn
Committer:GitHub

feat(terminal): mouse AnyEvent tracking (1003) * Switch to multi-valued mouse buttons and stub for remembering old mouse button state * Stubs for passing all mouse events from user-facing terminal to server side terminal(s) in, including protobuf. Removed "held" mouse actions. Currently commented out calls to left/middle/right-click/release -- need to fix this though, as selection/copy-paste are broken too. cargo build/test/run works OK. cargo xtask build/test/run fails, unable to find crate input::mouse. * 'cargo xtask build' working using refactored functions. * fix(plugins): various cwd fixes (#3545) * fix(plugins): various cwd fixes * fix tests * docs(changelog): floating_panes cwd fix * feat(plugins): rerun_command_pane API (#3546) * feat(plugins): rerun_command_pane API * fix tests * docs(changelog): rerun command pane plugin API * feat(plugins): command pane re-run event (#3553) * docs(changelog): CommandPaneReRun plugin event * feat(ux): first run setup-wizard (#3556) * separate saved/runtime structure, kind of working * serializing config * work * work * save config through the configuration screen * work * startup wizard * style(code): cleanups * fix(session): reload config from disk when switching sessions * style(fmt): rustfmt * fix(config): propagate cli config options to screen * style(fmt): rustfmt * docs(changelog): first run setup wizard * feat(ux): reload config at runtime (#3558) * feat(ux): reload config at runtime * style(fmt): rustfmt * docs(changelog): reload config at runtime * feat(ux): change themes at runtime (#3559) * docs(changelog): change themes at runtime * feat(plugins): API to temporarily bind keys to send a message to a specific plugin id (#3561) * docs(changelog): message to specific plugins API * feat(ux): reload config options at runtime (#3564) * change simplified_ui at runtime * change default_shell at runtime * change pane_frames (from config) at runtime * all other options * some refactoring * style(fmt): rustfmt * docs(changelog): reload config options at runtime * feat(plugins): add plugin APIs to affect other panes (#3576) * resize_pane_with_id and close_pane_with_id * focus_pane_with_id and edit_scrollback_for_pane_with_id * write_to_pane_id and write_chars_to_pane_id * lots more commands * style(fmt): rustfmt * docs(changelog): new plugin apis * docs(readme): update sponsors * feat(plugins): APIs to break multiple panes into a new tab or an existing tab (#3610) * feat(plugins): break multiple panes to a new tab * fix(layouts): properly ignore run instructions when breaking panes * feat(plugins): break multiple panes to existing tab * feat(apis): allow these methods to also specify whether they want focus changed to the tab * various fixes * allow specifying name for the new tab when breaking out panes * style(fmt): rustfmt * docs(changelog): break multiple panes APIs * feat(config): allow loading background plugins on startup (#3616) * remove old partial implementation * feat(plugins): allow loading background plugins on startup * add e2e test * update config * udpate config merging * style(fmt): rustfmt * docs(changelog): background plugins * feat(ui): built-in plugin manager (#3633) * add plugin list to session info * feat(plugins): new_plugin and reload_plugin API commands * feat(plugins): built-in plugin manager * style(fmt): rustfmt * update plugins * docs(changelog): plugin-manager * fix(resurrection): various serialization issues (#3636) * fix(serialization): use kdl-rs for serialization * style(fmt): remove dead code * tests(serialization): update snapshots * style(fmt): rustfmt * docs(changelog): resurrection fixes * fix(http): web requests (#3643) * docs(changelog): http fix * feat(cli): make --layout idempotent(-ish) (#3650) * feat(cli): if inside a session, apply --layout to the session * fix(screen): some focusing races when switching tab focus * style(fmt): rustfmt * docs(changelog): improve --layout flag * fix(plugins): handle race when setting plugin selectable (#3651) * docs(changelog): plugin selectable race * feat(cli): show CACHE_DIR in `zellij setup --check` (#3652) * docs(changelog): add cache dir to setup * fix(ui): various pane name fixes (#3653) * docs(changelog): pane name fixes * fix(ux): only damage the relevant swap layout layer when resizing panes (#3654) * docs(changelog): swap layout damage fix * fix(ui): set background color for UI components according to theme (#3658) * docs(changelog): ui component fix * fix(tab): recover from crash when resizing panes (#3659) * chore(git): Add plugin’s issue templates (#3621) Co-authored-by: Zykino <3809938+Zykino@users.noreply.github.com> * fix(ux): make sure esc works as expected in unlock-first (#3660) * fix(ux): make sure esc always drops us back to base mode * fix(ux): add locked * fix(plugins): handle concurrent http downloads (#3664) * docs(changelog): concurrent http plugin downloads * fix(plugins): various plugin api and other fixes (#3665) * fix(plugins): do not allow focusing an unselectable pane * fix(folders): make sure config and cache folders exist on app start * docs(changelog): plugin fixes * fix(plugins): force use curl system lib on macOS (#3668) * docs(changelog): fix http requests for macos * fix(resurrection): plugin alias resurrection (#3673) * fix(resurrection): make sure plugin aliases are serialized properly * style(fmt): rustfmt * docs(changelog): resurrection alias fix * fix(plugins): do not allow attaching to the same session (#3674) * docs(changelog): fix plugins attaching to same session * fix(plugins): allow switching to a new session with cwd without specifying a layout (#3676) * docs(changelog): switch_session_with_cwd plugin api * fix(config): watch/update config given with --config when appropriate (#3678) * docs(changelog): reload config flag fix * feat(plugins): rebind keys api (#3680) * feat(plugins): add API to explicitly unbind/rebind specific keys in specific modes * style(fmt): rustfmt * docs(changelog): rebind keys plugin api * fix(client): repeat retry screen instruction (#3570) * docs(changelog): sixel fix * feat(ui): rebind keys UI (#3686) * rebind action working * functional ui * responsive ui * some refactoring * properly reset ui state * minor fixes * style(fmt): rustfmt * style(fmt): remove dead code * chore(deps): update to Wasmtime 21.0.2 (#3685) This fixes a race condition which causes occasional crashes and may enable a sandbox escape: <https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-7qmx-3fpx-r45m> * docs(changelog): wasmtime patch upgrade * feat(plugins): add API to list clients, their focused panes and running commands/plugins (#3687) * fix(list-clients): properly show client info after a tab was closed * feat(plugins): add API to list clients, their focused panes and running commands/plugins * style(fmt): rustfmt * docs(changelog): list-clients plugin api * docs(changelog): rebind keys UI * feat(ui): bring back fullscreen indication (#3688) * feat(ui): bring back fullscreen indication * fix e2e tests * docs(changelog): bring back fullscreen indication * fix(ux): new interface/configuration touch-ups (#3691) * fix(ui): copy to clipboard in new ui * fix(ux): allow navigating out of scrolled pane * style(fmt): rustfmt * docs(changelog): ui touch-ups * fix(plugins): rebind insert (#3692) * fix(tab): recover from closing a pane outside the viewport * remap insert in plugin manager * fix(plugins): remap insert key * style(fmt): rustfmt * docs(changelog): insert rebind * fix(plugins): make sure to always render on first resize (#3693) * fix(plugins): make sure to always render on first resize * style(fmt): rustfmt * fix tests * docs(changelog): plugins first-render fix * fix(terminal): recover from partial line drop (#3695) * docs(changelog): grid fix * fix(configuration): leave notification up when base mode changes (#3696) * fix(layouts): suspend commands in remote layouts (#3697) * fix(layouts): suspend commands in remote layouts * style(fmt): rustfmt * docs(changelog): suspend commands in remote layouts * feat(plugins): add configurable black background for ui components (#3681) * feat(plugins): add transparent background for text and nested_list * chore: fix formatting issue * feat: invert flag behaviour * feat: implement bg_black handling for table cells * fix: order of selected and bg_black in protocol * chore: rename from bg_black to opaque * fix: explicit selected, if opaque and selected for text * chore: fix formatting issues * feat: opaque tab-bar * feat: opaque session-manager bars * feat: opaque ribbon in plugin manager * feat: opaque one-line ui * feat: opaque tab-bar in configuration plugin * style(fmt): various cleanups (#3698) * fix(configuration): rounding error in ui * style(fmt): remove warnings * style(fmt): rustfmt * docs(changelog): ui components bg fix * feat(theme): add theme ao (#3478) * feat(themes): add atelier sulphurpool theme (#3596) * feat(themes): added ayu mirage, light, and dark themes (#3567) Co-authored-by: Evan Lauer <evanlauer@u.boisestate.edu> * feat(themes): add Vesper theme (#3443) * feat(themes): add night-owl theme (#3393) Co-authored-by: Bruno Mesquita <bmesquita@atlassian.com> * feat: add iceberg dark/light themes (#3323) * theme: add onedark theme to the available themes (#3313) Onedark is a popular theme from Atom text editor. I've used these sources as the reference for implementing the theme in zellij. https://github.com/joshdick/onedark.vim https://www.figma.com/community/file/1137445418485757476/atom-one-dark-color-palette * feat(themes): add basic ANSI theme (#3308) * fix(theme): fix for gruvbox light and dark (#3255) the previous themes do not have the correct colors and aren't great for the eyes. when selecting e.g. to copy text, it uses red for light theme and the same bg for dark theme. the previous light theme is not even a light theme so I also fixed that as well. Signed-off-by: Soc Virnyl Estela <contact@uncomfyhalomacro.pl> * feat(themes): create lucario.kdl (#3030) * docs(changelog): new themes * style(fmt): remove warnings (#3701) * fix: (tabs) move to next tab if moving to next pane from fullscreen pane (#3498) Co-authored-by: Vasilis Manolopoulos <vmanolop@gmail.comh> * docs(changelog): MoveFocusOrTab fullscreen awareness * docs(readme): add https to curl download * fix(ux): configuration fixes (#3713) * fix(startup): try create config folder if it doesn't exist * fix(configuration): tab bar ui * fix(configuration): rebind ctrl-s to ctrl-a * fix(configuration): remove extra rebinding leaders screen * docs(changelog): configuration fixes * fix(ux): forward keys to pane in locked mode and base mode rather than hard-coded normal mode (#3715) * fix(keybindings): only forward clear keys in locked mode and default mode * style(fmt): rustfmt * docs(changelog): base mode keybindings fix * chore(release): v0.41.0 * HOTFIX: default plugins generic compilation issue * HOTFIX: patch version * chore(release): v0.41.1 * chore(repo): bump development version * fix(input): remove support for extra modifiers (#3725) * docs(changelog): kitty input fix * fix(input): refix ctrl-j (#3746) * fix(input): refix ctrl-j * fix e2e tests * docs(changelog): refix ctrl-j * fix(plugins): cwd and usability fixes (#3749) * fix(plugins): maintain cwd between plugin reloads * fix(plugin-manager): default to loading plugins in the foreground and allow sending space in configuration * docs(changelog): plugin fixes * fix(output-buffer): truncate grid height when not rendering it fully (#3750) * fix(output-buffer): truncate grid height when not rendering it fully * also fix for cases where the changed lines are not contiguous * docs(changelog): output-buffer fix * fix(tabs): maintain event order for MoveTab (#3758) * fix(tabs): maintain event order for MoveTab * style(fmt): rustfmt * docs(changelog): event ordering fix * fix(plugins): do not open extra instances of aliases (#3759) * docs(changelog): do not duplicate built-in plugins * fix(terminal): reset kitty keyboard support when resetting terminal state (#3760) * docs(changelog): kitty reset fix * fix(config): crash if unable to watch config folder (#3761) * docs(changelog): config dir crash fix * fix(statup): slow startup on some occasions (#3767) * add debug logs * add log messages * some more logs and possible fix? * remove logs * style(fmt): rustfmt * remove comment * docs(changelog): occasional slow startup fix * fix(panes): handle various invalid state situations (#3776) * docs(changelog): invalid state handling * chore: add vendored_curl feature (#3766) * docs(changelog): vendored curl option * fix(ux): change plugin manager shortcut (#3779) * docs(changelog): shortcut change * fix(screen): send PaneClosed event to plugins also when closing the whole tab (#3781) * docs(changelog): pane-closed event * feat(plugins): add /cache folder (#3787) * feat(plugins): add /cache folder * style(fmt): rustfmt * docs(changelog): plugin cache folder * docs(changelog): plugin cache folder url * chore(package): vendor common_path (#3780) * vendoring common_path * add original license to common_path * Clarify license scope * refactor: remove rand dependency --------- Co-authored-by: Aram Drevekenin <aram@poor.dev> * docs(changelog): vendor common_path * fix(plugins): derive hash and ord for PaneId (#3790) * docs(changelog): derive hash and ord for paneid * style(fmt): remove warnings * chore(version): set patch version * chore(release): v0.41.2 * chore(repo): bump development version * chore(repo): fix typo in lock file * fix(plugins): properly focus pane after tab was closed (#3797) * fix(plugins): properly focus pane after tab was closed * style(fmt): rustfmt * docs(changelog): focus_pane_with_id fix * fix(plugins): properly pad UI elements when they have a background (#3806) * fix(plugins): mark selected background up until component width * style(fmt): rustfmt * docs(changelog): ui component padding * feat(plugins): allow changing the plugin's `/host` folder (under a new permission) (#3827) * working without notifying plugins * permissions and events * cleanups and formatting * style(fmt): rustfmt * docs(changelog): allow plugins to change host folder * chore(repo): add funding.json (#3838) * chore(repo): add funding.json * update funding json url * fix(plugins): do not detach if using a slash in a session name (#3839) * docs(changelog): slash detach fix * fix(plugins): properly focus plugin after it was hidden (#3841) * docs(changelog): plugin hidden focus fix * fix(screen): off by 1 error when focusing layout tab (#3844) * docs(changelog): layout tab focus fix * fix(multiuser): properly clear fake cursors (#3845) * docs(changelog): multiplayer cursor fix * feat(ux): pin floating panes (#3876) * working * ui indication * add keybinding * add to plugin panes * fix with multiple cursors * toggle with the mouse * fix e2e tests and add new one * some cleanups * add to layouts * make mouse click more lenient * allow setting a new floating pane as pinned * make toggle work throughthe command line * add to plugin api * get tests to pass * style(fmt): rustfmt * docs(changelog): pin floating panes * fix(layout-applier): logical index pane sorting (#3893) * initial draft * working with floating panes as well * use the same method for applying an initial layout to tiled panes * some refactoring * all code paths working with logical positioning fallback! * get tests to compile * get e2e tests to pass * fix e2e remote runner * breadth-first layout sorting * fix some bugs * style(fmt): rustfmt * style(fmt): remove comments * docs(changelog): logical index pane sorting * fix(terminal): mode 2026 feature detection response (#3884) The response to the 2026 mode query was missing a `?` character. The response should be of the format `CSI ? 2026 ; N $ y` where N can be any value in the range 0-4 inclusive. References: https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036 https://vt100.net/docs/vt510-rm/DECRPM.html * docs(changelog): synchronized rendering query response * fix(terminal): cursor overflow (#3894) * docs(changelog): cursor overflow fix * fix(ux): make the Zellij mouse interaction work * fix(rendering): only render if selection/floating-pane position was changed * do not clear copied to clipboard message on mouse motion * various functionality fixes * fix tests * fixes and cleanups * style(fmt): rustfmt * fix(mouse): only report state to plugins when it changed * fix(plugins): send mouse clicks to inactive panes * tests: any event tracking in panes * style(fmt): rustfmt * style: remove unused stuff --------- Signed-off-by: Soc Virnyl Estela <contact@uncomfyhalomacro.pl> Co-authored-by: Autumn Lamonte <AutumnWalksTheLake@gmail.com> Co-authored-by: Aram Drevekenin <aram@poor.dev> Co-authored-by: Zykino <Zykino@users.noreply.github.com> Co-authored-by: Zykino <3809938+Zykino@users.noreply.github.com> Co-authored-by: Daniel Jankowski <Daniel.Jankowski@rub.de> Co-authored-by: Manuel de Prada Corral <6536835+manueldeprada@users.noreply.github.com> Co-authored-by: bjorn3 <17426603+bjorn3@users.noreply.github.com> Co-authored-by: Michael Jones <yardquit@pm.me> Co-authored-by: carl <44021312+achristmascarl@users.noreply.github.com> Co-authored-by: Evthestrike <62308745+Evthestrike@users.noreply.github.com> Co-authored-by: Evan Lauer <evanlauer@u.boisestate.edu> Co-authored-by: Rafael Bardini <rbardini@users.noreply.github.com> Co-authored-by: Bruno Mesquita <brunocmesquita@gmail.com> Co-authored-by: Bruno Mesquita <bmesquita@atlassian.com> Co-authored-by: Chromo-residuum-opec <x@matte.fyi> Co-authored-by: Shone Binu <62597277+shonebinu@users.noreply.github.com> Co-authored-by: Mike Greiling <mike@pixelcog.com> Co-authored-by: Soc Virnyl S. Estela <socvirnyl.estela+github@uncomfyhalomacro.pl> Co-authored-by: Eric Raio <43896+ericraio@users.noreply.github.com> Co-authored-by: Vasileios Manolopoulos <44965914+VasilisManol@users.noreply.github.com> Co-authored-by: Vasilis Manolopoulos <vmanolop@gmail.comh> Co-authored-by: tranzystorekk <tranzystorek.io@protonmail.com> Co-authored-by: s1syph0s <34000276+s1syph0s@users.noreply.github.com> Co-authored-by: Darren Burns <darrenburns@users.noreply.github.com>

Commit:42adc8c
Author:Aram Drevekenin
Committer:GitHub

feat(ux): stack panes command (#3905) * working across tabs and floating panes through the cli * finalize cli command * plugin api * style(fmt): rustfmt * fix: re-focus pane in stack if it was focused * style(fmt): rustfmt * remove outdated comment

Commit:da7787f
Author:Aram Drevekenin

plugin api

Commit:dd291e2
Author:Aram Drevekenin
Committer:GitHub

feat(ux): pin floating panes (#3876) * working * ui indication * add keybinding * add to plugin panes * fix with multiple cursors * toggle with the mouse * fix e2e tests and add new one * some cleanups * add to layouts * make mouse click more lenient * allow setting a new floating pane as pinned * make toggle work throughthe command line * add to plugin api * get tests to pass * style(fmt): rustfmt

Commit:8894359
Author:Aram Drevekenin

add to plugin api

Commit:bdaf2d6
Author:Aram Drevekenin

allow setting a new floating pane as pinned

Commit:09b819d
Author:Aram Drevekenin

add keybinding

Commit:0c21eae
Author:Aram Drevekenin
Committer:GitHub

feat(plugins): allow changing the plugin's `/host` folder (under a new permission) (#3827) * working without notifying plugins * permissions and events * cleanups and formatting * style(fmt): rustfmt

Commit:1aad4bc
Author:Aram Drevekenin

permissions and events

Commit:ce71f74
Author:Aram Drevekenin

working without notifying plugins

Commit:d671ab6
Author:Aram Drevekenin
Committer:GitHub

feat(plugins): add API to list clients, their focused panes and running commands/plugins (#3687) * fix(list-clients): properly show client info after a tab was closed * feat(plugins): add API to list clients, their focused panes and running commands/plugins * style(fmt): rustfmt

Commit:25fdba3
Author:Aram Drevekenin

feat(plugins): add API to list clients, their focused panes and running commands/plugins

Commit:0c9d72c
Author:Aram Drevekenin
Committer:GitHub

feat(plugins): rebind keys api (#3680) * feat(plugins): add API to explicitly unbind/rebind specific keys in specific modes * style(fmt): rustfmt

Commit:b168427
Author:Aram Drevekenin

feat(plugins): add API to explicitly unbind/rebind specific keys in specific modes

Commit:9f1e38f
Author:Aram Drevekenin
Committer:GitHub

feat(ui): built-in plugin manager (#3633) * add plugin list to session info * feat(plugins): new_plugin and reload_plugin API commands * feat(plugins): built-in plugin manager * style(fmt): rustfmt * update plugins

Commit:3048b52
Author:Aram Drevekenin

feat(plugins): new_plugin and reload_plugin API commands

Commit:15dc49f
Author:Aram Drevekenin

add plugin list to session info

Commit:d78f358
Author:Aram Drevekenin
Committer:GitHub

feat(plugins): APIs to break multiple panes into a new tab or an existing tab (#3610) * feat(plugins): break multiple panes to a new tab * fix(layouts): properly ignore run instructions when breaking panes * feat(plugins): break multiple panes to existing tab * feat(apis): allow these methods to also specify whether they want focus changed to the tab * various fixes * allow specifying name for the new tab when breaking out panes * style(fmt): rustfmt

Commit:7a3b14d
Author:Aram Drevekenin

allow specifying name for the new tab when breaking out panes

Commit:41dc59f
Author:Aram Drevekenin

feat(apis): allow these methods to also specify whether they want focus changed to the tab

Commit:036a58b
Author:Aram Drevekenin

feat(plugins): break multiple panes to existing tab

Commit:c363c2d
Author:Aram Drevekenin

feat(plugins): break multiple panes to a new tab

Commit:1776d24
Author:Aram Drevekenin
Committer:GitHub

feat(plugins): add plugin APIs to affect other panes (#3576) * resize_pane_with_id and close_pane_with_id * focus_pane_with_id and edit_scrollback_for_pane_with_id * write_to_pane_id and write_chars_to_pane_id * lots more commands * style(fmt): rustfmt

Commit:67f4a09
Author:Aram Drevekenin

lots more commands

Commit:c2e1a87
Author:Aram Drevekenin

write_to_pane_id and write_chars_to_pane_id

Commit:f9feab8
Author:Aram Drevekenin

focus_pane_with_id and edit_scrollback_for_pane_with_id

Commit:774b943
Author:Aram Drevekenin

resize_pane_with_id and close_pane_with_id

Commit:056537d
Author:Aram Drevekenin
Committer:GitHub

feat(ux): first run setup-wizard (#3556) * separate saved/runtime structure, kind of working * serializing config * work * work * save config through the configuration screen * work * startup wizard * style(code): cleanups * fix(session): reload config from disk when switching sessions * style(fmt): rustfmt * fix(config): propagate cli config options to screen * style(fmt): rustfmt

Commit:03f40bb
Author:Aram Drevekenin

Merge branch 'main' into runtime-configuration

Commit:a3ad621
Author:Aram Drevekenin
Committer:GitHub

feat(plugins): command pane re-run event (#3553)

Commit:357661e
Author:Aram Drevekenin

feat(plugins): command pane re-run event

Commit:512c0e8
Author:Aram Drevekenin

save config through the configuration screen

Commit:d44950a
Author:Aram Drevekenin
Committer:GitHub

feat(plugins): rerun_command_pane API (#3546) * feat(plugins): rerun_command_pane API * fix tests

Commit:d6b1791
Author:Aram Drevekenin

feat(plugins): rerun_command_pane API

Commit:121f7e1
Author:Aram Drevekenin

serializing config

Commit:3554633
Author:Aram Drevekenin
Committer:GitHub

feat(plugins): allow opening command panes in the background (hidden) (#3530) * start background pane * open command and edit panes in the background * some cleanups * style(fmt): rustfmt * more cleanups

Commit:a04950a
Author:Aram Drevekenin

open command and edit panes in the background

Commit:458f6ca
Author:Aram Drevekenin

start background pane

Commit:ffbdb09
Author:Aram Drevekenin
Committer:GitHub

feat(plugins): some APIs for controlling and receiving information about other panes (#3515) * add context to opening command panes, and events for their start/finish * show/hide other panes plugin apis * get tests to pass * style(fmt): rustfmt * update plugin test snapshots

Commit:a055561
Author:Aram Drevekenin

show/hide other panes plugin apis

Commit:94ec1e7
Author:Aram Drevekenin

add context to opening command panes, and events for their start/finish

Commit:84ff29d
Author:Aram Drevekenin
Committer:GitHub

feat(ui): configuration screen + configure non-colliding keys at runtime (#3502) * rebind => reconfigure * persist keybinds and mode info to new tabs * add configuration plugin * make tests pass * remove warnings * style(fmt): rustfmt

Commit:1b90ed7
Author:Aram Drevekenin

rebind => reconfigure

Commit:a6d6c0e
Author:Aram Drevekenin
Committer:GitHub

feat(ui): status bar redesign (#3475) * work * work * working * get default mode from server and some ui responsiveness * work * finish design and get tests to pass * get e2e tests to pass * add classic layout * add classic layout assets * fix e2e tests * style(fmt): rustfmt * fix plugin system test * style(fmt): some cleanups

Commit:5cd59a2
Author:Aram Drevekenin

get default mode from server and some ui responsiveness

Commit:1f0ae94
Author:Aram Drevekenin
Committer:GitHub

feat(plugins): rebind keys at runtime (#3422) * refactor(server): interpret keys on server so they can be rebound * feat(plugins): allow rebinding keys at runtime * various cleanups * add tests * style(fmt): rustfmt * fix(tests): address (some) e2e test flakiness * style(fmt): rustfmt

Commit:b9e5ecb
Author:Aram Drevekenin

various cleanups

Commit:0bf5180
Author:Aram Drevekenin

feat(plugins): allow rebinding keys at runtime

Commit:62c37a8
Author:Aram Drevekenin
Committer:GitHub

feat(keybindings): support multiple modifiers (eg. Ctrl+Alt) and the kitty keyboard protocol (#3383) * parse kitty keys from STDIN * work * work * replace internal Key representation with the new KeyWithModifier in all the places * work * work * allow disabling with config * adjust ordering * handle enabling/disabling properly on the client * support multiple modifiers without kitty too * normalize uppercase keys * get tests to pass * various cleanups * style(fmt): rustfmt

Commit:a97dfd6
Author:Aram Drevekenin

work

Commit:7562a81
Author:Aram Drevekenin
Committer:GitHub

feat(plugins): add API to open new tabs with a LayoutInfo (#3305) * feat(plugins): add api to open new tabs with a layout info * fix tests

Commit:1fdcf51
Author:Aram Drevekenin

feat(plugins): add api to open new tabs with a layout info

Commit:9d2e7fe
Author:Aram Drevekenin
Committer:GitHub

feat(plugins): add api to close current plugin instance (#3228)

Commit:3cb1ff9
Author:Aram Drevekenin

feat(plugins): add api to close current plugin instance

Commit:2eaa50c
Author:Aram Drevekenin
Committer:GitHub

feat(plugins): add api to dump the current session layout to a plugin (#3227)

Commit:ab0804d
Author:Aram Drevekenin

feat(plugins): add api to dump the current session layout to a plugin

Commit:07b76ee
Author:Aram Drevekenin
Committer:GitHub

feat(pipes): allow piping messages to plugins from keybindings (#3212)