Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
cb997fd
Probe: Claude's documented control requests over the managed stream-j…
raiseCatError Oct 9, 2026
5d02198
Markdown for untrusted text: blocks, inline styles, code highlighting…
raiseCatError Oct 9, 2026
45ad1eb
Markdown: reveal real link destinations, refuse smuggled characters, …
raiseCatError Oct 9, 2026
4a012ed
Managed Claude: a control plane and runtime telemetry with provenance
raiseCatError Oct 9, 2026
711d6fe
Agent results: read a result only as the tool that produced it; offer…
raiseCatError Oct 9, 2026
e01e66b
Managed Claude: native /model and /effort pickers
raiseCatError Oct 9, 2026
cb1551f
Claude settings reader: only a bounded regular file is read
raiseCatError Oct 9, 2026
a580908
Claude mods: real types and states, toggles through Claude's own comm…
raiseCatError Oct 9, 2026
7a88a58
Agent view: a right panel of what the target is doing to its context …
raiseCatError Oct 9, 2026
2dad06c
Design: agent workspace controls, Claude mods and the context panel
raiseCatError Oct 9, 2026
35dfc0f
Probe: live /model and /effort through NMSh's managed session against…
raiseCatError Oct 9, 2026
1fd0eb5
Probe: live plugin toggle inside an NMSh-managed session, in a dispos…
raiseCatError Oct 9, 2026
68bb3d4
Probe guard: only /tmp/nmsh-cc-probe, never a real Claude configurati…
raiseCatError Oct 9, 2026
8979ca6
Probes: refuse every ~/.claude-* identity without naming anyone's acc…
raiseCatError Oct 10, 2026
ebdb1ad
Test comment: describe the two-account fixture without personal names
raiseCatError Oct 10, 2026
66b60f3
NMSh's own lines wrap at words in narrow windows
raiseCatError Oct 10, 2026
ce4ff82
Action controls: one renderer for footer actions, with six states tha…
raiseCatError Oct 10, 2026
133f119
Native modules: Ruby, PHP, .NET, Swift, Zig and Deno versions from th…
raiseCatError Oct 10, 2026
8664941
Runtimes: manifest patterns cannot backtrack across lines on hostile …
raiseCatError Oct 10, 2026
20099b7
Runtimes: manifest declarations are read where their tools read them
raiseCatError Oct 11, 2026
85ab930
Action controls: a disabled control's reason fits the width and stays…
raiseCatError Oct 11, 2026
e6b344f
Runtimes: Ruby, PHP, .NET, Swift, Zig and Deno have their icons and a…
raiseCatError Oct 11, 2026
d7d3488
Native modules: Mercurial bookmark or branch and Jujutsu repository s…
raiseCatError Oct 11, 2026
417d105
Runtimes: planted-binary tests exercise the workspace boundary; docum…
raiseCatError Oct 11, 2026
a9d9596
Workspace foundation: column plan, regional focus, semantic bindings …
raiseCatError Oct 11, 2026
6c80601
Workspace Sidebar: keyboard-first resource list with tmux, worktree a…
raiseCatError Oct 11, 2026
9462a74
Native modules: Elixir, Dart and Flutter versions from the project's …
raiseCatError Oct 11, 2026
72775e6
Docs: the Elixir, Dart and Flutter modules in the Context Modules guide
raiseCatError Oct 11, 2026
b4b3801
Native modules: one build module for Bazel, Gradle, Maven, CMake, Mes…
raiseCatError Oct 11, 2026
029fac4
Docs: the build module in the Context Modules guide
raiseCatError Oct 11, 2026
41c050d
Workspace detail panel: bounded read-only details for resources, work…
raiseCatError Oct 11, 2026
5800bab
Workspace panel: module diagnostics stay #365's; the panel presents a…
raiseCatError Oct 11, 2026
24c448a
Semantic keymap: validated remapping with honest conflict and host notes
raiseCatError Oct 11, 2026
b9047c1
Docs: the Workspace Sidebar in its own design document, so workspace …
raiseCatError Oct 11, 2026
961716d
Docs: the detail panel in its own design document, so workspace slice…
raiseCatError Oct 11, 2026
a7ba086
Docs: the keymap in its own design document, so workspace slices do n…
raiseCatError Oct 11, 2026
dc25989
Docs: index of the workspace slices' design documents
raiseCatError Oct 11, 2026
fccf68e
Portable Mods: executable mods stay disabled behind a documented, tes…
raiseCatError Oct 11, 2026
83919d0
Managed providers: a Codex app-server adapter and the evidence for Co…
raiseCatError Oct 11, 2026
8854bb7
Approvals cannot hide what they approve: full commands, named files, …
raiseCatError Oct 11, 2026
8a40b76
Worktrees: related pull requests from evidence, never from names
raiseCatError Oct 11, 2026
3e65440
Background tasks core: supervised PTY tasks, conservative detection, …
raiseCatError Oct 11, 2026
59ac819
Background task UI: task bar, keys, suggestion strip, manager and out…
raiseCatError Oct 11, 2026
fd49bfa
Background tasks: a stopped task is a stopped group, not just its leader
raiseCatError Oct 11, 2026
b4f48a2
Merge the background tasks core fix into the UI slice
raiseCatError Oct 11, 2026
272f302
Sidebar: read tmux listings through tmux's own quoting, not a control…
raiseCatError Oct 11, 2026
5e3bec8
Background tasks test: the stubborn program also ignores the hangup, …
raiseCatError Oct 11, 2026
152e402
Merge the background tasks core test fix into the UI slice
raiseCatError Oct 11, 2026
6884cf0
Background tasks test: the stubborn fixture survives the terminal han…
raiseCatError Oct 11, 2026
5d0a92e
Merge the background tasks fixture fix into the UI slice
raiseCatError Oct 11, 2026
4b9685d
Background tasks: linear output cleaning, a leftover group watched un…
raiseCatError Oct 11, 2026
96a6763
Merge the background tasks core fixes into the UI slice
raiseCatError Oct 11, 2026
85ac421
Background task UI: the manager acts on the chosen task, views stay p…
raiseCatError Oct 11, 2026
1740f4e
Workspace foundation: whole escape sequences leave external names; dr…
raiseCatError Oct 11, 2026
fdb0a40
Merge the workspace foundation fixes into the sidebar slice
raiseCatError Oct 11, 2026
04764c9
Sidebar: one current worktree when worktrees nest; the filter's key o…
raiseCatError Oct 11, 2026
49f7609
Merge the workspace foundation fixes into the detail panel slice
raiseCatError Oct 11, 2026
fcad006
Detail panel: diff headings read in linear time and right for names w…
raiseCatError Oct 11, 2026
3f506c9
Merge the workspace foundation fixes into the keymap slice
raiseCatError Oct 11, 2026
55bf55c
Keymap: a field name from the keymap file is shown as text only; the …
raiseCatError Oct 11, 2026
111af0d
Workspace focus: toggling a tucked drawer brings it forward instead o…
raiseCatError Oct 11, 2026
955d29f
Merge the workspace foundation focus fix into the sidebar slice
raiseCatError Oct 11, 2026
f5ef4b2
Merge the workspace foundation focus fix into the panel slice
raiseCatError Oct 11, 2026
1dc8a24
Merge the workspace foundation focus fix into the semantic-keymap slice
raiseCatError Oct 11, 2026
20d94a5
Merge remote-tracking branch 'origin/feature/project-build-module' in…
raiseCatError Oct 13, 2026
fe84476
Merge remote-tracking branch 'origin/feature/vcs-hg-jj' into integrat…
raiseCatError Oct 13, 2026
c2f4797
Merge remote-tracking branch 'origin/feature/action-controls' into in…
raiseCatError Oct 13, 2026
79d5169
Merge remote-tracking branch 'origin/feature/worktree-pr-evidence' in…
raiseCatError Oct 13, 2026
144f797
Merge remote-tracking branch 'origin/feature/portable-mod-gate' into …
raiseCatError Oct 13, 2026
234cdb0
Merge remote-tracking branch 'origin/feature/codex-app-server-adapter…
raiseCatError Oct 13, 2026
dba35d9
Merge remote-tracking branch 'origin/feature/workspace-sidebar' into …
raiseCatError Oct 13, 2026
99b8103
Merge remote-tracking branch 'origin/feature/workspace-panel' into in…
raiseCatError Oct 13, 2026
20e7b11
Merge remote-tracking branch 'origin/feature/semantic-keymap' into in…
raiseCatError Oct 13, 2026
8f07920
Merge remote-tracking branch 'origin/feature/background-task-ui' into…
raiseCatError Oct 13, 2026
9f8f108
Merge integration/v020-modules (8f079208) into release/v0.20.0
raiseCatError Oct 14, 2026
7377af4
Merge agent workspace #347 (ebdb1ad9) into release/v0.20.0
raiseCatError Oct 14, 2026
207de26
Merge notice word wrap #349 (66b60f3c) into release/v0.20.0
raiseCatError Oct 14, 2026
fe60bdc
Workspace: wire the sidebar and detail panel through one column plan
raiseCatError Oct 14, 2026
1c41862
Portable mod gate: reconcile #379 with #347's Claude plugin CLI calls
raiseCatError Oct 14, 2026
960e925
Background tasks: session-owned supervisor and protocol
raiseCatError Oct 14, 2026
5d54724
Background tasks: frontend wiring, task bar, /background and the subm…
raiseCatError Oct 14, 2026
8473013
Worktrees: related PRs from the last /github listing; p opens the PR
raiseCatError Oct 14, 2026
62c6fad
Release v0.20.0 candidate: changelog, version, physical QA checklist
raiseCatError Oct 14, 2026
44f4c23
Keys: host notes read the host in the keymap module, not the frontend
raiseCatError Oct 14, 2026
00163da
Portable mod gate: refuse the ways around it; plugin ids and paths st…
raiseCatError Oct 15, 2026
1861666
Codex adapter: a cancel made before Codex names the turn is sent when…
raiseCatError Oct 15, 2026
c71a428
Background tasks test: the leader exits only after the sleeper ignore…
raiseCatError Oct 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,9 @@ Theme Studio (`/theme`), Theme Bridge (`/theme-bridge`), `/providers`, `/tools`
## Release candidate surfaces (v0.19.0, not published)
Input awareness (waiting-for-input state, hidden and single-key input routed to the program), the command queue (`/queue`, Ctrl+Q, Ctrl+S, queue conditions), `/copy` selections, `/copy ui` and Smart Folding, Copy as Report, `/compare`, output references and F8/Shift+F8 failure navigation, paste review and `/ps`, `/clips`, `/pins` and recipes, Expressive/Classic activity wording, module explain diagnostics, Ruby/PHP modules and Starship theme import. Physical terminal QA is outstanding ([checklist](docs/testing/v019-physical-qa.md)).

