Published release / October 18, 2026

v0.20.0

Latest stable release. The original publication's caveats and limitations are preserved below.

Terminal workflow, first-run setup, background tasks & native modules. The first stable release since v0.18.0.

NMSh still runs your real zsh, Bash or Fish in one persistent session. This release makes one command’s result useful for the next, gives new installations a first run you can review before anything applies, and lets long-running commands live beside the shell instead of in front of it.

About v0.19.0: it was a release candidate only and was never tagged or published. Its terminal workflow ships for the first time here, so upgrading from v0.18.0 brings everything below.

Highlights

A first run you review before it applies

  • A fresh installation opens one starting point under a live aurora, with Vespyr on the horizon: NMSh Recommended, Minimal Terminal, Customize Everything or Keep Existing. Highlighting changes the sky; nothing applies until you review and press Enter, and Esc asks before leaving.
  • Keep Existing reads your Starship, Powerlevel10k or Oh My Posh setup, colors and tools without changing anything. Customize Everything is a guided tour of every setting in the same visual language.
  • /startup reopens it any time; /setup opens the guided setup directly. Reduced Motion, Effects Off, NO_COLOR and 16-color terminals get a still or plain version, and every choice stays reachable down to 16 × 6.

Optional tools, discovered and installed in one flow

  • /tools, Settings, Setup and the starting point share one panel: Recommended (ripgrep, fd, fzf, jq, bat, zoxide, tealdeer) and Enhanced tiers, V to switch views, R/E to select a tier’s missing tools.
  • Enter reviews the exact package-manager command for every selected tool, then one confirmation with semantic Yes/No controls (No first) and per-tool results. A check that cannot finish says Unable to verify and is never installed. Shell hooks are never turned on for you.

Terminal workflow

  • Input awareness: NMSh shows when a running command is waiting for you; hidden and single-key input goes straight to the program and is never kept.
  • Command queue and execution timeline: prepare the next commands while one runs, see them as a chronological timeline, pause, review and resume (/q, /qp, /qr, /qc), keep settled chains in /queue history and save typed, privacy-safe summaries.
  • Copy and output selection: exact /copy (the bytes the program printed), keyboard selection of completed output, /actions, Smart Folding and optional folding of queued output (Ctrl+O).
  • Copy as Report, Compare output, references, paste review, pins and recipes: reviewed Markdown or plain reports with optional redaction, diffs between two runs, file/URL/commit references, multi-line paste choices (block, queue separately, edit, cancel) and reusable reviewed commands.

Background tasks

  • /background run <command> (/bg run) runs tail -f, adb logcat or a dev server in its own terminal beside the shell, with a task bar above the composer. Tasks belong to the session, survive a detached window and never write into the shell, the transcript or copies. Suggestions are off by default.

Native modules and agents

  • Twelve more native modules: .NET, Swift, Zig, Deno, Elixir, Dart and Flutter runtimes (plus Ruby and PHP), one build module for Bazel, Gradle, Maven, CMake, Meson and Make, Mercurial and Jujutsu. No tool is ever run to collect them.
  • Managed Claude Code (beta): native /model and /effort pickers and a read-only mod inventory. Turning Claude plugins on or off from NMSh is off in this release.
  • /worktrees shows a related pull request only from evidence.

Also new

  • An amber update notice once per release, with the update steps for this installation.
  • A custom color editor with ten presets and live preview, Fire cursor palettes, and an idle effect with its own colors.
  • An experimental workspace sidebar and detail panel, Off by default.

Upgrading from v0.18.0

  • Settings, themes, modules, sessions and history carry over. Existing installations keep their saved presentation and do not see the first-run starting point (/startup opens it).
  • Activity wording becomes Expressive and the command queue is on by default; both can be changed in Settings.
  • Restart the session service (or start a new session) to use background tasks, queue history and summaries.
  • Requirements are unchanged: Node.js 22+, zsh, Bash 4.4+ or Fish; macOS, Linux (beta) and WSL 2.

Installing

  • From source: clone, then npm install, npm run build and npm link (see the README). Source checkouts can update with /update.
  • Homebrew: brew install raiseCatError/tap/nmsh (or brew upgrade raiseCatError/tap/nmsh) installs v0.20.0; the formula was validated by the tap’s brew test-bot on macOS and Linux (tap PR #3).

Known limitations

  • Physical-terminal evidence is partial. The maintainer tested and accepted the first-run starting point, guided Setup and Tools flow on macOS. The formal checklist passes for background tasks, the new modules, managed Claude and the v0.19 workflow were not recorded item by item, and there has been no physical Linux (including Omarchy/Hyprland), WSL 2, iTerm2, kitty, WezTerm or Windows Terminal pass. Linux remains beta on automated CI.
  • Background tasks run in a separate shell, without the live shell’s aliases, functions or unexported variables.
  • The experimental workspace regions are not physically tested; the Codex adapter is included but not wired; Claude plugin toggling from NMSh is off.
  • Report redaction is pattern-based and can miss unknown secret forms; review every report.
  • Fish can drop type-ahead entered while its own read is still running (#356).

Verification: one full canonical verify:release on the release commit and exact-commit CI on Ubuntu and macOS (Node 22 and 26), a Fedora portability subset and both timing smokes.

Full details: CHANGELOG → 0.20.0 · Release PR: #392 · Physical QA record: docs/testing/v020-physical-qa.md

Documentation

Try “sessions” or “Theme Bridge”. Search runs in your browser.