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:
- !252481 (merged) - feature flag, toggle, empty container
- !252997 - layout and merge readiness
- !252998 (this MR) - reviewers panel
- !252999 - description, labels and milestone
Detailed context for AI agents
Reviewer state
From mergeRequestInteraction on the existing reviewers connection:
approved: true- approvedreviewed: trueand 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.