Add crash reporting (bundle CrashReporter, strip, symbols, upload)

- register plugin + ship Installer/crashreporter.json
- installer bundles the shared CrashReporter (mac pkg + component-plist +
  reporter-scripts promote-if-newer; win .iss shared component) and the JSON
- strip shipped mac binaries; emit dSYM (Xcode) and PDB (/Zi /DEBUG) in Release
- launchCrashReporterOnce() from the processor on first instance
- upload dSYM/PDB symbols to the crash site from release.yaml
- bump to 1.0.33
This commit is contained in:
Roland Rabien 2026-07-16 18:18:43 -07:00
commit a681b2e332
10 changed files with 219 additions and 2 deletions

View file

@ -2,6 +2,29 @@
#include "PluginEditor.h"
#include "WavetableVoice.h"
#include <mutex>
// If the shared CrashReporter is installed, launch it once per process (on the
// first plugin instance) so it can scan and upload any crash from last session.
static void launchCrashReporterOnce()
{
static std::once_flag flag;
std::call_once (flag, []
{
#if JUCE_MAC
juce::File app ("/Library/Application Support/Rabien Software/Crash Reporter/CrashReporter.app");
#elif JUCE_WINDOWS
auto app = juce::File::getSpecialLocation (juce::File::globalApplicationsDirectory)
.getChildFile ("Rabien Software").getChildFile ("Crash Reporter").getChildFile ("CrashReporter.exe");
#else
juce::File app;
#endif
if (app.exists())
juce::Process::openDocument (app.getFullPathName(), {});
});
}
static juce::String subTextFunction (const gin::Parameter&, float v)
{
switch (int (v))
@ -563,6 +586,8 @@ WavetableAudioProcessor::WavetableAudioProcessor()
fireAmp (FXBaseCallback ([this] { return gin::Processor::getSampleRate(); })),
grindAmp (FXBaseCallback ([this] { return gin::Processor::getSampleRate(); }))
{
launchCrashReporterOnce();
// One-time migration of any user presets from the pre-installer location.
// Factory presets now live in systemResourceRoot()/Presets and are surfaced
// via getFactoryProgramDirectories(). User saves go to userResourceRoot()/Presets.