Repository navigation
v0.22 planning: daily-use reliability and workflow #431
Description
v0.22 — daily-use reliability and workflow
Planning umbrella, not a claim of implementation. v0.22 makes NMSh better for everyday terminal work without becoming a shell, a terminal emulator or an IDE. It starts from input reliability, adds a few workflow improvements that reuse what NMSh already has, and leaves paused and deferred work where it is. Final scope is the maintainer's.
Design: docs/design/v022-daily-use.md · Ledger: docs/development/v022-ledger.md · Physical QA: docs/testing/v022-physical-qa.md — all in draft #435.
Baseline and the v0.21 boundary
- Baseline
dev=a8b383c2(v0.21 integrated with /edit: a new file in a symlinked folder saves again without a false conflict #425, Input ownership test: type the follow-up after the answered command completes #427, v0.21 release audit: integrated state, verification, QA walkthrough and runbook #428).release/v0.21.0=d9e08393;master=6af5cbab. - PR chore(v0.21): sync audited dev fixes and QA runbook into release candidate #430 has merged
devintorelease/v0.21.0(86bb3a6c). v0.22 PRs targetdevbut stay draft and unmerged until v0.21 ships: a fix v0.21's QA needs would reach the release by anotherdev→ release merge and carry anything v0.22 merged first. - v0.22 never touches
release/v0.21.0, its QA evidence,master, Release v0.21.0: native viewing and editing, Semantic Output and /track #429 or the publishing workflow. After v0.21 ships, the open v0.22 branches are rebased and their changelog entries move to the new[Unreleased].
Required reliability
- Under heavy load, a reply typed right after a prompt-less read starts can be queued instead of answering it #426 — keys typed before NMSh knows who reads them stay held until it knows; a timeout or failed probe never routes them, and an undecided hold offers Ctrl+S (send), Tab (show), Esc (discard). Draft Input ownership: keys wait for the look, however long a loaded machine makes it (#426) #433; redesigned after review; local full verify green; CI rerun pending; physical QA pending.
- Flaky: Fish can lose keys typed right after a handed-over read returns #356 — Fish keys after a handed-over read: reproduce under load on the v0.22 baseline; fix only what reproduces. Not reproduced: 32/32 at 8× parallel; left open and deferred for the maintainer.
High-value improvements (from accepted issues)
- Workflow integrations: external editors, search, preview tools and shell utilities #366 — from
/viewto the person's editor:oopens the file at the line on screen through the existing/openbridge. Draft /view: o opens the file shown in your own editor, at the line on screen (#366) #434; physical QA pending.
Decided by the maintainer (2026-10-18)
- D1 Composer history: advance past multiline recalls consistently and show position on a free edge #389 — a recalled entry is one Up/Down step, however many lines it has. Draft Composer history: a recalled command is one step, however many lines it has (#389) #438. The
History n/Nindicator on a free composer rule: draft Composer history: History n/N on a free composer rule while browsing (#389) #441 (based on Composer history: a recalled command is one step, however many lines it has (#389) #438). - D2 Natural-language command suggestions in Ask: optional, reviewed, never auto-run (proposal) #432 — optional Ask command suggestions, Off by default, local model first, Copy/Insert only, NMSh's own label. Draft Ask: optional command suggestions from the local model, Copy/Insert only (#432) #440. Remote bring-your-own-key providers: a later PR after a security review.
- D3 Workflow integrations: external editors, search, preview tools and shell utilities #366 — choose an installed terminal editor when
$VISUAL/$EDITORare unset (Settings and Setup). Draft /open: choose a terminal editor when VISUAL and EDITOR are unset (#366) #439.
Found during v0.22
- Flaky under parallel load: a command typed right after Ctrl+C on a waiting read can fail to run #436 — type-ahead eaten after Ctrl+C or during a slow prompt hook. Two mechanisms reproduced and fixed (a stale input request from the interrupted command; prompt hooks read as the command reading input). Draft Input ownership: prompt hooks and stale questions never eat type-ahead (#436) #437. The wider family of input-timing races is not declared solved.
Explicitly outside v0.22 (status unchanged)
#330–#332, #337, #338 (paused workspace, worktree and GitHub programs) · #339, #340 · #333–#335 · #341 · #398 (Learn, deferred by decision) · #399 · #304 · #296 · #15. Ongoing indices #14, #20, #305 stay ongoing.
Gates
Regressions that fail on the old code, focused suites and verify:fast per slice; full npm run verify before a PR leaves draft; verify:release, exact-head CI and physical QA (Ghostty and Terminal.app; zsh, Bash, Fish) at integration. No release, tag or deployment without the maintainer. Automated results are not physical validation.
Activity
v0.22: physical QA checklist for #433 and #434; ledger links #436
v0.22 QA: /view takes the rest of the line as the path, without quotes
v0.22 QA: a reachable step for o while a command runs
v0.22 ledger: R1 and U1 verification results
v0.22: hold PRs until v0.21 ships, not only until #430
v0.22 ledger: state the #430 merge precisely
v0.22 ledger: #356 not reproduced under 8x load
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.