* work * moar work * notes * work * separate to terminal and control channels * stdin working * serve html web client initial * serve static assets loaded with include_dir * merge * enable_web_server config parameter * compile time flag to disable web server capability * rustfmt * add license to all xterm.js assets * mouse working except copy/paste * helpful comment * web client improvements - move script to js file - add favicon - add nerd font - change title TODO: investigate if font license embedded in otf is sufficient * get mouse to work properly * kitty keyboard support initial * fix wrong type in preload link * wip axum websocket handlers - upgrade axum to v0.8.1, enable ws feature - begin setup of websocket handlers - tidy up imports * replace control listener * handle terminal websocket with axum * cleanup Cargo.toml * kitty fixes and bracketed paste * fix(mouse): pane not found crash * initial session switching infra * add `web_client_font` option * session switching, creation and resurrection working through the session manager * move session module to zellij-utils and share logic with web-client * some cleanups * require restart for enable-web-server * use session name from router * write config to disk and watch for config changes * rename session name to ipc path * add basic panic handler, make render_to_client exit on channel close * use while let instead of loop * handle websocket close * add mouse motions * make clipboard work * add weblink handling and webgl rendering * add todo * fix: use session name instead of patch on session switch * use "default" layout for new sessions * ui indication for session being shared * share this session ui * plugin assets * Fix process crash on mac with notify watcher. Use poll watcher instead of recommended as a workaround. * make url session switching and creation work * start welcome screen on root url * scaffold control messages, set font from config * set dimensions on session start * bring back session name from url * send bytes on terminal websocket instead of json - create web client os input and id before websocket connection * draft ui * work * refactor ui * remove otf font, remove margins to avoid scrollbar * version query endpoint for server status * web session info query endpoint * refactor: move stuff around * add web client info to session metadata * make tests pass * populate real data in session list * remove unnecessary endpoint * add web_client node to config, add font option * remove web_client_font * allow disabling the web session through the config - WIP * formalize sharing/not-sharing configuration * fix tests * allow shutting down web server * display error when web clients are forbidden to attach * only show sessions that allow web clients if this is a web client * style(fmt): rustfmt * fix: query web server from Zellij rather than from each plugin * remove log spam * handle some error paths better in the web client * allow controlling the web server through the cli * allow configuring the web server's ip/port * fix tests and format code * use direct WebServerStatus event instead of piggy-backing on SessionInfo * plugin revamp initial * make plugin responsive * adjust plugin title * refactor: share plugin * refactor: share plugin * add cors middleware * some fixes for running without a compiled web server capability * display error when starting the share plugin without web server support * clarify config * add pipelines to compile zellij without web support * display error when unable to start web server * only query web server when share plugin is running * refactor(web-client): connection table * give zellij_server_listener access to the control channel * fixes and clarifications * refactor: consolidate generate_unique_session_name * give proper error when trying to attach to a forbidden session * change browser URL when switching sessions * add keyboard shortcut * enforce https when bound to non-loopback ip * initial authentication token implementation * background color from theme * initial web client theme config * basic token generation ui * refactor set config message creation * also set body background * allow editing scrollback for plugins too * set scrollback to 0 * properly parse colors in config * generate token from plugin * nice login modals * initial token management screen * implement token authentication * refactor(share): token management screen * style(fmt): rustfmt * fix(plugin): some minor bugs * refactor(share): main screen * refactor(share): token screen * refactor(share): main * refactor(share): ui components * fix(responsiveness): properly send usage_width to the render function * fix cli commands and add some verbosity * add support for settings ansi and selection colors * add cursor and cursor accent * basic web client tests * fix tests * refactor: web client * use session tokens for authentication * improve modals * move shutdown to ipc * refactor: ipc logic * serialize theme config for web client * update tests * refactor: move some stuff around to prepare for config hot reload * config live reloading for the web clients * change remember-me UI wording * improve xterm.js link handling * make sure terminal is focused on mousemove * remove deprecated sharing indication from compact-bar * gate deps and functionality behind the web_server_compatibility feature * feat(build): add --no-web flag in all the places * fix some other build flows * add new assets * update CI for no-web (untested) * make more dependencies optional * update axum-extra * add web client configuration options * gracefully close connections on server exit * tests for graceful connection closing * handle client-side reconnect when server is down * fix: make sure ipc bus folder exists before starting * add commands to manage login tokens from the cli * style(fmt): rustfmt * some cleanups * fix(ux): allow alt-right-click on the web client without opening the context menu * fix: prevent attaching to welcome screen * fix: reload config issues * fix long socket path on macos * normalize config conversion and fix color gap in browser * revoke session_token cookie if it is not valid * fix: visual bug with multiple clients in extremely small screen sizes * fix: only include rusqlite for the web server capability builds * update e2e snapshots * refactor(web): client side js * some cleanups * moar cleanups * fix(tests): wait for server instead of using a fixed timeout * debug CI * fix(tests): use spawn_blocking for running the test web server * fix(tests): wait for http rather than tcp port * fix(tests): properly pass config path - hopefully this is the issue... * success! bring back the rest of the tests * attempt to fix the macos CI issue * docs(changelog): add PR --------- Co-authored-by: Thomas Linford <linford.t@gmail.com>
143 lines
6.1 KiB
TOML
143 lines
6.1 KiB
TOML
[package]
|
|
name = "zellij"
|
|
version = "0.43.0"
|
|
authors = ["Aram Drevekenin <aram@poor.dev>"]
|
|
edition = "2021"
|
|
description = "A terminal workspace with batteries included"
|
|
license = "MIT"
|
|
repository = "https://github.com/zellij-org/zellij"
|
|
homepage = "https://zellij.dev"
|
|
include = ["src/**/*", "assets/layouts/*", "assets/config/*", "LICENSE.md", "README.md", "!**/*_test.*", "!**/tests/**/*"]
|
|
# NOTE: When updating this, modify `channel` in `rust-toolchain.toml` accordingly
|
|
rust-version = "1.84"
|
|
|
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
|
|
[dependencies]
|
|
zellij-client = { path = "zellij-client/", version = "0.43.0" }
|
|
zellij-server = { path = "zellij-server/", version = "0.43.0" }
|
|
zellij-utils = { workspace = true }
|
|
anyhow = { workspace = true }
|
|
clap = { workspace = true }
|
|
dialoguer = { version = "0.10.4", default-features = false }
|
|
humantime = { workspace = true }
|
|
interprocess = { workspace = true }
|
|
log = { workspace = true }
|
|
miette = { workspace = true }
|
|
names = { workspace = true }
|
|
nix = { workspace = true }
|
|
suggest = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
isahc = { workspace = true }
|
|
|
|
[dev-dependencies]
|
|
insta = { version = "1.6.0", features = ["backtrace"] }
|
|
ssh2 = "0.9.1"
|
|
rand = "0.8.0"
|
|
regex = "1.8.1"
|
|
vte = { workspace = true }
|
|
|
|
[workspace]
|
|
members = [
|
|
"default-plugins/compact-bar",
|
|
"default-plugins/status-bar",
|
|
"default-plugins/strider",
|
|
"default-plugins/tab-bar",
|
|
"default-plugins/fixture-plugin-for-tests",
|
|
"default-plugins/session-manager",
|
|
"default-plugins/configuration",
|
|
"default-plugins/plugin-manager",
|
|
"default-plugins/about",
|
|
"default-plugins/share",
|
|
"default-plugins/multiple-select",
|
|
"zellij-client",
|
|
"zellij-server",
|
|
"zellij-utils",
|
|
"zellij-tile",
|
|
"zellij-tile-utils",
|
|
"xtask",
|
|
".",
|
|
]
|
|
|
|
[workspace.dependencies]
|
|
ansi_term = { version = "0.12.1", default-features = false }
|
|
anyhow = { version = "1.0.70", default-features = false, features = ["backtrace", "std"] }
|
|
async-std = { version = "1.3.0", default-features = false, features = ["attributes", "default", "std", "unstable"] }
|
|
clap = { version = "3.2.2", default-features = false, features = ["env", "derive", "color", "std", "suggestions"] }
|
|
daemonize = { version = "0.5", default-features = false }
|
|
humantime = { version = "2.1.0", default-features = false }
|
|
interprocess = { version = "1.2.1", default-features = false }
|
|
isahc = { version = "1.7.2", default-features = false, features = ["http2", "text-decoding"] }
|
|
lazy_static = { version = "1.4.0", default-features = false }
|
|
libc = { version = "0.2", default-features = false, features = ["std"] }
|
|
log = { version = "0.4.17", default-features = false }
|
|
miette = { version = "5.7.0", default-features = false, features = ["fancy"] }
|
|
nix = { version = "0.23.1", default-features = false }
|
|
notify-debouncer-full = { version = "0.3.1", default-features = false }
|
|
notify = { version = "6.1.1", default-features = false, features = ["macos_kqueue"] }
|
|
prost = { version = "0.11.9", default-features = false, features = ["std", "prost-derive"] }
|
|
regex = { version = "1.5.5", default-features = false, features = ["perf", "std"] }
|
|
serde = { version = "1.0", default-features = false, features = ["derive", "std"] }
|
|
serde_json = { version = "1.0", default-features = false, features = ["std"] }
|
|
signal-hook = { version = "0.3", default-features = false, features = ["iterator"] }
|
|
strum = { version = "0.20.0", default-features = false }
|
|
strum_macros = { version = "0.20.0", default-features = false }
|
|
suggest = { version = "0.4.0", default-features = false }
|
|
tempfile = { version = "3.2.0", default-features = false }
|
|
termwiz = { version = "0.23.2", default-features = false }
|
|
thiserror = { version = "1.0.40", default-features = false }
|
|
tokio = { version = "1.38.1", features = ["full"] }
|
|
tokio-util = { version = "0.7.15" }
|
|
unicode-width = { version = "0.1.8", default-features = false }
|
|
url = { version = "2.2.2", default-features = false, features = ["serde"] }
|
|
uuid = { version = "1.4.1", default-features = false, features = ["serde", "v4", "std"] }
|
|
vte = { version = "0.11.0", default-features = false }
|
|
names = { version = "0.14.0", default-features = false }
|
|
include_dir = { version = "0.7.3", default-features = false }
|
|
rmp-serde = { version = "1.1.0", default-features = false }
|
|
sha2 = { version = "0.10", default-features = false }
|
|
zellij-utils = { path = "zellij-utils/", version = "0.43.0" }
|
|
|
|
[profile.dev-opt]
|
|
inherits = "dev"
|
|
|
|
[profile.dev-opt.package."*"]
|
|
opt-level = 3
|
|
|
|
[profile.release]
|
|
lto = true
|
|
strip = true
|
|
|
|
[package.metadata.deb]
|
|
depends = "$auto"
|
|
license-file = ["LICENSE.md", "4"]
|
|
assets = [
|
|
["assets/man/zellij.1", "usr/share/man/man1/zellij.1", "644"],
|
|
["target/release/zellij", "usr/bin/zellij", "755"],
|
|
["GOVERNANCE.md", "usr/share/doc/zellij/GOVERNANCE.md", "644"],
|
|
["README.md", "usr/share/doc/zellij/README.md", "644"],
|
|
["assets/layouts/*", "usr/share/zellij/layouts/", "644"],
|
|
["assets/plugins/*", "usr/share/zellij/plugins/", "644"],
|
|
["assets/completions/zellij.bash", "usr/share/bash-completion/completions/zellij.bash", "644"],
|
|
["assets/completions/zellij.fish", "usr/share/fish/vendor_completions.d/zellij.fish", "644"],
|
|
["assets/completions/_zellij", "usr/share/zsh/vendor-completions/_zellij", "644"],
|
|
]
|
|
|
|
[package.metadata.binstall]
|
|
pkg-url = "{ repo }/releases/download/v{ version }/{ name }-{ target }.tar.gz"
|
|
bin-dir = "{ bin }{ binary-ext }"
|
|
pkg-fmt = "tgz"
|
|
|
|
[features]
|
|
# See remarks in zellij_utils/Cargo.toml
|
|
default = ["plugins_from_target", "vendored_curl", "web_server_capability"]
|
|
plugins_from_target = ["zellij-utils/plugins_from_target"]
|
|
disable_automatic_asset_installation = ["zellij-utils/disable_automatic_asset_installation"]
|
|
vendored_curl = ["zellij-utils/vendored_curl"]
|
|
unstable = ["zellij-client/unstable", "zellij-utils/unstable"]
|
|
singlepass = ["zellij-server/singlepass"]
|
|
web_server_capability = ["zellij-client/web_server_capability", "zellij-server/web_server_capability", "zellij-utils/web_server_capability"]
|
|
|
|
# uncomment this when developing plugins in the Zellij UI to make plugin compilation faster
|
|
# [profile.dev.package."*"]
|
|
# opt-level = 3
|