Skip to content

feat!: release DebugProbe 2.0 with .NET 10 and improved capture reliability - #170

Merged
georgidhristov merged 10 commits into
mainfrom
develop
Nov 2, 2026
Merged

georgidhristov merged 10 commits into
mainfrom
develop

Conversation

@georgidhristov

Copy link
Copy Markdown
Collaborator

DebugProbe.AspNetCore 2.0.0

Major release targeting .NET 10, with simpler configuration, more reliable capture, and safer concurrent storage.

Platform and Dependencies

  • Target .NET 10 across the library, tests, sample application, and CI.
  • Update SourceLink to resolve the vulnerable Microsoft.Build.Tasks.Git dependency.
  • Migrate tests to xUnit v3 while preserving dotnet test, VSTest, and coverage support.

Configuration

  • Rename options for clarity:
    • MaxEntries → MaxRequests
    • MaxBodyCaptureSizeKb → MaxBodySizeKb
    • IgnorePaths → ExcludedPaths
    • CaptureOutgoingHttpClientRequests → CaptureOutgoingRequests
  • Replace SlowRequestThresholdMs with the TimeSpan-valued SlowRequestThreshold.
  • Add Enabled, CaptureRequestBody, and CaptureResponseBody.
  • Remove TrendLookbackMinutes, AutoEnvironmentDiff, and RedactionText.
  • Configure options through AddDebugProbe(...); use UseDebugProbe() to enable the middleware and endpoints.
  • Support standard .NET options configuration with startup validation.
  • Make default path exclusions editable.

Reliability and Concurrency

  • Isolate capture failures from application responses and exceptions.
  • Preserve consumed body bytes when capture fails.
  • Continue propagating application errors and transport cancellation.
  • Synchronize storage operations, eviction, and clearing.
  • Use ConcurrentQueue for parallel outgoing HTTP capture.
  • Render snapshots for consistent display.
  • Bound exception group storage.
  • Remove the global DebugEntryStore.Instance.
  • Verify isolation between separate application instances.

Body Capture

  • Apply consistent rules to incoming and outgoing request and response bodies.
  • Enforce capture limits in bytes.
  • Preserve oversized text prefixes with a [truncated] marker.
  • Respect declared charsets, with UTF-8 fallback.
  • Avoid incomplete encoded characters at truncation boundaries.
  • Use consistent markers for non-text content.
  • Omit truncated content when JSON field redaction is configured.
  • Store captured JSON without pretty-printing and format it for display.
  • Preserve original application payloads.

Dashboard and Routing

  • Remove the request summary section: Requests, Avg, Over 1s, Errors, and Activity.
  • Fix custom route prefixes across navigation, assets, API calls, and comparison.
  • Move the compare page from /compare to /debug/compare, respecting RoutePrefix.

Documentation

  • Add version compatibility guidance.
  • Add a complete Quick Start example.
  • Document migration steps and breaking API changes.
  • Update security and contribution guides.
  • Remove duplicate configuration examples.
  • Update package release notes.

Breaking Changes

  • Version 2.0.0 requires .NET 10; applications on .NET 8 or 9 should remain on compatible 1.x releases.
  • Renamed and removed options require configuration updates.
  • The configuration overload of UseDebugProbe has been removed.
  • OutgoingRequests.Enqueue(...) replaces OutgoingRequests.Add(...).
  • ExceptionGroups returns an IReadOnlyDictionary snapshot.
  • DebugEntryStore.Instance has been removed.
  • Existing compare page bookmarks must use the new route.

Validation

  • Release build succeeds on .NET 10.
  • All 124 tests pass.
  • Coverage collection succeeds.
  • NuGet audit reports no known vulnerable dependencies across the solution.
  • Package generation succeeds for version 2.0.0.
  • The packaged README matches the repository documentation.

@georgidhristov
georgidhristov merged commit be617ab into main Nov 2, 2026
1 check passed
@georgidhristov
georgidhristov deleted the develop branch November 2, 2026 12:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant