feat(seer): Autofix overview sections driven by issue.autofix_state#120294
Draft
NicoHinderling wants to merge 37 commits into
Draft
feat(seer): Autofix overview sections driven by issue.autofix_state#120294NicoHinderling wants to merge 37 commits into
NicoHinderling wants to merge 37 commits into
Conversation
The overview cards opened with the issue-level line, which says nothing about the run. Replace it with a two-glyph unit: a pie fill for how far through the pipeline the run got and a step icon (drawer v3 vocabulary) for which stage that is, tinted by run status — pulsing accent while running, warning when awaiting input, danger on error, all-success with a merge glyph once the PR merged. A shared tooltip carries the step checklist. The level moves into the Full analysis identity strip. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A quarter per Seer stage now fills the circle at PR opened; the checkmark is reserved for the merged PR, and the checklist always shows Merged as the finale. Also opens up the header spacing so the glyph pair reads as one unit apart from the title. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The pie icons only come in quarters, so an unmerged PR rendered a full circle — reading as done with the merge step still outstanding. Swap the glyph for a ProgressRing filled a fifth per step (4/5 at PR opened); the checkmark stays reserved for the merged PR. The ring color resolves through the same variant mapping the icons use. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The ring plus its tooltip checklist carry the step on their own; the extra icon read as clutter. The processing pulse moves onto the ring, and the step metadata slims down to labels. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The Full analysis disclosure and the provenance/vitals run lived in a bordered footer, adding a full row of vertical space per card. They now sit as a quiet subline directly under the title — tight xs gap to the header so they read as one title block, md rhythm to the body kept, no divider needed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The events/updated run now sits as a quiet subline directly under the title (ring nudged to center on the title's first line). The Full analysis trigger anchors the bottom row with the project badge inline at the right, and the analysis itself expands as a full-width block so its two-column grid gets the whole card. The core Disclosure gave way to a small controlled toggle since trigger and panel now live in different rows. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The ring now vertically centers against the title + vitals subline instead of hanging off the first line, and grows to 18px so it reads at a glance. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The Full analysis trigger now stretches across the card's tail so the whole row is a click target (label pinned left) and steps up from the zero-size button font to xs. The project badge links to its project page — ProjectBadge's canonical destination. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The ring now centers a small status-colored digit — steps remaining until the fix is merged — and its tooltip leads with the verdict: "1 step until issue fix", or "Issue fixed" once merged. Untouched rings stay empty rather than shouting a 5. Ring nudged to 20px so the digit breathes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Reuses the drawer's FileDiffViewer against the structured patches the row builder already had in hand. Strictly gated — at most 2 files, 25 changed lines, 60 rendered hunk lines — and each qualifying file shows as a collapsed header (+N −N, path) that expands the highlighted diff in place, aligned with the body's text column. Oversized diffs keep today's pill + hover file list. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The canonical ProjectPageFilter (inside PageFiltersContainer), first in the filter toolbar ahead of the client-side selects. The selection replaces useAutofixIssues' hardcoded project:-1 on the issues request and the query gates on page-filters readiness; the runs/state fan-out follows the filtered group ids, so the whole page scopes with it. Changing projects resets the cursor. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The page title moves into the app's slim top bar via Layout.Title with the description as its info tip, matching the issue stream pages. The filters become an unboxed first row of the content (project selector + the client-side selects), stat cards follow, and the bordered toolbar container goes away. The 85% content cap and the 90ch caps inside cards are removed — neither came from the design system. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Paths have no break points, so long ones overflowed the tooltip's max width and pushed the +/- counts past its clipped edge. Truncate paths from the left (rtl, like the diff viewer's file header) so the filename stays visible and the counts stay inside. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The ring's arc now colors by pipeline stage instead of run status — a single accent-scale ramp (gray → deepening blue) so arc length and intensity both say how far the run got, no legend needed. Urgency stays on the action button and the tooltip's status word; success green remains reserved for the merged checkmark. The steps-remaining digit follows the ramp. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Red when only the root cause exists, amber with a plan, greening as code and the PR land — matching the steps-until-fix framing so the ring reads instantly. Replaces the too-subtle gray-to-blue ramp. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Heat now builds toward the finish: quiet gray at root cause, amber as a plan and code land, hottest at PR-opened where the human's review is the one step left, green checkmark once merged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Audited against the stream rows and details page: the card ran 1-2px small in three places. Title goes lg (16px, the feed's row-title size), the vitals subline goes sm (12px, the feed's metadata line), and fix/analysis prose goes md (14px, details-page body). Uppercase eyebrow labels stay xs per the codebase's label convention. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The heat ramp's red/amber read as "something is wrong" rather than "almost done". Back to gray-to-deepening-blurple as the run advances, keeping alarm colors reserved for the action buttons and the merged checkmark green as the terminal. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The four stat cards and their whole apparatus go: the StatCard component, the ?quick= URL filter (the cards were its only entry point), the per-page counts, and the now-unused imports. The Needs attention select covers the same filtering. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
With ?id= present the overview becomes a single-card permalink: the issue is fetched by group id (the endpoint pins exact ids in that mode and ignores list filters/pagination, and project scoping is widened so a stale selection can't hide the link's target), the card renders with Full analysis and inline diffs expanded, list chrome and pagination hide, and an All issues link clears the param while preserving the rest of the URL. No card affordance links here — the param is for externally shared links. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The FixabilityTag component, the row's fixabilityScore field, its derivation from the issue serializer, and the spec assertions all go with it. The identity strip keeps level + short id. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
When no code was drafted, the reviewer notes ARE the human's to-do — they now render as their own block under the Diagnosis instead of hiding in the collapsed analysis. Same anatomy as its siblings, but in the accent voice with an accent left edge (the one block asking the reader to act) and the markdown bullets restyled into an arrow to-do rail. With a drafted fix, the notes stay in the details as the Review checklist as before. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The accent edge + accent label + custom arrow markers read as too much, and the marker CSS fought the markdown renderer's own bullets (double markers). Now the same muted anatomy as the Diagnosis block with plain markdown bullets. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The header actions (Review PR / Open PR / Generate code / View run / Retry / PR link) step up from the 24px zero size to sm (32px, 14px font) — the same size as this page's filter triggers and the standard in-content action size. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The reviewer-notes prompt suggested it as a step, so every list ended with one — but that action IS the card's Generate code button. The prompt now forbids it and asks for what the fix should do instead. Prompt edits self-invalidate the answer cache, so lists regenerate on next load. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Only the highest-leverage steps make the card. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
updateQuery now clears the pagination cursor — every caller is a filter or sort change where a stale page makes no sense (the project filter already did this via resetParamsOnChange). The spec drops two overlapping tests: the running-indicator check folds into the triage- ordering test (whose third card is already an in-flight run) and the bullet-normalization check folds into the no-code-drafted test; a half-wrong comment about the inline-differ gate now names both disqualifiers. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Cards now live under sticky, collapsible sections — the triage tiers made visible: Needs your input, Awaiting your review, Code changes ready, Ready to generate code, Errored, Needs investigation (settled diagnosis-only runs whose next steps are manual — no pipeline button does not mean nothing to do), Running, Merged. Headers (icon + label + count) park below the top bar while their group scrolls and are pushed off by the next section; collapse state persists per user in localStorage; empty groups don't render. The Sort select now orders within groups (Needs you first retired — the group order carries it, so getTriageRank goes too). Focus mode stays ungrouped. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
One quiet link-variant button on the filter row's right (beside Clear all): Collapse all folds every visible group, then reads Expand all to undo. State flows through the same persisted collapsed-groups list. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
IconChevron isDouble — up while collapsing is on offer, down once everything is folded and the button reads Expand all. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The card is now one continuous document in thought order — Root cause (one sentence, tightened prompt) → Proposed fix → Next steps — all in the shared eyebrow+prose voice with no boxes, no More-details toggle, and lg air between blocks. The Diagnosis/summary question is removed (it overlapped the root cause) and the reviewer notes collapse to a single next-step sentence that only exists on fix-less cards — the review-checklist arm is gone. The CTA anchors the card's bottom left, inline with the level/short-id/project provenance on the right; the header keeps just the diff pill. The step ring is retired entirely (stepIndicator.tsx deleted): its steps-until-fix checklist now hovers on the group headers' icons, where the stage is shared by every card in the section. The now-dead placement plumbing goes too. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Add a card/table segmented control to the overview toolbar, persisted in local storage. Table mode renders each issue as a compact, scannable row via the new IssueTableRow, while card mode keeps the full analysis face. Extract the shared primary-action logic (running/merged/review-PR/view-run) into IssuePrimaryAction so both renderings stay in sync.
Design spec for moving the overview page's section classification server-side via a new issue.autofix_state search key backed by SEER_* activity rows and the seer-run PR join, replacing the per-issue Seer fan-out.
Two-part plan (backend search key off master; frontend section rework as one commit) from the approved spec. Drops the SeerAgentRun index migration: the group FK already carries db_index=True.
Each section is now its own issue-stream query against the new search key with true counts from X-Hits, replacing the client-side classification that required two Seer round trips per issue. Card content (prose, diffs, PR state) loads viewport-lazily per card. Removes the Outcome and Needs-attention filters and page-level pagination; sections fetch up to 100 issues each. Requires the issue.autofix_state backend PR (#120293) to land first.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Forked from the
jc-autofix-step-indicatorWIP (#120163) so the section-classification rework can iterate independently; the shared branch continues untouched.On top of the existing autofix overview page work, this changes how the page's five sections (Awaiting your review / Code changes ready / Ready to generate code / Needs investigation / Merged) are populated:
issue.autofix_statesearch key, with true per-section counts from theX-Hitsheader — replacing the client-side classification that fetched full run state from Seer per issue (2 Seer round trips each) and could only count the current page of 10.LazyRender, so off-screen cards cost nothing.getStatusGroup/buildOverviewRowsclient classification deleted; the card/table view toggle is unaffected.Depends on the backend search key landing first: #120293. Until it does, the flag-gated page renders its error state.
Design doc:
docs/superpowers/specs/2026-07-21-autofix-overview-activity-sections-design.md(included in this branch).https://claude.ai/code/session_01QwraWVnfkhnijryUdzYzm4