Skip to content

Releases: eladser/AspNetDebugDashboard

v2.2.0 - AspNetDebugDashboard is now a suite

Choose a tag to compare

@eladser eladser released this 17 Jun 11:40
f0504d6

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, .eml download). 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, and recent_mail so an agent can read the rest of the suite.

Also

  • Packages are source-linked and deterministic, and ship .snupkg symbols.
  • Accessibility: every page honors prefers-reduced-motion, has a favicon, and labels its icon-only controls.

v2.1.1

Choose a tag to compare

@eladser eladser released this 14 Jun 16:31
4313998

Fixes the README images (banner, demo gif, screenshots) not rendering on the NuGet listing. They used relative paths and raw HTML, which NuGet doesn't resolve; they now use absolute URLs. No code changes from 2.1.0.

v2.1.0

Choose a tag to compare

@eladser eladser released this 14 Jun 16:22
eff6550

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.Mcp

Eight read-only tools (recent requests, a request's SQL and logs, recent queries/exceptions/logs, performance, search). Setup in src/AspNetDebugDashboard.Mcp/README.md.

Closes #6, closes #7.

v2.0.0

Choose a tag to compare

@eladser eladser released this 11 Jun 21:00
9bec207

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.CommandText and rewrote it after execution, corrupting the SQL sent to the database and crashing SQLite ("an open reader is associated with this command"). It now uses eventData.Duration and never touches the command.
  • Requests always stored empty SqlQueries/Logs lists — the middleware never registered requests for correlation, so nothing the interceptor or IDebugLogger captured was attached. Request entries also now carry Url, QueryString, Protocol, and IsHttps.
  • The requests list ignored the search parameter, and the isSuccessful, isSlowQuery, minExecutionTime, and requestId filters 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

Choose a tag to compare

@eladser eladser released this 08 Jul 11:00