feat(nest-profiler): rework the home page into per-kind sidebar views - #187
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
fpasquet
force-pushed
the
feat/profiler-sidebar-navigation
branch
from
July 14, 2026 16:09
9fefe12 to
f363177
Compare
fpasquet
force-pushed
the
feat/profiler-sidebar-navigation
branch
from
July 14, 2026 17:49
c4cff14 to
41cd7b0
Compare
fpasquet
force-pushed
the
feat/profiler-sidebar-navigation
branch
from
July 14, 2026 18:23
41cd7b0 to
dc44181
Compare
fpasquet
force-pushed
the
feat/profiler-sidebar-navigation
branch
from
July 14, 2026 18:36
dc44181 to
2e52350
Compare
fpasquet
marked this pull request as ready for review
July 14, 2026 18:39
- adopt the detail page's two-column layout with a sticky left sidebar selected via `?view=` - give each list section (HTTP, GraphQL, Commands, RabbitMQ) its own page under a Profiling group - promote each global-scope collector panel (Config, Routes, Schemas) to its own sidebar view - badge every sidebar item: a section shows its unfiltered total, a global panel its `*Count` - add `GlobalPanelInfo.badge`; render only the active view (default: the HTTP catch-all section) - make the two-column layout responsive: stack on mobile, sticky two columns from `md` up - wrap wide UI tables in `overflow-x-auto` + `min-w` so they scroll on a narrow viewport (#184) - render an empty-state row on a list section that has no profiles - add a detail-page back link to the kind's list; drop the redundant All Profiles header link - apply the responsive layout identically to the profile detail page; document the navigation
fpasquet
force-pushed
the
feat/profiler-sidebar-navigation
branch
from
July 14, 2026 18:40
2e52350 to
8c59dc3
Compare
5 tasks
fpasquet
added a commit
that referenced
this pull request
Jul 15, 2026
…ckage (#195) Each entrypoint kind now defines failure itself, resolved from its own package's `error` option. A 404 is a bug for one team and an answer for another; a status means nothing to GraphQL or a CLI. core: - add `resolveProfileErrorClassifier`/`resolveEntryErrorClassifier`/`resolveErrorSeverity` - resolve layers in order, first decisive: `classify`, then `httpStatus`, then `exceptions` - make `httpStatus` decisive alone: a 404 also yields an exception, so reading both contradicts it - add `error` to `ProfilerModuleOptions`, governing the built-in `http` kind - add `isError`/`errorSeverity`/`hiddenFilters` to `ProfilerEntrypointType` - add `isErrorEntry`/`errorSeverity` to `TagConfig`; `error` is now severity-configurable - rewrite `errorRule` to own no criteria: it only applies each kind's and collector's verdict - add an `Exception` list filter, its options built from the values actually captured - render the exception `code` as a badge, so a filtered row shows what it was filtered on - rename the `With errors` checkbox to `Errors`; the query parameter is unchanged graphql: - add `error`; a 200 says nothing, so `extensions.code` decides — `INTERNAL_SERVER_ERROR` by default - add `code` to `ExceptionEntry`, read from `extensions.code` instead of the `stack` string - align the module on `ConfigurableModuleBuilder` like the others, gaining `forRootAsync` rabbitmq: - add `error`; a message has no status, so the default is that the handler threw commander: - keep the tag (non-zero exit) with no option; hide the `Errors` checkbox, redundant with `Status` example: - drop the artificial `/api/v1/error`: a rejected `POST /products` is a truer 400, and its exception-capture coverage moves onto that route - add `/api/v1/crash` for the 500 the Errors filter keeps docs: - add the "What counts as an error" guide, the API reference entries and the per-package options - fix what the #187 sidebar rework left behind: the screenshot script still isolated `<details>` blocks from the old home page, silently shooting the HTTP list in place of the Config, Routes and Schema panels — each is now its own `?view=` page - retire the `Type` filter from the docs; it no longer exists, kinds being sidebar views - regenerate every screenshot against the current UI
14 tasks
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.
Summary
Reworks the profiler home page (
GET /_profiler) into a two-column, sidebar-navigated layout — the same shell as the profile detail page — without adding the Summary dashboard (that lands separately in #186).?view=query param (plain links, no client JS, consistent with thescript-src 'self'CSP).?view=page under a Profiling group in the sidebar (defaulting to the HTTP catch-all); each renders only its own list, filters, pager and the process-heap trend.<details>; each is its own sidebar destination.*Countfield its data exposes, e.g.routeCount).GlobalPanelInfogains an optionalbadge.overflow-x-auto+min-w) instead of being clipped (fix: profile-list and panel tables are not horizontally scrollable on mobile #184).Behaviour-preserving: no Summary, no storage-index changes, no collector API changes — purely the navigation shell over data that already exists.
Related issue
Part of #146 (the navigation shell, extracted from the Summary work in #186). Closes #184 (mobile table scroll).
Checklist
majorchangeset with aBREAKING:noteBreaking changes
Additive only — the sidebar navigation replaces the inline global-panel
<details>; the same data and endpoints, reachable via?view=.