🤖 feat: immersive review assisted-mode badge + agent status bar#3432
🤖 feat: immersive review assisted-mode badge + agent status bar#3432ammar-agent wants to merge 4 commits into
Conversation
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 74833a4075
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review Addressed: added |
|
Codex Review: Didn't find any major issues. Hooray! ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
@codex review Pushed two follow-ups:
|
|
Codex Review: Didn't find any major issues. 👍 ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
@codex review Addressed review feedback:
Note: bumped the storybook snapshot budget 303 → 307 to cover the two new immersive stories. |
|
Codex Review: Didn't find any major issues. Already looking forward to the next diff. ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
@codex review Reverted the snapshot-budget bump (kept |
|
Codex Review: Didn't find any major issues. Delightful! ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Surface assisted-filter mode and chat status inside full-screen immersive review.
Read todos + streaming flags from a single getWorkspaceState subscription (matching PinnedTodoList) instead of a separate useOptionalWorkspaceSidebarState hook, which other test files globally mock.module and which caused CI-only failures. Rewrite the test to use installDom + spyOn and assert collapse persistence behaviorally via remount.
- Move the immersive assisted-review comment banner inside the diff column so it spans only the diff width, not across the minimap + notes sidebar. - Add ImmersiveWithAgentStatusBar story that seeds the WorkspaceStore so the top TODO + streaming status bar renders with real state (flash-free).
568061b to
df29340
Compare
|
@codex review Rebased onto latest |
|
Codex Review: Didn't find any major issues. Can't wait for the next one! ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Summary
Two gaps in full-screen Immersive Review are fixed: there's now a clear indicator when the Assisted filter is active, and a top status bar that surfaces the agent's TODO plan (vertical) alongside live chat/streaming status so reviewers waiting on the agent keep their signal without leaving review.
Background
Immersive review renders into an opaque overlay (
#review-immersive-root,absolute inset-0 z-50) that covers the normal review panel.ReviewControls, which is hidden behind that overlay. Once immersive, the diff could be filtered to agent-flagged hunks with zero on-screen indication. (The existing per-hunk assisted banner only means "this hunk was flagged" — not "the worklist filter is on".)Implementation
Issue 1 — Assisted-mode badge
ReviewPanelnow threadsassistedOnly+assistedCount+assistedUnreadCountinto the immersive portal (previously only the per-hunkassistedHunkIds/comments were passed).ImmersiveReviewViewrenders a header badge (Sparkles+--color-review-accent+unread/totalviacounter-nums) only whileassistedOnlyis on. Kept visually/semantically distinct from the per-hunk assisted banner.Issue 2 — Agent status bar (
ImmersiveReviewAgentStatusBar.tsx, mounted between header and the per-hunk banner)<TodoList>, collapsible with per-workspace persisted expand state (newgetImmersiveReviewAgentBarExpandedKey), plus a summary line ("TODO · 2 in progress · 3 pending").Starting…/Streaming…/ a prominent "Mux has a question".useWorkspaceStreamingStatusPhase(150ms), so starting↔streaming handoffs don't blink.WorkspaceStore(no skeleton needed); subscriptions live in this leaf so todo/stream churn doesn't re-render the large diff tree.nullin tests/stories rather than throwing).Banner scoping — the per-hunk assisted comment banner now lives inside the diff column wrapper (not above the whole body), so it spans only the diff width and lines up with the code it refers to instead of stretching across the minimap + notes sidebar.
Validation
ImmersiveReviewAgentStatusBar.test.tsx(plan render, idle→null, streaming/starting chips, awaiting-question precedence, collapse persistence) and an assisted-badge gating test inImmersiveReviewView.test.tsx.ImmersiveWithAssistedMode(header badge) andImmersiveWithAgentStatusBar(TODO plan + live streaming chip; seeds theWorkspaceStoreso the bar has real state).main(current limit 250); the two new immersive stories fit within budget (249/250), so no budget change or story compression was needed.Risks
Low. The status bar is an additive, self-subscribed leaf that returns
nullwhen there's nothing to show, so it can't reserve review height or cascade re-renders into the diff. The only change to existing render paths is the new header badge (gated onassistedOnly), three new optional props threaded fromReviewPanel, and moving the assisted banner inside the diff column.Generated with
mux• Model:anthropic:claude-opus-4-8• Thinking:xhigh• Cost:$42.40