Commit graph

179 commits

Author SHA1 Message Date
Aram Drevekenin
d78f3586dd
feat(plugins): APIs to break multiple panes into a new tab or an existing tab (#3610)
* 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
2024-09-16 21:02:04 +02:00
Aram Drevekenin
1776d240da
feat(plugins): add plugin APIs to affect other panes (#3576)
* 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
2024-08-29 17:35:21 +02:00
Aram Drevekenin
820ff85231
feat(ux): reload config options at runtime (#3564)
* change simplified_ui at runtime

* change default_shell at runtime

* change pane_frames (from config) at runtime

* all other options

* some refactoring

* style(fmt): rustfmt
2024-08-23 15:41:48 +02:00
Aram Drevekenin
e96491a3cf
feat(ux): change themes at runtime (#3559) 2024-08-20 16:10:27 +02:00
Aram Drevekenin
056537d3ee
feat(ux): first run setup-wizard (#3556)
* 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
2024-08-16 14:00:01 +02:00
Aram Drevekenin
d44950a5bd
feat(plugins): rerun_command_pane API (#3546)
* feat(plugins): rerun_command_pane API

* fix tests
2024-08-07 19:20:41 +02:00
Aram Drevekenin
355463383a
feat(plugins): allow opening command panes in the background (hidden) (#3530)
* start background pane

* open command and edit panes in the background

* some cleanups

* style(fmt): rustfmt

* more cleanups
2024-07-29 11:40:01 +02:00
Aram Drevekenin
84ff29dd02
feat(ui): configuration screen + configure non-colliding keys at runtime (#3502)
* rebind => reconfigure

* persist keybinds and mode info to new tabs

* add configuration plugin

* make tests pass

* remove warnings

* style(fmt): rustfmt
2024-07-17 16:08:31 +02:00
Aram Drevekenin
a6d6c0e4ff
feat(ui): status bar redesign (#3475)
* work

* work

* working

* get default mode from server and some ui responsiveness

* work

* finish design and get tests to pass

* get e2e tests to pass

* add classic layout

* add classic layout assets

* fix e2e tests

* style(fmt): rustfmt

* fix plugin system test

* style(fmt): some cleanups
2024-07-05 15:13:51 +02:00
Aram Drevekenin
1f0ae94f01
feat(plugins): rebind keys at runtime (#3422)
* 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
2024-06-14 17:11:02 +02:00
Aram Drevekenin
0db3db059d
fix(rendering): do not render if resizing screen to same size (#3413) 2024-06-11 15:19:29 +02:00
Aram Drevekenin
62c37a87cc
feat(keybindings): support multiple modifiers (eg. Ctrl+Alt) and the kitty keyboard protocol (#3383)
* parse kitty keys from STDIN

* work

* work

* replace internal Key representation with the new KeyWithModifier in all the places

* work

* work

* allow disabling with config

* adjust ordering

* handle enabling/disabling properly on the client

* support multiple modifiers without kitty too

* normalize uppercase keys

* get tests to pass

* various cleanups

* style(fmt): rustfmt
2024-05-27 16:15:09 +02:00
Aram Drevekenin
64ce7a7d75
feat(cli): list clients, their focused pane_id and the running command (#3314)
* feat(cli): list clients

* style(fmt): rustfmt
2024-04-30 15:21:04 +02:00
Aram Drevekenin
7bb9884fa9
fix(tabs): moving tabs after one was deleted (#3299)
* fix(tabs): moving tabs after one was deleted

* style(fmt): rustfmt
2024-04-25 09:29:52 +02:00
Aram Drevekenin
462239b535
fix(plugins): various pre-release issues (#3246)
* fix(strider): close_self instead of close_focus

* fix(plugins): populate caller_cwd for all aliases

* fix(config): launch the session-manager alias rather than the explicit internal url

* style(fmt): rustfmt

* fix tests
2024-04-05 18:43:14 +02:00
Aram Drevekenin
2eaa50cc44
feat(plugins): add api to dump the current session layout to a plugin (#3227) 2024-03-26 18:44:56 +01:00
Aram Drevekenin
223730f04a
style(fmt): fix warnings (#3223)
* fix warnings in zellij-server

* style(fmt): remove warnings

* style(fmt): rustfmt
2024-03-25 14:22:52 +01:00
Aram Drevekenin
86e91ae137
fix(startup): recover from race condition that causes Zellij to start in the wrong size (#3218)
* fix(startup): recover from Zellij starting up in the wrong size

* style(fmt): rustfmt

* fix tests
2024-03-25 10:28:21 +01:00
Aram Drevekenin
0d60bf16bf
fix(stability): various crashes (#3209) 2024-03-20 08:51:02 +01:00
Aram Drevekenin
21273ac95a
feat(plugins): introduce plugin aliases (#3157)
* 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
2024-02-26 15:30:15 +01:00
Bartosz Zbytniewski
dd5ea26cc7
feat: add moving tab to other position (#3047)
* 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>
2024-02-19 03:40:03 +09:00
Aram Drevekenin
326c8cd3c6
feat(panes): allow specifying coordinates for a new floating pane through the CLI or plugins (#3122)
* working

* add tests

* add coordinates to all the places

* refactor: move things around:

* style(fmt): rustfmt

* style(code): cleanups
2024-02-08 17:35:55 +01:00
Aram Drevekenin
7e549cdbd5
fix(cli): respect cwd in zellij run and zellij plugin (#3116)
* fix(cli): respect cwd in zellij run and zellij plugin commands

* style(fmt): rustfmt

* fix tests
2024-02-07 10:39:51 +01:00
Aram Drevekenin
6b20a958f4
feat(sessions): welcome screen (#3112)
* 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
2024-02-06 14:26:14 +01:00
Aram Drevekenin
d780bd9105
feat(plugins): introduce 'pipes', allowing users to pipe data to and control plugins from the command line (#3066)
* 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
2024-01-17 12:10:49 +01:00
Aram Drevekenin
ac47ff43a3
fix(plugins): display errors properly (#2975)
* fix(plugins): format errors and make sure file not found errors appear

* style(fmt): rustfmt
2023-12-01 19:10:13 +01:00
Aram Drevekenin
b0f36540fe
feat(plugins): skip plugin cache flag (#2971)
* feat(plugins): allow explicitly skipping the plugin cache when loading

* style(fmt): rustfmt

* fix tests
2023-11-30 18:10:50 +01:00
Aram Drevekenin
ea5e6aa8d7
fix(ux): LaunchPlugin and some cwd fixes (#2916)
* LaunchPlugin and some cwd fixes

* style(fmt): rustfmt

* fix e2e tests and some cleanups

* fmt
2023-11-08 11:37:06 +01:00
Mike Lloyd
3ebaba9e9e
fix: styled underlines in editors (#2918)
* Add styled_underlines param to TerminalPane

* Add styled_underlines to Cursor::new

* Remove styled_underlines from render_first_run_banner
2023-11-08 11:35:26 +01:00
Aram Drevekenin
a3d63bec55
fix(plugins): start plugin pane in cwd of focused pane if possible (#2905)
* fix(plugins): start plugin pane in cwd of focused pane if possible

* disable clippy - I have had enough

* fix tests
2023-11-06 08:30:17 +01:00
Aram Drevekenin
28a165a969
feat(ux): allow renaming sessions (#2903)
* change session name through the cli

* change session name from the session-manager

* style(fmt): rustfmt
2023-11-05 15:32:05 +01:00
Eatgrass
7f87d93a43
feat(terminal): support styled underlines (#2730)
* feat: support styled underlines

* remove deadcode

* Add ansi_underlines config option

* Add missing variables

* Add ansi_underlines on Output and OutputBuffer

* Fix tests

* Add separate styled underline enum

* Remove ansi_underlines from fg and bg

* Remove unneeded variables

* Rename ansi_underlines -> styled_underlines

* Simplify CharacterStyles::new()

* Move styled_underlines config description

* Fix single underline and remove extra field on CharacterStyles

* Read styled-underlines flag from cli opts

* remove extra attribute left from merge conflict

---------

Co-authored-by: Mike Lloyd <mike.lloyd03@pm.me>
Co-authored-by: Mike Lloyd <49411532+mike-lloyd03@users.noreply.github.com>
Co-authored-by: Aram Drevekenin <aram@poor.dev>
2023-11-05 15:30:35 +01:00
Aram Drevekenin
4c6b03acc1
feat(sessions): resurrect sessions through the session-manager (and plugin API) (#2902)
* working with table and scrolling

* ui and functionality complete

* fix formatting

* refactor: background jobs

* style(fmt): rustfmt
2023-11-04 11:20:50 +01:00
Aram Drevekenin
7e5f22f8c9
feat(plugins): UI components (#2898)
* 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
2023-11-02 08:17:23 +01:00
Aram Drevekenin
69eb904426
feat(panes): Add an option to press <ESC> and drop to shell in command panes (#2872)
* feat(panes): ESC to drop to default shell on command panes

* style(fmt): rustfmt
2023-10-17 11:55:38 +02:00
Aram Drevekenin
23e80c1fad
feat(sessions): session resurrection (#2801)
* add necessary actions in server and utils

* update

* move all logic relevant to local default config directories to utils::home

* add debug statements for pane geom

* add tests; print resulting kdl

* fix dumping custom layouts from setup; start fixing algorithm for simplest layout possible

* fix: fixed persistence code and tests to support flexible layouts

* fix(tab-bar,compact-bar): tab switching with mouse sometimes not working (#2587)

* tab-bar: fix clicks sometimes not registering

Caching the click position wasn't working across multiple plugin
instances.

Also a couple of refactors:
  - move the code with the tab switching logic inside update
  - avoid rendering when calling switch_tab_to, since it will happen
    anyway afterwards

* same fix for compact-bar

* docs(changelog): plugins tab switching with mouse fix

* feat(ui): new status bar mode (#2619)

* supermode prototype

* fix integration tests

* fix tests

* style(fmt): rustfmt

* docs(changelog): status-bar supermode

* fix(rendering): occasional glitches while resizing (#2621)

* docs(changelog): resize glitches fix

* chore(version): bump development version

* Fix colored pane frames in mirrored sessions (#2625)

* server/panes/tiled: Fix colored frames

in mirrored sessions. Colored frames were previously ignored because
they were treated like floating panes when rendering tiled panes.

* CHANGELOG: Add PR #2625

* server/tab/unit: Fix unit tests for server.

* fix(sessions): use custom lists of adjectives and nouns for generating session names (#2122)

* Create custom lists of adjectives and nouns for generating session names

* move word lists to const slices

* add logic to retry name generation

* refactor

 - reuse the name generator
 - iterator instead of for loop

---------

Co-authored-by: Thomas Linford <linford.t@gmail.com>

* docs(changelog): generate session names with custom words list

* feat(plugins): make plugins configurable (#2646)

* 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

* docs(changelog): configurable plugins

* fix(terminal): properly handle resizes in alternate screen (#2654)

* docs(changelog): focus glitches

* feat(plugins): utility functions to find active pane and tab (#2652)

* docs(changelog): plugin api utility functions

* feat(ui): break pane to new tab and move panes between tabs (#2664)

* prototype

* some tests

* break out floating pane

* break out plugin panes

* add keybind and fix some minor issues

* remove cli

* move pane to left/right tab

* update ui

* adjust ui

* style(fmt): rustfmt

* style(comment): remove commented code

* update snapshots

* docs(changelog): break pane to new tab

* fix(performance): plug memory leak (#2675)

* docs(changelog): plug memory leak

* feat(plugins): use protocol buffers for serializing across the wasm boundary (#2686)

* 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

* docs(changelog): protobuffers

* feat: add plugin permission system (#2624)

* WIP: add exaple of permission ui

* feat: add request permission ui

* feat: add caching permission in memory

* feat: add permission check

* feat: add file caching

* fix: changes request

* feat(ui): new status bar mode (#2619)

* supermode prototype

* fix integration tests

* fix tests

* style(fmt): rustfmt

* docs(changelog): status-bar supermode

* fix(rendering): occasional glitches while resizing (#2621)

* docs(changelog): resize glitches fix

* chore(version): bump development version

* Fix colored pane frames in mirrored sessions (#2625)

* server/panes/tiled: Fix colored frames

in mirrored sessions. Colored frames were previously ignored because
they were treated like floating panes when rendering tiled panes.

* CHANGELOG: Add PR #2625

* server/tab/unit: Fix unit tests for server.

* fix(sessions): use custom lists of adjectives and nouns for generating session names (#2122)

* Create custom lists of adjectives and nouns for generating session names

* move word lists to const slices

* add logic to retry name generation

* refactor

 - reuse the name generator
 - iterator instead of for loop

---------

Co-authored-by: Thomas Linford <linford.t@gmail.com>

* docs(changelog): generate session names with custom words list

* feat(plugins): make plugins configurable (#2646)

* 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

* docs(changelog): configurable plugins

* style(fmt): rustfmt

* touch up ui

* fix: don't save permission data in memory

* feat: load cached permission

* test: add example test (WIP)

* fix: issue event are always denied

* test: update snapshot

* apply formatting

* refactor: update default cache function

* test: add more new test

* apply formatting

* Revert "apply formatting"

This reverts commit a4e93703fbfdb6865131daa1c8b90fc5c36ab25e.

* apply format

* fix: update cache path

* apply format

* fix: cache path

* fix: update log level

* test for github workflow

* Revert "test for github workflow"

This reverts commit 01eff3bc5d1627a4e60bc6dac8ebe5500bc5b56e.

* refactor: permission cache

* fix(test): permission grant/deny race condition

* style(fmt): rustfmt

* style(fmt): rustfmt

* configure permissions

* permission denied test

* snapshot

* add ui for small plugins

* style(fmt): rustfmt

* some cleanups

---------

Co-authored-by: Aram Drevekenin <aram@poor.dev>
Co-authored-by: har7an <99636919+har7an@users.noreply.github.com>
Co-authored-by: Kyle Sutherland-Cash <kyle.sutherlandcash@gmail.com>
Co-authored-by: Thomas Linford <linford.t@gmail.com>
Co-authored-by: Thomas Linford <tlinford@users.noreply.github.com>

* docs(changelog): permission system

* feat(sessions): add a session manager to switch between sessions, tabs and panes and create new ones (#2721)

* 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

* docs(changelog): session manager

* fix(ux): various ui/ux fixes (#2722)

* 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

* docs(changelog): update ux fixes

* feat(plugins): optionally move plugin to focused tab (#2725)

* feat(plugins): move_to_focused_tab attribute for LaunchOrFocusPlugin

* style(fmt): rustfmt

* docs(changelog): move plugin to focused tab

* fix(keybinds): add 'floating' and 'name' to the Run command keybinding (#2726)

* fix(keybinds): add 'floating' and 'name' to the Run command keybinding

* style(fmt): rustfmt

* docs(changelog): keybind run floating pane

* fix(plugins): make sure configuration is also part of the plugin keys (#2727)

* fix(plugins): make sure configuration is also part of the plugin keys

* no thanks clippy

* docs(changelog): fix plugin configuration uniqueness

* fix(plugins): remove protobuf duplications (#2729)

* fix(plugins): remove protobuf duplications

* style(fmt): rustfmt

* Update CHANGELOG.md

* fix(plugins): various ui fixes (#2731)

* Update CHANGELOG.md

* fix(panes): refocus pane properly on tab change (#2734)

* fix(panes): stacked panes focus bug

* style(fmt): rustfmt

* docs(changelog): stacked pane focus glitch

* xtask/pipeline: Fix publish task (#2711)

* xtask/pipeline: Fix publish task

which was previously stuck in an infinite loop after successfully
publishing a crate. The error originated in the code only checking for
error conditions but not breaking out of the inner infinite loop in case
of success.

* xtask: Improve publish failure UX

by offering the user more actions to choose from when an error occured.

* utils/assets: Add generated prost files to assets

to make sure they're available at build time and are picked up by all
components. It seems we hit some strange bug with the build script
where, when running `cargo publish --dry-run` the build script **is
not** run before regularly compiling zellij-utils. This shouldn't happen
according to the docs, but I cannot explain what's causing it. So we're
using this as a workaround for now to make a smooth release.

* xtask: Prevent accidental git commit deletion

when dry-running a publish.

* utils: Add comments to protobuf-related code

to explain why these changes were performed. The comments all include a
link to an issue comment explaining the situation in greater detail.

* xtask: Build protobuf definitions

when building any part of the project, similar to how we build the
plugins when required. This should ensure that all crates built through
`cargo xtask` (which is the officially supported build method) will
receive up-to-date protobuf definitions.

* chore(release): v0.38.0

* chore(version): bump development version

* refactor(server): remove unnecessary mut (#2735)

* docs(changelog): refactor server

* chore(repo): update build instructions

* fix(status-bar): add break tab hints (#2748)

* fix(status-bar): add break tab hints

* fix(tests): update snapshot to new hints

* Update CHANGELOG.md

* fix(reconnect): do not clear terminal state when entering alternate screen (#2750)

* debug

* refactor(reconnect): articular reconnection logic

* docs(changelog): fix glitches on windows terminal

* fix(grid): memory leak with unfocused tabs (#2745)

* use hashset instead of vec for changed lines

avoid output buffer growring indefinitely if tab does not get rendered

* tidy up

- improve hashset -> vec conversion
- remove now unnecessary dedup

* use copied instead of cloned on iter

* docs(changelog): grid memory leak fix

* fix(input): block input thread for newtiledpane and newfloatingpane as well (#2757)

* docs(changelog): input action new pane fix

* chore(version): adjust version for release

* chore(release): v0.38.1

* chore(version): bump development version

* fix(terminal): wrap lines when adding characters in alternate screen (#2789)

* docs(changelog): line wrap bug

* chore(version): bump version for patch release

* chore(release): v0.38.2

* chore(version): bump development version

* fix(utils): validate session name (#2607)

* fix(utils): validate session name

* cargo fmt

* refactor: assign constant values to variables

* refactor: move operations unrealted to the condition

---------

Co-authored-by: Jae-Heon Ji <atx6419@gmail.com>

* docs(changelog): fix validate session name

* merge conflict fix

* feat(panes): in place run (#2795)

* 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

* docs

* bring in commands to dumped layout

* tidy up data structures

* bring in plugins to dumped layout

* fix tests

* style(fmt): rustfmt

* chore: rename file (#2803)

Signed-off-by: AlixBernard <alix.bernard9@gmail.com>

* bring in floating panes

* bring in stacked panes

* style(fmt): rustfmt

* bring in new_tab_template

* bring in swap layouts

* bring in edit panes, command panes and cwds

* consolidate CWD common prefixes when possible

* filter out default shell

* style(fmt): rustfmt

* handle scrollback editor panes properly

* handle in place panes properly

* bring in pane names

* style(fmt): rustfmt

* style(fmt): rustfmt

* dump layout action to terminal

* log session layout to HD periodically

* resurrect dead sessions by attaching to them

* delete dead sessions

* style(fmt): rustfmt

* start command panes as suspended by default

* style(fmt): rustfmt

* respect tab/pane focus

* improve dump performance

* hide_floating_panes in layout and resurrection

* show resurrectable sessions in zellij ls and include timestamps

* style(fmt): rustfmt

* allow disabling session serialization in config

* style(fmt): rustfmt

* fix e2e tests

* add e2e test

* style(fmt): rustfmt

* style(fmt): rustfmt

* serialize and restore pane viewport

* fix e2e tests and add new one

* style(fmt): rustfmt

* cleanups

* cleanups

* more cleanups

* refactor: move stuff around

* fix e2e tests

* style(fmt): rustfmt

* style(fmt): handle compilation warnings

* add tests for new layout properties

* fix current session name indication

* style(fmt): rustfmt

* adjust default config

* some cleanups

* go away clippy

---------

Signed-off-by: AlixBernard <alix.bernard9@gmail.com>
Co-authored-by: alekspickle <aleks.work2222+gh@gmail.com>
Co-authored-by: Example Name <example@example.test>
Co-authored-by: Oleks Gnatovskyi <22867443+alekspickle@users.noreply.github.com>
Co-authored-by: Thomas Linford <tlinford@users.noreply.github.com>
Co-authored-by: har7an <99636919+har7an@users.noreply.github.com>
Co-authored-by: Kyle Sutherland-Cash <kyle.sutherlandcash@gmail.com>
Co-authored-by: Thomas Linford <linford.t@gmail.com>
Co-authored-by: Nacho114 <17376073+Nacho114@users.noreply.github.com>
Co-authored-by: Jae-Heon Ji <32578710+jaeheonji@users.noreply.github.com>
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
Co-authored-by: deepsghimire <70006817+deepsghimire@users.noreply.github.com>
Co-authored-by: Jae-Heon Ji <atx6419@gmail.com>
Co-authored-by: AlixBernard <56587201+AlixBernard@users.noreply.github.com>
2023-10-12 16:05:45 +02:00
Aram Drevekenin
e392a66833
feat(panes): in place run (#2795)
* 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
2023-09-18 16:28:06 +02:00
Orhun Parmaksız
b65687660d
refactor(server): remove unnecessary mut (#2735) 2023-08-28 22:56:39 +09:00
Aram Drevekenin
b587125f06
fix(panes): refocus pane properly on tab change (#2734)
* fix(panes): stacked panes focus bug

* style(fmt): rustfmt
2023-08-27 22:04:38 +02:00
Aram Drevekenin
8c2a4e8429
fix(plugins): make sure configuration is also part of the plugin keys (#2727)
* fix(plugins): make sure configuration is also part of the plugin keys

* no thanks clippy
2023-08-25 18:28:15 +02:00
Aram Drevekenin
b44ba85895
feat(plugins): optionally move plugin to focused tab (#2725)
* feat(plugins): move_to_focused_tab attribute for LaunchOrFocusPlugin

* style(fmt): rustfmt
2023-08-25 12:24:43 +02:00
Aram Drevekenin
bc628abc12
feat(sessions): add a session manager to switch between sessions, tabs and panes and create new ones (#2721)
* 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
2023-08-24 13:36:24 +02:00
Jae-Heon Ji
c8ddb23297
feat: add plugin permission system (#2624)
* WIP: add exaple of permission ui

* feat: add request permission ui

* feat: add caching permission in memory

* feat: add permission check

* feat: add file caching

* fix: changes request

* feat(ui): new status bar mode (#2619)

* supermode prototype

* fix integration tests

* fix tests

* style(fmt): rustfmt

* docs(changelog): status-bar supermode

* fix(rendering): occasional glitches while resizing (#2621)

* docs(changelog): resize glitches fix

* chore(version): bump development version

* Fix colored pane frames in mirrored sessions (#2625)

* server/panes/tiled: Fix colored frames

in mirrored sessions. Colored frames were previously ignored because
they were treated like floating panes when rendering tiled panes.

* CHANGELOG: Add PR #2625

* server/tab/unit: Fix unit tests for server.

* fix(sessions): use custom lists of adjectives and nouns for generating session names (#2122)

* Create custom lists of adjectives and nouns for generating session names

* move word lists to const slices

* add logic to retry name generation

* refactor

 - reuse the name generator
 - iterator instead of for loop

---------

Co-authored-by: Thomas Linford <linford.t@gmail.com>

* docs(changelog): generate session names with custom words list

* feat(plugins): make plugins configurable (#2646)

* 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

* docs(changelog): configurable plugins

* style(fmt): rustfmt

* touch up ui

* fix: don't save permission data in memory

* feat: load cached permission

* test: add example test (WIP)

* fix: issue event are always denied

* test: update snapshot

* apply formatting

* refactor: update default cache function

* test: add more new test

* apply formatting

* Revert "apply formatting"

This reverts commit a4e93703fbfdb6865131daa1c8b90fc5c36ab25e.

* apply format

* fix: update cache path

* apply format

* fix: cache path

* fix: update log level

* test for github workflow

* Revert "test for github workflow"

This reverts commit 01eff3bc5d1627a4e60bc6dac8ebe5500bc5b56e.

* refactor: permission cache

* fix(test): permission grant/deny race condition

* style(fmt): rustfmt

* style(fmt): rustfmt

* configure permissions

* permission denied test

* snapshot

* add ui for small plugins

* style(fmt): rustfmt

* some cleanups

---------

Co-authored-by: Aram Drevekenin <aram@poor.dev>
Co-authored-by: har7an <99636919+har7an@users.noreply.github.com>
Co-authored-by: Kyle Sutherland-Cash <kyle.sutherlandcash@gmail.com>
Co-authored-by: Thomas Linford <linford.t@gmail.com>
Co-authored-by: Thomas Linford <tlinford@users.noreply.github.com>
2023-08-12 15:35:42 +02:00
Aram Drevekenin
192e6fd31e
feat(ui): break pane to new tab and move panes between tabs (#2664)
* prototype

* some tests

* break out floating pane

* break out plugin panes

* add keybind and fix some minor issues

* remove cli

* move pane to left/right tab

* update ui

* adjust ui

* style(fmt): rustfmt

* style(comment): remove commented code

* update snapshots
2023-08-02 11:41:51 +02:00
Aram Drevekenin
c95d0e769f
feat(plugins): make plugins configurable (#2646)
* 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
2023-07-25 10:04:12 +02:00
Aram Drevekenin
0825cb65a7
fix(rendering): occasional glitches while resizing (#2621) 2023-07-12 20:30:41 +02:00
Aram Drevekenin
019452bdbf
fix(plugins): make hide_self api idempotent (#2568)
* fix(plugins): make hide_self api idempotent

* style(fmt): rustfmt
2023-06-20 16:38:01 +02:00
Aram Drevekenin
63e3a1eae2
feat(plugins): more plugin api methods (#2550)
* feat(plugins): close, focus, rename pane, rename tab and show_self api methods

* style(fmt): rustfmt
2023-06-17 14:41:49 +02:00
Aram Drevekenin
bcbd940bf9
feat(plugins): plugin pane state events (#2545)
* feat(plugins): report pane state to plugins

* refactor(plugins): rename some stuff

* tests(plugins): adjust for new behavior

* style(fmt): rustfmt
2023-06-15 17:07:40 +02:00
Aram Drevekenin
f19334754c
fix(plugins): allow loading relative urls (#2539)
* fix(plugins): allow loading relative urls

* style(fmt): rustfmt
2023-06-14 13:44:46 +02:00