Releases: zellij-org/zellij
Release v0.37.0
In this release we've done a lot of work on our WebAssembly / WASI plugin system and are very excited to invite adventurous Rust developers to come pioneer our plugin system with us. To read more, please see the official Plugin Documentation.
Please also drop by our Discord or Matrix and show us the plugins you're working on!
Other Highlights
- Some basic themes are now included with the release, give it a try by starting Zellij with
zellij options --theme catppuccin-mocha - Layouts now support environment variables and tilde expansions
- We can now provide a
--cwdoption when starting Zellij
All changes
- fix(plugin): respect hide session option on compact-bar by @pedromfedricci in #2368
- feat: Add layout configuration to exclude panes from tab sync by @on3iro in #2314
- Fix 2205 - Support cwd by @Kangaxx-0 in #2290
- feat(plugins): reload plugin at runtime by @imsnif in #2372
- Update architecture doc by @Kangaxx-0 in #2371
- feat(themes): add nightfox themes by @EdenEast in #2384
- feat: provide default themes by @jaeheonji in #2307
- feat(plugins): update and render plugins asynchronously by @imsnif in #2410
- feat(layout): Support environment variables in cwd (#2288) by @shahamran in #2291
- Add file path context to all IO errors in ConfigError by @Imberflur in #2412
- fix(e2e): fix flaky locked mode test by @imsnif in #2413
- Fix error loading non-existant themes directory and use default themes as the base when merging by @Imberflur in #2411
- improve build/ci times by @tlinford in #2396
- Do not unwrap() the sticky bit setting! by @valpackett in #2424
- Use rust 1.67 by @har7an in #2375
- Fix issue 2421 - Update config file output by @Kangaxx-0 in #2443
- feat(plugins): Plugin workers and strider by @imsnif in #2449
- fix: cwd of newtab action by @onichandame in #2455
- feat(wasm-plugin-system): major overhaul and some goodies by @imsnif in #2510
- feat(plugins): extensive plugin api by @imsnif in #2516
- fix: runtime panic because of local cache by @jaeheonji in #2522
- fix(output): do not hide cursor on a render that does not include visual assets by @imsnif in #2528
- fix(screen): focus tab as well as pane when launching existing plugin by @imsnif in #2530
- fix(strider): clear search term on ESC by @imsnif in #2531
- fix(plugins): only listen to hd if a plugin is subscribed to hd events by @imsnif in #2529
- fix(logs): suppress debug logs when not debugging by @imsnif in #2532
- fix(plugins): allow loading relative urls by @imsnif in #2539
- feat(plugins): plugin pane state events by @imsnif in #2545
- performance(plugins): use a debounced fs watcher by @imsnif in #2546
- feat(plugins): more plugin api methods by @imsnif in #2550
- refactor(plugins): improve api by @imsnif in #2552
- feat(plugins): strider improvements by @imsnif in #2551
- docs(plugins): document the zellij-tile events and commands api by @imsnif in #2554
- docs(plugins): better zellij-tile-docs by @imsnif in #2560
New Contributors
- @on3iro made their first contribution in #2314
- @Kangaxx-0 made their first contribution in #2290
- @EdenEast made their first contribution in #2384
- @shahamran made their first contribution in #2291
- @Imberflur made their first contribution in #2412
- @valpackett made their first contribution in #2424
- @onichandame made their first contribution in #2455
Full Changelog: v0.36.0...v0.37.0
Release v0.36.0
This release includes some nice quality-of-life features, as well as some bug fixes.
Highlights
- It's now possible to hide the session name in the UI (check out: https://zellij.dev/documentation/options.html#hide_session_name)
- A new bindable key action was added to clear the scrollbuffer of the focused pane (check out
ClearScreenhere: https://zellij.dev/documentation/keybindings-possible-actions.html) - Plugins are now loaded asynchronously
All changes
- add my tweaked theme by @alekspickle in #2257
- fix(screen): focus pane on screen edge when moving pane focus offtab by @imsnif in #2293
- Correct summary by @Silejonu in #2235
- Updated layout examples to .kdl from .yaml by @caleflat in #2250
- fix(panes): adding panes to lone stack by @imsnif in #2298
- fix(panes): closing a stacked pane should relayout by @imsnif in #2312
- Fixed issue #1948 by @gbrigandi in #2322
- feat(plugins): async plugin loading by @imsnif in #2327
- docs(readme): update roadmap image by @imsnif in #2333
- Add action to clear all buffers for a specific pane by @alekspickle in #2239
- Added launch in xonsh by @anki-code in #2323
- Add option to hide session name in tab-bar (deriving from #2172) by @marcel-baur in #2301
- fix(layouts): don't default to default swap layouts on new-tab action by @imsnif in #2336
- fix(layouts): nested attribute truncating by @imsnif in #2337
- fix(scrollback-editor): properly invoke editor when command includes spaces by @imsnif in #2339
- fix(layouts): focus tab race by @imsnif in #2340
- feat(panes): allow defining an expanded stacked pane by @imsnif in #2343
- fix(layout): pane focus in stack by @imsnif in #2344
- fix(plugins): prevent Strider from opening double-panes when editing files by @imsnif in #2346
- fix: set sticky bit on socket by @tlinford in #2141
- chore(assets): adjust logo by @imsnif in #2358
- fix: do not hold on to router thread handle until server exit by @tlinford in #2328
New Contributors
- @alekspickle made their first contribution in #2257
- @Silejonu made their first contribution in #2235
- @caleflat made their first contribution in #2250
- @gbrigandi made their first contribution in #2322
- @anki-code made their first contribution in #2323
- @marcel-baur made their first contribution in #2301
Full Changelog: v0.35.2...v0.36.0
Release v0.35.2
This is a patch release to fix some regressions and issues that came up in the last major release a few days ago. It only includes minor fixes.
What's Changed
- fix(sessions): attach --create regression by @imsnif in #2247
- fix(screen): hold and applylayout races by @imsnif in #2251
- fix(ansi): pad line end when erasing characters by @imsnif in #2259
Full Changelog: v0.35.1...v0.35.2
Release v0.35.1
This release includes some major features and bug fixes.
Major features
- Stacked panes - try them out by opening 3 or more panes and then toggling the swap layout with
Alt+[] - Swap layouts - You can now change the way the panes are arranged on screen, by default with
Alt+[] - Floating panes can now be included in layouts
Notable bug fixes
- The loading screen is gone after the first run! The information queried from your terminal emulator will be cached in the default cache folder (
~/.cache/zellij). If you change the font size or colors, you can update Zellij by removing the contents of this folder and reloading Zellij. - The
new-tabaction now properly looks for your layouts in the default folder. - Much more! See all changes below for more details.
All changes
- fix(panes): show visual error when unable to split panes vertically/horizontally by @imsnif in #2025
- WIP: Use
xtaskas build system by @har7an in #2012 - fix(panes): show visual error when failing to resize panes by @imsnif in #2036
- chore(repo): remove nix support by @imsnif in #2038
- Floating panes in layouts by @imsnif in #2047
- add tmux close pane key by @casonadams in #2058
- fix: properly end selection with copy_on_select = false by @tlinford in #2086
- fix 3 bugs by @wlsnx in #2082
- Errors: less unwrap in server by @har7an in #2069
- Support UTF-8 character in tab name and pane name by @naosense in #2102
- errors: handle missing plugin caches by @har7an in #2093
- Improve client disconnect handling by @har7an in #2068
- feat: add ScrollToTop action by @yves-biener in #2110
- Fix status bar not displaying w/ size=1 and show shortcuts by @panki27 in #2091
- Add
GoToTabNameaction to switch tab by name by @naosense in #2120 - Use singlepass in debug mode by @m-lima in #2134
- cleanups around "buffer full" error by @har7an in #2136
- Make the singlepass compiler opt-in through flags by @m-lima in #2146
- Add pencil theme by @aral in #2157
- Apply correct color on 'more tabs' message by @pedromfedricci in #2166
- feat: add args to new-tab action by @jaeheonji in #2072
- update termwiz to v0.20.0 by @tlinford in #2169
- feat(ui): swap layouts and stacked panes by @imsnif in #2167
- fix(ux): cache stdin queries on startup (remove startup delay) by @imsnif in #2173
- Project Governance Change by @imsnif in #2174
- Add Helix editor (
hx) to editors that support prefix positions by @bheylin in #2156 - Extend display char in tab by @naosense in #2119
- Fix fullscreen navigation by @yves-biener in #2117
- fix(grid): glitchy resizes by @imsnif in #2182
- Update bug_report.md template with OSX log directory by @KaiSpencer in #2181
- fix(layout): various parser and ui fixes by @imsnif in #2191
- fix(messaging): cache hold pane messages by their tab_id if the tab is not ready by @imsnif in #2196
- fix(layout): tab focus by @imsnif in #2197
- fix(cli): new-tab now also looks in layout_dir for layouts by @imsnif in #2198
- fix(kdl): new-tab keybind looks in layout_dir for layouts by @jaeheonji in #2200
- fix(cli): edit cwd by @imsnif in #2201
- fix(layouts): do not relayout twice on auto_layout by @imsnif in #2202
- fix(new-tab): get config parameters from config file by @imsnif in #2203
- fix(grid): only use background pending styling when deleting characters by @imsnif in #2204
- feat(layouts): exact panes constraint by @imsnif in #2206
- fix(pty): report no-cwd for empty path returned from sysinfo by @imsnif in #2213
- fix(sixel): report pixel size in winsize change ioctl by @imsnif in #2212
- Fix plugin location path decoding from Url by @tarkah in #2190
- Add action
QueryTabNamesto list all tab names by @naosense in #2145 - fix(pty): do not crash when unable to set cwd by @imsnif in #2214
- fix(layouts): naming and gototabname by @imsnif in #2225
- fix(cli): make auto_layout work through the cli by @imsnif in #2227
- feat: add self-provided themes by @jaeheonji in #2224
- Feature: simulate publishing by @har7an in #2194
- Revert theme pr by @imsnif in #2229
- chore(repo): version 0.35.0 by @imsnif in #2230
New Contributors
- @wlsnx made their first contribution in #2082
- @yves-biener made their first contribution in #2110
- @panki27 made their first contribution in #2091
- @m-lima made their first contribution in #2134
- @aral made their first contribution in #2157
- @bheylin made their first contribution in #2156
- @KaiSpencer made their first contribution in #2181
- @tarkah made their first contribution in #2190
Full Changelog: v0.34.4...v0.35.1
Release v0.34.4
Release v0.34.3
This is mostly a stability, performance and bug fix release, but also includes some nice additional features.
Main Changes
- Performance: both loading and rendering are significantly faster now and take less HW resources
- Loading screen: Zellij now has a minor loading screen (0.5 seconds) before it starts. This is so that input from STDIN will not be lost while Zellij queries the user's terminal emulator for pixel/cell ratio and the default colors
- We now fall back to
/bin/shif we can't find a $SHELL variable - Users can now directionally decrease pane size and not just increase it - by default these are bound to HJKL (uppercase letter) in resize mode, but can be bound like anything to other keys.
- Lots of stability and bug fixes
Breaking Changes (mainly for plugin authors)
- If plugins exceed their scrollback, the lines will be deleted from the top and not the bottom as they were until now - this is to make the behaviour more consistent with "actual" terminals (lines are pushed into the scrollback rather than cut from below). Probably the most significant change here is that if you did \n at the last line of the plugin, you'll need to remove, otherwise you'll get an empty line at the end of the plugin pane.
- Whenever plugins (re-)render, they should completely re-render themselves without considering the previous cursor position or artifacts on screen
- The plugin update function now needs to return a bool value (0/1 in non-zellij-tile world), indicating whether the plugin needs to be rendered or not. This is significant because previously plugins who subscribed to the KeyPress event would render themselves on every keypress, regardless of whether anything changed. To make everything work, plugin authors can just always return true. To be a little smarter about it though, feel free to take a look at the Zellij default-plugins - who all return conditionally here.
For a full list of changes, please see: https://github.com/zellij-org/zellij/blob/main/CHANGELOG.md#0343---2022-12-09
Release v0.33.0
This release includes lots of bugfixes and improvements, as well as some much requested features after our recent configuration and layout revamp. Some highlights:
- It's now possible to make Command Panes close when their process exits by using the
close_on_exit truesetting in the layout, or the--close-on-exitcli flag if opening them from the command line. - It's now also possible to start Command Panes suspended - meaning that their command will only run after initially pressing
ENTERwhen focused on them. This can be useful when starting a dashboard-style layout and not wanting to immediately run all the commands. - Users can now toggle mouse mode at runtime using the
ToggleMouseModekeybind (it is not bound by default so has to be explicitly bound in the keybinds configuration). - New themes! Check out our everforest and kanagawa themes.
Full list of changes
- improve error handling in pty by @naosense in #1840
- feat(command-panes): optionally allow panes to be closed on exit by @imsnif in #1869
- Add
everforesttheme in theme examples by @royrustdev in #1873 - fix(themes): remove colons from everforest themes by @tlinford in #1874
- feat: support multiple themes in one file by @jaeheonji in #1855
- improve error handling in ui module by @naosense in #1870
- errors: Don't unwrap in
server::pty_writerby @har7an in #1872 - docs(example): update the format of the themes for the example directory by @jaeheonji in #1877
- errors: Don't unwrap in
server::terminal_bytesby @har7an in #1876 - errors: Don't unwrap in
zellij_server::outputby @har7an in #1878 - fix: resolve setup --clean panic by @tlinford in #1882
- feature(mouse): allow toggling mouse mode at runtime by @tlinford in #1883
- Display controls line of status-bar plugin if pane size=1 by @welcoMattic in #1875
- feat(command-panes): allow to start suspended by @imsnif in #1887
- build(deps): bump cachix/cachix-action from 10 to 12 by @dependabot in #1891
- flake.lock: Update by @a-kenji in #1889
- build(deps): bump cachix/install-nix-action from 17 to 18 by @dependabot in #1890
- errors: Don't unwrap in
server::os_input_outputby @har7an in #1895 - fix(keybinds): remove space key from shared_except by @jaeheonji in #1884
- allow terminating char to clear search term by @naosense in #1853
- Fixing YAML => KDL conversion with backslash hotkey. by @noyez in #1879
- fix(ui): clear floating panes indication when closing a command pane by @imsnif in #1897
- Reset dim SGR independently from bold by @pedromfedricci in #1803
- fix(edit): treat cwd properly by @imsnif in #1904
- fix(cli-actions): do not query termios for the cli client by @imsnif in #1905
- feat(terminals): send focus in/out events to terminal panes by @imsnif in #1908
- fix(panes): moving and toggling embed/float with frames by @imsnif in #1909
- errors: Remove
log::errorin server by @har7an in #1881 - Fix bat syntax colors when using mosh by @raphCode in #1900
- convert ALT-centered config to kdl and smoothify by @matu3ba in #1910
- Create kanagawa.kdl by @Serif-7 in #1913
- fix: use
temp_dirfor getting temp folder by @xJonathanLEI in #1898 - made the README more aesthetic by @rskbansal in #1885
- Fix: better error reporting when failing to load plugins (#1912) by @har7an in #1914
- cargo: Don't strip release binary by @har7an in #1916
- chore(deps): bump termwiz to 0.19.0 by @xJonathanLEI in #1896
- docs: Improve error handling docs by @har7an in #1919
- chore(ci): remove msrv check by @imsnif in #1923
New Contributors
- @royrustdev made their first contribution in #1873
- @noyez made their first contribution in #1879
- @pedromfedricci made their first contribution in #1803
- @Serif-7 made their first contribution in #1913
- @xJonathanLEI made their first contribution in #1898
- @rskbansal made their first contribution in #1885
Full Changelog: v0.32.0...v0.33.0
Release v0.32.0
This is a pretty major Zellij release that includes lots of goodies mostly geared toward advanced users.
Notable Changes
- All configuration has moved from
YAMLtoKDL- see breaking change below - Command panes: try
zellij run --floating -- ls -l - Send commands to Zellij through the CLI: see
zellij action --help - New layout system
For more details and examples, see: https://zellij.dev/news/config-command-layouts/
Documentation for the new features
Breaking Change
This release changes the entire configuration language of Zellij from YAML to KDL. For configuration, layouts and themes.
When Zellij starts, it will prompt the user before converting the files automatically. The originals will not be modified.
This can also be done manually:
zellij convert-config /path/to/my/config.yaml > /path/to/my/config.kdl
zellij convert-layout /path/to/my/layout.yaml > /path/to/my/layout.kdl
zellij convert-theme /path/to/my/theme.yaml > /path/to/my/theme.kdlAll changes
- Feature: Better error handling/reporting by @har7an in #1670
- Don't send the server an exit signal when client crashes by @raphCode in #1731
- test: simplify tab integration tests by @tlinford in #1728
- Fix: issue 1734 by @har7an in #1749
- Add docs about error handling by @har7an in #1745
- build(deps): bump DeterminateSystems/update-flake-lock from 13 to 14 by @dependabot in #1762
- flake.lock: Update by @a-kenji in #1761
- zellij-server/src/screen: improve error handling by @arriven in #1770
- fix(nix) missing frameworks on darwin by @mdavezac in #1724
- Switch to kdl by @imsnif in #1759
- Server: Remove
panics intabmodule by @har7an in #1748 - zellij-server: improve thread_bus error handling by @arriven in #1775
- feat(ux): rerun command pane by @imsnif in #1787
- fix(converter): escape quotes by @imsnif in #1790
- fix(tab): frameless pane size wrong after closing other panes by @tlinford in #1776
- fix(layouts): error on mixed nodes by @imsnif in #1791
- fix(layouts): duplicate layout definition error by @imsnif in #1792
- fix(cli): use provided session-name by @imsnif in #1793
- zellij/commands: Prevent recursive sessions by @har7an in #1766
- fix(layouts): various kdl layout issues and features by @imsnif in #1797
- feat(layouts): global cwd by @imsnif in #1798
- feat(layouts): edit panes by @imsnif in #1799
- Log
thread_busIPC messages only in debug mode by @har7an in #1800 - feat(cli): zellij run improvements by @imsnif in #1804
- docs: Describe how to handle Options as errors by @har7an in #1805
- feat(panes): change floating window positions by @imsnif in #1810
- fix(editor): default to vi when no editor is set by @imsnif in #1811
- chore(deps): upgrade log4rs by @imsnif in #1814
- allow dump_screen() to only dump the viewport by @dannasman in #1794
- fix(terminal): reset scroll region when clearing screen by @imsnif in #1826
- feat(layouts): allow defining a tab cwd by @imsnif in #1828
- fix(command): better error when command not found by @imsnif in #1829
- errors: Don't panic in
wasm_vmby @har7an in #1827 - fix(layouts): do not override explicitly set layout if it exists by @imsnif in #1830
- fix(layouts): various bugs and better errors by @imsnif in #1831
- improve error handling in route by @naosense in #1808
- rust-toolchain: Update by @a-kenji in #1834
- plugins: Improve error handling on plugin version mismatch by @har7an in #1838
- Add help for options of newly added actions by @jaeheonji in #1839
- fix(various): minor fixes before 32 by @imsnif in #1841
New Contributors
- @arriven made their first contribution in #1770
- @mdavezac made their first contribution in #1724
- @dannasman made their first contribution in #1794
- @naosense made their first contribution in #1808
Full Changelog: v0.31.4...v0.32.0
Release v0.31.4
This is a patch version including many stability and compatibility fixes, none of them breaking.
Changelog for this version
- Terminal compatibility: improve vttest compliance (#1671)
- fix: bracketed paste handling regression (#1689)
- fix: occasional startup crashes (#1706)
- fix: gracefully handle SSH disconnects (#1710)
- fix: handle osc params larger than 1024 bytes (#1711)
- Terminal compatibility: implement faux scrolling when in alternate screen mode(#1678)
- fix: mouse-click on tab-bar in simplified-ui now always focuses the correct tab (#1658)
- fix: sort UI cursors properly when multiple users are focused on the same pane (#1719)
All changes
- Improve vttest by @AutumnMeowMeow in #1671
- build(deps): bump DeterminateSystems/update-flake-lock from 12 to 13 by @dependabot in #1683
- fix: bracketed paste input not getting adjusted properly by @tlinford in #1689
- fix(router): startup race by @imsnif in #1706
- fix(router): gracefully handle client crashes by @imsnif in #1710
- fix osc params 1024 bytes limit by @tlinford in #1711
- flake.lock: Update by @a-kenji in #1703
- feat(compatibility): mouse wheel faux scrolling in alternate screen by @tlinford in #1678
- fix(tab-bar): fix tab bar click when tabs are collapsed, fix tab bar length calculation by @prscoelho in #1658
- fix(ui): sort multiple ui cursors by @imsnif in #1719
New Contributors
- @AutumnMeowMeow made their first contribution in #1671
Full Changelog: v0.31.3...v0.31.4
Release v0.31.3
This is a hotfix to fix a regression in the latest patch where Arrow-Up wasn't working.