Repository navigation
Output references, paste batches, queue conditions, pins and recipes - #368
Closed
raiseCatError wants to merge 76 commits into
Closed
raiseCatError wants to merge 76 commits into
raiseCatError wants to merge 76 commits into
Conversation
…m a block; step through failed commands A block's menu gains "Files, links and more…" when its output holds recognisable references. Files open at their line in the configured editor from the command's own directory, links open in the system browser (credentials and look-alike hosts are not offered as plain links), commits and ready devices stage a reviewed command in the composer and never run it. The command palette steps to the previous or next failed command by its record: a nonzero exit or an interrupt, never the word "error" in the output.
…r; /ps reads the clipboard on request A pasted block that the shell's grammar splits cleanly (zsh, Bash or Fish) offers B in Paste Review: the commands in order with their classification, remove and reorder, edit as text, or the original text. Enter queues exactly the reviewed commands into the session queue; heredocs, loops, functions, quotes, groups, continuations and chains stay in one command and anything ambiguous stays one block of text. /ps explicitly reads the clipboard once (pbpaste, wl-paste, xclip, xsel; 1 MiB, 3 s) and opens the review. Nothing is queued by pasting or reviewing.
…omment or a first line suggests Review of the batch splitter found three ways the review could differ from the shell: zsh does not treat # as a comment unless interactive comments are on, so a comment with syntax in it is now refused; a here-document inside a substitution, and << inside (( )), were mis-read, so the first is refused and the second is arithmetic; and an entry was classified by its first line only, so a loop or substitution could hide a destructive command. Entries are now classified across every statement and substitution, the selected command is shown wrapped in full, and a differential test runs pastes whole and split in real bash, zsh and fish and requires identical results.
…its own approval Both are per entry, off by default, and set in /queue (w cycles when it runs, a approves). Failure still pauses the queue before a default entry, and an interrupt stops it whatever follows. An entry that asks first never runs until that exact text is approved; editing it or changing its condition withdraws the approval. Offered only when the session service advertises queue-conditions, so an older service is never sent a condition it would ignore.
…lost quotes can no longer split or label a paste differently from the shell A second review found the scanner could still disagree with the shell. A # comment inside $( ) can hide a quote or parenthesis, so it is refused; a heredoc marker has its quotes and backslashes removed before it is matched, as the shell does, and one that uses an expansion is refused; and every line and statement of a command is classified on its own as well, so an apostrophe the splitter loses track of cannot hide a later destructive line from the label.
…ceholders are quoted values, nothing runs by itself
/pins lists pins and recipes (this folder's first). Pin command is a block action; Enter stages a pin in an empty composer. A recipe is saved from the queue (s), asks for its {{placeholders}} when used, quotes each value as one shell word, parse-checks the steps with the real shell, and queues only after the review is confirmed. pins.json is private, written atomically under a lock, refuses commands that look like they hold a secret, and is left alone if unreadable. Also: displaySafe shows bidi and format characters; Ask knows /ps and /pins; native module coverage matrix for #364.
…ters instead of sending them to the terminal
…d the install location, never by running them Both follow the existing runtime pattern: requested version from .ruby-version/Gemfile or .php-version/composer.json (plus .tool-versions and mise), active version from the install path, build tool (Bundler/Composer) from the manifest. A binary inside the workspace is not inspected. Added to nmsh.project; the coverage matrix is updated.
…eport engine health in /doctor The module detail gains a Why sentence (off, hidden, timed out, unreadable, nothing here, waiting for a command, collecting, ready) and the engine's measured collection time per capability. /doctor reports collections, cache hits, merges, cancellations, timeouts and failures from the engine's own counters; no extra collection runs to produce either.
5 tasks
…s only Hex and palette-name colors in module styles and the character symbols map onto Native roles. Format strings, [custom] commands, ANSI names and numbers are never evaluated or turned into invented colors; they and the module list are reported in the preview. Same preview, validation and confirmation as the other importers.
This was referenced Oct 10, 2026
This was referenced Oct 14, 2026
Owner
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Output references, failure navigation, staging, cwd-scoped pins, recipes and queue conditions make earlier command results reusable through explicit review. Preserving or recalling a draft does not execute it automatically; submitting the original draft exits action-menu/command focus and submits once. Authoritative submission cwd and privacy rules remain intact.
Module diagnostics expose collection timing/cache/provenance; exact last-frame width-compaction explanations remain deferred. Corrected bounded Ruby parsing and its regressions are preserved. Future separately authorized native integration must use canonical #370 Ruby/PHP rather than this branch's older duplicate. Vocabulary remains an independent sibling, and workspace/background components remain unwired.
The additive stabilization fixes catchable startup termination and frontend cleanup. SIGTERM/SIGHUP handlers precede host-probe/journal waits; stopped probe completion cannot create a journal, and saves already underway retain durability. Stop removes only the frontend's instance-owned exit callback, preventing retention across session switches while preserving unrelated listeners. Controlled regressions fail before correction and pass afterward; assertions and deadlines are unchanged.
The reattach fixture waits for the complete final-size native pager frame and prompt before a single quit key, retaining original deadlines and strict cleanup. Bounded failure-only observations distinguish repaint from quit completion. Controlled native less read/WINCH evidence establishes a signal/input hazard; it does not reconstruct historical CI failures.
Native completion retains fragmented readiness within a bounded initialization buffer and recognizes the complete LF/CRLF marker without resetting existing budgets. A real-PTY regression fails before correction and passes afterward, including naturally fragmented reads. This independently confirmed framing fix does not establish the historical Copy recovery failure cause.
Clipboard completion requires an error-free payload-write callback and the backend’s own successful exit, retaining original error/timeout/process cleanup safeguards. Real-child regressions cover suppressed finish, partial reads and callback errors after exit. Early fullscreen startup regressions submit before the notice through the actual editor/submit pipeline, including delayed journal startup; original input/abort/ownership assertions remain intact. This proves independently controlled defects/fixture assumptions, not the precise historical failure causes.
Published head:
2395dad5b52895fe041d93d2c75123b25f6669fe. Focused lifecycle/startup/clipboard, clean exact-head canonical build/full runtime/ranking/cleanup/diff verification pass. Comprehensive candidate CI 38588753923 passes every required job, including Fedora/timing; actual PR CI 38589604854 passes applicable platform/runtime/aggregate gates. Attempts: 1/1.Shared acceptance, exact ancestry, remaining gates and retained historical failures are tracked in #359 and the durable handoff. Historical macOS/Ubuntu failures remain unattributed; new passes do not explain them. Native pager input during concurrent resize remains a physical QA limitation. Forced SIGKILL can bypass detached-helper cleanup while trusted configuration blocks it. No release/master merge or frontend integration occurs here.
Physical QA remains unperformed in Ghostty/Terminal.app across zsh, Bash and Fish: reference/staging privacy, original-draft submission/focus, rapid cwd pins, recipes/conditions, failure navigation and narrow/short diagnostic views. Automated/headless results do not claim this validation.
Refs #353
Refs #354
Refs #355
Refs #356
Refs #359
Refs #363