Skip to content

Releases: zellij-org/zellij

Release v0.38.0

28 Aug 07:49
Compare
Choose a tag to compare

This release includes lots of improvements for the Zellij UI/UX as well as some exciting new plugin features and infrastructure.
It also provides some performance and resourcee utilization improvements.

This release is a breaking change for plugins. Please see the upgrade guide for plugins

UI/UX

> Session Manager

262799415-6d93e314-8096-49a3-9a51-36f794b3a2c0

Read more...

Zellij now includes a built-in session-manager. It is implemented as a plugin and so all of its API is available to plugin authors as well.
The session-manager can switch between sessions, focus a specific tab or pane in the current or in another session, create new sessions and fuzzy-find sessions/tabs/panes by their names.

By default, the session-manager can be started from the SESSION mode, the default key-binding sequence being Ctrl o + w.

If you have a custom keybindings configuration, please see the "Updating a custom keybindings configuration" section below.

> Move panes between tabs

Panes can now be moved between tabs. One can Break a pane to a new tab, meaning that a new tab would be created "around" this pane.

Read more... These new keybindings can be found in `Tab` mode. By default, they are: * `Ctrl t` + `b` - Break pane into new tab * `Ctrl t` + `[` or `]` - Move pane between tabs

If you have a custom keybindings configuration, please see the "Updating a custom keybindings configuration" section below.

> Support shortcuts for opening commands in floating panes

Read more... The `Run` keybinding now supports `floating true` and `name `. This would allow you to bind a key shortcut (eg. `Ctrl f`), to open a specific command (eg. `cargo test`) in a floating pane.

> All session names should now be non-offensive

Thanks @tlinford for your work on this!

> Updating a custom keybindings configuration

Read more... Do you have a custom keybindings configuration in your `config.kdl` file? Does the `keybinds` section have a `clear-defaults=true` attribute? If so, you have to take a small extra step to get the new keybindings for the `session-manager` and the `Break pane` keybindings:

You'll need to either:

  1. Remove the clear-defaults=true part in order to get these keybindings "merged" with your custom keybindings.
  2. Manually add the following sections to your configuration: session-manager, break-tab

Plugins

> Plugins are now configurable

Read more...

One can now start plugins with a custom key/value configuration, either from layouts:

    pane {
        plugin location="file:/path/to/my/plugin.wasm" {
            some_key "some_value"
            another_key 1
        }
    }

Or from the cli:

zellij action launch-or-focus-plugin --configuration "some_key=some_value,another_key=1"

> Plugin permission system (thanks and great work @jaeheonji!)

img-2023-08-12-164545

Read more... Zellij now includes a permission system for plugins. Plugins can request permissions with the `request_permission` API call. This will display a help screen asking the user to approve permissions to this plugin. Permissions are cached in a `permissions.kdl` file in the user's cache folder and can be cleared by deleting or editing the file.

> move_to_focused_tab attribute added to the LaunchOrFocusPlugin keybinding

Read more...

The LaunchOrFocusPlugin keybind (and launch-or-focus-plugin cli command) now include a move_to_focused_tab attribute. If true, when focusing the plugin it will always start in the user's focused tab. This is useful for UI pop-up windows (such as the session-manager) to not move the user's focus from the tab they're in.

> Plugins are now forwards compatible thanks to protocol buffers

Read more...

Zellij plugins have always communicated with the host system (Zellij itself) by serializing/deserializing complex structures over STDIN/STDOUT. This caused problems both for other SDK writers who had to reverse engineer the serialization and for plugin upgrading. Starting this version, Zellij uses Ptorocol Buffers in order to communicate across the wasm boundary.

This means that plugins now should not break in future versions unless there's an API behavior change, which we as maintainers make an effort to do only very rarely.

Bug Fixes

  1. Plugged a memory leak (more info: #2675)
  2. Fixed occasional pane resizing glitches
  3. Pane frame is now colored when in a mirrored multiplayer session

Special thanks to @har7an for his tremendous efforts bringing the CI into shape before the release!

New Contributors

Do you like Zellij?

Me too! So much so that I spend 100% of my time developing and maintaining it and have no other income. Zellij will always be free and open-source. If the tool gives you value and you are able, please consider a recurring monthly donation of 5-10$ to help me pay my bills. There are Zellij stickers in it for you! https://github.com/sponsors/imsnif

Full Changelog: v0.37.2...v0.38.0

Release v0.37.2

20 Jun 15:43
Compare
Choose a tag to compare

This is a patch release to fix some minor issues in the previous release.

What's Changed

Full Changelog: v0.37.1...v0.37.2

Release v0.37.1

19 Jun 16:28
Compare
Choose a tag to compare

This is a patch release mainly to fix a regression in 0.37.0 where the user's theme_dir was not picked up.

What's Changed

Full Changelog: v0.37.0...v0.37.1

Release v0.37.0

18 Jun 12:27
Compare
Choose a tag to compare

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 --cwd option when starting Zellij

All changes

New Contributors

Full Changelog: v0.36.0...v0.37.0

Release v0.36.0

13 Apr 08:44
Compare
Choose a tag to compare

This release includes some nice quality-of-life features, as well as some bug fixes.

Highlights

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

Full Changelog: v0.35.2...v0.36.0

Release v0.35.2

10 Mar 14:02
Compare
Choose a tag to compare

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

07 Mar 09:26
Compare
Choose a tag to compare

This release includes some major features and bug fixes.

Major features

  1. Stacked panes - try them out by opening 3 or more panes and then toggling the swap layout with Alt + []
  2. Swap layouts - You can now change the way the panes are arranged on screen, by default with Alt + []
  3. Floating panes can now be included in layouts

Notable bug fixes

  1. 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.
  2. The new-tab action now properly looks for your layouts in the default folder.
  3. Much more! See all changes below for more details.

All changes

New Contributors

Full Changelog: v0.34.4...v0.35.1

Release v0.34.4

13 Dec 14:11
Compare
Choose a tag to compare

This is a patch release to fix some regressions introduced in v0.34.3

Changes

  • Fix application crash when resizing with flexible plugin panes in layout (Issue #2006)
  • Allow the SHELL variable to contain non-absolute shell paths (e.g. SHELL=sh instead of SHELL=/bin/sh, Issue #2015)

Release v0.34.3

09 Dec 11:17
Compare
Choose a tag to compare

This is mostly a stability, performance and bug fix release, but also includes some nice additional features.

Main Changes

  1. Performance: both loading and rendering are significantly faster now and take less HW resources
  2. 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
  3. We now fall back to /bin/sh if we can't find a $SHELL variable
  4. 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.
  5. Lots of stability and bug fixes

Breaking Changes (mainly for plugin authors)

  1. 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.
  2. Whenever plugins (re-)render, they should completely re-render themselves without considering the previous cursor position or artifacts on screen
  3. 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

10 Nov 08:57
Compare
Choose a tag to compare

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 true setting in the layout, or the --close-on-exit cli 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 ENTER when 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 ToggleMouseMode keybind (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

New Contributors

Full Changelog: v0.32.0...v0.33.0