Home

xmn / bettertrumpet

publicxammen/BetterTrumpet· sync paused
Overview Code History Branches Pull requestsIssuesInsights
master
HomeOverview Code PRsIssues

fix: restore per-app device switching, harden session teardown, and tighten diagnostic privacy

last month

b834b48
Authored
Cursor Agent8/13/2026, 9:07:54 PM
.NET 8 dropped HSTRING/IInspectable P/Invoke marshallers, so RoGetActivationFactory
threw MarshalDirectiveException and per-app endpoint moves never reached Windows
(GitHub #37). Use manual HSTRING lifetime, gate the flyout UI on COM success, make
session disconnect idempotent (#43), and add a review-before-zip diagnostic export
with path sanitization plus deferred Sentry/GitHub traffic until first-run consent (#41).

Co-authored-by: xmn <xammen@users.noreply.github.com>

Parentbff7f10

33 files changed
  • AGENTS.md+9−3
  • EarTrumpet/App.xaml.cs+31−6
  • EarTrumpet/AppSettings.cs+2−0
  • EarTrumpet/DataModel/Audio/Mocks/AudioDeviceSession.cs+2−2
  • EarTrumpet/DataModel/UpdateService.cs+7−0
  • EarTrumpet/DataModel/WindowsAudio/IAudioDeviceManagerWindowsAudio.cs+1−1
  • EarTrumpet/DataModel/WindowsAudio/Internal/AudioDeviceManager.cs+4−2
  • EarTrumpet/DataModel/WindowsAudio/Internal/AudioDeviceSession.cs+16
−4
  • EarTrumpet/DataModel/WindowsAudio/Internal/AudioDeviceSessionGroup.cs+17−9
  • EarTrumpet/DataModel/WindowsAudio/Internal/AudioPolicyConfigService.cs+59−12
  • EarTrumpet/DataModel/WindowsAudio/Internal/IAudioDeviceSessionInternal.cs+1−1
  • EarTrumpet/Diagnosis/CrashHandler.cs+9−14
  • EarTrumpet/Diagnosis/ErrorReporter.cs+44−2
  • EarTrumpet/Diagnosis/LocalDataExporter.cs+95−21
  • EarTrumpet/Diagnosis/PathSanitizer.cs+64−0
  • EarTrumpet/Interop/Combase.cs+61−4
  • EarTrumpet/Interop/Helpers/AudioPolicyConfigFactory.cs+11−5
  • EarTrumpet/Interop/Helpers/AudioPolicyConfigFactoryImplFor21H2.cs+15−3
  • EarTrumpet/Interop/Helpers/AudioPolicyConfigFactoryImplForDownlevel.cs+15−3
  • EarTrumpet/Interop/MMDeviceAPI/IAudioPolicyConfigFactoryVariantFor21H2.cs+1−1
  • EarTrumpet/Interop/MMDeviceAPI/IAudioPolicyConfigFactoryVariantForDownlevel.cs+1−1
  • EarTrumpet/Properties/Resources.Designer.cs+30−0
  • EarTrumpet/Properties/Resources.fr-FR.resx+52−1
  • EarTrumpet/Properties/Resources.resx+52−1
  • EarTrumpet/UI/ViewModels/AppItemViewModel.cs+28−3
  • EarTrumpet/UI/ViewModels/DeviceCollectionViewModel.cs+7−2
  • EarTrumpet/UI/ViewModels/DeviceViewModel.cs+8−1
  • EarTrumpet/UI/ViewModels/FlyoutViewModel.cs+2−1
  • EarTrumpet/UI/ViewModels/IAppItemViewModel.cs+1−1
  • EarTrumpet/UI/ViewModels/OnboardingViewModel.cs+1−0
  • EarTrumpet/UI/ViewModels/SettingsAppItemViewModel.cs+1−1
  • EarTrumpet/UI/ViewModels/TemporaryAppItemViewModel.cs+9−4
  • PRIVACY.md+62−19