zellij-org/zellij
51.1
Adequate · 11 October 2026
250.6k
lines of production code
Rust
primary language
4
measurements over time
What this system is
Zellij is a terminal multiplexer that manages terminal sessions, panes, and tabs with a focus on interactive, plugin-driven user interfaces. It provides built-in tools for session management, layout configuration, file browsing, and remote access via web clients, all governed by a KDL-based configuration system. The application supports advanced terminal features like image rendering and floating panes, while utilizing a robust plugin architecture for extensibility.
How it got here
2020–2021 — workspace restructuring and plugin API overhaul
22 changes.
The project restructured into a multi-crate workspace, centralizing infrastructure in zellij-utils and modularizing the client and server codebases. A major overhaul of the plugin API introduced Protocol Buffers for serialization and expanded capabilities, while the UI received customizable pane frames and contextual hints. This period also established comprehensive test coverage and added the Strider file-manager plugin.
2022–2023 — KDL migration and plugin ecosystem overhaul
33 changes.
This period focused on migrating the configuration and layout system to KDL format while rewriting the plugin execution engine to use WebAssembly and Protocol Buffers. It also introduced significant new features including floating pane management, inline image support, and a comprehensive plugin-driven UI component system.
2024–2026 — IPC modernization and plugin ecosystem expansion
31 changes.
This period focused on replacing the ad-hoc client-server communication with a robust, typed Protocol Buffers-based IPC layer, enabling reliable remote session attachment and web client integration. Concurrently, the project significantly expanded its default plugin ecosystem, introducing interactive tools for configuration, layout management, session sharing, and pane grouping, while enhancing the terminal UI with context menus, popups, and high-resolution image support.
Features
Add Windows MSI installer with WiX v6
Users can now install Zellij on Windows via a native MSI package built with WiX v6. The installer supports dual-scope installation (per-user or per-machine), allowing users to choose whether Zellij is installed for all users or just themselves, with appropriate PATH and registry updates for each scope. It includes a custom welcome/EULA dialog, automatic removal of previous versions via major upgrade, and embeds the binary and license information directly into the installer.
wix · high confidence
Add built-in plugin manager UI
Users can now install and configure plugins directly within the terminal interface. This change introduces a new \plugin-manager\ component that provides a fuzzy-searchable list of available plugins, allows users to specify plugin URLs and configuration key-value pairs, and supports loading plugins from disk or background tasks. The implementation includes the necessary Rust source code, Cargo configuration for WASM targeting, and standard project scaffolding.
default-plugins/plugin-manager · high confidence
Add example distribution with bundled plugin and layout
Introduces a new example distribution that bundles a custom Zellij plugin (written in Rust/WASM) and includes a pre-configured layout and theme. Users can now run this example to see how to package a plugin directly into a custom Zellij executable, with the plugin displaying session state (tabs, panes, clients) and permission prompt counts without requiring external permission requests.
example/distribution, example/distribution/plugin · high confidence
Add web server API contract definitions
New generated Rust source files define the protocol buffer structures for the web server, including messages for querying the server version (returning version, IP, and port) and shutting it down.
_zellij-utils/assets/prost\_web\server · high confidence
Add zellij-tile-utils helper library for color and style macros
A new utility library, zellij-tile-utils, has been added to the project. It provides shared Rust macros (rgb, palette\_match, and style) that simplify the creation of ANSI color codes and text styling by mapping internal palette definitions to ansi\_term types. This allows other components to consistently format status bars and other UI elements using these helper utilities.
zellij-tile-utils · high confidence
Added SVG logo, desktop entry, and icon resource assets
The assets directory now includes a new high-resolution SVG logo (assets/logo.svg) for branding, a Linux desktop entry file (assets/zellij.desktop) to enable proper application integration in desktop environments, and an icon resource file (assets/zellij.rc) referencing the 128px ICO file for Windows.
assets · high confidence
Added dynamic shell completion helpers for run, edit, and pipe commands
New completion helper scripts (comp.bash, comp.fish, comp.zsh) have been added to support dynamic shell integrations. These scripts provide convenience aliases (zr, zrf, zri for running sessions; ze, zef, zei for editing; and zpipe for piping) and enhance shell-specific completions, such as session name suggestions for attach/kill/delete in Fish and alias suggestions for the zpipe command.
zellij-utils/assets/completions · high confidence
Added nested session protocol definitions for guest-host communication
The \zellij-utils/assets/plugins\ area now includes generated Rust code for the nested session API, enabling a host session to receive a guest's input mode and key bindings. This change adds the \HintReporting\ capability to the protocol, allowing nested sessions to report their current state (such as keybinds and input modes) back to the parent session, which facilitates better integration and control when using nested Zellij sessions.
zellij-utils/assets/plugins · high confidence
Added shell auto-start snippets for Bash, Fish, and Zsh
New auto-start scripts have been added for Bash, Fish, and Zsh shells. These snippets allow users to automatically attach to an existing Zellij session or start a new one, and optionally exit the shell session when Zellij exits, controlled by the ZELLIJ\_AUTO\_ATTACH and ZELLIJ\_AUTO\_EXIT environment variables.
zellij-utils/assets/shell · high confidence
Added theme configuration examples
The example/themes directory now includes an example.kdl file demonstrating how to define custom themes using both RGB and HEX color formats, along with a README.md explaining how to create and contribute themes to the project.
example/themes · high confidence
Configurable copy destinations and improved clipboard process management
Users can now configure where copied text is stored via the \copy\_on\_select\ and \copy\_command\ options, supporting both the OSC 52 terminal protocol and external clipboard helpers. The server now manages clipboard helper processes more robustly by reaping them in the background to prevent zombie processes while allowing X11/Wayland helpers to remain alive to own the system selection.
zellij-server/src/tab · high confidence
Generated IPC protocol definitions for client-server communication
The \zellij-utils/assets/prost\_ipc\ directory now contains the generated Rust source files (\client\_server\_contract.rs\ and \generated\_client\_server\_api.rs\) that define the message structures and API contract for inter-process communication between Zellij clients and the server. These files, generated by \prost-build\, establish the schema for actions, styling, pane references, and other core interactions, enabling the client and server to communicate using the defined protobuf-based protocol.
_zellij-utils/assets/prost\ipc · high confidence
Introduce Session Manager plugin for switching, creating, and resurrecting sessions
Adds a new default plugin that provides a unified interface for managing terminal sessions. Users can now switch between active sessions, create new ones with specific layouts and working directories, and resurrect previously saved sessions from a list of dead sessions. The plugin supports fuzzy search across all sessions and includes a welcome screen mode for initial setup.
default-plugins/session-manager/src · high confidence
Introduce Share Session plugin for browser-based session sharing
Adds a new 'Share Session' plugin that allows users to share their Zellij session with web clients via a local web server. The plugin provides a terminal UI to start and stop the web server, manage login tokens (including creation, revocation, and renaming), and toggle session sharing on or off. It displays the server status, base URL, and connection encryption warnings, and supports keyboard shortcuts for all actions.
default-plugins/share · high confidence
Introduce Strider file-manager plugin with cross-platform support
Adds the Strider plugin, a new file-manager component that provides a browsable file list, fuzzy search, and mouse interaction (click and hover). The plugin includes platform detection logic to correctly handle Windows drive letters, UNC paths, and path separators, ensuring consistent behavior across Unix and Windows hosts.
default-plugins/strider · high confidence
Introduce multiple-select plugin for pane grouping
A new \multiple-select\ plugin has been added to the default plugins, enabling users to group and manage multiple panes simultaneously. The plugin provides a UI for performing bulk actions on selected panes, such as stacking, breaking out, closing, or floating them, with keyboard shortcuts displayed for navigation and control.
default-plugins/multiple-select · high confidence
Introduce protobuf-based contract for web server IPC communication
Added a new \web\_server\_contract\ module that defines the protocol for communicating with the web server via IPC instead of HTTPS. This includes a Protobuf schema (\web\_server\_commands.proto\) specifying instructions to query the server version or shut it down, along with Rust implementations to serialize and deserialize these messages between the internal application types and the protobuf format.
_zellij-utils/src/web\_server\contract · high confidence
Introduction of default KDL configuration file
Zellij now ships with a default configuration file (default.kdl) written in the KDL format, establishing the baseline settings for plugin aliases, background plugins, and the right-click context menu. This file defines the structure for user customization, including default keybinding presets and UI options like pane frames and auto-layout, replacing previous configuration mechanisms with a structured, editable KDL schema.
zellij-utils/assets/config · high confidence
Introduction of floating pane management system
This change introduces the core logic for managing floating panes in the Zellij terminal multiplexer. The new \FloatingPanes\ struct and its associated \FloatingPaneGrid\ module handle the positioning, resizing, and z-indexing of floating terminal windows. Key capabilities include moving panes within the viewport boundaries, resizing them while respecting minimum dimensions, and managing their visibility (including pinned panes and fullscreen modes). The implementation also supports configuring pane frame styles and integrates with the client connection system to handle display updates across multiple clients.
_zellij-server/src/panes/floating\panes · high confidence
New About plugin with release notes, startup tips, and interactive keybinding management
The about plugin has been rewritten to provide a richer user experience. On startup, users now see a random tip screen offering quick usage hints. The main screen displays release notes for the current version and includes a checklist of new features (such as Nested Sessions, Pane Focus, and Scroll By Command) that automatically detects which keybindings are missing or conflicting in the user's configuration, offering a one-click fix to apply them. The plugin also supports clickable links for the changelog and sponsor page, and allows users to navigate between feature details using mouse clicks or keyboard selection.
default-plugins/about · high confidence
New KDL layout examples for tabs, htop, and pane colors
The example/layouts directory now includes several new KDL layout files demonstrating specific configurations: multiple\_tabs\_layout.kdl and multiple\_tabs\_layout\_htop\_command.kdl show multi-tab setups with vertical splits; pane\_colors\_layout.kdl illustrates setting default foreground and background colors on individual panes; and run\_htop\_layout.kdl and run\_htop\_layout\_with\_plugins.kdl provide examples of running htop, with the latter including tab and status bar plugins.
example/layouts · high confidence
New Layout Manager plugin for interactive layout management
Adds a new default plugin that provides an interactive, fuzzy-searchable interface for managing Zellij layouts. Users can now list, search, create, import, rename, and delete layouts directly within the terminal. The plugin features a layout list screen with fuzzy matching (via SkimMatcherV2), optimistic UI updates for immediate feedback on add/rename/delete actions, and detailed error reporting for invalid KDL layout files. It supports creating layouts from the current session (optionally limited to the active tab), importing layouts via pasted text, and applying layouts to the current session with options to retain terminal or plugin panes.
default-plugins/layout-manager · high confidence
New built-in themes added
The application now ships with a significantly expanded set of built-in color themes, including ao, atelier-sulphurpool, ayu (dark, light, and mirage), blade-runner, catppuccin (frappe, latte, macchiato, and mocha), cyber-noir, dayfox, dracula, everforest (dark and light), and flexoki-dark. Additionally, a new 'ansi' theme is provided for terminals that do not support truecolor, allowing users to customize the appearance via their terminal's native color settings.
zellij-utils/assets/themes · high confidence
New compact bar plugin with interactive click actions and tooltips
The bars plugin now includes a new compact bar implementation that supports interactive click actions, tooltips, and right-click menus. Users can configure double-click behavior on tabs (rename) and empty space (new tab), and the bar provides visual feedback for keybinds via tooltips. The plugin also handles nested session hints and clipboard operations with appropriate system-specific messages.
default-plugins/bars · high confidence
New configuration plugin with interactive setup wizard and settings screens
This change introduces a new configuration plugin located in default-plugins/configuration, providing a first-run setup wizard and a full settings interface for managing keybindings, mouse bindings, themes, and plugin blocks. The plugin implements interactive UI components for editing configuration, including action pickers, list editors, and contrast checking for themes, allowing users to customize their environment directly within the terminal.
default-plugins/configuration · high confidence
New context menu and prompt plugins for interactive user input
Users can now interact with Zellij through new default plugins: a context menu that appears on right-click to provide pane and tab actions, and a prompt plugin that displays interactive popups (such as confirmations, inputs, forms, and choice lists) to gather user responses. These plugins enable richer, interactive workflows directly within the terminal session.
default-plugins/context-menu, default-plugins/prompt, zellij-server/src/route · high confidence
New default and themed layout configurations with swap support
The \zellij-utils/assets/layouts\ directory now includes a comprehensive set of built-in layout definitions, replacing previous defaults with structured KDL files. This adds \default.kdl\ (tab and status bars), \classic.kdl\ (classic status bar mode), \compact.kdl\ (compact bar), \disable-status-bar.kdl\, \no-plugins.kdl\, \strider.kdl\ (with a side panel), and \welcome.kdl\ (for the initial welcome screen). Additionally, \default.swap.kdl\, \classic.swap.kdl\, \compact.swap.kdl\, and \strider.swap.kdl\ provide dynamic pane arrangements that adapt to the number of open panes, supporting vertical, horizontal, stacked, and floating layouts.
zellij-utils/assets/layouts · high confidence
New interactive configuration, popup, and context menu system
Zellij now supports interactive popups and a right-click context menu, allowing users to access features like configuration, session management, and plugin management via floating UI overlays. The server-side screen logic in \popups.rs\ handles popup state, mouse interactions, and scrolling, while the default keybinds in \default.kdl\ and \unlock-first.kdl\ define the new bindings for launching these plugins and navigating the new modes.
zellij-server/src/screen, zellij-utils/assets/keybinds · high confidence
New plugin UI component API
Plugins can now build rich, interactive user interfaces using a new set of composable widgets. This location introduces the core component library—including buttons, dropdowns, text inputs, number steppers, toggles, menus, tables, and dialogs—along with a focus-group system for managing keyboard navigation and a common widget trait. These components provide a structured, state-driven way to render interactive UI elements within the terminal.
_zellij-tile/src/ui\components · high confidence
New plugin-driven UI component system
The server now includes a new \UiComponentParser\ that renders interactive UI elements (buttons, dialogs, dropdowns, menus, tables, text inputs, etc.) via a plugin API. This introduces a structured way to display styled, positionable widgets in the terminal, supporting features like keyboard navigation, focus states, and theme-aware styling.
zellij-server/src/ui/components · high confidence
New session manager UI with welcome screen and unified search
The session manager plugin now includes a new user interface located in \src/ui\. This introduces a welcome screen featuring a stylized banner and logo, and a unified search interface that allows users to browse and filter active and resurrectable sessions. The UI renders hierarchical lists of sessions, tabs, and panes with pre-computed caching for performance and supports detailed status indicators like connection counts and creation times.
default-plugins/session-manager/src/ui · high confidence
Remote terminal attachment via HTTP(S) and WebSocket
Users can now attach to a remote Zellij session from the terminal client. This change introduces the \remote\_attach\ module, which implements an authentication flow (logging in with a token, managing session cookies, and supporting saved session tokens with a retry mechanism) and establishes WebSocket connections for terminal and control traffic. The implementation uses the \isahc\ HTTP client for authentication requests and \tokio-tungstenite\ with \rustls\ for secure WebSocket connections, supporting custom CA certificates and an insecure mode for development.
_zellij-client/src/remote\attach · high confidence
Support for Kitty Image Protocol and Sixel graphics
The terminal output module now supports rendering images via the Kitty Graphics Protocol and Sixel, allowing terminals that support these protocols to display inline images. This change introduces integration with \KittyImageStore\ and \SixelImageStore\, handling image scaling, capability detection, and the serialization of image data into VTE escape sequences for display.
zellij-server/src/output · high confidence
Support for the Kitty Image Protocol
Zellij now supports the Kitty Image Protocol, allowing applications to display high-resolution images directly in the terminal. This change introduces a new module (\zellij-server/src/panes/kitty\_graphics\) that includes an APC interceptor to capture image data, a parser to handle Kitty-specific commands (including zlib-compressed payloads), a grid state manager for image placement and scaling, and an image store with LRU eviction and quota management. Unit tests verify correct parsing, interception, and storage behavior.
_zellij-server/src/panes/kitty\graphics · high confidence
API
Updated Zellij API protocol definitions
The generated Protobuf API definitions in \zellij-utils/assets/prost\ have been updated to reflect the current Zellij interface. This includes expanded event payloads (such as \NestedSessionModeUpdate\, \ContextMenu\, and \PromptResult\), new input modes (\Prompt\, \Tmux\), and additional plugin commands for managing panes, tabs, and sessions. The changes also introduce new permission types (e.g., \ReadPaneContents\, \RunActionsAsUser\) and support for interactive prompts and keybind presets, ensuring the internal API contract matches the latest feature set.
zellij-utils/assets/prost · high confidence
Architecture
Inline termwiz input parsing module for non-WASM targets
The terminal input parsing logic from the termwiz library has been inlined into the project's vendored source tree (zellij-utils/src/vendored/termwiz) for non-WASM builds. This change introduces a dedicated input parser, keymap, and read buffer to handle terminal sequences, modifiers, and mouse events directly within the codebase, replacing the previous external dependency or stubbed implementation for these platforms.
zellij-utils/src/vendored · high confidence
Introduction of zellij-utils crate with core infrastructure
The zellij-utils crate has been introduced to centralize shared infrastructure, providing foundational components for the application. This includes a robust error-handling system that captures thread-local call stacks for better debugging, a new CLI argument parser built on Clap, and a distribution abstraction that allows different builds to bundle their own plugins, layouts, and configurations. The crate also standardizes platform-specific path resolution for configuration and cache directories, implements a resumable asynchronous file downloader, and defines the core data structures for sessions, panes, and keybindings.
zellij-utils/src · high confidence
Plugin API communication migrated to Protocol Buffers
The plugin API boundary in \zellij-utils/src/plugin\_api\ has been restructured to use Protocol Buffers for serializing data between the host and plugins. This change introduces a comprehensive set of \.proto\ definitions and corresponding Rust conversion logic for core data types, including actions, events, keybindings, input modes, commands, files, and pipe messages. For users, this ensures a standardized, efficient, and robust interface for plugin interactions, supporting features like keybinding synchronization, pane layout management, and inter-process messaging across the WASM boundary.
_zellij-utils/src/plugin\api · high confidence
Refactored pane management into dedicated modules
The pane handling logic in the server has been reorganized into a modular structure under \zellij-server/src/panes\. This change introduces specific components for managing active pane focus (\active\_panes\), parsing ANSI color codes (\alacritty\_functions\), handling OSC-8 hyperlinks (\link\_handler\ and \hyperlink\_tracker\), and supporting nested session modals (\nested\_session\_modal\). It also includes dedicated modules for search (\search\), selection (\selection\), and plugin pane rendering (\plugin\_pane\), providing a cleaner separation of concerns for terminal grid operations, image protocols, and UI interactions.
zellij-server/src/panes · high confidence
Refactored tiled pane layout engine into modular sub-components
The tiled pane management logic in \zellij-server/src/panes/tiled\_panes\ has been reorganized into distinct modules (\pane\_resizer\, \panes\_to\_hide\, \stacked\_panes\, \tiled\_pane\_grid\) to improve code structure and maintainability. This change introduces a dedicated \PaneResizer\ using the \kasuari\ constraint solver for layout calculations, a \PanesToHide\ system to correctly manage visibility of panes beneath fullscreen or covered states, and a \StackedPanes\ module to handle the geometry and focus movement of stacked terminal panes. Users benefit from a more robust and stable pane resizing and stacking experience, with fixes for edge cases in layout validity and pane visibility during fullscreen transitions.
_zellij-server/src/panes/tiled\panes · high confidence
Server codebase restructured into modular components
The zellij-server source has been refactored from a monolithic structure into distinct modules, introducing new files for background jobs, global async runtime, host query handling, logging pipes, mobile web preferences, nested guest tracking, and notifications. This change organizes the server's internal logic, separating concerns like PTY management, plugin interactions, and UI updates into their own dedicated modules while maintaining the same public API surface.
zellij-server/src · high confidence
Behavioural changes
Client-side input handling and OS abstraction refactored into new modules
The client application's core input processing and operating system interface have been reorganized into dedicated modules: \cli\_client.rs\ for command-line action dispatch, \input\_handler.rs\ for interpreting keystrokes and mouse events, \keyboard\_parser.rs\ for parsing the Kitty keyboard protocol, \command\_is\_executing.rs\ for synchronizing input with running commands, and \os\_input\_output.rs\ (with platform-specific \unix.rs\ and \windows.rs\ implementations) for abstracting terminal I/O, signals, and IPC. This change introduces support for the Kitty keyboard protocol, improves mouse event reporting via termwiz integration, and standardizes how the client interacts with the host terminal and server across different operating systems.
zellij-client/src · high confidence
Configuration files now use KDL format
Zellij has switched its configuration syntax from the previous format to KDL. This change is reflected in the new fixture files for layouts and themes (such as Dracula and Nord), which are now written in KDL. Users will need to ensure their configuration files adhere to this new syntax.
zellij-server/src/unit/fixtures, zellij-utils/src/input/unit/fixtures · high confidence
Input system refactored to use KDL configuration and new action definitions
The input handling subsystem has been restructured to define keybindings, actions, and configuration using the KDL format. This change introduces a new \Action\ enum in \actions.rs\ to represent all bindable commands, replaces the previous configuration parsing logic with new modules for KDL-based config blocks and settings (\config\_blocks.rs\, \config\_settings.rs\), and adds support for runtime configuration editing via \config\_file\_edit.rs\. The \CliAssets\ module now handles loading and merging of KDL configurations, layouts, and themes, while \keybind\_presets.rs\ manages default and user-defined keybinding layers. This refactoring centralizes input configuration and enables more flexible, editable keymaps and UI settings.
zellij-utils/src/input · high confidence
Introduce new client-server IPC protocol definitions
This change introduces a new set of Protocol Buffers definitions (\client\_to\_server.proto\, \server\_to\_client.proto\, \common\_types.proto\) that formalize the communication contract between the Zellij client and server. The new schema defines message types for session management (attach, detach, kill), pane operations (resize, focus, scroll, render updates), and UI state (mobile preferences, theme changes, soft keyboard). It also adds support for specific terminal features like Kitty graphics, Sixel, and nested sessions, replacing the previous ad-hoc or less structured IPC mechanism with a typed, versioned API.
_zellij-utils/src/client\_server\contract · high confidence
Migrate configuration and layout parsing to KDL format
The configuration and layout files now use the KDL (KDL Document Language) format instead of the previous format. This change introduces a new parser module (\zellij-utils/src/kdl\) that handles the parsing of layout definitions, keybindings, themes, and other configuration options. Users will need to convert their existing configuration files to the new KDL syntax to continue using Zellij.
zellij-utils/src/kdl · high confidence
New IPC serialization layer for client-server communication
The IPC subsystem now uses a new protobuf-based serialization implementation to handle messages between the client and server. This change introduces dedicated conversion modules for key events (BareKey, KeyModifier) and all client-server message types (such as AttachClient, Action, Key, and TerminalResize), ensuring structured and compatible data exchange across the interface.
zellij-utils/src/ipc · high confidence
New \`xtask\` build system replaces previous tooling
The \xtask\ directory now provides a comprehensive, Rust-based build system (\cargo xtask\) that replaces the previous build tooling. This new system introduces deterministic bundling of web client frontend assets with integrity checks, unified plugin building to optimize compilation, and dedicated commands for CI, cross-compilation, and E2E testing. It also adds support for building without web server capabilities via feature flags and streamlines the developer workflow with integrated format, test, and install pipelines.
xtask · high confidence
New pane frame UI with customizable borders and contextual hints
The server-side UI rendering has been refactored to support a new pane frame system. This introduces customizable pane borders with support for various line styles (single, double, heavy, dashed) and rounded corners, allowing users to visually distinguish panes. The update also adds contextual hint text to command panes, displaying tiered help information for actions like running, re-running, dropping to shell, and exiting, as well as hover hints for multi-select grouping. Additionally, a loading indication system is now in place to display plugin loading states and errors with animated dots and color-coded status messages.
zellij-server/src/ui · high confidence
Plugin system rewritten to use wasmi and a pinned thread executor
The plugin execution engine has been replaced with the wasmi WebAssembly interpreter and a new PinnedExecutor that assigns plugins to dedicated threads for stable, concurrent execution. This change introduces a new plugin worker model for asynchronous message handling, a robust pipe system for CLI-to-plugin communication, and a prompt request handler for interactive plugin popups, fundamentally altering how plugins are loaded, managed, and interact with the server.
zellij-server/src/plugins · high confidence
Refactor main entry point and add Windows build configuration
The application's entry point has been restructured: the previous monolithic \main.rs\ containing terminal I/O and PTY management logic has been removed and replaced with a new \src/main.rs\ that delegates to \src/commands.rs\ for handling CLI actions (such as session management, running commands, and plugin execution) and \src/lib.rs\ for core initialization. Additionally, a new \src/build.rs\ script has been introduced to configure the Windows build process, specifically increasing the main thread stack size to 8 MB in debug builds to prevent stack overflow from large clap-derived structures, and embedding the application icon into the Windows executable.
src · high confidence
Updated KDL configuration and serialization snapshots
The KDL configuration serialization logic has been updated to reflect new default settings and structural changes. The default plugin set now includes the \session-manager\ and \welcome-screen\ plugins, and the \web\_client\ section now specifies a \monospace\ font. Configuration options have shifted defaults, such as \mouse\_mode\ and \pane\_frames\ now defaulting to false, and \default\_mode\ to \locked\. The session serialization format has been expanded to include \tab\_history\ and \pane\_history\ fields, and the UI configuration now supports \pane\_frames\ settings for rounded corners and hiding the session name.
zellij-utils/src/kdl/snapshots · high confidence
Updated example configuration files and added screen-mode reference
The example directory now includes updated KDL configuration files (default.kdl, config.kdl, alt-centered-config.kdl) that reflect the current keybinding presets, plugin definitions, and layout options, along with a new README.md providing specific syntax guidance for binding newline characters. Additionally, a new screen-overview.yaml file has been added to document GNU Screen keybinding mappings for users migrating from or emulating that terminal multiplexer.
example · high confidence
Updated web client terminal addons
The web client now uses updated versions of the xterm.js terminal addons (clipboard, fit, web-links, and WebGL). This brings improvements to clipboard handling, terminal resizing, URL link detection, and rendering performance.
zellij-client/assets · high confidence
Web client session authentication and connection management
The web client now enforces session-based authentication using signed tokens, introducing an \auth\_middleware\ that validates session cookies and tracks read-only status and token hashes for client ownership verification. Connection management has been restructured to handle WebSocket lifecycle events, including proper handling of disconnection codes (such as 4001 for kicked sessions) and preventing reconnection when a session is explicitly terminated. The client also seeds the server with terminal color and theme information derived from the web client configuration to ensure accurate rendering of host-terminal queries.
_zellij-client/src/web\client · high confidence
Zellij plugin API overhaul with protobuf serialization and new capabilities
The \zellij-tile\ crate has been refactored to serve as the primary Rust API for Zellij plugins, introducing a major behavioral change for plugin developers. The communication layer between plugins and the host now uses Protocol Buffers for serialization, replacing previous methods to improve reliability and performance. The API surface has expanded significantly: plugins can now interact with shared slots via \ZellijSharedPlugin\, manage session layouts (dumping, saving, editing), control floating panes, read pane contents and environment variables, and utilize new UI components and prompts. Additionally, the \prelude\ module now re-exports utility types like \Size\, \PromptSpec\, and \VERSION\, simplifying plugin development.
zellij-tile/src · high confidence
Test coverage
Added CLI and E2E test modules; Added IPC protocol roundtrip and socket communication tests; Added e2e snapshot tests for core UI and session behaviors; Added fixture plugin for testing plugin APIs and behaviors; Added shared plugin fixture for testing; Added test fixtures for KDL-based configuration and keybindings; Added test fixtures for pinned pane and scrolling scenarios; Added test fixtures for terminal compatibility and session resurrection; Added test fixtures for upside-down layout configuration; Added tests for distribution and stock configuration; Added unit tests for CLI client, input handling, IPC, and terminal teardown; Added unit tests for input configuration and layout parsing; Added unit tests for pane grid, selection, search, and nested session modals; Added unit tests for plugin hover merging and plugin thread logic; Added unit tests for remote attach functionality; Added unit tests for server notification protocol and OS input/output handling; Added unit tests for stacked pane layout and resizing logic; Added unit tests for tab layout application and pane management; Added unit tests for the server output module; Added unit tests for the web client server endpoints; Expanded integration test coverage for Zellij core features; Initial end-to-end test infrastructure; New in-process integration test harness for Zellij; Snapshot tests for layout applier behavior; Snapshot tests for layout template inheritance and pane configuration; Updated plugin test snapshots for expanded API surface; Updated screen rendering snapshots for pane operations; Updated serialization and configuration snapshot tests; Updated terminal pane grid test snapshots.
Dependencies
Zellij 0.46.0 workspace restructure and dependency updates
Zellij has been restructured into a multi-crate workspace (zellij-client, zellij-server, zellij-utils, zellij-tile, and default plugins) with the main package version bumped to 0.46.0 and the Rust MSRV raised to 1.95. This change introduces several dependency updates, including upgrading the WASM interpreter from Wasmtime to wasmi 1.1.0, switching the terminal input library from termion to crossterm 0.29, and updating the layout solver from cassowary to kasuari 0.4.12. Additionally, the project now uses the daemonix crate instead of the unmaintained daemonize crate, and the IPC layer has been upgraded to interprocess 2.2.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 51.
Lenses
- Code Health 38
- Architecture 95
- Maturity 58
- Readiness 66
- Security 77
- Event Sourcing 100
- Accessibility 54
- Performance 100
Changes since last survey
- 300 commits — 153 feature/other, 147 fixes
By area
- zellij-server/src — 94 commits
- (root) — 79 commits
- zellij-utils/src — 52 commits
- zellij-client/src — 24 commits
- zellij-integration-tests/tests — 10 commits
- zellij-utils/assets — 8 commits
- .github/workflows — 4 commits
- default-plugins/layout-manager — 4 commits
- default-plugins/session-manager — 4 commits
- src/tests — 4 commits
- zellij-client/assets — 3 commits
- default-plugins/configuration — 2 commits
- default-plugins/sequence — 2 commits
- xtask/src — 2 commits
- .github/ISSUE_TEMPLATE — 1 commit
- assets/logo.svg — 1 commit
- default-plugins/about — 1 commit
- default-plugins/bars — 1 commit
- default-plugins/strider — 1 commit
- src/build.rs — 1 commit
Notable commits
- fix: Fix Windows config/data paths and consolidate path helpers (#4852)
- fix: Fix bce and other issues (#4992)
- fix: Fix breaking panes behavior (#4622)
- fix: Fix cli blocking logic and update dependencies (#4881)
- fix: Fix debug-mode stack overflow on Windows (#4843)
- fix: Fix duplicated words in tips and plugin comment (#5677)
- fix: Fix esc mouse (#5157)
- fix: Fix flaky tests (#5688)
- fix: Fix loading short layouts and custom config dirs (#4640)
- fix: Fix multi pane breakout (#4726)
- fix: Fix partial sequences parsing (#4623)
- fix: Fix pty race when opening new panes (#5010)
- fix: Fix query webserver from IPC rather than HTTPS (#4620)
- fix: Fix session-manager Esc/Ctrl-c to close plugin instead of hiding (#5055)
- fix: Fix startup message and cache file creation (#4705)
- fix: Fix tab close size (#5444)
- fix: Fix tiled new pane borderless (#4618)
- fix: Fix: allow 0% coordinate specification for floating panes (#4609)
- fix: Fixes before 045 (#5492)
- fix: Fullscreen resize fixes (#5117)
- …and 280 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
zellij-org/zellij was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 11 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 333d7898a840314e41d3cc9d2a264a1b9732bb7b — the exact code this score is about.
- Scored under rubric-2026.10.5 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-fe8540b5da9b.