RelayCast 0.2.1 beta — support button update
Date: November 5, 2026

- DLL and native UI preview compiled successfully against OBS 32.2.2.
- Installer payload passed isolated fresh, repeated, and upgrade installation;
  DLL/source bytes matched, the prior fixture binary was backed up, and an
  unrelated file was preserved.
- Bottom-right coffee button visually reviewed using the hidden native fixture.
- Fixture exercised the support click handler with browser launching stubbed out.
- Production handler opens only https://buymeacoffee.com/xanderdevelops.
  No configuration or stream credentials are placed in the URL.
- Streaming core.cpp and core.hpp match the previously tested 0.2.0 source.
- Website support button uses the same exact URL in a new browser tab.

Prior streaming verification follows; the streaming engine is unchanged.

RelayCast 0.2.0 beta — verification record
Date: November 5, 2026
Runtime / ABI target: OBS Studio 32.2.2, Windows x64
Compiler: Visual Studio 2022 MSVC 14.44, C++17, release optimization
OBS source commit: ba2f32bdf791005443988a4955e963663e16b1ed

PASSED FOR 0.2
- Native DLL compilation and linking against the installed OBS runtime.
- Self-contained installer compiled successfully. Its isolated target mode passed
  fresh installation, repeat installation, and replacement of an older fixture
  binary with backup retained. Embedded DLL and source matched the release files;
  an unrelated existing file was preserved. Windows UAC interaction and installer
  UI were not exercised automatically.
- Kick URL normalization: bare hostname, trailing slash, port-only, /app, /app/,
  already complete URL, explicit custom port, and duplicate detection after
  normalization. Unrecognized hosts and non-Kick custom destinations are unchanged.
- Local TLS 1.3 handshake to the public Kick ingest hostname in the official guide.
  No stream key or broadcast was sent to this server.
- Settings validation, 720p/1080p bounds, 30/60 fps bounds, aspect-preserving
  scaling, no upscaling of 720p sources, and ultrawide output bounds.
- Windows DPAPI round trip with saved 1080p/60 quality fields; encrypted-at-rest
  checks, tamper rejection, Unicode, and migration from an encrypted v0.1 fixture.
  Existing fixture stream credentials survived migration unchanged.
- Four simultaneous localhost outputs at 1920x1080 / 30 fps and 1920x1080 / 60 fps.
  FFprobe confirmed the dimensions and frame rate in every captured stream.
- A 1920x1080 / 60 fps source downscaled to 1280x720 / 30 fps on four receivers.
- Kick-compatible H.264 Main profile and AAC stereo / 48 kHz in the 1080p capture.
- Non-silent audio through OBS mixer track 1 to all four simultaneous receivers.
  Decoded AAC contained 440 Hz on the left and 880 Hz on the right, with RMS
  about 0.129 per channel. This verifies audio routing, encoding, and transport;
  each user's microphone and source track assignments still need setup.
- Native panel rendering reviewed using a hidden standalone fixture compiled from
  the same plugin.cpp. Light-blue selection, checkboxes, segmented quality controls,
  rounded panels, and masked credentials were visually inspected. The fixture
  exercised the actual 30/60 fps handlers. Native EDIT values are drawn explicitly
  in the fixture because hidden EDIT controls do not print reliably.

PREVIOUS 0.1 VERIFICATION
- OBS plugin discovery and module loading in a separate portable OBS instance.
- Four concurrent local outputs, failure isolation, recovery after a disconnected
  receiver, clean stopping, and immediate cancellation during connection attempts.

TEST METHOD
The harness embeds the same core.cpp used in the plugin, initializes installed
OBS modules, and sends synthetic black video to localhost only. The audio mode
injects distinct stereo tones; the other modes use silent audio.
FFmpeg receives temporary FLV files; FFprobe inspects the recordings. Fake stream
keys are used throughout. The OBS RTMP service module may refresh its public
service catalog during initialization. The user's saved keys were not read or
used during development, and no account broadcast was started.

NOT VERIFIED
- Authenticated end-to-end publication on Kick or the other real platforms.
  The fix addresses the URL rejection shown in the user's screenshot; account
  credentials, title/category, eligibility, and platform-side availability still
  determine whether a broadcast can publish successfully.
- Full interactive accessibility / keyboard / multi-monitor testing inside OBS.
- Production-length soak tests, real network congestion, software encoder CPU
  limits on different machines, and compatibility with other OBS/Windows versions.
- Signed installer, code signing, commercial branding or release certification.

Scope: a locally tested Windows beta and complete source. These results do not
establish commercial release readiness or successful real-platform publication.
