All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog
- Fix: replace the library with the dependency problem (zellij-org#1001)
- Fix: crash when opening pane in non-existent cwd (zellij-org#995)
- Feature: add
copy-command
option (zellij-org#996)
- Terminal compatibility: properly handle insertion of characters in a line with wide characters (zellij-org#964)
- Terminal compatibility: properly handle deletion of characters in a line with wide characters (zellij-org#965)
- Fix: properly remove clients when detaching from a session (zellij-org#966)
- Fix: plugin theme coloring (zellij-org#975)
- Fix: prevent unhandled mouse events escape to terminal (zellij-org#976)
- Fix: ensure clippy runs on all targets (zellij-org#972)
- Fix: atomically create default assets every time a session starts (zellij-org#961)
- Fix: Allow multiple users to switch tabs with the mouse (zellij-org#959)
- Fix: Allow switching tabs with the mouse when pane is in fullscreen (zellij-org#977)
- Fix: pass bell (helpful for eg. desktop notifications) from terminal to desktop (zellij-org#981)
- Fix: tab click crash on mouse click with multiple users (zellij-org#984)
- Fix: accidental tab synchronization bug between multiple users when clicking with mouse (zellij-org#986)
- Fix: Properly move users out of closed tab in a multiuser session (zellij-org#990)
- Feature: Pass active pane title to terminal emulator (zellij-org#980)
- Feature: Improve default keybindings (zellij-org#991)
- Feature: Configurable scroll buffer size (zellij-org#936)
- Feature: add collaboration support - multiple users using multiple cursors (zellij-org#957)
- Hotfix: Focus fullscreen pane when switching tab focus (zellij-org#941)
- Fix: missing themes in configuration merge (zellij-org#913)
- Fix: add
gray
to theme section (zellij-org#914) - Fix: prevent zellij session from attaching to itself (zellij-org#911)
- Terminal compatibility: fix flaky scrolling issue (zellij-org#915)
- Fix: handle pasted text properly in windows terminal (zellij-org#917)
- Fix: update example config options (zellij-org#920)
- Fix: correct handling of unbinds (zellij-org#923)
- Fix: improve perfomance when resizing window with a large scrollback buffer (zellij-org#895)
- Fix: support multiple users in plugins (zellij-org#930)
- Fix: update default layouts (zellij-org#926)
- Add: infrastructure to show distinct tips in the
status-bar
plugin (zellij-org#926) - Feature: Allow naming panes (zellij-org#928)
-
Add: initial preparations for overlay's (zellij-org#871)
-
Add: initial
zellij.desktop
file (zellij-org#870) -
Add: section for third party repositiories
THIRD_PARTY_INSTALL.md
(zellij-org#857) -
Add: suggestion for similar session name, on attach (zellij-org#843)
-
Fix: handling and overwriting options through the cli (zellij-org#859)
THIS IS A BREAKING CHANGE: Previously it was only possible to turn off certain features through the cli, now it also is possible to overwrite this behavior - for that the following changed:
- renamed and inverted:
disable_mouse_mode -> mouse_mode no_pane_frames -> pane_frames
- cli options added:
mouse-mode [bool] pane-frames [bool] simplified-ui [bool]
- cli flag removed:
simplified-ui
Now the cli options can optionally be toggled on, even if the config turns it off, example:
zellij options --mouse-mode true
-
Fix: fix CSI cursor next line not moving cursor to beginning of line after moving it down (zellij-org#863)
-
Refactor: Support multiple users in
Tab
s (zellij-org#864) -
Refactor: close_pane returns closed pane (zellij-org#853)
-
Add: ability to configure zellij through layouts (zellij-org#866)
-
Refactor: simplify terminal character style diff (zellij-org#839)
-
Fix: improve performance with large scrollback buffer (zellij-org#881)
-
Add: support osc8 escape code (zellij-org#822)
-
Add: optionally leave ephemeral modes by pressing the
esc
key to default config (zellij-org#889) -
Feature: Multiple users UI for panes behind a turned-off feature flag (zellij-org#897)
-
Add: plugin api, to provide version information to plugins (zellij-org#894)
-
Add: initial session name to layout template (zellij-org#789)
-
Fix: simplify matches (zellij-org#844)
-
Add: support darwin builds on ci (zellij-org#846)
-
Add: e2e instructions for x86 and arm darwin systems (zellij-org#846)
-
Fix: use key-value style for
docker-compose
(zellij-org#338) -
Fix: unify zellij environment variable handling (zellij-org#842)
-
Add: toggle boolean options with cli flags (zellij-org#855)
-
HOTFIX: fix pasting regression (zellij-org#858)
- Fix: improve performance of echoed keystrokes (zellij-org#798)
- Add: Use hyperlinks for the setup information (zellij-org#768)
- Feature: Rotate Pane location (zellij-org#802)
- Terminal compatibility: improve handling of wide-characters when inserted mid-line (zellij-org#806)
- Fix: plugins are now only compiled once and cached on disk (zellij-org#807)
- Fix: pasted text performs much faster and doesn't kill Termion (zellij-org#810)
- Fix: resizing/scrolling through heavily wrapped panes no longer hangs (zellij-org#814)
- Terminal compatibility: properly handle HOME/END keys in eg. vim/zsh (zellij-org#815)
- Fix: Typo (zellij-org#821)
- Fix: Update
cargo-make
instructions postv0.35.3
(zellij-org#819) - Fix: Unused import for darwin systems (zellij-org#820)
- Add:
WriteChars
action (zellij-org#825) - Fix: typo and grammar (zellij-org#826)
- Add:
rust-version
- msrv field toCargo.toml
(zellij-org#828) - Fix: improve memory utilization, reap both sides of pty properly and do not expose open FDs to child processes (zellij-org#830)
- Fix: move from the deprecated
colors_transform
tocolorsys
(zellij-org#832) - Feature: plugins can now detect right mouse clicks (zellij-org#801)
- Fix: open pane in cwd even when explicitly specifying shell (zellij-org#834)
- Fix: do not resize panes below minimum (zellij-org#838)
- Feature: Non directional resize of panes (zellij-org#520)
- Add:
colored
crate to replace manual color formatting (zellij-org#837) - Add: introduce
thiserrror
to simplify error types (zellij-org#836) - Add: support
--index
option for theattach
subcommand in order to choose the session indexed by the provided creation date (zellij-org#824) - Fix: simplify the main function significantly (zellij-org#829)
- Feature: half page scrolling actions (zellij-org#813)
- Fix: Prevent text overwrite when scrolled up (zellij-org#655)
- Add: Treat empty config files as empty yaml documents (zellij-org#720)
- Fix: Commands that don't interact with the config file don't throw errors on malformed config files (zellij-org#765)
- Add: Add config options to default config file (zellij-org#766)
- Fix: Properly clear "FULLSCREEN" status when a pane exits on its own (zellij-org#757)
- Refactor: handle clients in tabs/screen (zellij-org#770)
- Feature: kill-session and kill-all-sessions cli commands (zellij-org#745)
- Fix: Keep default file permissions for new files (zellij-org#777)
- Feature: Add mouse events to plugins – including strider and the tab-bar (zellij-org#629)
- Feature: Directional movement of panes (zellij-org#762)
- Refactor: More groundwork to support multiple-clients in tabs (zellij-org#788)
- HOTFIX: mouse selection now working (zellij-org#752)
- HOTFIX: prevent strider from descending into /host folder (zellij-org#753)
- Fix: Properly open new pane with CWD also when switching to a new tab (zellij-org#729)
- Feature: Option to create a new session if attach fails (
zellij attach --create
) (zellij-org#731) - Feature: Added the new
Visible
event, allowing plugins to detect if they are visible in the current tab (zellij-org#717) - Feature: Plugins now have access to a data directory at
/data
– the working directory is now mounted at/host
instead of.
(zellij-org#723) - Feature: Add ability to solely specify the tab name in the
tabs
section (zellij-org#722) - Feature: Plugins can be configured and the groundwork for "Headless" plugins has been laid (zellij-org#660)
- Automatically update
example/default.yaml
on release (zellij-org#736) - Feature: allow mirroring sessions in multiple terminal windows (zellij-org#740)
- Feature: display a message when the current pane is in full-screen (zellij-org#450)
- Terminal compatibility: handle cursor movements outside scroll region (zellij-org#746)
- Terminal compatibility: scroll lines into scrollback when clearing viewport (zellij-org#747)
- New panes/tabs now open in CWD of focused pane (zellij-org#691)
- Fix bug when opening new tab the new pane's viewport would sometimes be calculated incorrectly (zellij-org#683)
- Fix bug when in some cases closing a tab would not clear the previous pane's contents (zellij-org#684)
- Fix bug where tabs would sometimes be created with the wrong index in their name (zellij-org#686)
- Fix bug where wide chars would mess up pane titles (zellij-org#698)
- Fix various borderless-frame in viewport bugs (zellij-org#697)
- Fix example configuration file (zellij-org#693)
- Fix various tab bar responsiveness issues (zellij-org#703)
- Allow plugins to run system commands (zellij-org#666)
- This has also added a temporary new permission flag that needs to be specified in the layout. This is a breaking change:
has become:
... plugin: strider ...
A plugin can be given command executing permission with:plugin: path: strider
plugin: path: strider _allow_exec_host_cmd: true
- This has also added a temporary new permission flag that needs to be specified in the layout. This is a breaking change:
- Use the unicode width in tab-bar plugin, for tab names (zellij-org#709)
- Fix automated builds that make use of the
setup
subcommand (zellij-org#711) - Add option to specify a tabs name in the tab
layout
file (zellij-org#715) - Improve handling of empty valid
yaml
files (zellij-org#716) - Add options subcommand to attach (zellij-org#718)
- Fix: do not pad empty pane frame title (zellij-org#724)
- Fix: Do not overflow empty lines when resizing panes (zellij-org#725)
-
Plugins don't crash zellij anymore on receiving mouse events (zellij-org#620)
-
A universal logging system has been implemented (zellij-org#592)
- Added
log
crate support for logging within Zellij - Messages sent over the
stderr
of plugins are now logged as well, bringing backdbg!
support!
- Added
-
Add displaying of the
session-name
to thetab-bar
(zellij-org#608) -
Add command to dump
layouts
to stdout (zellij-org#623)zellij setup --dump-layout [LAYOUT]
[default, strider, disable-status]
-
Add
action
:ScrollToBottom
(zellij-org#626)- Bound by default to
^c
inscroll
mode, scrolls to bottom and exists the scroll mode
- Bound by default to
-
Simplify deserialization slightly (zellij-org#633)
-
Fix update plugin attributes on inactive tab (zellij-org#634)
-
New pane UI: draw pane frames - can be disabled with ctrl-p + z, or through configuration (zellij-org#643)
-
Terminal compatibility: support changing index colors through OSC 4 and similar (zellij-org#646)
-
Fix various shells (eg. nushell) unexpectedly exiting when the user presses ctrl-c (zellij-org#648)
-
Fix line wrapping while scrolling (zellij-org#650)
-
Indicate to the user when text is copied to the clipboard with the mouse (zellij-org#642)
-
Terminal compatibility: properly paste multilines (zellij-org#653 + zellij-org#658)
-
Terminal compatibility: fix progress bar line overflow (http://github.com/zellij-org/zellij/pull/656)
-
Add action to toggle between tabs
ToggleTab
, bound by default to [TAB] in tab mode (zellij-org#622) -
Terminal compatibility: properly handle cursor shape changes in eg. Neovim (zellij-org#659)
-
The resize and layout systems have been overhauled (zellij-org#568)
- Resizing a terminal then returning it to its original size will now always return panes to their original sizes and positions
- Resize mode resizes panes by 5% of the space on screen, not some fixed number
- Panes on-screen keep their ratios – a screen split 50/50 between two panes will remain 50/50 even as the terminal is resized (zellij-org#406)
- The terminal can now be resized without leaving fullscreen mode
- Layout parts are split into equal percentages if no explicit split-size is given (zellij-org#619)
- Fixed display of the tab bar at small terminal widths
-
Add
tabs
tolayouts
(zellij-org#625)The layout has now a template, and tabs section. The template specifies the location a tab is inserted in with
body: true
.Eg:
--- template: direction: Horizontal parts: - direction: Vertical borderless: true split_size: Fixed: 1 run: plugin: tab-bar - direction: Vertical # <= The location of body: true # <= the inserted tab. - direction: Vertical borderless: true split_size: Fixed: 2 run: plugin: status-bar tabs: - direction: Vertical # <= Multiple tabs can be - direction: Vertical # <= specified in the layout. - direction: Vertical
The
NewTab
action can optionally be bound to open a layout that is assumed to be in the newtabs
sectionThis is a BREAKING CHANGE for people that have the
NewTab
action already bound in the config file:- action: [NewTab, ] key: [F: 5,]
must now be specified as:
- action: [NewTab: ,] key: [F: 5,]
Optionally a layout that should be opened on the new tab can be specified:
- action: [NewTab: { direction: Vertical, parts: [ {direction: Horizontal, split_size: {Percent: 50}}, {direction: Horizontal, run: {command: {cmd: "htop"}}},], key: [F: 6,]
-
Kill children properly (zellij-org#601)
-
Change name of
Run
binding for actions (zellij-org#602) -
Add running commands to
layouts
(zellij-org#600)POSSIBLE BREAKING CHANGE for custom layouts: Plugins are under the run category now, that means:
plugin: status-bar
is now:
run: plugin: status-bar
-
Add
on_force_close
config option (zellij-org#609)
- Add improved error handling for layouts (zellij-org#576)
- Change layout directory from data to config (zellij-org#577)
POSSIBLE BREAKING CHANGE:
In case of having custom layouts in the previous
layout-dir
one can switch either the layouts to the new dir, or set thelayout-dir
to be the currentlayout-dir
- Fix
Makefile.toml
because of missing directory (zellij-org#580) - Autodetach on force close (zellij-org#581)
- Add option to specify a default shell (zellij-org#594)
- Add action to run bound commands in a pane (zellij-org#596)
- Initial mouse support (zellij-org#448)
- Add
layout-dir
tosetup --check
subcommand (zellij-org#599)
- Fix crash when padding before widechar (zellij-org#540)
- Do not lag when reading input too fast (zellij-org#536)
- Session name optional in attach command (zellij-org#542)
- Fix build on platforms with TIOCGWINSZ / ioctl() integer type mismatch (zellij-org#547)
- Fix(ui): session mode should be disabled in locked mode (zellij-org#548)
- Add option to start in arbitrary modes (zellij-org#513)
- Attaching to a session respects the
default_mode
setting of the client (zellij-org#549) - Add option to specify a color theme in the config (zellij-org#550)
- Fix config options to not depend on
simplified_ui
(zellij-org#556) - Don't rename
unnamed
tabs upon deletion of other tabs (zellij-org#554) - Add layout to disable the status bar (zellij-org#555)
- Significantly improve terminal pane performance (zellij-org#567)
- HOTFIX: fix Zellij not responding to input on certain terminals (zellij-org#538)
- Remove unused imports (zellij-org#504)
- More Infrastructure changes for the upcoming session detach feature: run server and client in separate processes (zellij-org#499)
- Restructuring cargo workspace: Separate client, server and utils into separate crates (zellij-org#515)
- Terminal compatibility: handle most OSC sequences (zellij-org#517)
- Split
layout
flag intolayout
andlayout-path
(zellij-org#514) - Fix behaviour of the
clean
flag (zellij-org#519) - Make distinction clearer between certain configuration flags (zellij-org#529)
- Resource usage and performance improvements (zellij-org#523)
- Feature: Detachable/Persistent sessions (zellij-org#531)
- Terminal compatibility: Support wide characters (zellij-org#535)
This version is mostly an installation hotfix.
- Add
check
flag tosetup
subcommand, movegenerate-completions
subcommand tosetup
flag (zellij-org#503) - Change the asset installation from an opt-in to an opt-out (zellij-org#512)
- Change Switch default config loading order of
HOME
and system (zellij-org#488) - Add support for requesting a simpler layout from plugins, move
clean
flag fromoptions
tosetup
(zellij-org#479) - Improve config loading slightly (zellij-org#492)
- Terminal compatibility: preserve current style when clearing viewport (zellij-org#493)
- Fix propagation of plugin ui request (zellij-org#495)
- Handle pasted text properly (zellij-org#494)
- Fix default keybinds for tab -> resize mode (zellij-org#497)
- Terminal compatibility: device reports (zellij-org#500)
- Forward unknown keys to the active terminal (zellij-org#501)
- Add more functionality to unbinding the default keybindings (zellij-org#468)
- Terminal compatibility: fix support for CSI subparameters (zellij-org#469)
- Move the sync command to tab mode (zellij-org#412)
- Fix exit code of
dump-default-config
(zellij-org#480) - Feature: Switch tabs using
Alt + h/l
in normal mode if there are no panes in the direction (zellij-org#471) - Terminal Compatibility: various behaviour fixes (zellij-org#486)
- Fix handling of
$HOME
config
directory, especially relevant for darwin systems (zellij-org#487)
- Terminal compatibility: pass vttest 8 (zellij-org#461)
- Add a Manpage (zellij-org#455)
- Code infrastructure changes to support the upcoming session detach (zellij-org#223)
- Fix the tab '(Sync)' suffix in named tabs (zellij-org#410)
- Improve performance when multiple panes are open (zellij-org#318)
- Improve error reporting and tests of configuration (zellij-org#423)
- Refactor install module to setup module (zellij-org#431)
- Add theme support through xrdb (zellij-org#239)
- Fix default keybindings in resize mode and add arrow parity in tab and scroll mode (zellij-org#441)
- Terminal compatibility: pass vttest 2 and 3 (zellij-org#447)
- Stabilize colors (zellij-org#453)
- Doesn't quit anymore on single
q
press while in tab mode (zellij-org#342) - Completions are not assets anymore, but commands
option --generate-completion [shell]
(zellij-org#369) - Fixes in the default configuration
default.yaml
file. Adds initial tmux-compat keybindingstmux.yaml
(zellij-org#362) - Added the
get_plugin_ids()
query function to the plugin API (zellij-org#392) - Implemented simple plugin timers via the
set_timeout()
call (zellij-org#394) - Added more configuration locations, changed
ZELLIJ_CONFIG
toZELLIJ_CONFIG_FILE
(zellij-org#391) - Improved keybind handling (zellij-org#400)
- Added initial screen-compat keybinds
screen.yaml
(zellij-org#399) - Added the ability to synchronize input sent to panes (zellij-org#395)
- Terminal fix: pass vttest 1 (zellij-org#408)
- Change config to flag (zellij-org#300)
- Add ZELLIJ environment variable on startup (zellij-org#305)
- Terminal fix: do not clear line if it's not there (zellij-org#289)
- Do not allow opening new pane on the status bar (zellij-org#314)
- Allow scrolling by full pages (zellij-org#298)
- Reduce crate size by 4.8MB using
cargo diet
, to 77kB (zellij-org#293) - Draw UI properly when instantiated as the default terminal command (zellij-org#323)
- Resolve ambiguous pane movements by their activity history (zellij-org#294)
Beta release with all the things