* initial implementation
* some refactoring
* refactor: separate some concerns and tidy up
* fix: move tooltip to focused tab as needed
* some ux adjustments
* some refactoring
* only show tooltip if we have configured a shortcut key
* add plugin artifacts
* fix tests
* truncate tooltip if it exceeds width
* change config name
* remove comment
* docs(changelog): add PR
* intercept/clear-intercept key APIs
* allow opening a pinned unfocused floating pane
* rework plugin
* improve some apis
* fix tests
* tests for pane groups
* more exact placement and tests
* plugin command permission and cleanup
* improve some multiselect ux
* improve plugin ui
* remove old status indicator
* allow moving plugin out of the way
* style(fmt): rustfmt
* update plugins
* remove old keybinding
* cleanups
* fix: only rename pane if needed
* changelog and some cleanups
* style(fmt): rustfmt
* initial implementation with break panes to new tab
* break pane group left/right
* group embed/eject panes
* stack pane group on resize
* close pane group
* style(fmt): rustfmt
* fix tests
* group drag and ungroup with the mouse
* fix mouse hover for multiple clients
* fix for multiple clients
* multiple select plugin initial
* use real data in plugin
* adjust functionality
* fix some ux issues
* reflect group mouse group selections in plugin
* group/ungroup panes in Zellij
* highlight frames when marked by the plugin
* refactor: render function in plugin
* some ui responsiveness
* some more responsiveness and adjust hover text
* break out functionality
* stack functionality
* break panes left/right and close multiple panes
* fix(tab): only relayout the relevant layout when non-focused pane is closed
* status bar UI
* embed and float panes
* work
* fix some ui/ux issues
* refactor: move stuff around
* some responsiveness and fix search result browsing bug
* change plugin pane title
* differentiate group from focused pane
* add keyboard shortcut
* add ui to compact bar
* make boundary colors appear properly without pane frames
* get plugins to also display their frame color
* make hover shortcuts appear on command panes
* fix: do not render search string component if it's empty
* BeforeClose Event and unhighlight panes on exit
* some UI/UX fixes
* some fixes to the catppuccin-latte theme
* remove ungroup shortcut
* make some ui components opaque
* fix more opaque elements
* fix some issues with stacking pane order
* keyboard shortcuts for grouping
* config to opt out of advanced mouse actions
* make selected + focused frame color distinct
* group marking mode
* refactor: multiple-select plugin
* adjust stacking group behavior
* adjust flashing periods
* render common modifier in group controls
* add to compact bar
* adjust key hint wording
* add key to presets and default config
* some cleanups
* some refactoring
* fix tests
* fix plugin system tests
* tests: group/ungroup/hover
* test: BeforeClose plugin event
* new plugin assets
* style(fmt): rustfmt
* remove warnings
* tests: give plugin more time to load
* build(utils): Don't use reexported dependency
for internal code, but use the dependency directly.
* build(client): Don't use re-exports from `utils`
but turn `zellij-utils` dependencies into shared workspace dependencies
instead and specify those in `Cargo.toml` explicitly. This gives a much
better overview of what component in zellij uses which crates. The
previous approach hides a lot of this information since it looks like
crates are used in a single place where this isn't actually true.
* deps(tile): Don't use re-exports from zellij-utils.
* build(zellij): Don't use re-exports from zellij-utils.
* build(server): Don't use re-exports from zellij-utils.
* build(utils): Don't re-export foreign crates.
* docs: Update Changelog with PR #4087.
* style: Apply rustfmt.
* style: Apply rustfmt.
* build(e2e): Don't use re-export from zellij-utils.
* test: Restore e2e tests.
* style: Apply more formatting.
* basic about screen
* work
* finish implementing about plugin except theme spec
* show about plugin only on first version run
* some cleanups and do the right thing with open/xdg-open
* refactor: make ui framework
* refactor: remove old stuff
* refactor: about plugin
* style(fmt): rustfmt
* chore(repo): about plugin asset
* fix tests
* style(fmt): rustfmt!!
* basic functionality through the cli
* added to plugin api
* add display area and viewport size to TabInfo
* fix tests and add new one
* some cleanups
* refactor: extract pane_id parsing logic
* style(fmt): rustfmt
* chore: Remove deprecated `Makefile.toml`
which really should have been deleted as part of #2012. This hasn't been
updated for more than 2 years now and I don't expect anyone to still use
this. Our build process is now managed by `cargo xtask`.
* Cargo: Update the Rust toolchain to 1.84.0
from 1.75.0 which has been deprecated for a while now. Along with this
change, the `wasm32-wasi` target is no longer available (see subsequent
commit for additional info).
* chore: Rename `wasm32-wasi` to `wasm32-wasip1`
as required by the Rust project. The `wasm32-wasi` target name has been
retired and will likely be reused at a later time, although to express
an entirely different target (i.e. implementation of the WASI standard).
For additional information, see:
- https://blog.rust-lang.org/2024/04/09/updates-to-rusts-wasi-targets.html
- https://blog.rust-lang.org/2024/09/05/Rust-1.81.0.html#wasi-01-target-naming-changed
* chore: Drop `rust-analysis` component
from the `rust-toolchain.toml` definition. This was added way back in
2021 via 8688569a, and while I'm not sure what it expressed back then,
nowadays it refers to [Metadata for RLS][1], which apparently was an
early language server implementation and has long since been replaced by
*rust-analyzer*.
We don't want to propose or enforce the use of a specific toolchain and
in any case, setting this up properly is the job of a developers
IDE/Editor.
[1]:
1f06e3b31d/doc/user-guide/src/concepts/components.md (previous-components)
* chore: Adhere to type rename
from `std::panic::PanicInfo` to `std::panic::PanicHookInfo`, which was
introduced in Rust 1.81.0. For additional information, see:
- https://releases.rs/docs/1.81.0/#compatibility-notes
- https://github.com/rust-lang/rust/pull/115974/
* fix(utils/data): Adhere to expected case
in match arm patterns, since the expression being matched against has
been modified using `to_ascii_lowercase`. Hence, we cannot have upper
case ASCII chars in the expressions (these arms were previously no-ops).
* fix(utils): Derive `Hash` manually
in `input/layout` since the `PartialEq` trait is also implemented
manually. Previously the `Hash` impl wasn't consistent with the `Eq`
impl, which can have weird effects when using these types in e.g.
`HashMap`s or similar types. For additional information, see:
- https://rust-lang.github.io/rust-clippy/master/index.html#derived_hash_with_manual_eq
- https://doc.rust-lang.org/stable/std/hash/trait.Hash.html#hash-and-eq
* fix(utils): Derive `Hash` manually
in `pane_size` since the `PartialEq` trait is also implemented manually.
Previously the `Hash` impl wasn't consistent with the `Eq` impl, which
can have weird effects when using these types in e.g. `HashMap`s or
similar types. For additional information, see:
- https://rust-lang.github.io/rust-clippy/master/index.html#derived_hash_with_manual_eq
- https://doc.rust-lang.org/stable/std/hash/trait.Hash.html#hash-and-eq
* fix(server): Don't redeclare variables
with their same names. Latest rust toolchains reject this code.
* chore(actions): Use non-archived toolchain setup
for the Rust toolchain. The previously used action has been archived
over a year ago. The new one should also support reading our
`rust-toolchain.toml`, so we no longer have to keep track of the
toolchain in multiple places.
* chore(actions): Add some space to YAML files
to make them better visually parsable.
* ci: Remove toolchain update Job
since as far as I can tell, this isn't used any more.
* ci: Fix invalid actions specification
and only request an action without running other code.
* CHANGELOG: Add PR #3945.
* working across tabs and floating panes through the cli
* finalize cli command
* plugin api
* style(fmt): rustfmt
* fix: re-focus pane in stack if it was focused
* style(fmt): rustfmt
* remove outdated comment
* working
* ui indication
* add keybinding
* add to plugin panes
* fix with multiple cursors
* toggle with the mouse
* fix e2e tests and add new one
* some cleanups
* add to layouts
* make mouse click more lenient
* allow setting a new floating pane as pinned
* make toggle work throughthe command line
* add to plugin api
* get tests to pass
* style(fmt): rustfmt
* fix(list-clients): properly show client info after a tab was closed
* feat(plugins): add API to list clients, their focused panes and running commands/plugins
* style(fmt): rustfmt
* add plugin list to session info
* feat(plugins): new_plugin and reload_plugin API commands
* feat(plugins): built-in plugin manager
* style(fmt): rustfmt
* update plugins
* feat(plugins): break multiple panes to a new tab
* fix(layouts): properly ignore run instructions when breaking panes
* feat(plugins): break multiple panes to existing tab
* feat(apis): allow these methods to also specify whether they want focus changed to the tab
* various fixes
* allow specifying name for the new tab when breaking out panes
* style(fmt): rustfmt
* resize_pane_with_id and close_pane_with_id
* focus_pane_with_id and edit_scrollback_for_pane_with_id
* write_to_pane_id and write_chars_to_pane_id
* lots more commands
* style(fmt): rustfmt
* separate saved/runtime structure, kind of working
* serializing config
* work
* work
* save config through the configuration screen
* work
* startup wizard
* style(code): cleanups
* fix(session): reload config from disk when switching sessions
* style(fmt): rustfmt
* fix(config): propagate cli config options to screen
* style(fmt): rustfmt
* add context to opening command panes, and events for their start/finish
* show/hide other panes plugin apis
* get tests to pass
* style(fmt): rustfmt
* update plugin test snapshots
* refactor(server): interpret keys on server so they can be rebound
* feat(plugins): allow rebinding keys at runtime
* various cleanups
* add tests
* style(fmt): rustfmt
* fix(tests): address (some) e2e test flakiness
* style(fmt): rustfmt
* feat: Add serialization methods to ui components
* Revert: do not modify the `print` method at all
---------
Co-authored-by: Zykino <3809938+Zykino@users.noreply.github.com>
* prototype
* folder selection ui in session manager
* overhaul strider
* scan folder host command
* get strider to work from the cli and some cli pipe fixes
* some ux improvements to strider
* improve strider's ui
* make strider ui responsive
* make session-manager new ui parts responsive
* fix tests
* style(fmt): rustfmt
* prototype - can send layout name for new session from session-manager
* feat(sessions): ui for selecting layout for new session in the session-manager
* fix: send available layouts to plugins
* make tests compile
* fix tests
* improve ui
* fix: respect built-in layouts
* ui for built-in layouts
* some cleanups
* style(fmt): rustfmt
* welcome screen ui
* fix: make sure layout config is not shared between sessions
* allow disconnecting other users from current session and killing other sessions
* fix: respect default layout
* add welcome screen layout
* tests(plugins): new api methods
* fix(session-manager): do not quit welcome screen on esc and break
* fix(plugins): adjust permissions
* style(fmt): rustfmt
* style(fmt): fix warnings
* prototype - working with message from the cli
* prototype - pipe from the CLI to plugins
* prototype - pipe from the CLI to plugins and back again
* prototype - working with better cli interface
* prototype - working after removing unused stuff
* prototype - working with launching plugin if it is not launched, also fixed event ordering
* refactor: change message to cli-message
* prototype - allow plugins to send messages to each other
* fix: allow cli messages to send plugin parameters (and implement backpressure)
* fix: use input_pipe_id to identify cli pipes instead of their message name
* fix: come cleanups and add skip_cache parameter
* fix: pipe/client-server communication robustness
* fix: leaking messages between plugins while loading
* feat: allow plugins to specify how a new plugin instance is launched when sending messages
* fix: add permissions
* refactor: adjust cli api
* fix: improve cli plugin loading error messages
* docs: cli pipe
* fix: take plugin configuration into account when messaging between plugins
* refactor: pipe message protobuf interface
* refactor: update(event) -> pipe
* refactor - rename CliMessage to CliPipe
* fix: add is_private to pipes and change some naming
* refactor - cli client
* refactor: various cleanups
* style(fmt): rustfmt
* fix(pipes): backpressure across multiple plugins
* style: some cleanups
* style(fmt): rustfmt
* style: fix merge conflict mistake
* style(wording): clarify pipe permission
* parsing rendering private osc table
* move components to DCS and add tests
* refactor: move components to their own thing
* ribbon and selected-ribbon ui components
* nested list ui component
* selected and indices for nested list
* coordinates and size for ui components
* use Text with ribbon
* add tests for components
* refactor: ui components
* refactor: ui components api
* style(fmt): rustfmt
* style(fmt): cleanups
* prototype
* fix tests
* add to all the things except plugins
* add in-place to plugin commands
* fix launch-or-focus should_float and in place behavior
* various cleanups
* style(fmt): rustfmt
* force plugin render on permission request response
* clear warnings
* Revert "feat(ui): new status bar mode (#2619)"
This reverts commit 27763d26ab.
* adjust status bar help
* fix colors in session manager and shortcut in status-bar
* adjust keybindings
* write/read session metadata to disk for all sessions
* switch session client side
* fix tests
* various adjustments
* fix full screen focus bug in tiled panes
* fix tests
* fix permission sorting issue
* cleanups
* add session manager
* fix tests
* various cleanups
* style(fmt): rustfmt
* clear screen before switching sessions
* I hate you clippy
* truncate controls line to width
* version session cache
* attempt to fix plugin tests
* style(fmt): rustfmt
* another attempt to fix the tests in the ci
* work
* almost done with command protobuffers
* done translating command data structures
* mid transferring of every command to protobuff command
* transferred plugin_command.rs, now moving on to shim.rs
* plugin command working with protobufs
* protobuffers in update
* protobuf event tests
* various TODOs and comments
* fix zellij-tile
* clean up prost deps
* remove version mismatch error
* fix panic
* some cleanups
* clean up event protobuffers
* clean up command protobuffers
* clean up various protobufs
* refactor protobufs
* update comments
* some transformation fixes
* use protobufs for workers
* style(fmt): rustfmt
* style(fmt): rustfmt
* chore(build): add protoc
* chore(build): authenticate protoc
* work
* make every plugin entry point configurable
* make integration tests pass
* make e2e tests pass
* add test for plugin configuration
* add test snapshot
* add plugin config parsing test
* cleanups
* style(fmt): rustfmt
* style(comment): remove commented code