* 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>
* fix(plugins): session layouts were still serialized using the legacy plugin syntax (remote:)
* use example domain
* style(fmt): rustfmt
---------
Co-authored-by: Aram Drevekenin <aram@poor.dev>
* fix(ui): display new session folder prompt always
* fix(ui): truncate session name and error on too long a name
* fix(ui): scrolling layout list in welcome screen
* style(fmt): rustfmt
* Add support for binding Ctrl-@
On most terminals, typing Ctrl-@ results in a null character with no
modifier.
Moreover, Ctrl-Space is commonly mapped as an alias for Ctrl-@, making
it easier to bind it as well.
* style(fmt): rustfmt
---------
Co-authored-by: Aram Drevekenin <aram@poor.dev>
Previously, it was not possible to define keybindings with a modifier
and a function key. The `Key` enum only supported combinging the Ctrl
and Alt modifiers with letters. This is somewhat limiting: I would like
to make the Zellij keybindings more "distant" than those used in the
programs I use from within Zelilj, so that Zellij does not intefere with
those programs. Thus I would like to move some of the keybindings from
Ctrl+<character> to Ctrl+<function key>.
This change adds:
* support for function keys with the Ctrl and Alt modifiers in the
`Key` enum,
* support for parsing such keybindings from the configuration file,
* support for such keybindings in the protobuf which communicates the
keybindings to plugins, and
* support for these keybindings in the plugin API.
This is tested by modifying one of the e2e tests to include an example
of such keybindings. This verifies that the configuration is correctly
parsed, communicated with the plugin, and rendered.
* feat: sort `list-sessions` from oldest to newest
by putting the most recent sessions last, the user won't need to scroll back up
to see active sessions when there are a lot of resurrectable sessions.
* feat: add an `--reverse` option to the `list-sessions` subcommand
the `--reverse` flag reverts sorting order back to the old "newest sessions
first". also updated call sites of `list_sessions` and `print_sessions` with
`reverse: true`, to keep the original behavior everywhere else except the output
of `list-sessions` subcommand.
* chore: update the help message
---------
Co-authored-by: Jae-Heon Ji <atx6419@gmail.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
* working prototype with passing tests
* new tests and passing plugin tests as well
* style(code): cleanups
* cleanup strider from unused search feature
* prototype of removing old plugin block from the config
* aliases working from config file and all tests passing
* fixups and cleanups
* use aliases in layouts
* update test snapshot
* style(fmt): rustfmt
* feat: add moving tab to other position
* docs(changelog): revert changes
* test: update config snapshots
* refactor: get rid of HorizontalDirection enum
* refactor: cleanup code order
* refactor: use debug! instead of info!
* refactor: use more defensive way to switch tabs
* refactor: revert tip changes
* refactor: code formatting
* refactor: improve invalid input notification
* refactor: inline fns for calculating target index
---------
Co-authored-by: Jae-Heon Ji <atx6419@gmail.com>