Skip to content

Oopsling 1.0.0

Choose a tag to compare

@hazeliscoding hazeliscoding released this 27 Oct 14:17
· 21 commits to main since this release

Crash reports for .NET apps that send nothing: after a crash, the user files the report as a GitHub issue from their own browser.

Try it

  1. dotnet add package Oopsling.Avalonia
  2. Call CrashReports.Start("My App", "owner/my-app") first thing in Main.
  3. Call CrashReportWindow.ShowUnshown(desktop.MainWindow) where you create your main window, then crash your app and start it again.

What's in it

  • Masked before it's written: home folders, user, machine and domain names, and tokens, in every path shape found so far, including JSON-escaped and percent-encoded ones.
  • Shown once: at the next launch, a window shows the report with Report on GitHub, Copy and Dismiss.
  • Filled-in issues: Report on GitHub opens your repo's new-issue page with the report in it. A report too long for a link goes on the clipboard whole.
  • Safe in a dying process: the handler never marks a crash handled, never changes how the app exits, and masks a huge message in linear time.
  • Tray apps: ShowUnshown() with no owner shows the report on its own.
  • NativeAOT and trim safe on Windows, macOS and Linux, with no network code at all.

Heads-up

  • Needs .NET 10 and Avalonia 12.
  • If your repo has issue templates, keep blank issues enabled, or some users may get the template picker instead of the filled-in issue.
  • Stack overflows, Environment.FailFast and native crashes end the process before any handler runs, so they leave no report.
  • NativeAOT stacks show offsets instead of line numbers.