Files
kandev/docs/specs/ui/review-file-status.md
T
José Almeida e067e7a1f6 feat(web): show file statuses in review (#1683)
* feat(web): show file statuses in review

* fix(web): address review status feedback

* fix(web): deduplicate review sources

* fix(web): align review progress identities

* fix(web): guard review status labels

* fix(web): enforce file status exhaustiveness

* perf(web): index review progress sources

* fix(web): preserve files during status hydration

* fix(web): align multi-repo review progress
2026-07-15 12:54:43 +01:00

3.1 KiB

status, created, owner
status created owner
building 2026-07-14 kandev

Review File Status Cues

Why

Reviewers can see changed filenames in Review's file tree, but cannot tell whether a file was added, modified, deleted, or moved without opening its diff. This slows navigation and makes patchless changes, especially pure renames, easy to miss.

What

  • Every changed file in Review shows a persistent trailing status marker: green plus for added, amber dot for modified, rose minus for deleted, and purple arrow for moved/renamed.
  • Untracked files use the added visual language while retaining the accessible label Untracked.
  • The marker does not rely on color alone. Its accessible name and native title describe the status; a moved file may include its previous path when available.
  • The desktop marker occupies a fixed trailing column. At narrow sidebar widths, the filename truncates before the marker, stale warning, or comment count overlap.
  • Below the desktop breakpoint, where the file tree is hidden, the same status marker appears in each sticky diff header. No required cue depends on hover.
  • Review includes changed files even when they have no textual patch, including pure renames. Their diff body shows status-specific explanatory text instead of an indefinite loading message.
  • Existing explicit skip reasons for binary, oversized, truncated, or budget-exceeded diffs take precedence over generic status-specific text.
  • Existing file icons, tree hierarchy, filtering, review checkboxes, stale indicators, comment counts, source precedence, and multi-repository identity remain unchanged.

Scenarios

  • GIVEN added, modified, deleted, and renamed files, WHEN Review opens, THEN its desktop tree shows four distinct markers aligned at the trailing edge of their rows.
  • GIVEN an untracked file, WHEN Review opens, THEN it uses the added plus marker and its accessible name says Untracked.
  • GIVEN a pure rename with no textual patch, WHEN Review opens, THEN the file remains reviewable, uses the moved marker, and its body explains that the move has no textual changes.
  • GIVEN another changed file with no textual patch, WHEN its diff body renders, THEN Review shows status-appropriate empty-state text rather than Loading diff....
  • GIVEN a file with an explicit diff skip reason, WHEN its body renders, THEN the skip-reason message is shown instead of the generic status empty state.
  • GIVEN a 160 px Review sidebar and a long filename, WHEN the row renders, THEN the filename truncates while the status marker, stale warning, and comment count remain visible without overlap.
  • GIVEN a mobile viewport, WHEN the user reviews a changed file, THEN its sticky diff header exposes the status marker without horizontal page overflow.

Out of scope

  • Grouping or filtering Review files by status.
  • Replacing compact markers with visible A/M/D/R badges or filename tinting.
  • A new mobile file navigator.
  • Status animations.
  • Backend or API changes; Review consumes existing git and pull-request status metadata.