Skip to content

Releases: hazeliscoding/oopsling

Oopsling 1.1.0

Choose a tag to compare

@hazeliscoding hazeliscoding released this 28 Oct 03:35

Crash reports for users without a GitHub account, and a window in your app's language.

Try it

  1. dotnet add package Oopsling.Avalonia --version 1.1.0
  2. Call CrashReports.Start("My App", "owner/my-app", contact: "crashes@my-app.example") first thing in Main.
  3. Crash your app and start it again: the contact is under the window's buttons.

What's in it

  • A contact: an email address or an https:// link. Clicking it copies the report, then opens a mail draft with the report's title as its subject, or the page.
  • Your app's language: CrashReportStrings holds every string the window shows, and the note at the top of a long report's issue. Each one you leave out stays English.
  • Same as 1.0 without them: Start(appName, repo) and the English text are unchanged, and each pack is now checked against 1.0.0's API.

Heads-up

  • Write each string as a whole sentence with your app's name in it. Oopsling fills nothing in, and the contact link follows the contact sentence.
  • Start throws for a contact that isn't a plain ASCII email address or an https:// link.
  • The draft opens empty, since a mailto: link can't carry a long report. The report is on the clipboard to paste in.

Oopsling 1.0.0

Choose a tag to compare

@hazeliscoding hazeliscoding released this 27 Oct 14:17

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.