Releases: eladser/AspNetDebugDashboard
Release list
v2.2.0 - AspNetDebugDashboard is now a suite
The dashboard becomes the hub of a local-first dev-tool suite. Existing setup is unchanged: AddDebugDashboard/UseDebugDashboard, routes, and options are the same, so upgrading from 2.1.x needs no code changes.
New packages
- AspNetMailbox (0.1.0) - captures outbound email in-process and previews it at
/_mailbox(HTML/text/headers/raw/attachments, light or dark preview,.emldownload). In-process SMTP sink on port 2525. - AspNetFlags (0.1.0) - feature flags with a toggle UI at
/_flags. Flags auto-discover when code checks them; add, delete, and filter from the page. - AspNetJobs (0.1.0) - in-process background jobs with a live inspector at
/_jobs(status, timing, stack traces, filter, search, per-status counts). - AspNetVitals (0.1.0) - live process vitals at
/_vitals(memory sparkline, CPU, GC, threads, uptime, runtime detail) plus any registered health checks. - AspNetDebugDashboard.Suite (1.0.0) - the small shared contract behind the common sidebar.
Integration
- A shared sidebar across the dashboard and every installed tool. A tool installed on its own shows no sidebar.
- AspNetDebugDashboard.Mcp 2.2.0 adds
list_feature_flags,recent_jobs,app_vitals, andrecent_mailso an agent can read the rest of the suite.
Also
- Packages are source-linked and deterministic, and ship
.snupkgsymbols. - Accessibility: every page honors
prefers-reduced-motion, has a favicon, and labels its icon-only controls.
v2.1.1
v2.1.0
Two additive features. Existing setup is unchanged, so upgrading from 2.0 needs no code changes.
OpenTelemetry tracing
Captured requests and queries are emitted as spans on an ActivitySource named AspNetDebugDashboard. Add that source to your tracer and they flow to Aspire or any OTLP backend, alongside what the dashboard stores locally:
builder.Services.AddOpenTelemetry()
.WithTracing(t => t.AddSource("AspNetDebugDashboard").AddOtlpExporter());The spans carry the request id, status, SQL text, and timing, back-dated to match the dashboard. They cost nothing until you add the source, so the default is fine to leave on. Turn it off with EmitActivities = false. See docs/OPENTELEMETRY.md.
MCP server
A new dotnet tool, AspNetDebugDashboard.Mcp, runs an MCP server over the dashboard's REST API so a coding agent can read recent requests, the SQL a request ran, recent failures, and performance numbers while it works on your app.
dotnet tool install --global AspNetDebugDashboard.McpEight read-only tools (recent requests, a request's SQL and logs, recent queries/exceptions/logs, performance, search). Setup in src/AspNetDebugDashboard.Mcp/README.md.
v2.0.0
The dashboard was rebuilt from scratch and the package now targets .NET 8, 9, and 10. Routes, API endpoints, and public extension methods are unchanged — upgrading from 1.x needs no code changes.
New dashboard
The old UI loaded React dev builds, Babel, Tailwind, and Font Awesome from CDNs at runtime and only rendered counters. The new one is a single self-contained HTML file embedded in the assembly (zero external requests, works offline) with:
- Request, query, log, and exception tables with sorting, filter chips (failed only / slow only), and duration bars
- Tabbed request detail: Summary, Headers, Request, Response, SQL, Logs — plus copy-as-cURL
- SQL syntax highlighting, parameter capture, and an N+1 warning when one request runs the same query 3+ times
- A Performance page: req/min, avg, median, P95/P99, error rate, slowest endpoints over the last hour
- Global search (Ctrl+K) across all entry types, with cross-links from any query/log/exception to its parent request
- Keyboard navigation: j/k rows, Enter open, / filter, Esc close
- Tab deep-linking (/_debug#requests)
Fixed
- The EF Core interceptor injected a tracking comment into
DbCommand.CommandTextand rewrote it after execution, corrupting the SQL sent to the database and crashing SQLite ("an open reader is associated with this command"). It now useseventData.Durationand never touches the command. - Requests always stored empty
SqlQueries/Logslists — the middleware never registered requests for correlation, so nothing the interceptor orIDebugLoggercaptured was attached. Request entries also now carryUrl,QueryString,Protocol, andIsHttps. - The requests list ignored the
searchparameter, and theisSuccessful,isSlowQuery,minExecutionTime, andrequestIdfilters were declared but never applied.
Packaging
- Multi-targets net8.0 / net9.0 / net10.0; EF Core dependencies follow the target framework so net8 consumers aren't forced onto EF 9+
- Package icon, rewritten README with full install and usage docs, demo GIF
- CI rebuilds the dashboard frontend and tests on all three runtimes
v1.0.0
Full Changelog: https://github.com/eladser/AspNetDebugDashboard/commits/v1.0.0