zy v1.0.44
Official binary release for zy 1.0.44.
What's changed in 1.0.44
Added
-
customize→ Show / hide pills gains bulk toggles. Pressato show every pill ordto hide every pill in one keystroke, instead of toggling 19 sections one at a time. The footer and preview pane advertise the keys. -
New
merged-segmentsprompt preset — the default look as one connected ribbon.prompt-preset merged-segmentsinstalls a version of the default prompt where the background pills (directory, git, languages, duration) join into a single Powerline ribbon via gradient seams. The interesting part is that it stays clean off-project: each pill is wrapped in a(…)conditional, so an absent module (no git repo, no Python, …) drops the whole pill including its seam, with no empty colored stub left behind, while the ribbon reconnects across the gap. Fg-only segments (git metrics, jobs) sit after the ribbon so they never punch a hole in it. Nerd Font required; like every preset it backs up your existing config first. -
pill_merge = truejoins your prompt pills into one connected chain. Set it at the TOML root and every run of adjacent colored pills renders as a continuous Powerline ribbon (directory git python) instead of separate floating pills, with each seam colored to flow from the previous pill into the next. The seam glyph followspill_shape(soslantgives slant seams, not just arrows), defaulting to the solid arrow. It's the one-key version of hand-writingfg:prev_bgcap glyphs between every pill, and renders byte-for-byte the same. Toggle it live incustomizeunder "Merge pills (connected chain)" — the preview shows the merged look. It acts on a top-level bare-pill format like[ $mod ](bg:..)(e.g.prompt-preset pastel-powerline); the shipped default prompt bakes caps inside each module, so it's a no-op there. Don't combine it with hand-written caps or they double up. -
astis implemented (was a "not implemented in zy" stub): it parses a pipeline string with zy's own lexer and recursive-descent parser and dumps zy's AST, the same tree the executor walks.ast 'hello'returns a{block, error}record whereblockis an indented tree;--json/-jreturns the AST as JSON (--minify/-mfor compact);--flatten/-freturns a{content, shape, span}table, one row per lexer token with its highlight shape (shape_internalcall,shape_pipe,shape_string,shape_flag, …) and byte span, matching nu's flatten view (ast "'hello'" --flattengivesshape_stringat span 0..7). It dumps zy's tree rather than nu's Rust AST types, and the flatten view reports what zy's shell tokenizer actually sees (e.g. a top-level>lexes asshape_redirection).
Changed
- The
customize"Merge pills" toggle now actually merges your prompt.pill_mergeis a runtime flag that only rewires a top-level bare-pill format; the default prompt bakes its caps inside each module, so enabling the toggle there used to do nothing to the live prompt (only the preview changed) and read as a bug. Now, on that per-module layout, turning the toggle on switches your prompt to the connectedmerged-segmentsribbon while keeping your theme and pill shape (its colors already match the default), and saves a one-toggle restore point; turning it off restores your previous prompt exactly. On a format that already has top-level pills it still just setspill_merge = true. - Top-level
(…)conditional groups now collapse when empty, like they already do inside a module. Previously a(…)in the top-levelformatalways rendered its contents; now it disappears when none of the$modulevariables inside it produce output, matching the documented (and starship) conditional semantic. This is what makes a stub-free merged ribbon possible (an absent pill drops its seam too). No shipped config used a top-level(…), so existing prompts are unaffected; if you relied on a top-level(…)rendering unconditionally, drop the parentheses. make testis now the fast core (C unit tests + validation + security, ~1 minute) for a quick edit→test loop. The slow, heavy suites (shell integration, nu-parity compat, PTY end-to-end) are opt-in viamake test-full(or./tests/run_tests.sh --full), which is what CI andmake test-allnow run. Sanitizer runs and--filterstill imply the full set so they never silently narrow coverage. The plain-run PTY timing scale defaults to 2x for explorer-render head-room.- The unit-test build is much faster after a source edit. About 34 unit tests link the whole object set, and each used to run its own ~20-second whole-program LTO link (the objects are slim LTO, so every link redid the codegen). The runner now does that codegen once into a single shared object blob and links each test against it in well under a second, so a cold
make testdropped from ~230s to ~50s andmake test-fullfrom ~330s to ~140s, with no change to the shipped binary. Sanitizer runs keep the per-test link; pass--no-blobto fall back to the old path.
Verify your download
curl -LO https://github.com/iskandarputra/zyshell/releases/download/v1.0.44/zy_1.0.44_amd64.deb
curl -LO https://github.com/iskandarputra/zyshell/releases/download/v1.0.44/SHA256SUMS
curl -LO https://github.com/iskandarputra/zyshell/releases/download/v1.0.44/SHA256SUMS.minisig
curl -LO https://github.com/iskandarputra/zyshell/releases/download/v1.0.44/zy-release.pub
minisign -Vm SHA256SUMS -p zy-release.pub # confirms maintainer signature
sha256sum -c SHA256SUMS --ignore-missing # confirms the .deb hash matchesFull signing policy: docs/ops/RELEASE_SIGNING.md
VirusTotal scan
This release was uploaded to VirusTotal at publish time. Click through to see the live verdict from 65+ AV engines:
(Scans run within ~5 minutes of upload. If the page shows "Item not found", wait a moment and refresh.)
Try without installing
docker run --rm -it ghcr.io/iskandarputra/zyshell:1.0.44Install (Debian / Ubuntu)
Download zy_1.0.44_amd64.deb from the assets below, then:
sudo dpkg -i zy_1.0.44_amd64.deb
sudo apt-get install -f