aboutsummaryrefslogtreecommitdiffstats
path: root/zellij-utils/src/logging.rs (follow)
Commit message (Collapse)AuthorAge
* Fix cli blocking logic and update dependencies (#4881)Aram Drevekenin2026-03-21
| | | | | | | * fix: do not unblock blocking commands for other unblock conditions * update deps * allow trailing : in file path detection and change log format to match
* [Windows port PR3] refactor: replace RawFd/AsyncFile, introduce ↵divens2026-02-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | platform-split PTY backend (#4722) * refactor: replace RawFd with i32 in debug_to_file Replace the Unix-specific RawFd type with plain i32 in the debug_to_file infrastructure. This removes the last RawFd usage from the cross-crate debug logging API, making it platform-independent. * refactor: cross-platform PTY abstraction with AsyncFd Replace portable-pty with native openpty and introduce a platform-split architecture for PTY operations: - os_input_output_unix.rs: UnixPtyBackend with native openpty, AsyncFd-based epoll reader (no spawn_blocking per pane), signal handling via nix - os_input_output_windows.rs: WindowsPtyBackend stubs (unimplemented) - os_input_output.rs: shared ServerOsApi trait, ServerOsInputOutput composes PtyBackendImpl, build_command() extracts TerminalAction→RunCommand logic Key changes: - AsyncFd<File> replaces both tokio::fs::File (upstream) and spawn_blocking SyncReadAsyncReader (previous port) for zero-overhead epoll PTY reads - orig_termios restored: openpty(None, &orig_termios) passes parent's VERASE - ServerOsApi returns Box<dyn AsyncReader> instead of Box<dyn Read + Send> - TerminalBytes::new takes Box<dyn AsyncReader> directly - NullAsyncReader replaces std::io::empty() for held panes - Platform modules gated with #[cfg(not(windows))] / #[cfg(windows)] - Removed portable-pty dependency, restored close_fds - Added tokio "net" feature for AsyncFd --------- Co-authored-by: divens <divens.dev@gmail.com>
* Feature: web-client/server to share your sessions in the browser (#4242)Aram Drevekenin2025-06-23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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>
* dependencies: switch from Wasmer to Wasmtime (#3349)bjorn32024-06-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Remove ForeignFunctionEnv wrapper around PluginEnv This will enable PluginEnv to be the Store context when migrating to Wasmtime. * Pass PluginEnv by value to load_plugin_instance This will allow removing the Clone impl from PluginEnv when migrating to Wasmtime as required by the missing Clone impl on Wasmtime's WasiCtx. * Avoid passing a Store around when an Engine is enough * Pass PluginEnv to the wasi read/write functions Wasmtime requires storing the read/write end of the pipe outside of the WasiCtx. Passing PluginEnv to these functions allows storing them in the PluginEnv. * Migrate to Wasmtime * Switch from wasi-common to wasmtime-wasi * Reduce verbosity of wasmtime_wasi logs * Increase startup delay To wait for all plugins to be compiled. * Disable some wasmtime features * Update to Wasmtime 21.0.1
* Log `thread_bus` IPC messages only in debug mode (#1800)har7an2022-10-17
| | | | | | | | | | | | | | | | | | | | | | | | | | * zellij: Add global `DEBUG_MODE` variable that tells us whether zellij was started with the `--debug` CLI flag. * utils/errors: Only log thread_bus message in debug mode, and discard the message otherwise. * utils/logging: Increase logsize to 16 MiB per logfile, totaling 32 MiB of logs at most (in two files). * zellij: Set global `DEBUG` variable in server thread and make sure the value of the `--debug` CLI flag is propagated to the server, too. This means that to enable debug mode, the server must be started with the `--debug` flag. This happens when the first client that starts the zellij session has the `--debug` flag set, because it will be forwarded to the server. Subsequent clients attaching to the same session with the `--debug` flag specified **do not** override the value of the `DEBUG` variable. Hence, if the server wasn't started in debug mode, this cannot be changed.
* fix: various typos (#1553)a-kenji2022-07-02
| | | Because they were wrong.
* roll over logs / fix filling up /tmp with logs (#1548)raphCode2022-06-28
| | | | | | | * roll over logs at 20 MB * Change cap to 100 kB * Add fix to changelog
* fix: minor system improvements (#1328)Jae-Heon Ji2022-04-16
|
* fix(style): various internal refactoringsMarcin Puc2021-12-07
|
* logging: remove unused log functions, change log file const to new file (#779)Thomas Linford2021-10-18
|
* Preserve current umask (#777)Thomas Linford2021-10-12
| | | | | * preserve umask when starting server * make sure log files are created with explicit permissions
* Minor fixesPaweł Palenica2021-07-17
|
* Apply code review suggestions. Rename decorating_pipe to logging_pipe. Add ↵Paweł Palenica2021-07-13
| | | | plugin_id to plugin log. Move logger init from file to in-code initialization and change logging file to zellij directory. Change format of timestamp.
* CleanupPaweł Palenica2021-07-08
|
* feat: Add logger to ZellijPaweł Palenica2021-06-29
| | | | | | We add log4rs create for logging across Zellij. Additionally, we capture `stderr` output from plugins and log it the same log file as other Zellij logs.
* refactor(IO): random fixes (#521)kxt2021-05-18
| | | | | | | | | | | | * refactor(os_input_output): use Pid for child process * fix(debug): change debug_to_file to write &[u8] This patch changes debug_to_file to write entire slices in one call, to avoid the overhead of opening and closing files for each byte written. * refactor(ServerOsApi): remove unnecessary muts from methods Co-authored-by: KOVACS Tamas <ktamas@fastmail.fm>
* Big refactor: separate crates for client, server and utilitiesKunal Mohan2021-05-16