Skip to content

Pins and recipes; queue conditions (manual approval step) #355

Closed

Description

@raiseCatError

Goal

Allow users to reuse explicit, reviewed commands and sequences, extending NMSh history, command blocks and the same-shell queue (#357) without introducing an independent workflow engine.

Pins

  • From a completed command block or history selection, Pin command with optional human-written name/description and original cwd/project context.
  • Distinguish session-only, project-specific and global scope only when useful. No automatic pinning, secret parameter extraction, or passive persistence of command output.
  • A pin inserts/stages the original command for editing; never auto-runs it.

Recipes

  • Users explicitly convert selected ordered command blocks or queue entries into a named, reviewable/editable recipe.
  • Support explicit validated placeholders for path/device/other arguments; don't silently reuse environment credentials, unsafe shell interpolation or detected secrets.
  • Display expanded commands and cwd/environment expectations before any run. Recipes are never triggered by opening a directory, restoring a session or observing clipboard content.
  • Do not silently rewrite shell syntax or “fix” commands.

Queue conditions

  • Preserve sequential persistent shell execution and once-only submission.
  • Default: stop/pause queue on failure or interruption.
  • Optional per-entry condition: after previous success, regardless of previous result, or require manual approval. Expose only when it adds value; a simple queue remains simple.
  • Manual approval acts on the exact queued command, with explicit identity and lifetime. No program-driven or output-text-driven auto-approval; no intent inference for destructive commands.
  • Work out how saved recipes share the queue model. Pueue (if later integrated under Workflow integrations: external editors, search, preview tools and shell utilities #366) handles separate/detached jobs and must not replace same-shell commands.
  • Store pins/recipes only on explicit save; minimize scope and explain where data lives. Edited/deleted recipes must not silently change already-running queue entries.

Acceptance

  • Clear keyboard-first Pins/Recipes entry points using existing Actions/History/Queue menus; no large permanent panel by default.
  • Correct multi-session/project scope, atomic save/delete and migration.
  • Placeholder quoting/validation, redaction/secret handling, explicit review and no automatic execution.
  • Queue dependency/failure/interrupt/manual approval semantics tested through real zsh/Bash/Fish PTYs, including detach/reattach.
  • Narrow/NO_COLOR/Safe/restore coverage; maintain UX documentation and ledger.

Parent: #359; dependencies #357, #358; related staging #354.

Activity

  1. raiseCatError commented on Oct 10, 2026

    @raiseCatError
    OwnerAuthor

    Implemented in draft on feature/output-references: queue conditions per entry (w in /queue: default, runs even after a failure, asks first; a approves that exact text; interrupt always stops; gated by a new queue-conditions service feature so older services are never sent them), /pins with pins and recipes (stored in pins.json, atomic, locked, secrets refused), Pin command block action, recipes saved from the queue with quoted {{placeholders}}, review before queueing. Live PTY tests for conditions (zsh/Bash/Fish) and pins. Not done: pin from history selection, session-only scope, Pueue interplay (#366).

  2. raiseCatError commented on Oct 18, 2026

    @raiseCatError
    OwnerAuthor

    Per-entry queue conditions, /pins with pins and recipes and the Pin command action ship.

    Shipped in v0.20.0 through #392 (merge commit 65e4de55). v0.19.0 was never published, so this is the first release that contains it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:executionCommand execution and lifecycletype:featureNew feature or improvement

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions