Brief overview of PR changes/additions

You can view the demonstration video here.

  1. Added two compile-time variables:
    • SENTRY_SEND_DEBUG
    • WITH_SENTRY
cmake -S ./ -B build/ -DWITH_SENTRY=ON -DSENTRY_SEND_DEBUG=1
qmake6 ../src/mudlet.pro CONFIG+=WITH_SENTRY SENTRY_SEND_DEBUG=1

All PR code is wrapped with IF (WITH_SENTRY) blocks, making it easy to enable or disable the Sentry integration.

The SENTRY_SEND_DEBUG option is used to automatically upload debug files to Sentry.io. These files are required by Sentry to display the exact line of a crash.

Sentry requires both the executable and its corresponding debug symbols. Debug symbol files can be large (up to 350 MB for Mudlet), which is why this option SENTRY_SEND_DEBUG exists—to avoid uploading the full debug files on every CI push.

  • Windows: executable + .pdb file (all debug symbols are embedded directly in the Mudlet binary)
  • Linux: executable + .debug file
  • macOS: executable + .dSYM folder

Ideally, the executable is “stripped” of all debug symbols to reduce its size, while the debug symbol files contain all the necessary debugging information. Both the stripped executable and the debug files are sent to Sentry, which is sufficient for accurate crash reporting.

  1. Added a secondary program: A small window prompts the user for consent to send the crash report. This program is located at src/crash_reporter/main.cpp.

  2. Copied a mandatory Sentry-provided executable (crash_handler) required for proper functioning, which must be placed alongside the Mudlet executable.

  3. Generated a mandatory cache directory at runtime for storing Sentry crash reports.

Expected cache locations:
Linux : ~/.cache/mudlet/sentry
macOS : ~/Library/Caches/mudlet/sentry
Windows : C:\Users\...\AppData\Local\Cache\Mudlet\sentry
  1. Added a git submodule : sentry-native

  2. Added two CI secret variables

  • ${{ secrets.SENTRY_DSN }} sets the default DSN at compile time (developers can override it via an environment variable named SENTRY_DSN).
  • ${{secrets.SENTRY_AUTH_TOKEN}} is used to send debug files. (dev can also override it via a environment variable SENTRY_AUTH_TOKEN

How to Test

  1. Create a Sentry account on the Sentry website.
  2. Create a new project (name it mudlet) and obtain the project’s DSN then add it to the console environment: export SENTRY_DSN=”…”
  3. export MUDLET_CRASH_TEST=1 (thanks to this variable, Mudlet will crash whenever you open a profile. Let’s use Sentry to see exactly where I inserted the crash.)
  4. Start Mudlet like a normal user and open a game. Mudlet should crash.
  5. You should now see the crash on the Sentry website.

But without the debug files, it doesn’t show exactly where the crash is.

  1. Obtain your organization’s auth token from the Sentry website and set it in your console environment: export=SENTRY_AUTH_TOKEN="..."
  2. Upload the debug files by recompiling with:
    • -DSENTRY_SEND_DEBUG=1
      • Or the provided script:
    • CI/send_debug_files_to_sentry.sh
  3. Run Mudlet and trigger the crash.
  4. Verify the crash details on the Sentry website.

Motivation for adding to Mudlet

/claim #7126, fixes #7126.

Other info (issues closed, discussion etc)

I pushed a working snippet for qmake (mudlet.pro) aswell, Although QMake is expected to be removed out soon, I added this snippet to ensure compatibility for the time being.

Claim

Total prize pool $500
Total paid $600
Status Approved
Submitted November 17, 2025
Last updated November 17, 2025

Contributors

NI

Nicolas KEITA

@NicolasKeita

100%

Sponsors

MU

Mudlet

@Mudlet

$500 paid
+$100 tip!