aboutsummaryrefslogtreecommitdiffstats
path: root/default-plugins/strider (follow)
Commit message (Collapse)AuthorAge
* Dep upgrades for debian (#5420)Aram Drevekenin2026-07-28
| | | | | | | | | | | | | * chore(deps): upgrade base64 0.22, colored 3.1, crossterm 0.29, dialoguer 0.11, directories 6.0, highway 1.2, prost 0.12.6, strip-ansi-escapes 0.2.1, suggest 0.5.1 * chore(deps): upgrade miette 7.6, nix 0.30, notify 8.2, notify-debouncer-full 0.5 * vte 0.15 * clap 4.6 * workspaceify plugin deps * don't send empty fs watch events
* Add windows support in strider (#4854)divens2026-03-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add Windows path support to strider plugin Strider is a WASM plugin where std::path::PathBuf uses Unix semantics, so Windows backslash paths break parent(), join(), strip_prefix(), etc. Fix by normalizing all incoming paths to forward slashes at plugin boundaries and converting back to native backslashes for display. A new platform.rs module detects the host OS at runtime from the initial_cwd format and centralizes all platform-aware logic. Also fix scan_host_folder on the server side: canonicalize plugin_host_folder so the starts_with security check works on Windows, where canonicalize() adds the \?\ prefix. * Add virtual root view for drive and WSL navigation in strider On Windows, navigating up from a drive root (e.g. C:\) now shows a "Computer" view listing all available drives and WSL distributions. Drives are enumerated via GetLogicalDriveStringsW and WSL distros via `wsl -l -q` (since read_dir on \wsl.localhost fails with OS error 64/67). Drive letters appear before WSL entries, which are displayed as "Ubuntu-24.04 (WSL)" etc. On non-Windows platforms, behavior is unchanged. * Rename ListHostEntries to ListWindowsVolumes and gate behind FullHdAccess The old name was misleading — on Unix it just returned `/`, which isn't "listing host entries." Rename to ListWindowsVolumes to make the Windows-specific intent explicit, gate behind FullHdAccess permission, and replace the Unix implementation with a log::error since the command is not meaningful on non-Windows platforms. * Replace direct array indexing with .get() in strider platform detection Use safe accessors and matches! macro instead of direct byte indexing for bounds-checked access patterns. --------- Co-authored-by: divens <divens.dev@gmail.com>
* Warning and duplication cleanups (#4857)Aram Drevekenin2026-03-16
| | | | | * cleanup compilation warnings * consolidate EditScrollbackRaw into EditScrollback
* Click file paths to open in editor, allow plugins to change styles and hover ↵Aram Drevekenin2026-03-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | of viewport (#4802) * initial implementation * implement hover * add styles and foreground/background emphases, fix upsert hover collisions * initial implementation of link plugin * suppress highlighting + clicks on unfocused and mouse mode panes * also make italic * fix env var and ~ expansions * fix regex issues and add defensive validations * fix tests and add plugin assets * add tests * refactor all the things * add pr
* build(cargo): Update Rust toolchain to 1.90.0 (#4457)har7an2025-10-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * build(cargo): Define shared manifest properties workspace-wide in order to allow workspace members to easily copy their values, rather than copying the actual values manually between files. Prepare for a future update of the Rust edition this way by defining the edition in one central location. * build(cargo): Share the license between all workspace members and don't copy the actual license value manually between crates. * build(cargo): Share the rust edition between workspace members rather than manually defining the value per crate. There is no apparent advantage in having different parts of the code use different rust editions. It only makes the code inconsistent, which is not a goal worth striving for. * build(cargo): Share the crate version between workspace members at least for those workspace members that are versioned in lockstep. * refactor(session-manager): Migrate to Rust edition 2021 from edition 2018 in order to use a single unified Rust edition across the entire workspace. Apparently the migration does not involve changes to the actual code. * refactor(plugin-manager): Migrate to Rust edition 2021 from edition 2018 in order to use a single unified Rust edition across the entire workspace. Apparently the migration does not involve changes to the actual code. * build(zellij-utils): Remove the obsolete build script which has contained nothing but comments for two years now. The initial "workaround" has by now become the proper solution and the original issue (see <https://github.com/zellij-org/zellij/pull/2711>) has never been heard of since. The real motivation for this change is the simple fact that this version of prost-build pulled in a pretty old version of the `which` crate which doesn't appear to build with Rust 1.89 (latest stable as of now). * build(cargo): Update Rust toolchain to 1.89 which is the latest stable toolchain as of writing this and has support for the 2024 Rust edition, unlike the previously used 1.84. * fixup! build(zellij-utils): Remove the obsolete build script * refactor: Make implicitly elided lifetimes explicit in cases where a functions return type has an actual lifetime that depends on a non `'static` argument. * build(cargo): Update Rust toolchain to 1.90.0 which is the latest stable toolchain as of writing this. Compared to 1.89.0 this changes the default linker and should, hence, cut down iteration times during development significantly. * ci: Force configured rust toolchain version in release builds for the tagged release assets. Previously the rust version was unconditionally overwritten to be `stable` regardless of what `rust-toolchain.toml` configured. * docs(changelog): Add MR #4457 to list of unreleased changes. * build: Read package version from workspace version value since it no longer resides directly in the `package` object.
* style: some cleanups (#4329)Aram Drevekenin2025-08-01
| | | | | * style: some cleanups * style(fmt): rustfmt
* fix(plugins): forward CWD when opening new panes (#4290)Aram Drevekenin2025-07-15
| | | | | | | | | * use plugin cwd as last focused pane cwd when starting plugins * fix strider to use the new change_host_folder method * start terminals in same cwd as plugin pane if focused * style(fmt): rustfmt
* fix(ux): some filepicker improvements (#4007)Aram Drevekenin2025-02-20
| | | | | | | | | | | | | * allow closing plugin pane after replacing it * start of strider improvements * improve strider's ux * fix selected text ui component * style(fmt): rustfmt * style(fmt): rustfmt
* Update rust toolchain to 1.84 (#3945)har7an2025-01-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * chore: Remove deprecated `Makefile.toml` which really should have been deleted as part of #2012. This hasn't been updated for more than 2 years now and I don't expect anyone to still use this. Our build process is now managed by `cargo xtask`. * Cargo: Update the Rust toolchain to 1.84.0 from 1.75.0 which has been deprecated for a while now. Along with this change, the `wasm32-wasi` target is no longer available (see subsequent commit for additional info). * chore: Rename `wasm32-wasi` to `wasm32-wasip1` as required by the Rust project. The `wasm32-wasi` target name has been retired and will likely be reused at a later time, although to express an entirely different target (i.e. implementation of the WASI standard). For additional information, see: - https://blog.rust-lang.org/2024/04/09/updates-to-rusts-wasi-targets.html - https://blog.rust-lang.org/2024/09/05/Rust-1.81.0.html#wasi-01-target-naming-changed * chore: Drop `rust-analysis` component from the `rust-toolchain.toml` definition. This was added way back in 2021 via 8688569a, and while I'm not sure what it expressed back then, nowadays it refers to [Metadata for RLS][1], which apparently was an early language server implementation and has long since been replaced by *rust-analyzer*. We don't want to propose or enforce the use of a specific toolchain and in any case, setting this up properly is the job of a developers IDE/Editor. [1]: https://github.com/rust-lang/rustup/blob/1f06e3b31d444f3649dd51225a9d38362f7313e0/doc/user-guide/src/concepts/components.md#previous-components * chore: Adhere to type rename from `std::panic::PanicInfo` to `std::panic::PanicHookInfo`, which was introduced in Rust 1.81.0. For additional information, see: - https://releases.rs/docs/1.81.0/#compatibility-notes - https://github.com/rust-lang/rust/pull/115974/ * fix(utils/data): Adhere to expected case in match arm patterns, since the expression being matched against has been modified using `to_ascii_lowercase`. Hence, we cannot have upper case ASCII chars in the expressions (these arms were previously no-ops). * fix(utils): Derive `Hash` manually in `input/layout` since the `PartialEq` trait is also implemented manually. Previously the `Hash` impl wasn't consistent with the `Eq` impl, which can have weird effects when using these types in e.g. `HashMap`s or similar types. For additional information, see: - https://rust-lang.github.io/rust-clippy/master/index.html#derived_hash_with_manual_eq - https://doc.rust-lang.org/stable/std/hash/trait.Hash.html#hash-and-eq * fix(utils): Derive `Hash` manually in `pane_size` since the `PartialEq` trait is also implemented manually. Previously the `Hash` impl wasn't consistent with the `Eq` impl, which can have weird effects when using these types in e.g. `HashMap`s or similar types. For additional information, see: - https://rust-lang.github.io/rust-clippy/master/index.html#derived_hash_with_manual_eq - https://doc.rust-lang.org/stable/std/hash/trait.Hash.html#hash-and-eq * fix(server): Don't redeclare variables with their same names. Latest rust toolchains reject this code. * chore(actions): Use non-archived toolchain setup for the Rust toolchain. The previously used action has been archived over a year ago. The new one should also support reading our `rust-toolchain.toml`, so we no longer have to keep track of the toolchain in multiple places. * chore(actions): Add some space to YAML files to make them better visually parsable. * ci: Remove toolchain update Job since as far as I can tell, this isn't used any more. * ci: Fix invalid actions specification and only request an action without running other code. * CHANGELOG: Add PR #3945.
* feat(plugins): allow opening command panes in the background (hidden) (#3530)Aram Drevekenin2024-07-29
| | | | | | | | | | | * start background pane * open command and edit panes in the background * some cleanups * style(fmt): rustfmt * more cleanups
* feat(keybindings): support multiple modifiers (eg. Ctrl+Alt) and the kitty ↵Aram Drevekenin2024-05-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* fix(plugins): various pre-release issues (#3246)Aram Drevekenin2024-04-05
| | | | | | | | | | | * 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
* style(fmt): remove plugin compilation warnings (#3231)Aram Drevekenin2024-03-28
|
* feat(plugins): session manager cwd and new filepicker (#3200)Aram Drevekenin2024-03-18
| | | | | | | | | | | | | | | | | | | | | | | * 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
* fix(plugins): respect cwd and start filepicker at filesystem root (#3161)Aram Drevekenin2024-02-28
| | | | | | | * allow padding cwd to plugins * improve strider performance and fix alias cwd issue * style(fmt): rustfmt
* feat(plugins): introduce plugin aliases (#3157)Aram Drevekenin2024-02-26
| | | | | | | | | | | | | | | | | | | | | * 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(panes): allow specifying coordinates for a new floating pane through ↵Aram Drevekenin2024-02-08
| | | | | | | | | | | | | | | the CLI or plugins (#3122) * working * add tests * add coordinates to all the places * refactor: move things around: * style(fmt): rustfmt * style(code): cleanups
* fix(ux): various ui/ux fixes (#2722)Aram Drevekenin2023-08-24
| | | | | | | | | | | | | | | * force plugin render on permission request response * clear warnings * Revert "feat(ui): new status bar mode (#2619)" This reverts commit 27763d26ab83dd9f81c69c75601cbf6075f13790. * adjust status bar help * fix colors in session manager and shortcut in status-bar * adjust keybindings
* feat: add plugin permission system (#2624)Jae-Heon Ji2023-08-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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>
* feat(plugins): use protocol buffers for serializing across the wasm boundary ↵Aram Drevekenin2023-08-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (#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
* feat(plugins): make plugins configurable (#2646)Aram Drevekenin2023-07-25
| | | | | | | | | | | | | | | | | | | | | * 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
* feat(plugins): strider improvements (#2551)Aram Drevekenin2023-06-17
| | | | | | | * fix(plugins): adjust debounce and smart file ignore in strider * style(comment): remove commented code * style(fmt): rustfmt
* refactor(plugins): improve api (#2552)Aram Drevekenin2023-06-17
| | | | | * refactor(plugins): improve shim API * style(fmt): rustfmt
* fix(strider): clear search term on ESC (#2531)Aram Drevekenin2023-06-12
|
* feat(plugins): extensive plugin api (#2516)Aram Drevekenin2023-06-09
| | | | | | | * feat(plugins): add our entire API * style(fmt): rustfmt * fix(detach): make it work again
* feat(wasm-plugin-system): major overhaul and some goodies (#2510)Aram Drevekenin2023-06-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * strider resiliency * worker channel prototype * finalized ui * show hide plugin * fs events to plugins * tests for events and new screen instructions * various refactoringz * report plugin errors instead of crashing zellij * fix plugin loading with workers * refactor: move watch filesystem * some fixes and refactoring * refactor(panes): combine pane insertion logic * refactor(screen): launch or focus * refactor(pty): consolidate default shell fetching * refactor: various cleanups * initial refactoring * more initial refactoring * refactor(strider): search * style(fmt): rustfmt * style(pty): cleanup * style(clippy): ok clippy * style(fmt): rustfmt
* feat(plugins): Plugin workers and strider (#2449)Aram Drevekenin2023-05-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * mvp of strider fuzzy find * improve search ui * various refactoringz * moar refactoring * even more refactoring * tests and more refactoring * refactor: remove unused stuff * style(fmt): rustfmt * debug ci * debug ci * correct path for plugin system tests * fix plugin system ci tests * remove debugging statements from test * fix plugin worker persistence * add test for plugin worker persistence * style(fmt): rustfmt * final cleanups * remove outdated comments
* performance(rendering): improve rendering performance (#1960)Aram Drevekenin2022-11-21
| | | | | | | | | | | | | * 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
* refactor(plugins): change the data flow (#1934)Aram Drevekenin2022-11-15
| | | | | | | | | * refactor(plugins): do not block render loop * refactor(plugins): cleanup * style(fmt): rustfmt * fix(plugins): various rendering pipeline fixes
* add(style): add trailing comma in match blocks (#1483)a-kenji2022-06-10
| | | This makes it easier to distinguish from normal blocks
* fix(strider): update out of range index in files (#1425)Jae-Heon Ji2022-05-22
|
* chore(update): pretty-bytes `0.2` -> `0.2.2` (#1224)a-kenji2022-03-16
|
* refactor(tab): simplify mouse hold and release (#1185)Thomas Linford2022-03-08
|
* fix(cargo.toml): remove reduntant `resolver` key (#1170)a-kenji2022-03-04
| | | | There is no need anymore to specify `resolver=2`, `edition=2021` already turns on the appropriate resolver.
* chore(rust): move to 2021 editionBrooks J Rady2021-10-22
| | | | Get with the times, kiddo (and all hail disjoint captures)
* fix(plugin): clean up the mouse PR a littleBrooks J Rady2021-10-12
|
* feat(plugin): Add mouse events for plugins (#629)qepasa2021-10-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * feat(plugin): Add mouse events for plugins * Add double click support in strider * Add support for mouse clicks in tab-bar and fix bug in strider with selecting past the list of files and random double click action * continue working on mouse support for tab bar * finish tab change * fix fmt and fix bug in strider double-click * fix clippy * cleanup dbgs and logs * fix clippy * noop change to rerun e2e tests * Rebase and fix mouse click behavior in tab-bar and strider after rebase * fix fmt * remove dbgs and and comment in tab-line/main.rs * cargo fmt * Code review suggestions * rebase fix * fix clippy * fix mouse selection for tabs in tab-bar
* fix(strider): do not descend into host folder (#753)Aram Drevekenin2021-09-30
|
* fix(strider): update host mount-pointBrooks J Rady2021-09-19
|
* feat(ui): pane frames (new pane UI) (#643)Aram Drevekenin2021-08-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * work * resize working * move focus working * close pane working * selection and fullscreen working * pane title line * titles and conditional scroll title * whole tab resize working * plugin frames working * plugin splitting working * truncate pane frame titles * cleanup * panes always draw their own borders - also fix gap * toggle pane frames * move toggle to screen and fix some bugs * fix plugin frame toggle * fix terminal window resize * fix scrolling and fullscreen bugs * unit tests passing * e2e tests passing and new test for new frames added * refactor: TerminalPane and PluginPane * refactor: Tab * refactor: moar Tab * refactor: Boundaries * only render and calculate boundaries when there are no pane frames * refactor: Layout * fix(grid): properly resize when coming back from alternative viewport * style: remove commented code * style: fmt * style: fmt * style: fmt + clippy * docs(changelog): update change
* fix(naming): made plugin terminology more consistentBrooks J Rady2021-04-19