Commit Graph

635 Commits

Author SHA1 Message Date
Aram Drevekenin
17205793e4
docs(changelog): remove nix support 2022-12-20 12:25:01 +01:00
Aram Drevekenin
6347900dd7
docs(changelog): visual error on resize 2022-12-19 12:49:40 +01:00
har7an
d1f50150f6
WIP: Use xtask as build system (#2012)
* xtask: Implement a new build system

xtask is a cargo alias that is used to extend the cargo build system
with custom commands. For an introduction to xtask, see here:
https://github.com/matklad/cargo-xtask/

The idea is that instead of writing makefiles, xtask requires no
additional dependencies except `cargo` and `rustc`, which must be
available to build the project anyway.

This commit provides a basic implementation of the `build` and `test`
subcommands.

* xtask/deps: Add 'which'

* xtask/test: Handle error when cargo not found

* xtask/flags: Add more commands

to perform different useful tasks. Includes:

- clippy
- format
- "make" (composite)
- "install" (composite)

Also add more options to `build` to selectively compile plugins or leave
them out entirely.

* xtask/main: Return error when cargo not found

* xtask/build: Add more subtasks

- `wasm_opt_plugins` and
- `manpage`

that perform other build commands. Add thorough documentation on what
each of these does and also handle the new `build` cli flags
appropriately.

* xtask/clippy: Add job to run clippy

* xtask/format: Add job to run rustfmt

* xtask/pipeline: Add composite commands

that perform multiple atomic xtask commands sequentially in a pipeline
sort of fashion.

* xtask/deps: Pin dependencies

* xtask/main: Integrate new jobs

and add documentation.

* xtask: Implement 'dist'

which performs an 'install' and copies the resulting zellij binary along
with some other assets to a `target/dist` folder.

* cargo: Update xflags version

* xtask: Measure task time, update tty title

* xtask: Update various tasks

* xtask: wasm-opt plugins in release builds

automatically.

* xtask/build: Copy debug plugins to assets folder

* xtask: Add 'run' subcommand

* xtask: Add arbitrary args to test and run

* xtask: Rearrange CLI commands in help

* xtask: Add deprecation notice

* docs: Replace `cargo make` with `xtask`

* github: Use `xtask` in workflows.

* xtask: Add support for CI commands

* xtask: Streamline error handling

* github: Use new xtask commands in CI

* xtask: Add 'publish' job

* xtask/publish: Add retry when publish fails

* xtask: Apply rustfmt

* xtask: Refine 'make' deprecation warning

* xtask: add task to build manpage

* contributing: Fix e2e commands

* xtask/run: Add missing `--`

to pass all arguments following `xtask run` directly to the zellij
binary being run.

* xtask: Stay in invocation dir

and make all tasks that need it change to the project root dir
themselves.

* xtask/run: Add `--data-dir` flag

which will allow very quick iterations when not changing the plugins
between builds.

* xtask/ci: Install dependencies without asking

* utils: Allow including plugins from target folder

* utils/assets: Reduce asset map complexity

* utils/consts: Update asset map docs

* xtask: Fix plugin includes

* xtask/test: Build plugins first

because the zellij binary needs to include the plugins.

* xtask/test: Fix formatting

* xtask: Add notice on how to disable it
2022-12-17 13:27:18 +00:00
Aram Drevekenin
ffc03ae937
docs(changelog): show visual error on failed horizontal/vertical split 2022-12-14 22:28:29 +01:00
Andreas Hartmann
962f37e767 chore: Bump development versions 2022-12-13 14:59:49 +01:00
har7an
7c7fb9808e
Add PR #2013 2022-12-13 12:07:19 +00:00
har7an
685e39bd9b
Hotfix: Resize with plugin panes (#2019)
* server/panes/tiled/grid: Fix area calculation

for debug assertions. Now also considers fixed-size panes correctly.

* server/panes/tiled/grid: Refactor function

to make it more readable and remove some implicitly handled "special"
cases.

* server/panes/tiled/grid: Handle plugins panes

like any other pane type and only check whether they are fixed-size
panes, too.

* changelog: Add PR #2019
2022-12-13 09:49:41 +00:00
Aram Drevekenin
0598a84e1f chore(version): patch version due to CI difficulties 2022-12-09 12:09:07 +01:00
Aram Drevekenin
fba273eebb chore(version): patch version due to CI difficulties 2022-12-09 12:01:20 +01:00
Aram Drevekenin
adab6b8363 chore(version): patch version due to CI difficulties 2022-12-09 11:44:36 +01:00
Aram Drevekenin
66593ec41a chore(release): v0.34.0 2022-12-09 09:14:03 +01:00
har7an
62eaea1583
Reimplement resize code (#1990)
* server/floating_panes: Start removing `unwrap`s

* server/panes: Remove more `unwrap`s

in floating panes code.

* utils/data: Unify `Direction` type

which was previously present in multiple locations.
Also start working on a new Resize Method (type `ResizeStrategy`), to
remove code duplication in the resize code.

* server: Implement new resize handling

with the `ResizeStrategy` type. Add a new action with the ability to
invoke it from the CLI. Take care to maintain backwards-compatibility in
terms of configuring the new resize mode.

* utils/layout: Add conversion for SplitDirection

from `data::Direction`.

* utils/data: Add impl for `Direction`

* server/panes: Rework tiled pane resizing

but it's currently still broken in a few regards and misses ability to
perform "regular" increase/decrease.

* server/panes/tiled_panes: Add debug assertion

to catch if the total area of all panes (in percent) is different from
100.0 at some point.

* server/panes/tiled/grid: Fix resize bug

caused by the fact that neighboring plugin panes previously weren't
filtered from resize operations, even though they cannot be resized at
all.

* utils/data: Add `invert` for `Resize`

* utils/data: Add member to `ResizeStrategy`

that controls whether we invert resize behavior when increasing size
towards a bounadry. This maintains current behavior.

* server/screen: Handle new attribute

in `ResizeStrategy`

* server/panes/resizer: Return `anyhow::Error`

* server/panes/tiled: Implement resize increase/decrease

without specifying a direction (towards all possible directions).
Currently broken in some cases.

* server/pane/tiled/grid: Don't return early

to preserve resize debug assertions.

* server/pane/tiled/grid: Fix resize bug

caused by checking for the wrong alignments in some cases. Also refactor
the code for looking up aligned panes.

* server/panes/tiled/grid: Cleanup code

and remove log statements and unused functions.

* server/panes/float/grid: Invert resize

if the floating pane is hitting a boundary already.

* plugins/status-bar: Add hints for new resize

* server: Use new resize method

* server: Fix tests

with new functions and result types.

* apply rustfmt

* utils: Apply rustfmt

* server/panes/floating: Fix resize increase

behavior which would previously, upon hitting a boundary, cause the pane
to invert the resize operation, which is wrong. Instead, it now does not
resize floating panes on an undirected resize "increase" in directions
where it hits boundaries.

* server/panes/tiled: Use correct resize increments

The values for the resize increments were previously wrong, causing many
of the tests to fail.

* server/panes/tiled: Fix resize checks

to correctly consider fixed-size panes.

* utils/assets/config: Update default config

with new keybindings for resize mode.

* server/panes/tiled: Fix resize check

* server/panes/tiled: Use shortener for `Direction`

type in `change_pane_size` function.

* server/panes/tiled: Restore resize behavior

for undirected resizes, to the way it was before this PR.

* server/panes/floating: Fix resize increment

for undirected resizes

* utils/data: Fix doctest

* utils: Fix test snapshots

for tests working with the default config

* changelog: Add PR #1990
2022-12-08 12:50:28 +00:00
Aram Drevekenin
420c7c319b
docs(changelog): loading screen 2022-12-07 15:04:42 +01:00
har7an
81287a276f
errors: Maintain caller location in to_log (#1994)
* utils/errors: Add caller location to `to_log`

by building the log record manually and filling in the callers file and
line manually. It is currently not possible to determine a callers
module, hence the module is now set to "???" in all log entries logged
this way. Nonetheless, the file and line number are sufficient to find
the logs source.

* utils/errors: Reimplement `to_log`

default implementation in the `LoggableError` trait.

* changelog: Add PR #1994

errors: Maintain caller location in `to_log`
2022-12-07 07:51:23 +00:00
Aram Drevekenin
fd7a5398cd
docs(changelog): reduce extraneous cross-thread messaging 2022-12-06 22:31:11 +01:00
Aram Drevekenin
a6f7756296
docs(changelog): plugin loading data flow 2022-12-06 15:35:41 +01:00
Jae-Heon Ji
7fc3901bf2
docs(changelog): fix missing theme contents 2022-11-30 21:53:03 +09:00
Aram Drevekenin
2641cccafc
docs(changelog): pane focus fix 2022-11-23 18:16:16 +01:00
Aram Drevekenin
00fedafa38
docs(changelog): server/client crash fix 2022-11-23 10:13:28 +01:00
har7an
11b0210de5
plugins: rework plugin loading (#1924)
* zellij: Move "populate_data_dir" to utils

and rewrite it to take a second, optional parameter. This allows
controlling whether only a specific asset should be installed. We do
this as preparation for being able to recover from a plugin version
mismatch error, where we will need to repopulate the data dir for
offending plugins.

* server/wasm_vm: Recover from PluginVersionMismatch

Adds a global plugin cache that stores, per plugin config, the wasmer
module associated with it. Make `start_plugin` take the pre-populated
module and create only the necessary modifications to the wasm env etc.

* utils: Fix formatting

* zellij: Delete non-existent module

* utils/shared: fix missing "set_permissions"

function when not on unix systems.

* server/wasm_vm: Don't populate cachedir

with serialized versions of the WASM plugins.

* utils/input/plugins: load wasm bytes from assets

for builtin plugin specifications. This foregoes any need to:

- Dump the plugin bytes to disk at all and
- subsequently read the plugin bytes from disk

* zellij: Disable default asset installation

which previously installed only the builtin plugins to disk. This is no
longer necessary because now we can load the builtin plugins directly
from the application binary.

* utils/input/plugins: Update docs

* utils/input/plugins: Add 'is_builtin' method

to `PluginConfig` that returns true if the plugin configuration refers
to a builtin plugin.

* wasm_vm: Remove plugin version mismatch handling

because a version mismatch in an internal plugin is now unfixable, with
the plugins being loaded from the running binary, and we have no control
over external plugins in the first place.

* cargo: Reintroduce feature flag

for `disable_automatic_asset_installation`

* utils/consts: Add `ASSET_MAP`

which currently contains the compiled WASM plugins.

* utils/shared: Fix clippy lint

* utils/errors: Add more `ZellijError` variants

* zellij: Make loading internal plugins optional

by reenabling the `disable_automatic_asset_installation` flag and
utilizing it for this purpose. Changes plugin search behavior to throw
better errors in case the builtin plugins cannot be found, depending on
the state of this feature.

* utils/errors: Apply rustfmt

* utils/setup: Allow dumping builtin plugins

to a specified folder on disk. This is meant to be an "escape hatch" for
users that have accidentally deleted the builtin plugins from disk (in
cases where the plugins aren't loaded from inside the zellij binary).

* utils/input/plugins: Update docs

* utils/setup: Add hint to `setup --check` output

when zellij was built without the `disable_automatic_asset_installation`
flag and will thus not read builtin plugins from the "PLUGIN DIR".

* utils/setup: Refine `setup --dump-plugins`

to dump to:

- The default "DATA DIR" when no option is provided with the argument,
  or
- The provided option, if existent

Also print a message to stdout with the destination folder that the
plugins are dumped to.

* server/wasm_vm: Ignore "NotFound" errors

when attempting to delete the non-existent plugin data directories. This
silences an error message that otherwise ends up in the logs when
quitting zellij.

* utils/errors: Extend "BuiltinPluginMissing" msg

to hint the user to the `zellij setup --dump-plugins` command to fix
their issues for them!

* utils/errors: Track caller in calls to `non_fatal`

which will hopefully, once closures can be annotated, allow us to
display the location of the call to `non_fatal` in log messages.

* utils/input/plugins: Fix plugin lookup

to prefer internal assets if available. It was previously broken because
sorting the paths vector before deduping it would bring the paths into a
wrong order, looking up in the plugin folder first.

Also print a log message when a plugin is being loaded from the internal
assets but exists on disk, too.

* Apply rustfmt

* make: build-e2e depends on wasm-opt-plugins

so it updates the assets when building the binary

* server/qwasm_vm: Remove var

* utils/consts: Add plugins from target folder

and include them in the asset map from there, too. Include plugins from
debug or release builds, depending on the build type.

* utils/consts: Take release plugins from assets

instead of the target/release folder. The latter will break
installations from crates.io, because we currently rely on including the
plugins we pre-compiled and distribute along with the binary.

* server/wasm_vm: Reintroduce .cache folder

to speedup subsequent application launches.

* cargo: Reorder workspace members

to improve behavior with `cargo make` with respect to compilation order.

* Makefile: restructure plugin tasks

* Makefile: Fix CI errors

* Makefile: More CI diagnosis

* github: Install wasm-opt in e2e test workflow

* Makefile: Build plugins for e2e-test target

* server/Wasm_vm: Reorder plugin folder creation

so no folders are created in the plugin cache when loading a plugin
fails due to not being present or similar.

* update plugins testcommit

* makefile: Change job order

* changelog: Add PR #1924
2022-11-22 20:06:02 +00:00
Jae-Heon Ji
4921fa7cae
docs(changelog): fix empty session name 2022-11-22 21:38:10 +09:00
Aram Drevekenin
8b50ef96f3
docs(changelog): improve render performance 2022-11-21 20:08:59 +01:00
Aram Drevekenin
5ad0429adc
docs(changelog): client buffer overflow fix 2022-11-18 10:23:21 +01:00
Jae-Heon Ji
84a931ad82
docs(changelog): fix catppuccin themes 2022-11-17 23:17:53 +09:00
Jae-Heon Ji
249830afe8
docs(changelog): fix mouse-click in simplified-ui 2022-11-17 22:55:24 +09:00
Aram Drevekenin
6c15292667
docs(changelog): pane frame fix 2022-11-16 18:00:54 +01:00
Aram Drevekenin
aa2adda475
docs(changelog): cli cwd fix 2022-11-16 16:27:21 +01:00
Jae-Heon Ji
ed64cff9b5
docs(changelog): add catppuccin themes 2022-11-16 21:48:15 +09:00
har7an
dc922907eb
changelog: Add PR #1769
which falls back to `/bin/sh` if `$SHELL` doesn't exist.
2022-11-15 15:26:33 +00:00
Aram Drevekenin
c66a8c0629
docs(changelog): plugin data flow 2022-11-15 12:25:09 +01:00
Jae-Heon Ji
b2b5bdc564
docs(changelog): update log path 2022-11-13 23:27:18 +09:00
har7an
342d1629d0
Errors: Ignore errors from async when quitting (#1918)
* utils/errors: Fix function order in `to_anyhow`

impl for `SendError`. Previously we attached the context to `anyhow!`,
which is wrong (because it doesn't create an `Err` type itself) and
leads to strange behavior where the error seemingly is immediately
panicked upon.

Instead, Wrap `anyhow!` into an `Err()` and then attach the context to
that. This achieves the intended goal and doesn't lead to premature
termination.

* server/terminal_bytes: Ignore error in `listen`

which occurs when quitting zellij with the `Ctrl+q` keybinding. At the
end of the `listen` function we break out of a loop and send a final
`Render` instruction to the Screen. However, when quitting zellij as
mentioned above, the Screen thread is likely dead already and hence we
cannot send it any Instructions. This causes an error in the async tasks
of the panes that handle reading the PTY input.

If we leave the error unhandled, we will have error messages in the log
whenever we quit zellij, even though the application exited normally.
Hence, we now send the final `Render` instruction but do not care
whether it is sent successfully or not.

This is a "workaround" for the fact that we cannot tell whether the
application is quitting or not.

* server/terminal_bytes: Add FIXME note

* changelog: Add PR #1918

don't log errors from async pane threads when quitting zellij
2022-11-12 10:18:15 +00:00
Jae-Heon Ji
b52ca5d13f
docs(changelog): support text input from clipboard 2022-11-12 11:48:20 +09:00
Aram Drevekenin
c086e33ed3 chore(release): v0.33.0 2022-11-10 09:50:57 +01:00
Aram Drevekenin
d4beabfeb2
docs(changelog): termwiz bump 2022-11-09 17:25:44 +01:00
har7an
5975af6e42
cargo: Don't strip release binary (#1916)
* cargo: Don't strip release binary

because the lack of debug symbols makes the panic backtrace completely
useless. It will show a long list of unknown locations then.

Except for a minor space saving of 3-4 MB, debug symbols don't have any
negative side-effects for our application that we're aware of.

* changelog: Add PR #1916

Don't strip debug symbols from release binaries so the backtraces
contain the function names involved.

* cargo: Explicitly keep debug symbols

and add a comment explaining why.
2022-11-09 08:40:02 +00:00
Aram Drevekenin
0cbb08317f
docs(changelog): temp_dir lib 2022-11-08 16:40:44 +01:00
Aram Drevekenin
1bb12e720e
docs(changelog): kanagawa theme 2022-11-08 16:31:11 +01:00
raphCode
0477d93444
Do not advertise 24 bit color support unchecked (#1900)
* Fix bat syntax colors when using mosh

Original reason for this line according to Aram:
I set this variable as part of the Sixel support to get notcurses to
work properly. I tried communicating with the notcurses maintainers
about a workaround for this, but to no avail.

* Changelog

* Improve changelog message

* Remove empty function
2022-11-08 13:33:35 +01:00
har7an
453142775c
errors: Remove log::error in server (#1881)
* server/wasm_vm: Replace `log::error!`

with better error logging by means of `non_fatal`. This preserves the
original error and allows adding context information on top. Also makes
error formatting more uniform across the application.

* server/tab: Replace `log::error!`

with better error logging by means of `non_fatal`. This preserves the
original error and allows adding context information on top. Also makes
error formatting more uniform across the application.

* server/route: Replace `log::error!`

and propagate the error to the caller instead.

* server/pty: Replace `log::error!`

with better error logging by means of `non_fatal`. This preserves the
original error and allows adding context information on top. Also makes
error formatting more uniform across the application.

Also add per-instruction error context to make it clear what we tried to
accomplish when an error occured.

* server/panes/tiled_panes: Merge dependencies

and sort them into a better order.

* server/panes/tiled_panes: Replace `log::error!`

with better error logging by means of `non_fatal`. This preserves the
original error and allows adding context information on top. Also makes
error formatting more uniform across the application.

* server/os_input_output: Merge depndencies

and sort them into a better order.

* server/logging_pipe: Replace `log::error!`

with better error logging by means of `non_fatal`. This preserves the
original error and allows adding context information on top. Also makes
error formatting more uniform across the application.

* server/os_io: Remove uses of `log::error`

* changelog: Add PR #1881

* server/os_io: Gracefully handle failing resize

for terminals IDs that don't exist, instead of propagating the error to
the user.

* server/lib: Remove leftover log message

* server/pty: Log error cause

rather than providing a hard-coded error reason which is plain wrong in
this context.

* server/screen: Remove calls to `log::error!`

and change `get_active_tab(_mut)?` to return a `Result` instead of an
`Option`. This already makes many places in the code obsolete where
previously "failed to get active tab..." was logged manually.

Rather than logging, use the `anyhow::Error`s we have, along with all
their context information, and log these instead.
2022-11-08 10:56:23 +00:00
Aram Drevekenin
39c8d97054
docs(changelog): various no-frame bugs 2022-11-05 14:46:42 +01:00
Aram Drevekenin
dde6ecf09a
docs(changelog): focus in/out event 2022-11-04 17:30:29 +01:00
Aram Drevekenin
c34853adac
docs(changelog): cli action tty fix 2022-11-03 11:38:58 +01:00
Aram Drevekenin
98b66109a6
docs(changelog): zellij edit fix 2022-11-03 11:07:48 +01:00
Aram Drevekenin
4905ae65b8
docs(changelog): bold/dim reset fix 2022-11-02 19:25:50 +01:00
Aram Drevekenin
897038638d
docs(changelog): clear floating panes indication 2022-11-02 18:12:37 +01:00
Aram Drevekenin
97131fd7f8
docs(changelog): backslash config convert fix 2022-11-02 16:45:20 +01:00
Aram Drevekenin
4ab04c59a2
docs(changelog): terminating char in search 2022-11-02 14:36:29 +01:00
Jae-Heon Ji
8f293f584f
docs(changelog): remove space from shared_except 2022-11-02 20:17:23 +09:00
har7an
e45a3e5826
errors: Don't unwrap in server::os_input_output (#1895)
* server/os_io: Redefine `ServerOsApi` result types

to use `anyhow::Result` instead. This mostly makes the need of custom
`SpawnTerminalError` obsolete (tbd in subsequent commits) and unifies
error handling across the application.

* utils/errors: Implement new `ZellijError` type

to replace any previously defined, isolated custom error types
throughout the application. Currently implements all error variants
found in `SpawnTerminalError`.

In the long term, this will allow zellij to fall back to a single error
type for all application-specific errors, instead of having different
error types per module.

* server/unit/screen: Impl new `ServerOsApi`

with updated `Result`-types.

* server/tab/unit: Impl new `ServerOsApi`

with updated `Result`-types.

* server/os_io: Impl new `ServerOsApi`

with updated `Result`-types.

* utils/ipc: Return `anyhow::Error` in `send`

rather than a `&'static str`, which isn't compatible with
`anyhow::Context`.

* server/tab: Handle `Result` in `resize_pty!`

which is returned due to the changed return types in `ServerOsApi`.

* server/tab: Handle new `Result`s

originating in the change to the `ServerOsApi` trait definition.

* server/screen: Handle new `Result`s

originating in the change to the `ServerOsApi` trait definition.

* server/panes/tiled: Handle new `Result`s

originating in the change to the `ServerOsApi` trait definition.

* server/panes/floating: Handle new `Result`s

originating in the change to the `ServerOsApi` trait definition.

* server/lib: Unwrap on new `Result`s

originating in the change to the `ServerOsApi` trait definition. The
functions here don't return a `Result` yet, this is better left to a
follow-up PR.

* server: Remove `SpawnTerminalError`

and make use of the new `ZellijError` instead. Make use of `anyhow`s
downcast capabilities to restore the underlying original errors where
necessary, as was done previously. This gives us the flexibility to
attach context information to all errors while still allowing us to
handle specific errors in greater detail.

* server/pty: Fix vars broken in rebase

* server/os_io: Remove last `SpawnTerminalError`

* changelog: Add PR #1895
2022-11-02 05:29:50 +00:00
Aram Drevekenin
cd2f5c2e7d
docs(changelog): suspended command panes 2022-11-01 09:08:17 +01:00
Aram Drevekenin
6d29c6951e
docs(changelog): status bar fix 2022-10-31 19:41:36 +01:00
Thomas Linford
1704d11698
docs(changelog): mouse mode runtime toggle 2022-10-31 17:06:14 +01:00
Thomas Linford
5c2f5f8470
docs(changelog): setup --clean panic fix 2022-10-31 16:38:54 +01:00
har7an
417b4a4ec5
errors: Don't unwrap in zellij_server::output (#1878)
* server/output: Don't unwrap

and return `Result` types where appropriate instead.

* server: Handle new `Result`s from `output`

* server/tab/unit: Unwrap new `Result`s

* changelog: Add PR #1878

Don't unwrap in `zellij_server::output`.
2022-10-30 06:02:03 +00:00
har7an
60322e969f
errors: Don't unwrap in server::terminal_bytes (#1876)
* server/terminal_bytes: Don't unwrap

and return `Result`s instead, where appropriate.

* changelog: Add PR #1876

Don't unwrap in `zellij_server::terminal_bytes`.
2022-10-28 17:12:05 +00:00
Jae-Heon Ji
086b5d28fb
docs(changelog): update docs theme example dir 2022-10-29 01:07:18 +09:00
har7an
aa7fe853d6
changelog: Add PR #1872
Remove calls to `unwrap` in `zellij_server::pty_writer`
2022-10-28 14:44:31 +00:00
har7an
f23108f63f
changelog: Add PR #1870
Remove calls to `unwrap` in `zellij_server::ui::*`
2022-10-28 14:16:27 +00:00
Jae-Heon Ji
668df6bbd7
docs(changelog): support multiple themes 2022-10-28 22:50:00 +09:00
Thomas Linford
9fa73d5758
docs(changelog): add everforest themes 2022-10-28 13:31:19 +02:00
Aram Drevekenin
82c365831e
docs(changelog): close on exit 2022-10-28 13:04:54 +02:00
har7an
eed9541a74
changelog: Add PR #1840
improve error handling in `zellij_server::pty`
2022-10-26 06:53:42 +00:00
Aram Drevekenin
5793af7655 chore(version): bump development version 2022-10-25 11:43:53 +02:00
Jae-Heon Ji
63cf3a6b01
docs(changelog): add help to cli options 2022-10-24 00:47:07 +09:00
har7an
75801bdb0e
plugins: Improve error handling on plugin version mismatch (#1838)
* server/tab: Don't panic in `Pane::render`

and do not crash the application on failure to receive a render update
from plugins any longer. Instead, will print a simple string with a hint
to check the application logs, where a more thorough error indication
can be found.

* utils/errors: re-export `anyhow::Error`

to create ad-hoc errors with custom error types, without having to wrap
them into a `context()` before to turn the into anyhow errors.

* plugins: Check plugin version on startup

and terminate execution with a descriptive error message in case the
plugin version is incompatible with the version of zellij being run.

* server/wasm_vm: Add plugin path in version error

so the user knows which plugin to look at in case they're using custom
plugins.

* server/wasm_vm: Check plugin version for equality

Previously we would accept cases where the plugin version was newer than
the zellij version, which doesn't make a lot of sense.

* server/wasm_vm: Prettier error handling

in call to `wasmer::Function::call` in case a plugin version mismatch
can occur.

* tile: Install custom panic handler

that will print the panic message to a plugins stdout and then call a
panic handler on the host that turns it into a real application-level
panic.

* tile: Catch errors in event deserialization

and turn them into proper panics. These errors are symptomatic of an
uncaught plugin version mismatch, for example when developing from main
and compiling zellij/the plugins from source. Normal users should never
get to see this error.

* utils/errors: Improve output in `to_stdout`

for anyhow errors. The default anyhow error formatting of `{:?}` is
already very good, and we just made it worse by trying to invent our own
formatting.

* tile: Reword plugin mismatch error message

* zellij: Apply rustfmt

* changelog: Add PR #1838

Improve error handling on plugin version mismatch.

* server/wasm_vm: Rephrase error in passive voice
2022-10-23 13:14:24 +00:00
har7an
d36e91e072
changelog: Add PR #1808
Improve error handling in `server/route`.
2022-10-21 13:51:01 +00:00
har7an
348a197eb9
changelog: Add PR #1827
which removes calls to `unwrap` from `wasm_vm` and prints sensible error messages when errors in the plugins occur.
2022-10-20 15:51:23 +00:00
Aram Drevekenin
8431b9e0ef
docs(changelog): tab cwd in layouts 2022-10-20 15:24:28 +02:00
Aram Drevekenin
ebf61f6ff2
docs(changelog): scroll region fix 2022-10-19 18:37:18 +02:00
Jae-Heon Ji
ca182fd216
docs(changelog): update DumpScreen action 2022-10-19 22:53:25 +09:00
Aram Drevekenin
5878e9f6f8
docs(changelog): upgrade log4rs 2022-10-19 09:26:59 +02:00
Aram Drevekenin
130c16beb3
docs(changelog): default to vi editor 2022-10-18 17:37:16 +02:00
Aram Drevekenin
5c8cded2f5
docs(changelog): floating panes grouped 2022-10-18 16:45:19 +02:00
har7an
d533299656
changelog: Add PR #1805
Add tips for code contributions to CONTRIBUTING, and expand the error docs with regard to how to handle `Option` types.
2022-10-18 14:16:30 +00:00
Aram Drevekenin
12d35bded5
docs(changelog): zellij run improvements 2022-10-17 19:40:34 +02:00
har7an
4562982409
changelog: Add PR #1800
for logging of IPC messages in `thread_bus` only when the `--debug` flag is specified.
2022-10-17 15:36:43 +00:00
Aram Drevekenin
2ae057d061
docs(changelog): edit panes in layouts 2022-10-14 17:45:00 +02:00
Aram Drevekenin
8c2b576b67
docs(changelog): global cwd 2022-10-14 15:09:05 +02:00
Aram Drevekenin
5c43a59e00
docs(changelog): layout fixes 2022-10-13 13:56:37 +02:00
har7an
8d56def4fc
zellij/commands: Prevent recursive sessions (#1766)
* zellij/commands: Prevent recursive sessions

with session names specified in layout files. A "recursive session" is
created when, while running inside some zellij session, a user attempts
to spawn zellij and make it attach to that same session.

When attaching via CLI (`zellij attach`) we explicitly check for this
condition and error out when needed.

However, besides `zellij attach` it is also possible to declare the
session to attach to in layout files like so:

```yaml
session:
  name: "foo"
```

This takes a different codepath when starting zellij, and hence bypases
the checks we already have in place to avoid recursive sessions. Hence,
we implement the check in the other codepath, too, and prevent recursive
sessions from happening for good.

Fixes: #1735

* changelog: fix recursive zellij sessions
2022-10-13 08:17:54 +00:00
Aram Drevekenin
e07dfcde78
docs(changelog): session-name cli fix 2022-10-12 15:36:10 +02:00
Aram Drevekenin
2c5b2784ba
docs(changelog): duplicate layout errors 2022-10-12 14:30:41 +02:00
Aram Drevekenin
2e5aaeb739
docs(changelog): move item to the right place 2022-10-12 13:05:31 +02:00
Aram Drevekenin
56d6423816
docs(changelog): mixed nodes layout error 2022-10-12 13:04:17 +02:00
Thomas Linford
694afd2239
fix(tab): frameless pane size wrong after closing other panes (#1776)
always recompute pane frames after closing a pane
2022-10-12 11:29:17 +02:00
Aram Drevekenin
46dd8d4473
docs(changelog): escapes when converting configs 2022-10-12 10:50:14 +02:00
Aram Drevekenin
f6fa521313
docs(changelog): command pane 2022-10-11 16:46:55 +02:00
har7an
cb926119bc
changelog: Add PR 1775
which improves error formatting in `server/thread_bus` and removes calls to `unwrap`, too.
2022-10-07 10:00:08 +00:00
har7an
bc04983f06
changelog: Add pull 1748
which removes calls to `unwrap` in `zellij_server::tab`.
2022-10-06 06:54:47 +00:00
Aram Drevekenin
46edc590ec
docs(changelog): switch config/layout/theme language to KDL 2022-10-05 07:45:43 +02:00
a-kenji
917e9b2ff0 docs(changelog): add darwin dependencies 2022-10-04 12:24:17 +02:00
har7an
9135eceac1
changelog: mention PR 1770
to improve error handling in screen thread private functions
2022-10-04 09:45:36 +00:00
har7an
77f05f0f12
Fix: issue 1734 (#1749)
* server/tab: Check suppressed panes

when writing to a pane by ID. Previously only the tiled and floating
panes would be searched for a pane of a given ID.

Fixes: #1734

* server/tab/unit: Test writing to suppressed panes

* docs: fix server panics when writing to suppressed panes
2022-09-23 05:28:35 +00:00
raphCode
65d12c4b9b
Don't send the server an exit signal when client panics (#1731)
* Don't send the server an exit signal when client crashes

* Update changelog
2022-09-14 17:33:46 +02:00
har7an
31d741263c
docs(changelog): error handling in screen 2022-09-09 13:40:41 +00:00
Aram Drevekenin
a28d905d84 chore(release): v0.31.4 2022-09-09 13:00:24 +02:00
Aram Drevekenin
41b27d011b
docs(changelog): multiple users ui-cursor fix 2022-09-09 12:32:14 +02:00
Aram Drevekenin
4d1ecabdbf
docs(changelog): tab-bar mouseclick fix 2022-09-09 09:49:35 +02:00
Thomas Linford
ebbd46ea3b
feat(compatibility): mouse wheel faux scrolling in alternate screen (#1678)
* implement faux scrolling

* update changelog

* fix tests

* cursor keys mode handling

* add integration test

* undo changelog reformatting
2022-09-04 16:26:15 +02:00
Thomas Linford
a58a5ca769
fix osc params 1024 byte limit (#1711)
* update vte to v0.11.0, and turn off it's default-features

* vte's default includes no_std, and in that case the osc params buffer is capped at 1024 bytes

* add changelog entry
2022-09-03 20:11:56 +02:00
Aram Drevekenin
ccf9201d5f
docs(changelog): fix empty bullet 2022-09-02 15:33:24 +02:00
Aram Drevekenin
857fc93c50
docs(changelog): client crash recovery 2022-09-02 15:32:36 +02:00
Aram Drevekenin
93f0f783b8
docs(changelog): startup router race 2022-09-02 10:22:22 +02:00
Thomas Linford
533a19c26b
docs(changelog): bracketed paste fix 2022-08-24 20:07:15 +02:00
Aram Drevekenin
b5a781351f
docs(changelog): improve vttest compliance 2022-08-19 14:01:38 +02:00
Aram Drevekenin
588167f38e chore(release): v0.31.3 2022-08-18 08:55:21 +02:00
Aram Drevekenin
67011947e8 chore(release): v0.31.2 2022-08-17 11:07:34 +02:00
Aram Drevekenin
aa80c09d13
docs(changelog): mouse events to terminal panes 2022-08-17 09:31:27 +02:00
Jae-Heon Ji
b53e3807eb
docs(changelog): refactor terminal characters 2022-08-17 01:32:20 +09:00
Sven Wick
61ae91e64d
docs(changelog): fix typo
Fix typo
2022-08-12 17:24:01 +02:00
Aram Drevekenin
6dcf3df9ea
docs(changelog): forward copy events from terminals 2022-08-12 17:23:19 +02:00
Aram Drevekenin
3c8aa11f1d
docs(changelog): fix router crash 2022-08-11 14:36:26 +02:00
har7an
dba5dcbd83
fix (screen): don't crash when first tab doesn't exist (#1648)
* screen: Don't crash when first tab doesn't exist

while trying to attach a new client. Instead, check whether the first
tab does exist and if not, take the first tab index from the tabs
present in the session. If no tabs exist, panic with a better error
message.

* changelog: Add PR #1648

* add test

* fix(tabs): send actual default mode info to new tab

Co-authored-by: Thomas Linford <linford.t@gmail.com>
Co-authored-by: Aram Drevekenin <aram@poor.dev>
2022-08-11 11:10:12 +02:00
Aram Drevekenin
8ea0f85e95 chore(release): v0.31.1 2022-08-02 17:56:00 +02:00
Jae-Heon Ji
c45a68a6e3
docs(changelog): fix theme not loading 2022-08-02 23:16:34 +09:00
a-kenji
5bc88eb122 docs(changelog): add more links to the documentation 2022-07-30 22:16:31 +02:00
a-kenji
98c5c447bb docs(changelog): add solarized-light theme 2022-07-29 18:06:20 +02:00
Aram Drevekenin
7a72aa4ef9 chore(release): v0.31.0 2022-07-28 16:51:55 +02:00
Aram Drevekenin
c7e8ed6889
docs(changelog): performance improvements 2022-07-28 12:10:42 +02:00
Aram Drevekenin
0a023d4c98
docs(changelog): reflect keybindings in the status bar 2022-07-27 16:49:57 +02:00
raphCode
408f520e4c
Log every panic to the logfile (#1602)
* Add unified panic logging

* Remove redundant logging in client

* Add to changelog

* Improve changelog
2022-07-26 17:47:25 +02:00
Jae-Heon Ji
9dc392e75b
docs(changelog): support themes directory 2022-07-24 21:32:28 +09:00
Aram Drevekenin
b1c9c22e47
docs(changelog): search through panes 2022-07-18 10:55:44 +02:00
Thomas Linford
b78ecdf338
docs(changelog): mouse click on pane frame fix 2022-07-15 16:29:48 +02:00
Aram Drevekenin
a99a5886c1
docs(changelog): editor with arguments 2022-07-14 15:15:32 +02:00
Aram Drevekenin
72ed0e98cf
docs(changelog): cursor show/hide alternate screen fix 2022-07-14 11:56:10 +02:00
Aram Drevekenin
e4b1dd6d4c
docs(changelog): performance improvement 2022-07-13 17:05:15 +02:00
Aram Drevekenin
b4cf0e7a81
docs(changelog): detach message 2022-07-12 12:18:29 +02:00
a-kenji
ee6a9cd78e docs(changelog): refactor get session name (#1582) 2022-07-12 11:33:08 +02:00
Jae-Heon Ji
f983651759
docs(changelog): add usage comment to fish script 2022-07-12 10:30:41 +09:00
Aram Drevekenin
89836a9cb6
docs(changelog): sixel support 2022-07-08 17:21:00 +02:00
Aram Drevekenin
3c6643ba49
docs(changelog): crate refactor 2022-07-06 16:08:53 +02:00
Thomas Linford
50a8c1b1ac
docs(changelog): fix 0 rows or cols crash 2022-07-04 18:30:34 +02:00
Jae-Heon Ji
ccec12d0f8
docs(changelog): update manpage 2022-06-29 23:02:13 +09:00
raphCode
7cd355efaf
roll over logs / fix filling up /tmp with logs (#1548)
* roll over logs at 20 MB

* Change cap to 100 kB

* Add fix to changelog
2022-06-28 13:38:43 +02:00
Aram Drevekenin
f7e3e0805d
docs(changelog): reset scroll properly 2022-06-27 19:02:16 +02:00
Aram Drevekenin
9225ce6c34
docs(changelog): trim whitespace wide characters on resize 2022-06-27 17:20:35 +02:00
Aram Drevekenin
0d48195eee
docs(changelog): in place editor fullscreen fix 2022-06-27 16:00:17 +02:00
a-kenji
cbf687e377 docs(changelog): add unstable feature notice
Because the change is gated behind an `unstable` feature.
2022-06-25 21:52:56 +02:00
a-kenji
625854cb4c fix(changelog): fix changelog
The changelog was wrong.
2022-06-25 21:49:14 +02:00
Jae-Heon Ji
9d3e075d96
docs(changelog): allow hex colors for themes 2022-06-24 12:07:20 +09:00
raphCode
5d9c428294
fix: exit client on empty rcv (#1535)
* Exit client on empty ipc receive

This resolves a hang when the server goes away unnoticed (e.g. when it
is killed). In some cases, this delayed system shutdown because the
client did not react to systemd's SIGTERM.

* Add newline after error report to tidy up shell prompt

* Update changelog
2022-06-21 20:40:26 +02:00
a-kenji
162f916f6a docs(changelog): fix macports instructions 2022-06-19 21:26:38 +02:00
Jae-Heon Ji
66aa486506
docs(changelog): add undo rename action 2022-06-18 10:00:37 +09:00
a-kenji
05532c24ce docs(changelog): fullscreen focus swapping 2022-06-16 15:25:05 +02:00
a-kenji
dc7f07a7c4 docs(changelog): fix WriteChars action 2022-06-16 15:23:32 +02:00
a-kenji
cdef256a54 docs(changelog): add action dispatch from cli 2022-06-15 11:43:36 +02:00
a-kenji
4bb0bfcafb chore(changelog): update clap 2022-06-14 18:33:16 +02:00
Jae-Heon Ji
7f242d38f1
docs(changelog): deduplicate code in screen.rs 2022-06-14 00:49:45 +09:00