Skip to content

feat(autofix): Serve Autofix as an issue details tab - #124842

Draft
ryan953 wants to merge 1 commit into
masterfrom
ryan953/autofix-tab
Draft

ryan953 wants to merge 1 commit into
masterfrom
ryan953/autofix-tab

Conversation

@ryan953

@ryan953 ryan953 commented Sep 17, 2026

Copy link
Copy Markdown
Member

Autofix moves out of the Seer drawer and onto /issues/<id>/autofix/, behind organizations:autofix-page. The panel body itself is unchanged — SeerDrawerContent renders as-is; what changes is where it lives and how you get there.

Why this shape

Two earlier attempts made this a route beside :groupId/: #124676 (variant A) and #124753 (variant B), both now closed. A sibling route sits outside the issue details scaffolding, so each one had to re-create PageFiltersContainer, GroupIdProvider and IssueDetailsContextProvider by hand, and variant B still paid four extra requests on load to put an event graph on the page.

Registering the route among the issue tabs instead removes that problem rather than working around it. The page inherits the group header, event details header, page filters, sidebar and group/project context from the issue details route, and useGroupData() hands it the group and project with no extra request.

Inside IssueDetailsColumn the tab renders its own section in place of the event details one — the same chrome and tab navigation, minus the event details tour, whose copy is about stack traces and tags that this tab does not show. The navigation stays because it is the only way back out of the tab.

Getting there

Every "open Seer" entry point now resolves its destination through one helper (makeSeerLocation), so the issue stream badge, the inbox preview, the browser notification and the drawer opener all land on whichever surface the flag selects. Legacy ?seerDrawer=true links keep working: they reach the drawer opener and are forwarded to the tab. An Autofix entry also appears in the issue content dropdown when the flag is on.

Visiting the URL without the flag — or with gen-ai-features off, or hideAiFeatures set — redirects back to issue details, so a shared or bookmarked link does not dead-end.

Shared implementation

What the drawer used to own directly — running Autofix, the toolbar handlers, the GitHub permission warnings — moved into useSeerPanel and warnings.tsx so the drawer and the tab cannot drift. Auto-scroll deliberately stayed with the drawer: it needs a bounded scroll container, and the tab scrolls with the page. That is the one intentional behavior difference between the two surfaces, and the reason it is called out here rather than fixed: bounding a scroller inside GroupDetailsLayout would need the column's height model reworked, which is worth doing separately if the tab becomes the default.

Feature flag: organizations:autofix-page — already registered, so this PR is frontend-only.

Screenshots to follow; the tab needs a Seer-enabled org to render meaningfully.

Autofix moves out of the Seer drawer and onto `/issues/<id>/autofix/`, behind
`organizations:autofix-page`. The route is registered among the issue tabs
rather than beside them, so the page inherits the group header, event details
header, page filters, sidebar and group/project context from the issue details
route instead of standing them up again. Inside `IssueDetailsColumn` it renders
its own section in place of the event details one: the same chrome and tab
navigation, minus the event details tour, whose copy is about stack traces and
tags that this tab does not show.

Every existing "open Seer" entry point now resolves its destination through one
helper, so the issue stream badge, the inbox preview, the browser notification
and the drawer opener all land on whichever surface the flag selects. Legacy
`?seerDrawer=true` links still work: they reach the drawer opener and are
forwarded to the tab.

The panel body itself is untouched. What the drawer used to own directly —
running Autofix, the toolbar handlers, the permission warnings — moved into
`useSeerPanel` and `warnings.tsx` so both surfaces share one implementation.
Auto-scroll deliberately stayed with the drawer: it needs a bounded scroll
container, and the tab scrolls with the page.

Two earlier attempts (#124676, #124753) made this a sibling route and had to
re-create `PageFiltersContainer`, `GroupIdProvider` and
`IssueDetailsContextProvider` by hand; both are closed.

Feature flag: `organizations:autofix-page` (already registered).
@github-actions github-actions Bot added the Scope: Frontend Automatically applied to PRs that change frontend components label Sep 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Scope: Frontend Automatically applied to PRs that change frontend components

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant