Skip to content

Output references and failure navigation: open file:line, copy paths/URLs/hashes, jump between failures #353

Closed

Description

@raiseCatError

Goal

Turn reliable references in command-owned output into user-initiated actions, and make failures easy to revisit. Extend the existing command-block Actions, /open, /find, /filter and editor bridges, rather than adding a permanent overlay or building a second debugger.

Actionable references

Conservatively recognize high-confidence:

  • Source locations such as src/main.ts:42 / absolute file paths (file/line/column when unambiguous).
  • URLs, Git commit IDs, test failure locations, and device identifiers (e.g. Android serials) when the source format is reliable.
  • Other typed references only when supported by a real handler and explicit user demand.

From a selected owning command block, offer context-appropriate actions: Copy value; Open file at line; Reveal/open URL via supported host actions; Inspect Git commit; Stage a device-specific follow-up command for review. No executable action based on output without confirmation. Never change the shell's current command or execute automatically.

Failure navigation

Defaults

Recognition should be lazy/contextual, local and non-executing. Do not add an automatic error panel, ongoing output scanning or mandatory integrations. Selected actions never transmit information without an explicit user instruction.

Acceptance

  • Resolve reference provenance against the correct command and cwd; handle path:line and URLs safely.
  • Keyboard-first actionable reference picker or menu, with accurate unavailable reasons.
  • Failure navigation reuses existing transcript navigation and exact command records.
  • No action steals input ownership from foreground/managed programs.
  • Real-PTY, narrow/NO_COLOR/Safe, hostile-output and restored-transcript tests.
  • Document what is deterministic and what is heuristic, with no claims of unsupported actions.

Parent: #359. Blocks/copy foundation: #358. Report/Compare: #360/#361.

Activity

  1. raiseCatError commented on Oct 10, 2026

    @raiseCatError
    OwnerAuthor

    Implemented in draft on branch feature/output-references (stacked on #361, not yet a PR).

    • Block menu → Files, links and more… (only when the output has references): open a file at its line from the command's own cwd via the existing editor bridge, open an http(s) link in the system browser, copy any reference, Inspect commit and Open a shell on stage a reviewed command in the composer (never run, never replace typed text).
    • Recognition is lazy (only when the menu opens), local and bounded (20k lines, 50 references). Deterministic: path:line[:col] (the finder /open uses; dotted numbers such as versions/IP:port are excluded) and links without credentials (look-alike hosts shown as punycode). Heuristic and limited to the printing command: commit ids in git output, serials in adb devices.
    • Hostile references (control/bidi/zero-width characters) are dropped, not repaired. Actions resolve the reference again from the block when they run.
    • Failure navigation: palette items Previous/Next failed command step through blocks by record (nonzero exit or interrupt; output text is never evidence) and scroll them into view.

    Tests: tests/outputReferences.test.ts (parsing, hostile input, bounds), tests/outputReferencesApp.test.ts (menu, staging, stale/hostile ids, navigation). Typecheck clean.

    Not yet: real-PTY test, narrow/NO_COLOR/Safe captures, restored-transcript check, a dedicated keybinding for failure navigation (palette only), test-runner diagnostic hints, symlink handling beyond /open's existing resolution.

  2. raiseCatError commented on Oct 18, 2026

    @raiseCatError
    OwnerAuthor

    Output references and failure navigation ship: open file:line, links, copy references, Inspect commit and staged device commands, plus F8/Shift+F8 between failures.

    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:uiUI and visual presentationtype:featureNew feature or improvement

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions