Commit graph

2179 commits

Author SHA1 Message Date
Aram Drevekenin
f8a078c1a9
feat(ux): show loading screen (#1997)
* feat(ux): show loading prompt

* style(fmt): rustfmt
2022-12-07 15:03:58 +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
b1ab4eac10
refactor(messaging): reduce extraneous cross-thread messaging (#1996)
* refactor(messaging): reduce extraneous cross-thread messaging

* style(fmt): rustfmt
2022-12-06 22:29:57 +01:00
Aram Drevekenin
a6f7756296
docs(changelog): plugin loading data flow 2022-12-06 15:35:41 +01:00
Aram Drevekenin
b7adfcc581
refactor(plugins): fix plugin loading data flow (#1995) 2022-12-06 15:34:43 +01:00
dependabot[bot]
c2a6156a6b
build(deps): bump DeterminateSystems/update-flake-lock from 14 to 15 (#1982)
Bumps [DeterminateSystems/update-flake-lock](https://github.com/DeterminateSystems/update-flake-lock) from 14 to 15.
- [Release notes](https://github.com/DeterminateSystems/update-flake-lock/releases)
- [Commits](https://github.com/DeterminateSystems/update-flake-lock/compare/v14...v15)

---
updated-dependencies:
- dependency-name: DeterminateSystems/update-flake-lock
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-01 11:47:22 +01:00
a-kenji
31ca5b4731
[create-pull-request] automated change (#1980)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2022-12-01 09:40:36 +01:00
a-kenji
cb3e77aca9
flake.lock: Update (#1981)
Flake lock file updates:

• Updated input 'crate2nix':
    'github:kolloch/crate2nix/3e6fbcc8ecd384018196223023cdd7868bbce4e6' (2022-10-31)
  → 'github:kolloch/crate2nix/e4414cc2579d6ab11e9542f49eeb302b451bf0e2' (2022-11-21)
• Updated input 'flake-compat':
    'github:edolstra/flake-compat/b4a34015c698c7793d592d66adbab377907a2be8' (2022-04-19)
  → 'github:edolstra/flake-compat/009399224d5e398d03b22badca40a37ac85412a1' (2022-11-17)
• Updated input 'flake-utils':
    'github:numtide/flake-utils/6ee9ebb6b1ee695d2cacc4faa053a7b9baa76817' (2022-10-29)
  → 'github:numtide/flake-utils/5aed5285a952e0b949eb3ba02c12fa4fcfef535f' (2022-11-02)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/412b9917cea092f3d39f9cd5dead4effd5bc4053' (2022-10-30)
  → 'github:nixos/nixpkgs/a115bb9bd56831941be3776c8a94005867f316a7' (2022-11-27)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/8f81faec35508647ced65c44fd3e8648a5518afb' (2022-10-31)
  → 'github:oxalica/rust-overlay/3158e47f6b85a288d12948aeb9a048e0ed4434d6' (2022-11-30)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2022-12-01 09:03:19 +01:00
Jae-Heon Ji
7fc3901bf2
docs(changelog): fix missing theme contents 2022-11-30 21:53:03 +09:00
Jae-Heon Ji
924488de6f
fix(themes): missing tokyo-night-dark theme (#1972) 2022-11-30 21:51:21 +09:00
Aram Drevekenin
2641cccafc
docs(changelog): pane focus fix 2022-11-23 18:16:16 +01:00
Aram Drevekenin
f8fbd8a138
fix(panes): focus change when closing and between tabs (#1966)
* fix(panes): do not forget pane focus when switching tabs or closing panes

* style(fmt): rustfmt

* fix(tests): e2e snapshots
2022-11-23 18:14:24 +01:00
Aram Drevekenin
00fedafa38
docs(changelog): server/client crash fix 2022-11-23 10:13:28 +01:00
Aram Drevekenin
b0218f4d50
fix(router): handle client empty message (#1965)
* fix(router): handle client empty message

* style(fmt): rustfmt
2022-11-23 10:10:42 +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
Jae-Heon Ji
211d3b1a7f
fix: empty session name (#1959) 2022-11-22 21:37:04 +09:00
Aram Drevekenin
8b50ef96f3
docs(changelog): improve render performance 2022-11-21 20:08:59 +01:00
Aram Drevekenin
63e7531c48
performance(rendering): improve rendering performance (#1960)
* refactor(plugins): plugins now need to explicitly ask to be rendered

* performance(render): remove various needless renders

* performance(render): cache boundaries

* performance(render): adjust tests and cache cursor location/shape

* style(comment): remove outdated

* style(fmt): rustfmt
2022-11-21 20:07:24 +01:00
Aram Drevekenin
5ad0429adc
docs(changelog): client buffer overflow fix 2022-11-18 10:23:21 +01:00
Aram Drevekenin
2afb355e48
fix(router): handle client buffer overflow (#1955)
* fix(router): handle client buffer overflow

* style(fmt): rustfmt
2022-11-18 10:21:59 +01:00
Jae-Heon Ji
84a931ad82
docs(changelog): fix catppuccin themes 2022-11-17 23:17:53 +09:00
Jae-Heon Ji
d4ae16ed58
fix(themes/catppuccin): black and white inverted (#1953) 2022-11-17 23:16:09 +09:00
Jae-Heon Ji
249830afe8
docs(changelog): fix mouse-click in simplified-ui 2022-11-17 22:55:24 +09:00
imsuck
a001833975
fix(compact-bar): mouse-click in simplified-ui (#1917)
* fix(compact-bar): mouse-click in simplified-ui

* fix(compact-bar): fix formatting
2022-11-17 22:53:41 +09:00
Aram Drevekenin
6c15292667
docs(changelog): pane frame fix 2022-11-16 18:00:54 +01:00
Aram Drevekenin
81b08d6057
fix(panes): ensure ejected pane always has a frame (#1950) 2022-11-16 17:59:52 +01:00
Aram Drevekenin
aa2adda475
docs(changelog): cli cwd fix 2022-11-16 16:27:21 +01:00
Aram Drevekenin
cc3ac25c74
fix(cli): measure cwd from cli client rather than the zellij server (#1947)
* fix(cli): measure cwd from cli client rather than the zellij server

* style(fmt): rustfmt
2022-11-16 16:25:01 +01:00
Jae-Heon Ji
ed64cff9b5
docs(changelog): add catppuccin themes 2022-11-16 21:48:15 +09:00
Jae-Heon Ji
c344902e5e
feat(themes): add catppuccin themes (#1937)
* feat(themes): add catppuccin themes

* chore: add official link
2022-11-16 21:47:01 +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
Shunsuke Mie
4aae81faf8
fix(pty): use /bin/sh when SHELL env variable is not found (#1769)
This commit fixes #1722.

In some environment, the SHELL environemnt variable is not exists. It
causes a panic that is reported as #1722. Use generic shell (/bin/sh) to
prevent the panic.

This is a same behavior as tmux.
https://github.com/tmux/tmux/blob/master/spawn.c#L329-L331
2022-11-15 15:22:38 +00:00
Aram Drevekenin
c66a8c0629
docs(changelog): plugin data flow 2022-11-15 12:25:09 +01:00
Aram Drevekenin
3d2a6d6a5a
refactor(plugins): change the data flow (#1934)
* refactor(plugins): do not block render loop

* refactor(plugins): cleanup

* style(fmt): rustfmt

* fix(plugins): various rendering pipeline fixes
2022-11-15 12:21:36 +01:00
Jae-Heon Ji
b2b5bdc564
docs(changelog): update log path 2022-11-13 23:27:18 +09:00
哇呜哇呜呀咦耶
8626e7ab40
update log path (#1927) 2022-11-13 23:25:37 +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
哇呜哇呜呀咦耶
9f827805f1
Support clipboard to text input (#1926) 2022-11-12 11:47:02 +09:00
Aram Drevekenin
a71b2ae890 chore(version): bump development version 2022-11-10 11:48:09 +01:00
Aram Drevekenin
e8baa35515
chore(release): bring back stripping 2022-11-10 10:47:00 +01:00
Aram Drevekenin
c086e33ed3 chore(release): v0.33.0 2022-11-10 09:50:57 +01:00
Aram Drevekenin
d68db715d1
chore(ci): remove msrv check (#1923) 2022-11-09 23:03:11 +01:00
har7an
49b831c032
docs: Improve error handling docs (#1919)
* docs: Improve error handling docs

and add more TL;DRs and new sections about handling specific errors, and
logging errors.

* contributing: Add more coding tips
2022-11-09 18:01:36 +00:00
Aram Drevekenin
d4beabfeb2
docs(changelog): termwiz bump 2022-11-09 17:25:44 +01:00
Jonathan LEI
cbec62c71a
chore(deps): bump termwiz to 0.19.0 (#1896)
* chore(deps): bump termwiz to 0.19.0

* chore: bump MSRV to 1.60
2022-11-09 17:24:41 +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
har7an
48bc2281c7
Fix: better error reporting when failing to load plugins (#1912) (#1914)
* utils/input/plugins: Return `Result` when loading

a plugin and failing to find it. Since we look up the plugin in multiple
locations, make sure we preserve each of these lookup failures and
report them to the user. This way the user can see what locations were
actually checked.

In addition, before performing the lookup, deduplicate the array of
locations to check. This prevents errors where we look up the same
plugin multiple times in the exact same locations, which can leave a bad
impression on anyone reading it who isn't familiar with the code.

* server/wasm_vm: Remove obsolete context

which was previouly required because the function it is attached to
returned only an `Option` instead of a `Result`.
2022-11-09 07:28:02 +00:00