Skip to content

ref(nav): migrate breadcrumbs to TopBar.Title#112672

Merged
natemoo-re merged 16 commits intomasterfrom
nm/nav/topbar-breadcrumbs
Apr 14, 2026
Merged

ref(nav): migrate breadcrumbs to TopBar.Title#112672
natemoo-re merged 16 commits intomasterfrom
nm/nav/topbar-breadcrumbs

Conversation

@natemoo-re
Copy link
Copy Markdown
Member

When the page-frame feature is active, we need to render detail page breadcrumbs via <TopBar.Slot name="title"> so they appear in the sticky TopBar.

Closes DE-1081, DE-1086, DE-1087, DE-1093, DE-1089, DE-1092, DE-1091, DE-1088, DE-1090

natemoo-re and others added 7 commits April 10, 2026 10:43
When the page-frame feature is active, render the issue detail
breadcrumbs via TopBar.Slot name="title" so they appear in the
sticky TopBar instead of the page header below it.

Refs DE-1086
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
When the page-frame feature is active, render trace view breadcrumbs
via TopBar.Slot name="title". This applies to both the Traces route
(/traces/trace/:traceId) and the Logs trace route (/logs/trace/:traceId)
since both use TraceMetaDataHeader — the breadcrumb content adapts via
the source query param.

Refs DE-1087, DE-1088
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
When the page-frame feature is active, render the saved-query
breadcrumb (Traces > Saved Query) via TopBar.Slot name="title"
instead of Layout.Title, which only surfaced the query name without
navigation context. The plain title (no saved query) is also moved to
an explicit TopBar.Slot to avoid a duplicate registration.

Refs DE-1089
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
When the page-frame feature is active, render the Dashboards breadcrumb
and the inline-editable DashboardTitle together inside TopBar.Slot
name="title". In the legacy path, keep the full breadcrumb trail
(Dashboards > name) and Layout.Title as before.

Refs DE-1090
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
When the page-frame feature is active, render the detector breadcrumbs
via TopBar.Slot name="title" on both steps of the new monitor flow:
step 1 (type selection in new.tsx) and step 2 (settings configuration
in newDetectorLayout.tsx).

Refs DE-1091
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
When the page-frame feature is active, render the detector detail
breadcrumbs (Monitors > type > name) via TopBar.Slot name="title".
The breadcrumb already includes the detector name as the last crumb,
so Layout.Title is omitted in the page-frame path.

Refs DE-1092
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
When the page-frame feature is active, render the replay breadcrumbs
via TopBar.Slot name="title". The actions slot was already migrated;
this adds the missing title/breadcrumb context.

Refs DE-1093
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions github-actions bot added the Scope: Frontend Automatically applied to PRs that change frontend components label Apr 10, 2026
@natemoo-re natemoo-re requested a review from a team April 13, 2026 20:38
@natemoo-re natemoo-re marked this pull request as ready for review April 13, 2026 20:38
@natemoo-re natemoo-re requested a review from a team as a code owner April 13, 2026 20:38
Comment thread static/app/views/explore/spans/content.tsx
Comment thread static/app/views/explore/spans/content.tsx Outdated
cursoragent and others added 2 commits April 13, 2026 21:07
… non-page-frame path

The non-page-frame ExploreBreadcrumb on the spans page was missing the savedQueryName prop, causing it to always render 'Saved Query' as the breadcrumb label instead of the actual query name. This brings it into parity with the page-frame path and all other explore pages (logs, metrics, replays).

Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>
…frame path

When the page-frame feature is enabled, the saved query view was missing the PageHeadingQuestionTooltip that provides contextual help and a documentation link. This brings it into parity with the non-saved-query view which correctly includes the tooltip.

Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>
Comment thread static/app/views/dashboards/detail.tsx
When hasPageFrameFeature is true, both children of Layout.Header are TopBar.Slot components which render null in place via portals. Without the unified prop, Layout.Header still applies border-bottom and padding, creating an empty visible header bar. Setting unified={hasPageFrameFeature} removes the border and padding when the feature is active.

Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>
Comment thread static/app/views/dashboards/detail.tsx
Copy link
Copy Markdown
Contributor

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 6b41450. Configure here.

}
crumbs.push({
label: t('Saved Query'),
label: savedQueryName ?? t('Saved Query'),
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nullish coalescing allows empty string breadcrumb label

Low Severity

The ?? (nullish coalescing) operator only guards against null/undefined, not empty strings. If savedQueryName is "", the breadcrumb label becomes an empty string instead of falling back to t('Saved Query'). This can happen because the calling sites pass savedQuery?.name which could be an empty string when a saved query exists but has no name. The || operator would correctly handle this case by also falling back on falsy values like "".

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 6b41450. Configure here.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Edge case

@natemoo-re natemoo-re enabled auto-merge (squash) April 14, 2026 14:43
@sentry
Copy link
Copy Markdown
Contributor

sentry bot commented Apr 14, 2026

Sentry Snapshot Testing

Name Added Removed Modified Renamed Unchanged Status
sentry-frontend
sentry-frontend
0 0 0 0 204 ✅ Unchanged

@natemoo-re natemoo-re merged commit ba5329c into master Apr 14, 2026
64 checks passed
@natemoo-re natemoo-re deleted the nm/nav/topbar-breadcrumbs branch April 14, 2026 14:52
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.

3 participants