feat(nest-profiler): rework the profiler UI into sidebar views with a configurable Summary - #186
Draft
fpasquet wants to merge 1 commit into
Draft
feat(nest-profiler): rework the profiler UI into sidebar views with a configurable Summary#186fpasquet wants to merge 1 commit into
fpasquet wants to merge 1 commit into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
14 tasks
fpasquet
force-pushed
the
feat/profiler-ui-summary
branch
from
July 13, 2026 20:49
8feb2f8 to
65b4d0f
Compare
fpasquet
force-pushed
the
feat/profiler-ui-summary
branch
from
July 13, 2026 20:59
65b4d0f to
0246529
Compare
… configurable Summary - rework the home page into the detail page's two-column layout with a sticky sidebar of views - select the active view server-side from a `?view=` param (plain links, no client JS, CSP-safe) - promote each global-scope collector panel to a lazily-built sidebar view - add a Summary dashboard as the default view, from a bounded index-only `querySummaries` read - report requests, median/p95/p99 latency, error rate, and method/status/kind distributions - add a throughput/latency time-series, a process-heap trend, and N+1-to-endpoint correlation - break down each performance issue by endpoint, each deep-linking to the profile's relevant tab - let any collector (built-in, package or custom) contribute a tile or table via `buildSummary` - ship Database (query count, average time, linked slowest-queries) and Cache (hit rate) sections - make tables a configurable top-N (default 5, "View all" links) with a time column on each - make failure qualification configurable via `summary.error` (status bound, exceptions, classifier) - keep the default of 5xx-or-exception so 4xx like 401/404 are not counted - add `route`/`heapUsed` to the summary index and a JSON export at `GET /_profiler/summary.json` - document the Summary view and options, add a changeset, and align the example-api e2e wording
fpasquet
force-pushed
the
feat/profiler-ui-summary
branch
from
July 13, 2026 21:13
0246529 to
5c94598
Compare
5 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 navigable workspace and adds the missing Summary dashboard, implementing epic #146 in full.?view=query param (plain links, no client JS, consistent with thescript-src 'self'CSP).SummaryServicefrom a single bounded, index-onlyquerySummariesread (never a full-store scan), memoized ~30s. Cards and rows link through to the Profiling filters.GET /_profiler/summary.json.buildSummary(profiles, context?), returning aCollectorSummarySectionwith tiles and/or a custom EJS table. Contributions are isolated and priority-ordered. The query collectors ship a Database section (query count, average query time, a linked slowest-queries table) and@eleven-labs/nest-profiler-cacheships a Cache section (hit rate, hits, misses).summarymodule option sets the aggregation window (windowSize), cache TTL (cacheTtl), the per-table row cap (topN, default 5 — tables are labelled "Top N …" with a "View all →" link and show a time column), and how a failure is qualified (error). Theerrordefault stays 5xx-or-exception (so 4xx like 401/404 are not counted); it can override the HTTP status bound, toggle whether exceptions count, and add aclassifypredicate to qualify kinds without a status code (commands, GraphQL, RabbitMQ) from their own tags/attributes.method+ URL); non-HTTP kinds (CLI commands, RabbitMQ messages, GraphQL operations) group by their own descriptor, so they get a meaningful label (CLI / RMQ / GQL) instead of a blank row.ProfileSummarygains an optionalrouteandheapUsed; adapters gain an optionalquerySummaries(query)returning only lightweight summary rows (native on file + SQLite, in-memory fallback). New public exports includeSummaryService,computeProfilerSummary,resolveErrorClassifier,defaultIsError, and theProfilerSummary/CollectorSummarySection/SummaryContext/ProfilerErrorClassification/ProfileErrorInfotypes.Related issue
Closes #146
Checklist
majorchangeset with aBREAKING:noteBreaking changes
Additive only — new optional fields/methods, options and exports; no public API removed. SQLite gains
route/heap_usedcolumns via idempotent migrations. The collectorbuildSummarygains an optionalcontextargument (backward-compatible).