Skip to content

v2.0.0-pre1 - native audio + elevated hotkey helper

Pre-release
Pre-release

Choose a tag to compare

@Diftic Diftic released this 16 May 22:09

First pre-release of the v2.0 architecture. Tagged as prerelease so existing v1.x users running the in-app update check are not notified - early-adopter cohort only.

What's new since v1.8.2

Native audio half (Option 2).

  • WebView2 muted at the OS level (CoreWebView2.IsMuted=true) on overlay + banner.
  • New NativeAudioPlayer (Windows.Media.Playback.MediaPlayer + YoutubeExplode 6.6.0) renders YouTube audio inline within PulseNet-Player.exe.
  • Audio is driven by YT IFrame API events (play / pause / seek / station-change all sync). Drift correction at 500ms threshold with 3-second post-kickoff settle.
  • Live channels route through HLS via PlayLiveAsync (no drift correction).
  • URL-expiry recovery via MediaPlayer.MediaFailed re-resolves the stream through YoutubeExplode (bounded 3 retries / 60s window).
  • AudioBridge + LocalAudioStreamServer + AudioBridgeInterop + AudioSessionInterop removed entirely (1254 lines). OBS Window Capture's Capture-Audio-BETA now sees PulseNet-Player.exe audio directly. One Sonar session, one OBS source.

Elevated hotkey helper.

  • New separate process PulseNetHotkeyService.exe (raw P/Invoke WH_KEYBOARD_LL).
  • Runs elevated, in the user's interactive session, via a per-user Scheduled Task at logon. No UAC prompt at runtime; task created with admin consent at install time.
  • Bypasses UIPI restrictions when foreground is a High-IL game / launcher (recent CIG update bumped RSI Launcher and Star Citizen to admin). Also clears Discord-style WH_KEYBOARD_LL restrictions.
  • Named-pipe IPC at .\pipe\PulseNetHotkey with explicit ACL for AuthenticatedUserSid. HotkeyClient (IHostedService) in the player connects + sends setKeys + receives hotkey push messages.
  • App.xaml.cs arbitrates between the helper and the legacy in-process hook so there's no double-fire.

Click-blocker fix.

  • Top of the YT iframe (volume / settings / next-video / channel link) is now unreachable. Those controls were rendered dead by the audio re-route - hiding them prevents confusion.
  • Iframe volume pinned to max + unmuted on every onReady so the silent iframe stays in a known-good state.

Packaging.

  • Per-machine WiX MSI (Program Files install root, HKLM KeyPath).
  • CustomActions install / uninstall the scheduled task as part of the MSI transaction (deferred + no-impersonate, runs as SYSTEM with [LogonUser] substituted in).
  • Hardened uninstall: kills helper processes, Wait-Process for OS reap, settle before unregistering. RemoveFiles proceeds cleanly without a reboot.

Known limitations

  • Stations 1-17 still wired to the offline thumbnail; only Solaris Classical (Easter egg, dQw4w9WgXcQ) and PulseNet LIVE play actual content.
  • Wave Link routing on tester machines not yet verified end-to-end with the new single-source architecture.
  • Drag-stick bug (overlay follows cursor when SC has focus + click) has not been re-verified on this branch.
  • Console Ctrl+C does not shut down the player (Console.CancelKeyPress not wired in WPF).

How to install

Download PulseNet-Setup.msi and run it. Helper auto-starts on next logon; no manual setup. F9 in launcher / SC / desktop toggles the overlay.

Portable PulseNet-Player.exe is also attached for hot-swap use but does not register the hotkey helper - F9 will only work for non-elevated foregrounds without the MSI install.