Skip to content

Diff view: see what the agent changed #130

Description

@karngyan

Why

After the terminal itself, the thing you most want from a phone is "what did it change". Today that is scrolling back through tool output, or typing git diff into the session and reading a pager on a 6 inch screen. A real diff view, split or unified, per file, with syntax highlighting, is the review half of supervising an agent. It is also where Pierre's @pierre/diffs earns a place in flue, if #129 says yes.

Rough scope

  • A wire verb that streams a patch the way read streams a file:

    diff{id, path?, staged?, reqId}   ------->  git diff in the session cwd
         <-------  file{ref, ...}  0x02 chunks  eof{ref}
    

    Same chunking, same caps, same cancel. The daemon runs git as the user, nothing else.

  • UI: a changed-files list for the session's working directory (from the same git status --porcelain=v2 the tree uses in Fast directory listing over the wire for big repos #128), tap a file, see its diff. Unified on phones, split on desktop. Own route next to /file and /files so it opens in a tab.

  • Untracked files: no diff exists, so synthesize one against empty, or just open the file in the viewer. Binary files: say so.

  • Later, once reading works: stage and commit from the phone, and sending a line comment back into the agent session as a prompt. Those are separate tickets; this one reads.

Hard parts, named up front

  • Huge diffs. An agent that rewrote 400 files produces a patch that must be virtualized, not rendered. This is the exact case the Pierre renderer exists for, and the reason Spike: Pierre's @pierre/diffs and @pierre/trees in flue #129 matters.
  • Renames and mode changes, submodules, and worktrees where the session cwd is not the repository root. git handles them; the UI has to not fall over when it does.
  • Same CSP and one-shiki rules as the viewer.

Notes

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestepicLarge feature. Decide and break down before building.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions