aboutsummaryrefslogtreecommitdiffstats
path: root/sl0ppij/zellij-utils/src/setup.rs (follow)
Commit message (Collapse)AuthorAge
* cli: init and doctor, and stop one bad project breaking a rootuser2026-08-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Slices 3 and 5 of docs/cli-design.md. `init` writes .sl0ppi/layout.kdl. The template is mostly comments, because the purpose vocabulary and the start_suspended habit are the two things nobody can guess, and the point of use is the cheapest place to explain them. A test asserts the template passes doctor's own fragment check -- shipping people a starting point that fails our validation would be embarrassing. `doctor` splits into gathering facts (IO) and judging them (pure), so the rules are testable. It is honest about its limits: sl0ppij has no parse-only mode, so fragments get a structural check (empty, unbalanced braces, a whole `layout {}` pasted in, a `tab` node sl0ppi owns) rather than a claim of validity. It also reports the known packaging hole -- pir needs python3 and fzf, neither of which is in the tarball. Driving them for real turned up a worse bug than either command: a single broken fragment took down the entire root On session creation every tab shares one layout file, so one unbalanced brace made the whole `up` fail and no project opened at all. Fragments are now checked before use on BOTH paths, broken ones are skipped with the reason, and the rest open. `up` also registers the root even when some projects failed, since forgetting it would orphan the tabs that did open. Two smaller fixes from the same session: - falling open with no tty used to spawn a bare sl0ppij, which silently CREATES a session; that is where a handful of randomly-named junk sessions came from during testing. It now reports and exits. - a rename leftover: `setup --check` still described "the configuration of zellij". Test isolation lesson worth recording: sessions live in the runtime dir (/run/user/1000/sl0ppij), not TMPDIR, so setting TMPDIR alone does not isolate them -- an earlier test session called `root` was silently reused by a later test. SL0PPIJ_SOCKET_DIR is what actually isolates. 88 tests green.
* sl0p: rename to sl0ppij behind a branding seamuser2026-08-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Makes the fork installable and runnable beside a stock zellij: separate binary name, config dir, cache dir, socket dir, log file and plugin URL scheme. Everything user-visible is defined once in zellij-utils/src/branding.rs and referenced from the ~15 places that used to hold a literal, rather than sed-ing the tree -- upstream has 3300 commits of future rebases, and each touched upstream line is a conflict forever. A conflict in branding.rs itself always resolves the same way: keep our constant, take their code. binary zellij -> sl0ppij config dir ~/.config/zellij -> ~/.config/sl0ppij system cfg /etc/zellij -> /etc/sl0ppij cache/data ProjectDirs(Zellij) -> ProjectDirs(foo.sl0p.sl0ppij) socket/tmp /tmp/zellij-$UID -> /tmp/sl0ppij-$UID log zellij-log/zellij.log -> sl0ppij-log/sl0ppij.log plugin urls zellij:tab-bar -> sl0ppij:tab-bar (zellij: still parses) Two things deliberately NOT renamed: - The cargo package stays `zellij`; only [[bin]] is renamed. Renaming the package would ripple through every intra-workspace dep, the plugin API and the 0.45.0+sl0p1 version trick for a name nobody sees. - The $ZELLIJ* environment variables stay, because the ecosystem (shell prompts, "am I in a multiplexer" checks, our own pi-ext) looks for them. We now export $SL0PPIJ* alongside them, and those take precedence on read. branding::import_compat_env() folds an inherited ZELLIJ_CONFIG_DIR into its SL0PPIJ_ spelling at startup, before clap reads the environment -- clap can only be told one variable name per argument. Snapshots: 14 updated, all of them the plugin URL scheme or a session message. The insta churn (assertion_line metadata, trailing newlines) that a bulk --force-update introduces across 340+ other snapshots was reverted, so the diff here is only what actually changed. Tests: zellij-utils 471 passed, zellij-server 1499 passed. branding.rs carries its own tests, including one asserting no shipped default path contains the string "zellij". Verified live: sl0ppij creates /tmp/sl0ppij-1000 next to an existing /tmp/zellij-1000, and `sl0ppij list-sessions` reports none while a stock zellij reports three running sessions.
* vendor(sl0ppij): import zellij v0.45.0 treeuser2026-08-12
Squashed import of upstream zellij at 0e6e4404 ("Support the Kitty Image Protocol (#5428)"), the merge-base our fork was developed against. Upstream's 3311 commits are deliberately NOT replayed here; only our own fork commits are, so the monorepo stays small and `git log sl0ppij/` shows sl0p work, not zellij's entire history. Upstream provenance is tracked in FORKS.md and can always be re-fetched from https://github.com/zellij-org/zellij.