Skip to content

app: Briefing tab — intent, instruments, findings, and visual recap as the review's front page#28

Merged
alejandro-nexcade merged 1 commit into
mainfrom
alejandro/briefing-tab
Jul 3, 2026
Merged

app: Briefing tab — intent, instruments, findings, and visual recap as the review's front page#28
alejandro-nexcade merged 1 commit into
mainfrom
alejandro/briefing-tab

Conversation

@alejandro-nexcade

Copy link
Copy Markdown
Collaborator

What

PR 4/7 of the overnight UX program (Track A centerpiece — cockpit-docs/OVERNIGHT_UX_PLAN.md). Stacked on #27.

  • New Briefing tab, first in the review workspace, default landing while fresh (intent/findings present ⇒ they describe the current head, since refresh clears head-anchored annotations). Landing decision is a pure tested function; pending-permission and Dispatched auto-switches keep precedence; background review refreshes never yank the user off their tab (guarded by PR identity).
  • Content per mockup A1: IntentHero (AgentCallout writ large, sha provenance), InstrumentRow (CI / size / risk / tests / files / severity chips), BriefingFindings (severity-ranked, full rationale, Jump), RecapView (scenes-before-prose + stale regenerate nudge + safe Markdown).
  • Excalidraw viewer: @excalidraw/excalidraw in an isolated ~1.1 MB lazy chunk (entry bundle unchanged, zero CDN refs), read-only, error-boundary + parse-fallback, fonts self-hosted under public/excalidraw/ (480 KB, CJK excluded → system fallback).
  • Cross-tab Jump: pendingDiffJump store contract (nonce-keyed, PR-scoped, consumed once) feeding DiffView's existing reveal+flash — PR 5 and PR 7 reuse it.
  • Components deliberately extracted for reuse by the board preview rail (PR 7).

Verified

tsc clean · vitest 313 (20 new) · vite build with chunk isolation verified (no esm.sh/static Excalidraw refs in entry). Frontend-only; Diff-tab bands untouched (they move in PR 5). Reviewer pass: SHIP, no blockers.

🤖 Generated with Claude Code

@LifeLex LifeLex force-pushed the alejandro/recap-contract branch from 10dae8b to e7d7dd0 Compare July 3, 2026 08:35
@alejandro-nexcade alejandro-nexcade changed the base branch from alejandro/recap-contract to main July 3, 2026 08:37
… recap

Add a Briefing tab as the review workspace's first tab and default landing
while a review is fresh (a distilled intent or findings for the current head).
It renders, top to bottom: the agent's read (IntentHero over AgentCallout), a
curated instrument row of deterministic signals, the severity-ranked findings
with jump-to-diff, and the visual recap (Excalidraw scenes + MDX). An empty
review offers to run the advisory pre-review; a stale recap shows an amber
regenerate nudge.

- initialReviewTab pure fn + recap staleness / severity-sort / scene-guard
  helpers, each unit-tested.
- Store: recaps map + fetchRecap (best-effort), pendingDiffJump + requestDiffJump
  bridging a Briefing "Jump" into DiffView's existing reveal machinery.
- Excalidraw lazy-loaded (React.lazy) in its own chunk; fonts self-hosted under
  public/excalidraw so the viewer renders offline (no esm.sh CDN fetch).
- App refetches the recap on agent-completed (pre-review regenerates it without
  moving the head).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@LifeLex LifeLex force-pushed the alejandro/briefing-tab branch from d6acce6 to 4b79f0d Compare July 3, 2026 08:37
@alejandro-nexcade alejandro-nexcade merged commit 4758f7b into main Jul 3, 2026
2 checks passed
@LifeLex LifeLex deleted the alejandro/briefing-tab branch July 3, 2026 08:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants