Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
219 commits
Select commit Hold shift + click to select a range
5a5dab9
Docs: v0.21 design, acceptance and ledger
raiseCatError Oct 18, 2026
d7ece44
Docs: v0.21 design names the Fish test-home helper as built
raiseCatError Oct 18, 2026
8b55e27
Reliability: Fish test homes, superseded classifications and multi-ro…
raiseCatError Oct 18, 2026
74ebea5
Reliability slice: changelog, physical QA checklist and ledger
raiseCatError Oct 18, 2026
b20d81c
Native /view: a read-only viewer for files and completed output (#397)
raiseCatError Oct 18, 2026
d51593b
/view slice: changelog, physical QA checklist and ledger
raiseCatError Oct 18, 2026
5ebdd29
/view: file names are drawn inert; a late load never opens over anoth…
raiseCatError Oct 18, 2026
46700b5
Native /edit: a small, safe editor for one text file (#402)
raiseCatError Oct 18, 2026
f5f65a9
/edit slice: changelog, physical QA checklist and ledger
raiseCatError Oct 18, 2026
9458815
Semantic Output, first phase: test and build readings in their blocks…
raiseCatError Oct 18, 2026
9dce263
Semantic Output: recognition is linear in what it reads
raiseCatError Oct 18, 2026
f3ca778
Semantic Output: the Setup transcript step lists its new row
raiseCatError Oct 18, 2026
6cd9dd1
/track: one live result of a finite command, refreshed in place (#393)
raiseCatError Oct 18, 2026
847fe69
Native modules: Bun, Nix shell and container; /modules explain and ti…
raiseCatError Oct 18, 2026
a6a3068
Theme families: Ayu, Kanagawa, Everforest, Flexoki and Night Owl (#401)
raiseCatError Oct 18, 2026
7d8e152
Theme families: copyright lines as the upstream LICENSE files state them
raiseCatError Oct 18, 2026
53ecbf4
/track: a transcript without trackers skips the per-line live-row lookup
raiseCatError Oct 18, 2026
d2d0b76
Merge branch 'feature/v021-track' into feature/v021-modules
raiseCatError Oct 18, 2026
8bb85d5
Merge branch 'feature/v021-modules' into feature/v021-themes
raiseCatError Oct 18, 2026
f4174e9
v0.21 ledger: stacked PRs, integration verification, performance and …
raiseCatError Oct 18, 2026
f458099
v0.21 ledger: final CI state and a third flake seen once
raiseCatError Oct 18, 2026
b420e67
fix(track): signal refresh start to live presenter
raiseCatError Oct 18, 2026
6832fec
fix(track): release stopped tracker presentation state
raiseCatError Oct 18, 2026
4197487
test(track): assert finalizer releases presentation state
raiseCatError Oct 18, 2026
ed16fa1
test(track): verify refreshing state notifies presenter immediately
raiseCatError Oct 18, 2026
4d76bac
/track: a stricter gate for repeated commands; every redirect judged …
raiseCatError Oct 18, 2026
b4eb409
/track: a sample's leftover processes never outlive it; refresh event…
raiseCatError Oct 18, 2026
4cdf971
/track: one summary row for many trackers, Safe-glyph marks, cached r…
raiseCatError Oct 18, 2026
24af7d4
/track docs: the repetition gate, process cleanup, the summary row an…
raiseCatError Oct 18, 2026
9780d4d
/track: keep refusing `&>`, a background job in the POSIX sh that run…
raiseCatError Oct 18, 2026
8401275
Background tasks: an exit is reported once the group's fate is known,…
raiseCatError Oct 18, 2026
9d046cc
Configured completion: its private directory is gone when a startup t…
raiseCatError Oct 18, 2026
cd5fafc
Test runner: a test that stalls with a process running fails visibly …
raiseCatError Oct 18, 2026
25759ce
Native capture test: bound the early-reap window, not the owner's col…
raiseCatError Oct 18, 2026
8bb9464
#388: rows are the terminal's rows, so a redraw over a wrapped line n…
raiseCatError Oct 18, 2026
af475c3
Command colors survive a slow zsh configuration: lookups are timed fr…
raiseCatError Oct 18, 2026
19f5a36
/modules explain says when the Rail or Strip left a module out, or sh…
raiseCatError Oct 18, 2026
8f57e6a
removeDirectoryNow: remove the renamed copy entry by entry while anot…
raiseCatError Oct 18, 2026
bb210ce
Merge branch 'fix/v021-flaky-tests' into fix/v021-bugs
raiseCatError Oct 18, 2026
c350057
Codex adapter test: wait for what the fake server has recorded, not t…
raiseCatError Oct 18, 2026
d39059c
Merge branch 'fix/v021-flaky-tests' into HEAD
raiseCatError Oct 18, 2026
50cdf02
Native capture tests: the owner's cold start is waited for before the…
raiseCatError Oct 18, 2026
e8411e1
Merge branch 'fix/v021-flaky-tests' into fix/v021-bugs
raiseCatError Oct 18, 2026
18715a5
v0.21 ledger: stabilization findings, verification, ordered integrati…
raiseCatError Oct 18, 2026
3056d8e
Two timing-bound tests stop measuring cold starts they do not test
raiseCatError Oct 18, 2026
0b3c3b4
Merge branch 'fix/v021-flaky-tests' into fix/v021-bugs
raiseCatError Oct 18, 2026
2ce9ff1
Merge branch 'fix/v021-bugs' into docs/v021-stabilization
raiseCatError Oct 18, 2026
06bc203
v0.21 ledger: the second local release run
raiseCatError Oct 18, 2026
a412fe5
Merge pull request #411 from raiseCatError/docs/v021-design
raiseCatError Oct 18, 2026
3282ad4
Merge pull request #412 from raiseCatError/fix/v021-reliability
raiseCatError Oct 18, 2026
e945c75
Merge pull request #413 from raiseCatError/feature/v021-view
raiseCatError Oct 18, 2026
934ba7c
Merge pull request #414 from raiseCatError/feature/v021-edit
raiseCatError Oct 18, 2026
a97b3f7
Merge pull request #415 from raiseCatError/feature/v021-semantic
raiseCatError Oct 18, 2026
a5f2fd6
Merge pull request #416 from raiseCatError/feature/v021-track
raiseCatError Oct 18, 2026
ac543bd
Merge pull request #417 from raiseCatError/feature/v021-modules
raiseCatError Oct 18, 2026
0ea7ca3
Merge pull request #418 from raiseCatError/feature/v021-themes
raiseCatError Oct 18, 2026
f8e5354
Merge pull request #419 from raiseCatError/docs/v021-checkpoint
raiseCatError Oct 18, 2026
d612f12
Merge pull request #420 from raiseCatError/fix/v021-track-review-hard…
raiseCatError Oct 18, 2026
0eca52d
Merge pull request #421 from raiseCatError/fix/v021-stabilize
raiseCatError Oct 18, 2026
ac0f780
Merge pull request #422 from raiseCatError/fix/v021-flaky-tests
raiseCatError Oct 18, 2026
7cb857f
Merge pull request #423 from raiseCatError/fix/v021-bugs
raiseCatError Oct 18, 2026
433af8f
Merge pull request #424 from raiseCatError/docs/v021-stabilization
raiseCatError Oct 18, 2026
cefa484
/edit: a new file in a symlinked folder saves again without a false c…
raiseCatError Oct 18, 2026
917d025
Input ownership test: type the follow-up after the answered command c…
raiseCatError Oct 18, 2026
31ea80f
v0.21 release audit: integrated state, verification, QA walkthrough a…
raiseCatError Oct 18, 2026
debbffb
llms.txt: the latest published stable release is v0.20.0, not v0.18.0
raiseCatError Oct 18, 2026
6b3a06e
v0.21 QA walkthrough: name the folder for 4.5 and the no-color 4.7
raiseCatError Oct 18, 2026
54370ca
Merge pull request #427 from raiseCatError/fix/v021-ownership-test-race
raiseCatError Oct 18, 2026
b4fe824
Merge pull request #425 from raiseCatError/fix/v021-edit-new-file-path
raiseCatError Oct 18, 2026
a8b383c
Merge pull request #428 from raiseCatError/docs/v021-release-audit
raiseCatError Oct 18, 2026
6958c27
Input ownership: keys wait for the look, however long a loaded machin…
raiseCatError Oct 18, 2026
5d81d93
/view: o opens the file shown in your own editor, at the line on screen
raiseCatError Oct 18, 2026
a9904a0
v0.22 design, ledger and natural-language proposal
raiseCatError Oct 18, 2026
60f8490
v0.22: physical QA checklist for #433 and #434; ledger links #436
raiseCatError Oct 18, 2026
45d071c
v0.22 QA: /view takes the rest of the line as the path, without quotes
raiseCatError Oct 18, 2026
c592516
v0.22 QA: a reachable step for o while a command runs
raiseCatError Oct 18, 2026
1b913da
v0.22 ledger: R1 and U1 verification results
raiseCatError Oct 18, 2026
c996b38
v0.22: hold PRs until v0.21 ships, not only until #430
raiseCatError Oct 18, 2026
742bfbd
v0.22 ledger: state the #430 merge precisely
raiseCatError Oct 18, 2026
293b97a
v0.22 ledger: #356 not reproduced under 8x load
raiseCatError Oct 18, 2026
e566a1e
Input ownership: never route typing on a guess; echo-off input is nev…
raiseCatError Oct 18, 2026
9aae2f0
Input ownership: prompt hooks and stale questions never eat type-ahead
raiseCatError Oct 18, 2026
8313529
Input ownership: a stale question is ignored only while typing is typ…
raiseCatError Oct 18, 2026
29d73a6
Composer history: a recalled command is one step, however many lines …
raiseCatError Oct 18, 2026
4ab9f44
/open: choose a terminal editor when VISUAL and EDITOR are unset
raiseCatError Oct 18, 2026
62c2e15
Ask: optional command suggestions from the local model, Copy/Insert only
raiseCatError Oct 18, 2026
103b1e9
Ask suggestions: 'reads only' needs every part plainly read-only; NMS…
raiseCatError Oct 18, 2026
898fbc3
Setup: Terminal editor is reachable from Sessions & alerts
raiseCatError Oct 18, 2026
c1a3001
Setup: Command suggestions is reachable from Ask & local understanding
raiseCatError Oct 18, 2026
48f70e9
Composer history: show History n/N on a free composer rule while brow…
raiseCatError Oct 18, 2026
0240a48
v0.22 docs: record D1-D3 decisions, PRs #437-#441, #436 findings and …
raiseCatError Oct 18, 2026
b0d0146
Tests: type cat only after the queued command's prompt returns
raiseCatError Oct 18, 2026
4556dfa
Merge #433 (input ownership look) into the #436 fix
raiseCatError Oct 19, 2026
e277668
Input ownership with done: a hold settles as ended; hidden evidence i…
raiseCatError Oct 19, 2026
815ecc5
Tests: wait for NMSh's journal, not screen text, before asserting a c…
raiseCatError Oct 19, 2026
e391bcb
Input ownership: type-ahead after answering a hidden question is kept
raiseCatError Oct 19, 2026
807d3c0
Input ownership: the hidden-answer grace is bounded and ends at a new…
raiseCatError Oct 19, 2026
c79c6e2
v0.22 ledger: integration candidate verified, crash recovery, test-re…
raiseCatError Oct 19, 2026
6486d9c
Input ownership: a possible password never runs as a command by itself
raiseCatError Oct 19, 2026
292583a
typingAfterRead: accept a command NMSh holds after a hidden answer, r…
raiseCatError Oct 19, 2026
5b6d56d
Merge #435: v0.22 design, ledger and natural-language proposal (docs/…
raiseCatError Oct 19, 2026
3195d44
Merge #433: Input ownership: keys wait for the look (fix/v022-input-o…
raiseCatError Oct 19, 2026
cf49c80
Merge #437: Input ownership: prompt hooks, stale questions and possib…
raiseCatError Oct 19, 2026
3fa2ac6
Merge #442: live tests wait for NMSh's journal (fix/v022-queue-live-s…
raiseCatError Oct 19, 2026
1e65c96
Merge #438: Composer history: a recalled command is one step (feature…
raiseCatError Oct 19, 2026
151b00c
Merge #441: Composer history: History n/N on a free composer rule (fe…
raiseCatError Oct 19, 2026
b3dca84
Merge #434: /view: o opens the file in your own editor (feature/v022-…
raiseCatError Oct 19, 2026
79921f6
Merge #439: /open: choose a terminal editor when VISUAL and EDITOR ar…
raiseCatError Oct 19, 2026
5657871
Merge #440: Ask: optional command suggestions from the local model (f…
raiseCatError Oct 19, 2026
d854638
Release integration: /view's o with the terminal editor chosen in Set…
raiseCatError Oct 19, 2026
18144fb
Release v0.22.0 candidate: changelog, version and release status (v0.…
raiseCatError Oct 19, 2026
b57bb68
History n/N test: start NMSh in a fixed directory, so the checkout pa…
raiseCatError Oct 19, 2026
ab5390a
Merge #441 update: history position test starts in a fixed directory …
raiseCatError Oct 19, 2026
6ebf383
Input ownership: release gate fixes; held typing, pre-prompt drafts a…
raiseCatError Oct 19, 2026
e8338ee
Merge #437 update: release gate fixes for held typing, pre-prompt dra…
raiseCatError Oct 19, 2026
271e67b
Input ownership live test: a password typed before the program's prom…
raiseCatError Oct 19, 2026
d2d9e23
Merge #437 update: live test for a password typed before the prompt (…
raiseCatError Oct 19, 2026
e461d63
Fish integration: write a marker again once when the write fails (#443)
raiseCatError Oct 19, 2026
d9d72a0
Merge #445: Fish marker retry (fix/v022-fish-marker-retry e461d63b)
raiseCatError Oct 19, 2026
68c1cbb
Release v0.22.0 candidate: security gate review, limitation wording, …
raiseCatError Oct 19, 2026
f3b4baa
Ask: a shell task reaches command suggestions, not the nearest capabi…
raiseCatError Oct 19, 2026
1972110
Input ownership: a line queued during a command that is not a command…
raiseCatError Oct 19, 2026
f909e77
Fish integration: fault-injection test for an interrupted marker writ…
raiseCatError Oct 19, 2026
eef10fd
Fish integration: on Fish 3, markers go through cat, so an interrupte…
raiseCatError Oct 19, 2026
3d606e7
Input ownership: a function definition or plain shell syntax typed ah…
raiseCatError Oct 19, 2026
ff3a98b
Composer: a block mixing NMSh and shell commands is reviewed, then of…
raiseCatError Oct 19, 2026
7a587d3
Queue: while a program waits, the headline keeps the queue in view an…
raiseCatError Oct 19, 2026
3342ca8
Markdown: wrapping never glues two words together
raiseCatError Oct 19, 2026
bee509a
/view: render HTML natively, HTML files and HTML inside Markdown (QA …
raiseCatError Oct 19, 2026
baad272
/view HTML: an unclosed quote or tag never makes each tag rescan the …
raiseCatError Oct 19, 2026
aa658d0
Tests: F02's paste tests use zsh's grammar, which every CI runner has…
raiseCatError Oct 19, 2026
e586e56
Sessions: a window on an older session service says its typing protec…
raiseCatError Oct 19, 2026
a257041
Merge #448: Input ownership: a line queued during a command that is n…
raiseCatError Oct 19, 2026
99e0d1e
Merge #449: Fish integration: markers survive interrupted writes on F…
raiseCatError Oct 19, 2026
acb36c6
Merge #456: Sessions: an older session service says its typing protec…
raiseCatError Oct 19, 2026
d5388da
Merge #447: Ask: a shell task reaches command suggestions (fix/v022-a…
raiseCatError Oct 19, 2026
992277e
Merge #451: Composer: mixed NMSh and shell commands are reviewed, the…
raiseCatError Oct 19, 2026
a547381
Merge #453: Queue: the wait headline keeps the queue in view (fix/v02…
raiseCatError Oct 19, 2026
397e732
Merge #455: /view: render HTML natively, HTML files and HTML inside M…
raiseCatError Oct 19, 2026
fa7ec66
Release v0.22.0 candidate: post-QA stabilization (F01–F04, #426, #443…
raiseCatError Oct 19, 2026
2932f8e
Input ownership: nothing typed while a command runs becomes a shell c…
raiseCatError Oct 19, 2026
8afa63e
Shell terminal size: NMSh's own layout never resizes it; only the win…
raiseCatError Oct 19, 2026
65ca5ef
Input ownership: a line begun after the shell said done is type-ahead…
raiseCatError Oct 19, 2026
4f1107c
Input ownership: a program that survives Ctrl+C gets the line typed f…
raiseCatError Oct 19, 2026
4c54bcc
Tests: Fish output integrity churns NMSh's composer while Fish writes…
raiseCatError Oct 19, 2026
87b6e2f
Tests: live commands typed for the prompt wait for it; Dock Top and p…
raiseCatError Oct 19, 2026
b869e6f
Input ownership: a late report of the question just answered never ta…
raiseCatError Oct 19, 2026
344459a
Docs: v0.22 hardening ledger, exit-time typing limitation (#426, #443)
raiseCatError Oct 19, 2026
3a176a4
Tests: decide from the journal and queue, never from redrawn screen t…
raiseCatError Oct 19, 2026
7a95183
Docs: v0.22 hardening evidence (CI, Fish 3.7 loop, signal counts) and…
raiseCatError Oct 19, 2026
0413a2f
Merge #457: v0.22 hardening: input ownership by lifecycle (#426), sta…
raiseCatError Oct 19, 2026
fdf1c11
Tests: GNU screen's resize probe waits for each probe's completion be…
raiseCatError Oct 19, 2026
e8dd44e
Merge #457 update: GNU screen test waits for its probe (fix/v022-hard…
raiseCatError Oct 19, 2026
e43ee55
Multiline paste: One at a time, Queue all and Run as block on the sha…
raiseCatError Oct 20, 2026
87fbf7d
Arcade kernel: /games, /game and /arcade hub, game contract, canvas, …
raiseCatError Oct 20, 2026
48faeb0
Arcade: p pauses any playing game; arcade design document
raiseCatError Oct 20, 2026
b9fe576
Graphics: shared raster types, limits and Kitty placeholder diacritics
raiseCatError Oct 20, 2026
e024cec
Graphics: extended host probe (text sizing, Sixel, pixel sizes), capa…
raiseCatError Oct 20, 2026
801f6b7
Merge remote-tracking branch 'origin/feature/v022-arcade' into featur…
raiseCatError Oct 20, 2026
c1b6d07
Graphics decoders: safe identify, PNG, GIF, JPEG (EXIF orientation) a…
raiseCatError Oct 20, 2026
eaaafad
Typography: OSC 66 text sizing backend, renderer places sized blocks …
raiseCatError Oct 20, 2026
f175ae0
Merge remote-tracking branch 'origin/feature/v022-graphics-decoders' …
raiseCatError Oct 20, 2026
0363c25
Graphics encoders: box scaling, character-art cells, sixel and PNG/Ki…
raiseCatError Oct 20, 2026
f29d8e2
Typography: panel sized-text blocks reach the renderer; hub title is …
raiseCatError Oct 20, 2026
6145614
Merge remote-tracking branch 'origin/feature/v022-graphics-encoders' …
raiseCatError Oct 20, 2026
3cf2163
Graphics service: bounded cache, safe references, Kitty placeholder u…
raiseCatError Oct 20, 2026
a1ff619
Classic Sudoku: seeded generator with an independent solver, notes, h…
raiseCatError Oct 20, 2026
5a36c8f
Graphics service: lexical containment before any filesystem call, fil…
raiseCatError Oct 20, 2026
1f869d1
Arcade: Vespyr Run, an endless runner with a provably fair generated …
raiseCatError Oct 20, 2026
62c8da3
Arcade: Vespyr Doku, a cat-placement logic puzzle with a verified gen…
raiseCatError Oct 20, 2026
7d9ac30
Documents: sized headings and block images in the Markdown/HTML rende…
raiseCatError Oct 20, 2026
bc478bf
Images: /view image files, document images with the i key, image view…
raiseCatError Oct 20, 2026
b900631
Tests: live paste and clip reviews choose Queue all, then confirm wit…
raiseCatError Oct 20, 2026
27ca41a
Browser: the engine and preview boundary (types)
raiseCatError Oct 20, 2026
b5a2eac
Vespyr Flight: endless flier with provably fair gaps, winged Vespyr a…
raiseCatError Oct 20, 2026
2cb4502
Browser: previews are local-only in the interface
raiseCatError Oct 20, 2026
2e7672f
Graphics: a stream for live frames, opened from the service
raiseCatError Oct 20, 2026
debee15
Documents: one workspace for Markdown and HTML (source, edit, preview…
raiseCatError Oct 20, 2026
a298be4
Docs: graphics service architecture decision, typography, support mat…
raiseCatError Oct 20, 2026
7ad6582
Merge remote-tracking branch 'origin/feature/v022-game-sudoku' into f…
raiseCatError Oct 20, 2026
ba2eab0
Merge remote-tracking branch 'origin/feature/v022-game-doku' into fea…
raiseCatError Oct 20, 2026
5f2fdc7
Merge remote-tracking branch 'origin/feature/v022-game-run' into feat…
raiseCatError Oct 20, 2026
c24426b
Merge remote-tracking branch 'origin/feature/v022-game-flight' into f…
raiseCatError Oct 20, 2026
64cebe3
Dependencies: jpeg-js 0.4.4 (BSD-3, no dependencies) for JPEG decoding
raiseCatError Oct 20, 2026
da3f586
Browser: the panel, tabs session, address rules, key and mouse mappin…
raiseCatError Oct 20, 2026
f142372
Merge remote-tracking branch 'origin/feature/v022-browser-panel' into…
raiseCatError Oct 20, 2026
f51d81e
Browser: Chromium preview view for the document workspace, preview ta…
raiseCatError Oct 20, 2026
d4f37b2
Whitespace: no blank line at end of file
raiseCatError Oct 20, 2026
58a84ba
Merge remote-tracking branch 'origin/feature/v022-graphics' into feat…
raiseCatError Oct 20, 2026
1fc95aa
Merge remote-tracking branch 'origin/feature/v022-graphics' into feat…
raiseCatError Oct 20, 2026
654b555
Whitespace: no blank line at end of file
raiseCatError Oct 20, 2026
954649d
Browser engine: Chromium over a DevTools pipe, pages, loopback docume…
raiseCatError Oct 20, 2026
26a677a
Merge remote-tracking branch 'origin/feature/v022-browser-engine' int…
raiseCatError Oct 20, 2026
a0ca854
Arcade: Vespyr Dash, a rhythm platformer with a provably fair generat…
raiseCatError Oct 20, 2026
ff0c2af
Browser: /browser panel and the document workspace's Chromium preview…
raiseCatError Oct 20, 2026
a385f59
Tests: browser fallbacks and refusals at the app level
raiseCatError Oct 20, 2026
bcd07fd
Merge remote-tracking branch 'origin/feature/v022-game-dash' into fea…
raiseCatError Oct 20, 2026
fbbd374
Merge remote-tracking branch 'origin/feature/v022-arcade-games' into …
raiseCatError Oct 20, 2026
32440d1
Merge multiline modes into the final integration
raiseCatError Oct 20, 2026
e9a82a6
Preview: trust and refresh run in order, scripts go off first, a trus…
raiseCatError Oct 20, 2026
4e92474
Docs: CHANGELOG for the final scope, document workspace and browser d…
raiseCatError Oct 20, 2026
34b2cb6
Docs: README, SECURITY and ROADMAP for the final scope
raiseCatError Oct 20, 2026
ee12bc3
QA: final-additions passes (F1-F7), fixtures script, R2 updated; ever…
raiseCatError Oct 20, 2026
a8a81fa
Ledger: final scope, decisions, reviews and open risks
raiseCatError Oct 20, 2026
96d9fb5
Runbook: final scope, dependencies and merge order
raiseCatError Oct 20, 2026
18ad59d
Setup and Ask know the new graphics, text sizing and browser settings…
raiseCatError Oct 20, 2026
d5e916a
Queue condition live test: name the missing command in its failure
raiseCatError Oct 20, 2026
9af1771
Browser test fixtures: retry removing a profile Chromium helpers are …
raiseCatError Oct 20, 2026
536ce3a
Merge pull request #470: v0.22.0 final integration
raiseCatError Oct 20, 2026
35e3f67
Queue ownership live test: wait for the approved command's record bef…
raiseCatError Oct 20, 2026
4c2d4ac
tmux detach/reattach live test: wait for the fullscreen command's jou…
raiseCatError Oct 20, 2026
75acff1
Live tests: show the screen when the GNU screen and typing-after-read…
raiseCatError Oct 20, 2026
134e1b1
GNU screen live test: collapse repeated redraw rows in its timeout me…
raiseCatError Oct 20, 2026
77b207c
AGENTS: CI dispatch hygiene (reuse existing runs; cancelled by concur…
raiseCatError Oct 20, 2026
e774c95
Live tests: the GNU screen test waits on the journal, not on redrawn …
raiseCatError Oct 20, 2026
2a64f18
Typing-after-read live test: a line whose output is on screen ran; wa…
raiseCatError Oct 20, 2026
bfa759d
Ledger: stabilization findings for the live tests, accurate to the fi…
raiseCatError Oct 21, 2026
a464925
Typing held after a command is done is held as the lines typed, not o…
raiseCatError Oct 21, 2026
9a2ade4
Release v0.22.0: changelog date, current stable release, recorded QA …
raiseCatError Oct 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
18 changes: 17 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,11 @@ notMyShell (NMSh) is a terminal frontend that operates over a persistent, real s

NMSh uses a FOLLOW mode during execution, pinning the output viewport to the bottom. During historical inspection, it enters DETACHED mode.

## Graphics and typography (permanent rule)
Any actual image goes through the shared graphics service (`src/graphics/`, [graphics service](docs/design/graphics-service.md)); no surface decodes, scales, uploads, places or deletes an image itself, and none selects a protocol by terminal name. Capability detection uses bounded terminal replies (never the PTY's input), and every surface has a character-art or placeholder fallback with the reason shown. Document and celebration typography goes through `typeset()` ([typography](docs/design/typography.md)): components ask for a role, the backend decides whether OSC 66 sizing is verified; sized text is never written to transcripts, saved documents or the clipboard, and is only drawn when every one of its rows is visible. Markdown and HTML share one heading scale. Menus, tabs, selection controls and chrome are always text.
## UI consistency (permanent rule)
All new NMSh UI reuses the established components and interaction patterns before anything is drawn by hand: `framePanel`, the tab strip (`renderTabStrip`), the selected-row band (`selectedRowBand`), `renderControlRows`, `groupedList`, the Settings and row panels, the palette and glyph tables (`UI_COLORS`, `GLYPHS`, Safe Glyphs, NO_COLOR rules) and the shared panel keys (↑↓ select, ←→/Tab switch, Enter confirm, Esc back). Ad hoc bracketed menus (`[1 Option]`), one-off boxes and private color tables are not the default; a new surface that cannot reuse a component first extends the shared one. Menus, text, selection controls and chrome stay terminal text: graphics protocols and text sizing are for real images and document or celebration typography, never a replacement for ordinary menus. Reviews check this the same way they check input ownership. The multiline paste review (`src/input/BatchReview.ts`) is the reference: [multiline execution modes](docs/design/multiline-execution-modes.md).

## Input invariants
- `Shift+Enter`: newline (multiline)
- `Ctrl+J`: fallback newline
Expand Down Expand Up @@ -71,6 +76,9 @@ Input awareness (waiting-for-input state, hidden and single-key input routed to
## Surfaces released in v0.20.0
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`; the first-run starting point (`/startup`, `src/setup/startup/`), the guided setup, the shared optional-tools flow (`src/tools/ToolsPanel.ts`), the execution timeline and Queue settings, queue history and typed summaries (`/queue history`, `/queue save-summary`), queued output folding, multi-line paste choices, `/copy` output navigation and `/actions`, the custom color editor and the per-installation update notice. Physical QA status: [v0.20 record](docs/testing/v020-physical-qa.md).

## Surfaces released in v0.22.0 (includes the unpublished v0.21.0 candidate)
`/view` (read-only viewer for files and completed output; `src/viewer/document.ts`, `ViewerPanel.ts`; `o` opens the file in your editor), `/edit` (a small editor for one text file with atomic, conflict-checked saves; `src/viewer/fileEdit.ts`, `EditorPanel.ts`, `textBuffer.ts`), Semantic Output first phase (deterministic recognizers in `src/output/semantic.ts`; presentation rows only, raw output and plain `/copy` unchanged; `/copy --semantic|--both`), `/track` (one live result of a finite command on the `/watch` scheduler, window-owned; `src/tasks/WatchTasks.ts`, `repeatSafety.ts`, `trackBlock.ts`), Bun, Nix shell and container modules, `/modules explain` and `/modules timings`, five theme families, the parser's bounded live region for multi-row progress (#388), input ownership (keys held for an on-demand look, never routed on a guess; the shell's `done` marker; typing held at the prompt after hidden input; queued entries wait for approval when a hidden question follows: `TerminalApp.holdForOwnershipLook`, `InputWatch.lookNow`), history browsing with History n/N on a free rule, a chosen terminal editor for `/open`, and Ask command suggestions from a local model (Copy/Insert only, never run). State: [v0.22 ledger](docs/development/v022-ledger.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 All @@ -86,6 +94,13 @@ runner. GitHub CI provides independent platform verification, not a replacement
for local checks. See [development verification](docs/development-verification.md)
for sharding, platform gates and exact-release evidence requirements.

**Dispatching CI.** The `CI` workflow has one concurrency group per workflow and ref with `cancel-in-progress`, so a second
run on the same ref cancels the first (a pull request's run uses its own ref, so it does not). Before `gh workflow run` or a
rerun, list the runs for that SHA (`gh run list --workflow CI --branch <branch>`) and reuse a queued or running one; the PR's
automatic run is enough unless the exact-release evidence needs the dispatched jobs (timing smokes, Fedora), and then dispatch
once. Follow a run with `gh run watch`, never by dispatching again. A `cancelled` run superseded by a newer one is not a test
failure: report the authoritative run IDs and the SHA, and call CI green only when every required check of those runs succeeded.

```bash
npm run verify:fast
npm run verify
Expand Down Expand Up @@ -130,7 +145,8 @@ Key references:
- [ARCHITECTURE.md](ARCHITECTURE.md) — the human-readable architecture overview (runtime and data flows, repository map); deeper detail in `docs/architecture/` and `docs/design/`
- [ROADMAP.md](ROADMAP.md) — product direction and issue index
- [GitHub Issues](https://github.com/raiseCatError/notMyShell/issues) — actionable work
- [v0.20.0 Release](https://github.com/raiseCatError/notMyShell/releases/tag/v0.20.0) — current stable release, merged through [PR #392](https://github.com/raiseCatError/notMyShell/pull/392); v0.19.0 was never published separately
- [v0.22.0 Release](https://github.com/raiseCatError/notMyShell/releases/tag/v0.22.0) — current stable release, merged through [PR #444](https://github.com/raiseCatError/notMyShell/pull/444); v0.19.0 and v0.21.0 were never published separately
- [v0.20.0 Release](https://github.com/raiseCatError/notMyShell/releases/tag/v0.20.0) — previous stable release, merged through [PR #392](https://github.com/raiseCatError/notMyShell/pull/392)
- [PR #303](https://github.com/raiseCatError/notMyShell/pull/303) — the merged cumulative v0.16 release
- [PR #328](https://github.com/raiseCatError/notMyShell/pull/328) — merged checkpoint on master; included in the published v0.18.0 release through [PR #345](https://github.com/raiseCatError/notMyShell/pull/345)
- [GitHub Project](https://github.com/users/raiseCatError/projects/1) — live development status board
Expand Down
2 changes: 2 additions & 0 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,8 @@ Optional **local understanding** can help interpret requests when enabled. Auto

Model text is not directly executed as a shell command or filesystem operation. Configuration, mutation, and installation require confirmation of the exact action in Ask; destructive suggestions are Copy/Insert only. Copying or inserting a suggested command does not execute it. File plans and supported configuration still use their normal path, hash, and ownership checks.

**Command suggestions** are optional and Off by default. When the person turns them on (Settings → Ask → Command suggestions → Local model), a request Ask's own resolver cannot place (never one it refused) may get one shell command from the local model. The model receives only the request text, the shell and the OS family; its answer is validated strictly (one plain line, no control or escape sequences), labelled by NMSh's own command classifier rather than the model, and offered for Copy or Insert only. Inserting places it in the composer unsent; only the person's Enter runs it.

## 20. Configuration and persistence

Let `<NMSh config>` mean the directory selected by the shared path resolver:
Expand Down
Loading
Loading