## Release candidate surfaces (v0.20.0, on the v0.19 candidate, not published)
Workspace sidebar and detail panel (`/sidebar`, `/panel`, `/keys`, `keymap.json`; one column plan in `src/app/workspaceHost.ts`/`workspaceFrame.ts`), background tasks (`/background`, `/bg`, task bar; session-owned `SessionTasks`, protocol feature `background-tasks`), native modules for .NET, Swift, Zig, Deno, Elixir, Dart, Flutter, build systems, Mercurial and Jujutsu, managed Claude `/model`, `/effort` and mod toggles, related PRs in `/worktrees`. Physical QA is outstanding ([checklist](docs/testing/v020-physical-qa.md)).

## Testing / verification
During implementation, run focused affected tests. Use `npm run verify:fast` for
ordinary iteration (build, an explicit core test subset, and diff checks); it is
Expand Down
61 changes: 61 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,67 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).

## [Unreleased]

## [0.20.0] - Unreleased (release candidate)

**Workspace, background tasks & native modules.** A workspace sidebar and detail panel sit beside the transcript; long-running commands run as background tasks beside the shell instead of in front of it; the native module catalog covers twelve more runtimes and tools; and Claude Code managed targets gain native model, effort and mod controls. Every region, task and control is reached through an explicit command or an opt-in key, and the persistent shell, the queue and program input keep their behavior.

This release candidate is built on the **unpublished v0.19.0 release candidate**; neither is published until its physical-terminal QA passes ([v0.20 physical QA checklist](docs/testing/v020-physical-qa.md)).

### Added

#### Workspace sidebar and detail panel ([#330](https://github.com/raiseCatError/notMyShell/issues/330)–[#335](https://github.com/raiseCatError/notMyShell/issues/335))
- `/sidebar` lists tmux panes of the server NMSh runs inside, this repository's worktrees and links to `/github`, `/agents` and `/sessions`; `/panel` explains the selected item. `/sidebar focus` and `/panel focus` give them the keyboard; Esc returns, Tab moves between regions, a click focuses a region.
- On a wide terminal the regions dock beside the transcript and the shell is sized to the middle; on a narrow one a region opens as a drawer over the transcript only while it has the keyboard, and the shell keeps its width. Fullscreen programs and idle visuals hide them.
- Opening a worktree stages its `cd` in an empty composer; tmux navigation selects panes and windows by id through tmux from fixed system locations. Nothing runs by itself.
- `keymap.json` binds workspace keys, opt-in and validated (composer keys must say what they replace); `/keys` shows the keys in effect, problems in the file and keys the terminal or tmux may take first; `/keys reload` reads it again.

#### Background tasks ([#382](https://github.com/raiseCatError/notMyShell/issues/382))
- `/background run <command>` (`/bg run`) starts a long-running command (`adb logcat`, `tail -f`, a dev server) in its own terminal beside the shell, in the shell's directory with its PATH, without the shell's aliases, functions or unexported variables.
- A task bar above the composer: Up from an idle composer (after a shown agent shelf) or Shift+Up focuses it; Enter opens a task's output, `x` stops it (again later: terminate, then kill, paced so a held key cannot jump to SIGKILL), Delete removes a finished one. `/background` lists every task with details and preferences; `/background t3`, `stop`, `kill`, `remove` and `clear` act directly.
- Tasks belong to the session: they keep running while the window is detached, a reattached window shows them and their recent output, and ending the session ends them. Task output never enters the shell, the transcript, copies, reports or comparisons; the transcript gets one line when a task starts and when it fails.
- Suggestions are **off by default**. `/background suggestions on` offers a recognized command's family when you submit it: `b` background once, Enter here as before, `a` always, `n` never ask, Esc back to the draft.

#### Native modules ([#364](https://github.com/raiseCatError/notMyShell/issues/364))
- Runtimes: .NET, Swift, Zig and Deno ([#370](https://github.com/raiseCatError/notMyShell/pull/370), which also becomes the canonical Ruby and PHP implementation), Elixir, Dart and Flutter ([#372](https://github.com/raiseCatError/notMyShell/pull/372)). Requested versions come from the project's own files, active versions from the install location; no tool is ever run and a binary inside the workspace is refused.
- One `build` module for Bazel, Gradle, Maven, CMake, Meson and Make with the version the project pins ([#373](https://github.com/raiseCatError/notMyShell/pull/373)).
- Mercurial bookmark or branch and Jujutsu repository state in the version-control extras pack ([#374](https://github.com/raiseCatError/notMyShell/pull/374)).

#### Managed Claude Code ([#347](https://github.com/raiseCatError/notMyShell/pull/347))
- `/model` and `/effort` as native pickers over Claude's documented control requests; a change shows as requested until Claude reports it.
- Claude mods with their real types and states per launch identity; enable and disable go through Claude's own `claude plugin` command at the installed scope, then running managed sessions reload. NMSh never edits Claude's settings files.
- A context panel beside the agent conversation, provenance on every runtime fact, and Markdown rendering for agent output that reveals real link destinations and refuses smuggled characters.

#### Worktrees and controls
- `/worktrees` shows a related pull request only from evidence: the last `/github` listing of the same repository, with the PR's head branch in its own repository exactly the worktree's branch; `p` opens it in `/github` ([#381](https://github.com/raiseCatError/notMyShell/pull/381)).
- A shared action-control renderer whose states are told apart by marks, not color, first used by the `/worktrees` confirmation ([#369](https://github.com/raiseCatError/notMyShell/pull/369)).

### Changed
- NMSh's own lines (`/copy` confirmations, notices, completion rows) wrap at word boundaries in narrow windows, with continuation rows indented under the text instead of splitting words such as `5 l`/`ines`. Copying a selection still gives the line exactly as stored. Shell output keeps the terminal's column wrapping ([#349](https://github.com/raiseCatError/notMyShell/pull/349)).

### Security
- Approval prompts show everything they approve: a multi-line command is shown on every line (cut at 600 characters with the remainder counted), so a harmless first line can no longer hide what follows; this fixes the shipped Claude adapter's permission prompts ([#380](https://github.com/raiseCatError/notMyShell/pull/380)).
- Executable Portable Mods stay disabled behind a documented threat model and a regression gate; the only processes the mods code may start are Claude's own `plugin` commands in four reviewed forms, without a shell ([#379](https://github.com/raiseCatError/notMyShell/pull/379)).
- Background tasks: every request, task record and output update crossing the session boundary is validated; task output is sanitized line by line and bounded; signals reach only a task's own process group; the environment is used for the spawn only and never stored.
- Workspace text from tmux, Git and keymap files has whole escape sequences removed before it is drawn.

### Compatibility
- Node.js 22 or newer; zsh, Bash 4.4+ and Fish, as in v0.19.0.
- Background tasks need a session service from this release (a service started by an older NMSh says so until it restarts) and POSIX process groups (macOS, Linux, WSL 2).
- The tmux section of the sidebar needs tmux in `/opt/homebrew/bin`, `/usr/local/bin`, `/usr/bin` or `/bin`.

### Upgrade notes
- Nothing new is on after the upgrade: the sidebar and panel are opened by command, the composer binds no workspace keys, and background suggestions are off.
- Restart the session service (or start a new session) to use background tasks.

### Known limitations
- **Physical-terminal QA has not been performed** for the workspace regions, drawers, background tasks, keymap host notes or the new modules; automated tests and real-PTY suites cover them.
- Clicks focus a region but do not select sidebar rows; the mouse wheel scrolls the transcript wherever the pointer is.
- The sidebar lists tmux and worktrees only; NMSh sessions and managed targets as rows, and module diagnostics in the detail panel (they stay in `/modules` details), are not included.
- Background tasks run in a separate shell: aliases, functions and unexported variables of the live shell are not available. A service restart ends the tasks it owned. Output kept by the task owner is 5,000 lines or 2 MiB per task.
- The Codex app-server adapter is included but not wired: Codex and OpenCode sessions are shown, not controlled. Claude Remote Control stays unsupported for managed targets.
- Claude mod enable/disable has not been exercised against a live Claude account in this release's verification.
- Everything listed under v0.19.0's known limitations still applies.

## [0.19.0] - Unreleased (release candidate)

**Terminal workflow.** One command's result becomes useful for the next without NMSh taking execution away from the real shell. NMSh notices when a running command is waiting for you, lets you prepare the next commands while one runs, copies exactly what you choose, turns output into reviewed reports and comparisons, and keeps the commands you reuse. Nothing derived from output, the clipboard, a pin or a recipe runs without an explicit action, and every queued command still runs in your one persistent shell.
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

**notMyShell (NMSh)** runs your real zsh, Bash or Fish in a persistent session and gives it a better front end: a composer that stays put, semantic highlighting, a readable transcript, live command feedback, sessions that survive closing the window, and themes that can reach the tools you use.

Latest published stable release: [v0.18.0 — Context Engine, Managed Agents & Workspaces](https://github.com/raiseCatError/notMyShell/releases/tag/v0.18.0). The `master` branch includes this released work. See the [changelog](CHANGELOG.md#0180---2026-10-13) for its scope and known limitations; physical-terminal QA for this release is still pending. v0.19.0 (terminal workflow: input awareness, command queue, reviewed reports and comparisons) is a release candidate on `release/v0.19.0` and is not published until its physical-terminal QA passes.
Latest published stable release: [v0.18.0 — Context Engine, Managed Agents & Workspaces](https://github.com/raiseCatError/notMyShell/releases/tag/v0.18.0). The `master` branch includes this released work. See the [changelog](CHANGELOG.md#0180---2026-10-13) for its scope and known limitations; physical-terminal QA for this release is still pending. v0.19.0 (terminal workflow: input awareness, command queue, reviewed reports and comparisons) is a release candidate on `release/v0.19.0` and is not published until its physical-terminal QA passes. v0.20.0 (workspace sidebar and panel, background tasks, more native modules) is a release candidate built on it, on `release/v0.20.0`.

## See notMyShell in motion

Expand Down
9 changes: 9 additions & 0 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
|---|---|
| **Current release** | [v0.18.0 — Context Engine, Managed Agents & Workspaces](https://github.com/raiseCatError/notMyShell/releases/tag/v0.18.0) — released; physical QA pending ([checklist](docs/testing/v018-physical-qa.md)) |
| **Release candidate** | v0.19.0 — Terminal workflow (input awareness, command queue, copy and Smart Folding, Copy as Report, Compare output, references, paste review, pins and recipes, activity wording) on `release/v0.19.0` — **not published**; publication waits for physical terminal QA ([checklist](docs/testing/v019-physical-qa.md)) |
| **Release candidate (on v0.19 RC)** | v0.20.0 — Workspace, background tasks & native modules (`/sidebar`, `/panel`, `/keys`, `/background`, twelve more native modules, managed Claude `/model`/`/effort`/mods, related PRs in `/worktrees`) on `release/v0.20.0` — **not published**; waits for v0.19 and its own physical QA ([checklist](docs/testing/v020-physical-qa.md)) |
| **macOS distribution** | Homebrew: `brew install raiseCatError/tap/nmsh`; source installation remains available |
| **Current engineering focus** | [#305 — Native modules / Context Engine](https://github.com/raiseCatError/notMyShell/issues/305) and [#304 — Theme Bridge / semantic terminal](https://github.com/raiseCatError/notMyShell/issues/304); foundation released in v0.17.0, the module platform and further Theme Bridge work released in v0.18.0 |
| **Included in v0.18.0** | Context Engine platform (capability scheduling, first-party catalog, Context Packs, Claude Code agent context), `/modules`, Status Strip 2.0 and `/strip`, managed Claude Code targets and `/mods` (#329), `/worktrees` (first slice of #337), read-only `/github` (first slice of #338), terminal title ownership, tmux/passthrough/cursor fixes; merged through [PR #345](https://github.com/raiseCatError/notMyShell/pull/345) (Status Strip 2.0 and the Ghostty physical-QA fixes reached master earlier through [PR #328](https://github.com/raiseCatError/notMyShell/pull/328)), see CHANGELOG → 0.18.0 |
Expand Down Expand Up @@ -157,6 +158,14 @@ The work formerly planned as v0.8–v0.15 ships together with v0.16 in one cumul
| [#15](https://github.com/raiseCatError/notMyShell/issues/15) | Moved to Future / Backlog; NMSh already degrades by capability in unknown embedded hosts |
| [#18](https://github.com/raiseCatError/notMyShell/issues/18) | Code and CI in v0.17; physical Linux/WSL pass moved to a follow-up |

## Release candidate — v0.20 Workspace, background tasks & native modules

Integrated on `release/v0.20.0`, pinned to the unpublished v0.19 candidate: the standalone module work merged through
`integration/v020-modules` (#370 → #372 → #373, #374, #369, #381, #379, #380, #375 → #376/#377/#378, #383 → #384), then
#347 and #349, then the frontend wiring of the workspace regions, background tasks and related PRs. Executable
Portable Mods stay disabled (#379); the Codex app-server adapter ships unwired (#380). Not published: it waits for v0.19
and for its own physical QA.

## Release candidate — v0.19 Terminal workflow

Integrated on `release/v0.19.0` from `v0.18.0` with merge commits, preserving history: the frozen workflow stack ([#348](https://github.com/raiseCatError/notMyShell/pull/348) → [#357](https://github.com/raiseCatError/notMyShell/pull/357) → [#358](https://github.com/raiseCatError/notMyShell/pull/358) → [#360](https://github.com/raiseCatError/notMyShell/pull/360) → [#361](https://github.com/raiseCatError/notMyShell/pull/361) → [#368](https://github.com/raiseCatError/notMyShell/pull/368)) and its independent sibling [#367](https://github.com/raiseCatError/notMyShell/pull/367), tracked by [#359](https://github.com/raiseCatError/notMyShell/issues/359). Automated gates are recorded in the release PR; physical QA in Ghostty, Terminal.app and a physical Linux/Fish terminal has not been performed, so the release is not published. Deferred to v0.20 or later: exact last-frame module compaction explanations and dedicated external source previews ([#365](https://github.com/raiseCatError/notMyShell/issues/365)), and the full native runtime set ([#364](https://github.com/raiseCatError/notMyShell/issues/364)).
Expand Down
Loading
Loading