Draft: Add a reviewers panel to the replacement MR overview

Third of four. Adds the sidebar column and fills it with the reviewers of the merge request: avatar, name, and whether each one has approved, commented or not looked yet, with an approved count in the card header.

The hero also starts naming the current user when they are a reviewer who has not approved, since that is the one blocker they can clear themselves.

Stacked chain, each MR targets the one above it:

Detailed context for AI agents

Reviewer state

From mergeRequestInteraction on the existing reviewers connection:

  • approved: true - approved
  • reviewed: true and not approved - commented
  • neither - awaiting

REVIEWER_STATUS in app.vue maps those three to an icon, colour and label. The query gains fields but no new type.

Hero change

isBlockingReviewer is true when the current user (window.gon.current_username) is a reviewer whose state is not approved. When it is true the hero title changes to name their review as the blocker and a "Viewing as reviewer" badge appears. The author variant of that badge lands in part 4, along with the author field it needs.

Layout

This MR introduces the two-column grid, 1fr 356px with align-items: start, so the main column from part 2 keeps its width and the sidebar sits alongside it.

Verification

  • spec/frontend/merge_requests/ai_overview/components/app_spec.js - 12 examples, passing. Gains reviewer rows with their interaction state, the approved count, the no-reviewers empty state, and the blocking-reviewer hero title and badge.
  • Existing readiness and feature specs still pass unchanged.
  • Prettier and eslint clean.
Edited by Marc Shaw

Merge request reports

Loading
Loading