Skip to content

Stream Deck SD+: Automatic diff press should open the builder's first file diff (dial-ready), not the aggregate #1414

Description

@amrmelsayed

Problem

#1404's merged Builder Action Automatic press fires view-diff for implement/review builders, which opens the multi-file aggregate diff editor. The SD+ Files/Changes dials navigate per-file, so for dial-driven review the press should land on the builder's first file in per-file diff mode, positioned so the dials step from there.

Origin: #1404 dev-approval review discussion (owner + builder); routed through the architect.

Ground truth (verified against the code 2026-08-12)

  • diff-first-filecodev.diffFirstFilenavigateDiffToFirst opens the first per-file diff and seeds dial navigation, but takes no builder-id argument: resolveDiffContext (apps/vscode/src/commands/diff-nav.ts:118) resolves the builder from the active editor's diff-inject entry or lastPosition, and fired cold it flashes 'open a builder file diff first' and no-ops.
  • view-diffcodev.viewDiff is the only relay verb that opens a specific builder's diff by id, and it opens the aggregate editor.
  • So no verb today means 'open builder X's first file diff'.

Verify first (fold into a hardware session)

Confirm on hardware whether the dials already navigate after an Automatic view-diff press (whether the aggregate open populates the diff-inject registry / lastPosition). If they do, this issue is a 'land on file 1 in per-file mode' polish; if they don't, it is a broken-dial-flow fix and rises in priority.

Proposed (vscode-side)

Add a builder-id-scoped 'open first file diff' path: seed navigateDiffToFirst from an explicit id (reuse resolveDiffContext internals / openBuilderFileDiff), expose as a relay verb (e.g. open-diff-first taking [builderId]), and point the deck's Automatic diff branch at it. The explicit 'View Diff' PI option keeps opening the aggregate, unchanged.

Relation / sequencing

Builds on #1404 (changes where its Automatic diff branch points) — after it merges. Fits #1410's dial-driven review workflow.

Suggested protocol

PIR (hardware verification of the dial seeding either way).

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/cross-cuttingTouches multiple areas — needs coordinated handling

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions