Repository navigation
v0.21 planning: native viewing, semantic output, /track and context polish #410
Description
v0.21 — terminal intelligence, native viewing and core workflow polish
Planning umbrella, not a claim of implementation. Baseline is the current verified
devafter v0.20.0 release/maintenance; recheck exact SHA before implementation. One substantial v0.21 delivery with independently reviewable slices and honest release gates. Do not auto-create a v0.22 milestone or expand scope without maintainer review.
Product goal
Make the existing real-shell/PTY frontend more useful and reliable for viewing files/output, editing small text files, tracking finite commands, understanding output, managing context, and personalizing appearance. Keep the composer, shell input ownership, raw transcript and terminal-host interoperability authoritative.
Do not build a Bash/zsh education platform. #398 is a separately deferred, optional future contextual NMSh guided tour and is not a v0.21 dependency or public website feature.
Priority / linked scope
Required reliability/integration gates
- Flaky: Fish adapter lifecycle test teardown races fish_update_completions #403 — reproduce/fix Fish test teardown race without hiding a product leak; keep Flaky: Fish can lose keys typed right after a handed-over read returns #356 separate.
- Flaky: queuedHighlight composer/queue classification is not settled after one event-loop turn #408 — distinguish queued-highlight async test flake from a real user-visible classification race; deterministic synchronization, no arbitrary sleeps.
- Inline multi-line ANSI progress redraws can accumulate duplicate transcript lines #388 — reproduce/fix multiline ANSI progress redraw duplication, preserving raw authoritative output and normal PTY behavior.
- Protect foreground input, compositor cursor, queue and active reads/passthrough against regression in every feature slice.
Core v0.21 feature slices
- Native read-only /view: files, logs, output and document previews #397 / Native Markdown/text experience: reader, lightweight editor and optional providers #402 — read-only native
/viewfor bounded files, logs, Markdown, diff and completed output, reusing existing Markdown renderer; then a bounded opt-in native plain-text editor with explicit safe open/save/cancel/undo and atomic, symlink-safe save rules. Full IDE, LSP and arbitrary external-editor registry are not required. - Semantic Output: adaptive overview and detail, raw-preserving folding, providers and copy modes #386 — adaptive deterministic semantic output: overview/detail or enhanced primary view only when useful, source-backed and reversible; retain pristine raw bytes and copy/search modes; security and narrow-render tests. No universal parser or AI-grading layer.
- /track: periodically refresh a command's output in one live block #393 — complete
/trackon the already-shipped background-task/supervisor foundation, preserving/watchsemantics. PR Track live commands with /track (initial slice of #393) #394 is a draft implementation source, not merge-ready. Enforce finite repeatable commands, bounds, cancellation, no overlapping runs, lifecycle, proper in-place state and truthful output/copy/search. - Native module catalog: Starship / Oh My Posh coverage audit and prioritized ports #364 / Module observability: explain visibility, provenance, collection timings and cache state #365 — prioritize a small audited set of missing native context modules, plus visibility/provenance/cache/collection-time diagnostics. No untrusted workspace code execution, unsafe environment reads or arbitrary external dependency downloads.
- Expand bundled theme catalog: Ayu, Kanagawa, Everforest, Flexoki, Material & more #401 — additional bundled, offline theme families/variants with provenance and contrast/accessibility checks; no host-terminal config writes.
- Terminal-native action controls: reusable styles, semantic states and safe fallbacks #336 — reusable native action controls and safe interaction states only to the extent they simplify the above surfaces without adding a parallel UI framework.
Explicitly outside v0.21
- Future: contextual NMSh Learn — interactive guide to using notMyShell #398 Learn Mode / courses, certificates, course grader or sandbox.
- Managed Targets future: Codex/OpenCode adapters, capability evidence and named provider profiles #339/Future research: Claude Remote Control compatibility and per-profile launch policy #340 managed Codex/OpenCode or remote control; /worktrees: terminal-first Git worktree discovery, navigation and safe management #337/GitHub terminal workspace: PR and issue search, review and supported remote actions #338 expanded GitHub/worktree writes; Terminal-first workspace: sidebars, external workspace navigation and developer control surfaces #330–Contextual right panel: keyboard-first diff, detail and review presentation #332 experimental workspace program expansion. Preserve shipped first slices and keep experimental UI Off by default.
- /tmux Studio: status, appearance, Context modules and workspace integration #333 tmux Studio, Setup Cat integration profiles: progressive onboarding for tmux, editors and provider agents #334 onboarding profiles, Configurable semantic keymap and terminal-host conflict guidance #335 keymap remapping, Terminal Settings: safe Ghostty + kitty config editor in /appearance #399 host Ghostty/kitty settings writes, Theme Bridge and semantic terminal integration #304 expansive Theme Bridge, Future security/runtime: enforced isolation for executable NMSh Portable Mods #341 executable-mod runtime, Future: hosted SSH demo for NMSh #296 hosted SSH demo.
- Composer history: advance past multiline recalls consistently and show position on a free edge #389 composer history change until reproduced. Flaky: Fish can lose keys typed right after a handed-over read returns #356 Fish immediate-key loss remains open, separate and deferred unless hard release evidence escalates it.
- Heavy IDE, universal plugin/provider systems, unnecessary agent platforms, automatic release/deploy authorization.
Engineering plan
- Baseline audit: exact released/working branch SHA,
AGENTS.md,CONTRIBUTING.md, PR/issue reconciliation, maintained T7 workspace, existing frontend/service architecture and tests. Do not recreate shipped Background tasks: supervised long-running commands, task bar above the composer, and conservative suggestions #382 supervisor, present markdown system or theme catalog. - Specifications and tests first, small dependency ordered PR slices. Audit PTY escape/raw handling, renderer ownership, keyboard focus, persistence, security and resource limits.
- One primary Opus Extra High agent for coherent architecture and lower repeated context. No subagents by default; allow bounded Sonnet delegation only by later explicit cost/ownership justification.
- External T7 fail-closed for disposable worktrees, build/test outputs and caches; leave source worktrees and OS-managed locations intact. Don't run redundant full suites on each slice; focused tests until integration gate.
- Release gates: named regression tests, macOS/Linux/Node 22/26 CI, security/performance smoke, 8 GB Mac budget and human physical Ghostty/Terminal.app QA; explicitly list unsupported hosts. Exact tag/release only after authorization and acceptance. No claim that green CI equals physical validation.
- Docs/site: current versioned docs and release notes, no Learn promotion. The NMSh site is live at
https://nmsh.raisecaterror.com/; keep Cloudflare production deployment manual-only with required protected-environment approval.
Definition of done: every accepted feature is integrated, user-reachable, documented and verified at the exact commit; remaining partial features have accurate issues and disclosure. After the first substantial slice, present an evidence-based option to expand v0.21 rather than manufacturing an automatic v0.22.
Activity
raiseCatError commentedon Oct 18, 2026
v0.21 candidate status: all planned slices are in stacked PRs, awaiting the maintainer's merge and physical QA. Nothing is tagged or released.
dev/view/edit/track(reconciles draft #394)Each PR targets the one before it; merge in order. Verification on the stack head:
verify:release3,115 of 3,118 pass (2 skipped, 1 known flake outside v0.21's changes that passes alone),bench:smokewithin every budget. Physical QA checklist:docs/testing/v021-physical-qa.md(not run yet). The slice issues stay open until their changes are ondevand their physical passes are recorded. Deferred work (#398, #339/#340, #337/#338, #330–#332, #333, #334, #335, #399, #304, #341, #296, #389, #356) is untouched.v0.21 ledger: final CI state and a third flake seen once
removeDirectoryNow: remove the renamed copy entry by entry while anot…
Codex adapter test: wait for what the fake server has recorded, not t…
Native capture tests: the owner's cold start is waited for before the…
raiseCatError commentedon Oct 18, 2026
v0.21 stabilization pass: the candidate is integration-ready but not release-ready. Nothing is merged, tagged or released. The agent's merge into
devwas refused by its permission policy ("merge without review"), so integration is with the maintainer.New stacked PRs (after #420): #421
/trackreview → #422 flaky CI at the cause → #423 bugs → #424 ledger. Exact-head CI one8411e1ais green in every job, including Fedora portability and both timing smokes.Fixed
/track//watchsafety gate (/track review: repetition safety gate, process cleanup, bounded presentation #421). Commands that were repeated without asking:echo x > ~/.zshrc 2>/dev/nullenv rm …npm publish/login/x,pnpm dlxssh host rm …,scp,rsynccurl -X POST/-o, plainwgetgit -c core.fsmonitor=…,git log --output=…/track stopleft TERM-ignoring children running (/track review: repetition safety gate, process cleanup, bounded presentation #421)..zshrc(over 1.5 s) disabled command colors for the session (v0.21 bugs: wrapped-row redraws (#388), command colors after a slow zshrc, width in /modules explain (#365) #423)./modules explainnow says when the Rail or Strip left a module out, or shortened it, for width (v0.21 bugs: wrapped-row redraws (#388), command colors after a slow zshrc, width in /modules explain (#365) #423).Investigated, not reproducible: #356 (62 runs on macOS and Linux). #403 and #408 re-verified.
Remaining gates:
docs/development/v021-ledger.md→ "Ordered integration").devCI.verify:releaseondevat normal load. In-session runs were overloaded by other workloads on the machine; the failing files then passed 69/69 three times at normal load.docs/testing/v021-physical-qa.md.Two timing-bound tests stop measuring cold starts they do not test
v0.21 ledger: the second local release run
raiseCatError commentedon Oct 18, 2026
Release audit, 2026-10-18. This supersedes the earlier "nothing is merged" note.
devin order with merge commits;devis433af8fd(tree identical to v0.21 ledger: stabilization findings, verification, ordered integration and release gates #424's head). Exact-commit CI: push run 39135227830, all 13 jobs green (macOS and Ubuntu shards, Node 22, Quality, Fedora, both timing smokes).433af8fd(clean T7 worktree):npm ci, build,typecheck:bench,bench:smoke(every budget) andgit diff --check: pass./edit: a new file in a symlinked folder hit a false conflict on its second save). Both /edit: a new file in a symlinked folder saves again without a false conflict #425 and Input ownership test: type the follow-up after the answered command completes #427 are green and awaiting the maintainer's review and merge, along with v0.21 release audit: integrated state, verification, QA walkthrough and runbook #428 (ledger, physical QA walkthrough with fixtures, release runbook,llms.txtfix).release/v0.21.0(d9e08393: version 0.21.0, changelog candidate section, status docs), draft PR Release v0.21.0: native viewing and editing, Semantic Output and /track #429 tomaster. The Homebrew formula rehearsal on it passed (comment on Release v0.21.0: native viewing and editing, Semantic Output and /track #429).verify:releaseon it. No tag, release, tap change or deploy.raiseCatError commentedon Oct 21, 2026
v0.22.0 is published (https://github.com/raiseCatError/notMyShell/releases/tag/v0.22.0). This planning issue's scope shipped there: the work is in
master/dev(ef57ff43and later) and the changelog lists it. The planning issue is closed; the individual issues under it stay open until their own acceptance and any physical validation is met, and the risks the maintainer accepted for the release (unrun physical checks, a queue-event attribution window, intermittent hosted macOS tests) are tracked in #473.