Repository navigation
Releases: thoser666/Rivulet
Releases · thoser666/Rivulet
Release list
Rivulet 0.65.0-alpha.297
Features
- stabile Capture-Backends (#296), strukturierte Encoder-Erkennung (#295) und typisierte Früh-Validierung (#294) (#320)
- Crashreport wie in OBS anbieten (Help → Crash reports, ohne Token, ohne Auto-Filing) (#305)
- Crashreport als kopierfertigen Bugreport erzeugen (Settings, lokal, ohne Transport) (#299)
- YouTube sendet ueber die offizielle Live-Streaming-API (Issue #100) (#291)
- Steam-Erkennung laeuft auch auf Linux, ueber XDG statt Registry (#284)
- Steam-Installationsverzeichnisse fuellen die Executable-Liste (#283)
- Epic, GOG, Origin/EA app und Battle.net identifizieren (#281)
- batch rendering — video from code (M7 W3, #189)
- report which nondeterminism sources a run used (M7 W2a, #187) (#265)
- rivulet inspect — pipeline inspector/diagnostics (M7 W5, #191) (#261)
- track-model GUI — tracks panel, membership, persistence, i18n (#247)
- container/remux parity for multi-track recordings (#242) (#246)
- build per-bus pipeline branches with live track masters (#242) (#245)
- per-track audio model — bus types, audio_tracks_v1, migration (#242) (#244)
- log redacted pipeline plus GStreamer domain/code on construction failure (#243)
- Steam game detection via local manifests (#239) (#240)
- add injectable engine clock with virtual PTS stamping (#187) (#238)
- add macOS Core Audio device capture for the Mixer (#231) (#237)
- add Linux PipeWire device capture for the Mixer (#231) (#236)
- real wry browser-source adapter with input forwarding and transparency (#227) (#228)
- live-refresh the per-app process picker while it is open
- live-refresh the WASAPI device picker while it is open
- WASAPI device capture for mixer Output/Input sources (#229) (#230)
- scene-item copy/paste with deterministic ids and paste-undo (#192) (#226)
- wry/WebView2 browser-source POC via CapturePreview (#215) (#223)
- per-platform stream title/game drafts in the stream-info editor (#214) (#220)
- add replay-buffer and studio-mode v5 actions for full Stream Deck coverage (#219)
- per-source rate limiting with visible suppression notices (#210)
- parse YouTube engagement events (Super Chats/Stickers/members) from the Innertube poll feed (#209)
- parse Kick engagement events (subs/gifts) from the Pusher chat stream (#208)
- make the raid alert direction configurable (out/in/both) (#207)
- resolve shared-chat room ids to channel logins via cached Helix lookup (#205)
- attribute Twitch Shared Chat messages by source room (#203)
- stream-info editor in the combined dock (#197)
- headless rivulet-cli MVP with record subcommand (issue #186) (#194)
- VOD track settings UI for the streaming view (issue #78) (#180)
- VOD track third audio branch in dual-output recording (issue #78) (#179)
- re-enable AccessKit and confirm destructive actions (#171)
- combined alerts dock — one live list for all platforms (#166)
- combined multi-platform chat dock — one list, one send box (#164)
- sound/voice generation track for the AI Creative Studio (#162)
- macOS system-loopback per-app fallback (Phase 5 of #154) (#160)
- Linux PipeWire per-app audio capture backend (Phase 4 of #154) (#158)
- WASAPI per-application capture backend (Phase 3, #154) (#157)
- multi-track audio routing mixer (M6 #154 Phase 2) (#156)
- multi-track audio routing engine core (M6, #154 Phase 1) (#155)
- emit SceneSwitch, ChatConnect and RecordingError events (#152)
- Phase 3 capability approval + install flow (registry + GUI) (#146)
- complete Phase 2 WASM plugin runtime (wasmtime sandbox + lifecycle) (#142)
- AUR PKGBUILD for Arch Linux (#140)
- mobile & HTTP remote companion for LAN scenes/record/stream (M6) (#141)
- native outbound Twitch EventSub WebSocket transport (M5) (#139)
- opt-in loopback webhook receiver (M5) (#132)
- Flathub Stage 2 preparation (M5) (#135)
- Scoop bucket for Rivulet (no signing required) (#137)
- WinGet Stage 2 preparation (M5) (#134)
- native chat-dock alert ingestion (M5) (#130)
- M5 opt-in, privacy-first usage telemetry (#128)
- Spanish as third wiki language + topic report in wiki job (#125)
- SignPath Foundation Windows signing path (#50) (#124)
- Linux GPG signing and maintainer setup doc (#50) (#123)
- auto-derive user-guide topics from GUI i18n keys (#121)
- doc-freshness enforcement for wiki and user manual (#120)
- host-boundary skip-path tests (Z96-3) (#118)
- Windows COM host skeleton (Z96-2) with boundary tests (#117)
- source delete hotkey (M5 OBS 32.2 parity) (#113) (#114)
- restream, auto-clips, VST3 host boundary (#116)
- complete multi-language support (M5) (#115)
Bug fixes
- close Dependabot alert #5 by refreshing the stale fuzz lockfile (#334)
- enumerate cameras on all platforms (#318) and close #294's E2E gap (#333)
- bump tokio 1.53.1 to 1.53.3 for RUSTSEC-2026-0386 (#332)
- update yanked clipboard-win 5.4.1 -> 5.4.3 (#331)
- wasmtime 48.0.5 → 49.0.3, wasmtime-wasi → 49.0.3 und rustls → 0.23.46 (16 RUSTSEC-Advisories) (#321)
- Doku-Assets aus der Manifest-Abdeckung ausschliessen (#286)
- make the retry backoff and the filename renderer total (#273)
- stop the PMT pre-scan from dropping the last audio track (#272)
- parse H.265 recording streams so NVENC/x265 pipelines build (#255)
- report a failed pipeline build once per session, not once per frame (#253)
- colocate WebView2Loader.dll with the exe on every Windows build
- speak the real v5 wire names so Stream Deck plugins can drive Rivulet (#212)
- use the directional from_broadcaster_user_id raid condition (#204)
- nightly is green again — alsa deps, drifted pins, tag regex (#173)
- poll EventSub stats until subscriptions are created (#169)
- arm EventSub API stub deadline on first request (#167)
- weekly promotion sets a git identity before tagging (#165)
- resolve the open code-scanning alerts (#112)
Documentation
- record #327 (blocking stale-pins gate) and the develop ruleset change (#329)
- Beta-Scope auf Windows + Linux festgelegt, Kriterium #4 ehrlich formuliert (macOS bewusst zurückgestellt) (#306)
- Meilenstein eroeffnet — sechs Workstream-Issues plus belegter Ist-Zustand (#298)
- M7-Abschlussbericht + korrekte Statuszeilen (Conditional Pass) (#290)
- document and pin the dismissed Dependabot glib advisory (#271)
- document the full branch-commit-PR-merge flow (#250)
- document the WebView2Loader.dll copy step for local GUI runs
- close the interim backlog milestone — README status, shipped #215 (#224)
- mark M6.9 per-platform stream metadata (#214) as shipped (#221)
- add interim backlog milestone for scene & stream polish (issues #214-#217) (#218)
- Stream Deck connection steps in the obs-websocket section (#213)
- design the automated winget-pkgs submission flow (#201)
- document the stream-info editor in the combined chat dock (#198)
- spec and workstream issues for the Automation & Determinism milestone (#193)
- track F-M6-001/002 live-evidence follow-ups (#182/#183) (#184)
- document global status surface and sync stale repo docs with the wiki (#181)
- describe combined chat dock and OS-vault account model (#170)
- creator toolkit completion report and milestone close (#168)
- M6 status to In progress with per-criterion gate notes (#153)
- AI settings placement — Settings page + Assistant tab (closes #149) (#151)
- close M5 with honest annotations (#150)
- M5 descope annotations — OBS-compat to M11, honest blockers (#148)
- AI Creative Studio (Spark-like) roadmap acceptance + off-switches (#143)
- mark global hotkeys, Discord RP and chat dock (M5) Done (#133)
- record SignPath Foundation application as submitted (#131)
- add ready-to-submit SignPath Foundation application draft (#126)
- Z96-4 hosting contract, platform matrix, and gating (#122)
- decompose #78 and #96 into subtasks (#111)
Build & packaging
CI
- switch GitHub Actions updates to daily with one grouped PR (#330)
- make the pin-staleness check a blocking PR check (#327)
- SHA256SUMS aus einem getesteten Skript, plus Post-Publish-Verifikation (#285)
- melde verrutschte Action-Pins bei jedem Push statt nur nachts (#280)
- bump the stale rust-toolchain pin and stop treating branch drift as fatal (#279)
- offene Code-Scanning-Alerts als Gate erzwingen (#274)
- daily PAT expiry guard for SCOOP_BUCKET_TOKEN (#202)
- bump codeql-action pins v4.38.0 -> v4.38.1 (#196)
- delete temporary release branch after a successful release (#195)
- extend apt package parity to all workflows (#178)
- enforce apt package parity between ci.yml and nightly.yml (#175)
- prepare every active channel once per week from weekly-latest (#145)
Tests
- run the #293 examples in CI, link their overview, and drain the YouTube fixture request (#310)
- M8 API-contract proof, wrapper regression guards, and honest delivery state (#307)
- Frame-Budget-Gate misst den Producer-Pfad statt des Schedulers (#287)
- pace the resource-report producer so the gate stops depending on machine load (#278)
- stop the EventSub puppet test from losing a subscription POST (#275)
- shared wait_until poll helper replaces hand-rolled deadline loops (#269)
- poll async engine state instead of fixed sleeps (timing audit) (#267)
- deterministic test helpers: golden frames, PTS/DTS, scene state (#266)
- poll the log buffer instead of a fixed sleep in worker log tests (#264)
- consolidate ci_pinning surface guards, phase 3 (Part of #231) (#262)
- harden the per-track model (issue #242) with isolation, pad, and doc parity (#254)
- unit-test the remux funnel fan-in with simulated tsdemux pad waves (#249)
- pin shared-chat reply threading to the joined room's delivery id (#206)
- require a git identity in every weekly-promotion committing step (#199)
- M6 resource report — 6 routed sources with full filter chains within budget (#161)
Refactoring
- parse workflow YAML structurally in guard scripts (Part of #231) (#263)
- slim the pinning suite by origin-tested detail pins (phase 1+2) (#257)
Housekeeping
- codeql-action v4.39.0 -> v4.39.1 nachgezog...
Rivulet 0.65.0-alpha.296
Features
- stabile Capture-Backends (#296), strukturierte Encoder-Erkennung (#295) und typisierte Früh-Validierung (#294) (#320)
- Crashreport wie in OBS anbieten (Help → Crash reports, ohne Token, ohne Auto-Filing) (#305)
- Crashreport als kopierfertigen Bugreport erzeugen (Settings, lokal, ohne Transport) (#299)
- YouTube sendet ueber die offizielle Live-Streaming-API (Issue #100) (#291)
- Steam-Erkennung laeuft auch auf Linux, ueber XDG statt Registry (#284)
- Steam-Installationsverzeichnisse fuellen die Executable-Liste (#283)
- Epic, GOG, Origin/EA app und Battle.net identifizieren (#281)
- batch rendering — video from code (M7 W3, #189)
- report which nondeterminism sources a run used (M7 W2a, #187) (#265)
- rivulet inspect — pipeline inspector/diagnostics (M7 W5, #191) (#261)
- track-model GUI — tracks panel, membership, persistence, i18n (#247)
- container/remux parity for multi-track recordings (#242) (#246)
- build per-bus pipeline branches with live track masters (#242) (#245)
- per-track audio model — bus types, audio_tracks_v1, migration (#242) (#244)
- log redacted pipeline plus GStreamer domain/code on construction failure (#243)
- Steam game detection via local manifests (#239) (#240)
- add injectable engine clock with virtual PTS stamping (#187) (#238)
- add macOS Core Audio device capture for the Mixer (#231) (#237)
- add Linux PipeWire device capture for the Mixer (#231) (#236)
- real wry browser-source adapter with input forwarding and transparency (#227) (#228)
- live-refresh the per-app process picker while it is open
- live-refresh the WASAPI device picker while it is open
- WASAPI device capture for mixer Output/Input sources (#229) (#230)
- scene-item copy/paste with deterministic ids and paste-undo (#192) (#226)
- wry/WebView2 browser-source POC via CapturePreview (#215) (#223)
- per-platform stream title/game drafts in the stream-info editor (#214) (#220)
- add replay-buffer and studio-mode v5 actions for full Stream Deck coverage (#219)
- per-source rate limiting with visible suppression notices (#210)
- parse YouTube engagement events (Super Chats/Stickers/members) from the Innertube poll feed (#209)
- parse Kick engagement events (subs/gifts) from the Pusher chat stream (#208)
- make the raid alert direction configurable (out/in/both) (#207)
- resolve shared-chat room ids to channel logins via cached Helix lookup (#205)
- attribute Twitch Shared Chat messages by source room (#203)
- stream-info editor in the combined dock (#197)
- headless rivulet-cli MVP with record subcommand (issue #186) (#194)
- VOD track settings UI for the streaming view (issue #78) (#180)
- VOD track third audio branch in dual-output recording (issue #78) (#179)
- re-enable AccessKit and confirm destructive actions (#171)
- combined alerts dock — one live list for all platforms (#166)
- combined multi-platform chat dock — one list, one send box (#164)
- sound/voice generation track for the AI Creative Studio (#162)
- macOS system-loopback per-app fallback (Phase 5 of #154) (#160)
- Linux PipeWire per-app audio capture backend (Phase 4 of #154) (#158)
- WASAPI per-application capture backend (Phase 3, #154) (#157)
- multi-track audio routing mixer (M6 #154 Phase 2) (#156)
- multi-track audio routing engine core (M6, #154 Phase 1) (#155)
- emit SceneSwitch, ChatConnect and RecordingError events (#152)
- Phase 3 capability approval + install flow (registry + GUI) (#146)
- complete Phase 2 WASM plugin runtime (wasmtime sandbox + lifecycle) (#142)
- AUR PKGBUILD for Arch Linux (#140)
- mobile & HTTP remote companion for LAN scenes/record/stream (M6) (#141)
- native outbound Twitch EventSub WebSocket transport (M5) (#139)
- opt-in loopback webhook receiver (M5) (#132)
- Flathub Stage 2 preparation (M5) (#135)
- Scoop bucket for Rivulet (no signing required) (#137)
- WinGet Stage 2 preparation (M5) (#134)
- native chat-dock alert ingestion (M5) (#130)
- M5 opt-in, privacy-first usage telemetry (#128)
- Spanish as third wiki language + topic report in wiki job (#125)
- SignPath Foundation Windows signing path (#50) (#124)
- Linux GPG signing and maintainer setup doc (#50) (#123)
- auto-derive user-guide topics from GUI i18n keys (#121)
- doc-freshness enforcement for wiki and user manual (#120)
- host-boundary skip-path tests (Z96-3) (#118)
- Windows COM host skeleton (Z96-2) with boundary tests (#117)
- source delete hotkey (M5 OBS 32.2 parity) (#113) (#114)
- restream, auto-clips, VST3 host boundary (#116)
- complete multi-language support (M5) (#115)
Bug fixes
- enumerate cameras on all platforms (#318) and close #294's E2E gap (#333)
- bump tokio 1.53.1 to 1.53.3 for RUSTSEC-2026-0386 (#332)
- update yanked clipboard-win 5.4.1 -> 5.4.3 (#331)
- wasmtime 48.0.5 → 49.0.3, wasmtime-wasi → 49.0.3 und rustls → 0.23.46 (16 RUSTSEC-Advisories) (#321)
- Doku-Assets aus der Manifest-Abdeckung ausschliessen (#286)
- make the retry backoff and the filename renderer total (#273)
- stop the PMT pre-scan from dropping the last audio track (#272)
- parse H.265 recording streams so NVENC/x265 pipelines build (#255)
- report a failed pipeline build once per session, not once per frame (#253)
- colocate WebView2Loader.dll with the exe on every Windows build
- speak the real v5 wire names so Stream Deck plugins can drive Rivulet (#212)
- use the directional from_broadcaster_user_id raid condition (#204)
- nightly is green again — alsa deps, drifted pins, tag regex (#173)
- poll EventSub stats until subscriptions are created (#169)
- arm EventSub API stub deadline on first request (#167)
- weekly promotion sets a git identity before tagging (#165)
- resolve the open code-scanning alerts (#112)
Documentation
- record #327 (blocking stale-pins gate) and the develop ruleset change (#329)
- Beta-Scope auf Windows + Linux festgelegt, Kriterium #4 ehrlich formuliert (macOS bewusst zurückgestellt) (#306)
- Meilenstein eroeffnet — sechs Workstream-Issues plus belegter Ist-Zustand (#298)
- M7-Abschlussbericht + korrekte Statuszeilen (Conditional Pass) (#290)
- document and pin the dismissed Dependabot glib advisory (#271)
- document the full branch-commit-PR-merge flow (#250)
- document the WebView2Loader.dll copy step for local GUI runs
- close the interim backlog milestone — README status, shipped #215 (#224)
- mark M6.9 per-platform stream metadata (#214) as shipped (#221)
- add interim backlog milestone for scene & stream polish (issues #214-#217) (#218)
- Stream Deck connection steps in the obs-websocket section (#213)
- design the automated winget-pkgs submission flow (#201)
- document the stream-info editor in the combined chat dock (#198)
- spec and workstream issues for the Automation & Determinism milestone (#193)
- track F-M6-001/002 live-evidence follow-ups (#182/#183) (#184)
- document global status surface and sync stale repo docs with the wiki (#181)
- describe combined chat dock and OS-vault account model (#170)
- creator toolkit completion report and milestone close (#168)
- M6 status to In progress with per-criterion gate notes (#153)
- AI settings placement — Settings page + Assistant tab (closes #149) (#151)
- close M5 with honest annotations (#150)
- M5 descope annotations — OBS-compat to M11, honest blockers (#148)
- AI Creative Studio (Spark-like) roadmap acceptance + off-switches (#143)
- mark global hotkeys, Discord RP and chat dock (M5) Done (#133)
- record SignPath Foundation application as submitted (#131)
- add ready-to-submit SignPath Foundation application draft (#126)
- Z96-4 hosting contract, platform matrix, and gating (#122)
- decompose #78 and #96 into subtasks (#111)
Build & packaging
CI
- switch GitHub Actions updates to daily with one grouped PR (#330)
- make the pin-staleness check a blocking PR check (#327)
- SHA256SUMS aus einem getesteten Skript, plus Post-Publish-Verifikation (#285)
- melde verrutschte Action-Pins bei jedem Push statt nur nachts (#280)
- bump the stale rust-toolchain pin and stop treating branch drift as fatal (#279)
- offene Code-Scanning-Alerts als Gate erzwingen (#274)
- daily PAT expiry guard for SCOOP_BUCKET_TOKEN (#202)
- bump codeql-action pins v4.38.0 -> v4.38.1 (#196)
- delete temporary release branch after a successful release (#195)
- extend apt package parity to all workflows (#178)
- enforce apt package parity between ci.yml and nightly.yml (#175)
- prepare every active channel once per week from weekly-latest (#145)
Tests
- run the #293 examples in CI, link their overview, and drain the YouTube fixture request (#310)
- M8 API-contract proof, wrapper regression guards, and honest delivery state (#307)
- Frame-Budget-Gate misst den Producer-Pfad statt des Schedulers (#287)
- pace the resource-report producer so the gate stops depending on machine load (#278)
- stop the EventSub puppet test from losing a subscription POST (#275)
- shared wait_until poll helper replaces hand-rolled deadline loops (#269)
- poll async engine state instead of fixed sleeps (timing audit) (#267)
- deterministic test helpers: golden frames, PTS/DTS, scene state (#266)
- poll the log buffer instead of a fixed sleep in worker log tests (#264)
- consolidate ci_pinning surface guards, phase 3 (Part of #231) (#262)
- harden the per-track model (issue #242) with isolation, pad, and doc parity (#254)
- unit-test the remux funnel fan-in with simulated tsdemux pad waves (#249)
- pin shared-chat reply threading to the joined room's delivery id (#206)
- require a git identity in every weekly-promotion committing step (#199)
- M6 resource report — 6 routed sources with full filter chains within budget (#161)
Refactoring
- parse workflow YAML structurally in guard scripts (Part of #231) (#263)
- slim the pinning suite by origin-tested detail pins (phase 1+2) (#257)
Housekeeping
- codeql-action v4.39.0 -> v4.39.1 nachgezogen (#326)
- Sechs veraltete Action-Pins innerhalb ihrer Major-Version ang...
Rivulet 0.65.0-alpha.295
Features
- stabile Capture-Backends (#296), strukturierte Encoder-Erkennung (#295) und typisierte Früh-Validierung (#294) (#320)
- Crashreport wie in OBS anbieten (Help → Crash reports, ohne Token, ohne Auto-Filing) (#305)
- Crashreport als kopierfertigen Bugreport erzeugen (Settings, lokal, ohne Transport) (#299)
- YouTube sendet ueber die offizielle Live-Streaming-API (Issue #100) (#291)
- Steam-Erkennung laeuft auch auf Linux, ueber XDG statt Registry (#284)
- Steam-Installationsverzeichnisse fuellen die Executable-Liste (#283)
- Epic, GOG, Origin/EA app und Battle.net identifizieren (#281)
- batch rendering — video from code (M7 W3, #189)
- report which nondeterminism sources a run used (M7 W2a, #187) (#265)
- rivulet inspect — pipeline inspector/diagnostics (M7 W5, #191) (#261)
- track-model GUI — tracks panel, membership, persistence, i18n (#247)
- container/remux parity for multi-track recordings (#242) (#246)
- build per-bus pipeline branches with live track masters (#242) (#245)
- per-track audio model — bus types, audio_tracks_v1, migration (#242) (#244)
- log redacted pipeline plus GStreamer domain/code on construction failure (#243)
- Steam game detection via local manifests (#239) (#240)
- add injectable engine clock with virtual PTS stamping (#187) (#238)
- add macOS Core Audio device capture for the Mixer (#231) (#237)
- add Linux PipeWire device capture for the Mixer (#231) (#236)
- real wry browser-source adapter with input forwarding and transparency (#227) (#228)
- live-refresh the per-app process picker while it is open
- live-refresh the WASAPI device picker while it is open
- WASAPI device capture for mixer Output/Input sources (#229) (#230)
- scene-item copy/paste with deterministic ids and paste-undo (#192) (#226)
- wry/WebView2 browser-source POC via CapturePreview (#215) (#223)
- per-platform stream title/game drafts in the stream-info editor (#214) (#220)
- add replay-buffer and studio-mode v5 actions for full Stream Deck coverage (#219)
- per-source rate limiting with visible suppression notices (#210)
- parse YouTube engagement events (Super Chats/Stickers/members) from the Innertube poll feed (#209)
- parse Kick engagement events (subs/gifts) from the Pusher chat stream (#208)
- make the raid alert direction configurable (out/in/both) (#207)
- resolve shared-chat room ids to channel logins via cached Helix lookup (#205)
- attribute Twitch Shared Chat messages by source room (#203)
- stream-info editor in the combined dock (#197)
- headless rivulet-cli MVP with record subcommand (issue #186) (#194)
- VOD track settings UI for the streaming view (issue #78) (#180)
- VOD track third audio branch in dual-output recording (issue #78) (#179)
- re-enable AccessKit and confirm destructive actions (#171)
- combined alerts dock — one live list for all platforms (#166)
- combined multi-platform chat dock — one list, one send box (#164)
- sound/voice generation track for the AI Creative Studio (#162)
- macOS system-loopback per-app fallback (Phase 5 of #154) (#160)
- Linux PipeWire per-app audio capture backend (Phase 4 of #154) (#158)
- WASAPI per-application capture backend (Phase 3, #154) (#157)
- multi-track audio routing mixer (M6 #154 Phase 2) (#156)
- multi-track audio routing engine core (M6, #154 Phase 1) (#155)
- emit SceneSwitch, ChatConnect and RecordingError events (#152)
- Phase 3 capability approval + install flow (registry + GUI) (#146)
- complete Phase 2 WASM plugin runtime (wasmtime sandbox + lifecycle) (#142)
- AUR PKGBUILD for Arch Linux (#140)
- mobile & HTTP remote companion for LAN scenes/record/stream (M6) (#141)
- native outbound Twitch EventSub WebSocket transport (M5) (#139)
- opt-in loopback webhook receiver (M5) (#132)
- Flathub Stage 2 preparation (M5) (#135)
- Scoop bucket for Rivulet (no signing required) (#137)
- WinGet Stage 2 preparation (M5) (#134)
- native chat-dock alert ingestion (M5) (#130)
- M5 opt-in, privacy-first usage telemetry (#128)
- Spanish as third wiki language + topic report in wiki job (#125)
- SignPath Foundation Windows signing path (#50) (#124)
- Linux GPG signing and maintainer setup doc (#50) (#123)
- auto-derive user-guide topics from GUI i18n keys (#121)
- doc-freshness enforcement for wiki and user manual (#120)
- host-boundary skip-path tests (Z96-3) (#118)
- Windows COM host skeleton (Z96-2) with boundary tests (#117)
- source delete hotkey (M5 OBS 32.2 parity) (#113) (#114)
- restream, auto-clips, VST3 host boundary (#116)
- complete multi-language support (M5) (#115)
Bug fixes
- bump tokio 1.53.1 to 1.53.3 for RUSTSEC-2026-0386 (#332)
- update yanked clipboard-win 5.4.1 -> 5.4.3 (#331)
- wasmtime 48.0.5 → 49.0.3, wasmtime-wasi → 49.0.3 und rustls → 0.23.46 (16 RUSTSEC-Advisories) (#321)
- Doku-Assets aus der Manifest-Abdeckung ausschliessen (#286)
- make the retry backoff and the filename renderer total (#273)
- stop the PMT pre-scan from dropping the last audio track (#272)
- parse H.265 recording streams so NVENC/x265 pipelines build (#255)
- report a failed pipeline build once per session, not once per frame (#253)
- colocate WebView2Loader.dll with the exe on every Windows build
- speak the real v5 wire names so Stream Deck plugins can drive Rivulet (#212)
- use the directional from_broadcaster_user_id raid condition (#204)
- nightly is green again — alsa deps, drifted pins, tag regex (#173)
- poll EventSub stats until subscriptions are created (#169)
- arm EventSub API stub deadline on first request (#167)
- weekly promotion sets a git identity before tagging (#165)
- resolve the open code-scanning alerts (#112)
Documentation
- record #327 (blocking stale-pins gate) and the develop ruleset change (#329)
- Beta-Scope auf Windows + Linux festgelegt, Kriterium #4 ehrlich formuliert (macOS bewusst zurückgestellt) (#306)
- Meilenstein eroeffnet — sechs Workstream-Issues plus belegter Ist-Zustand (#298)
- M7-Abschlussbericht + korrekte Statuszeilen (Conditional Pass) (#290)
- document and pin the dismissed Dependabot glib advisory (#271)
- document the full branch-commit-PR-merge flow (#250)
- document the WebView2Loader.dll copy step for local GUI runs
- close the interim backlog milestone — README status, shipped #215 (#224)
- mark M6.9 per-platform stream metadata (#214) as shipped (#221)
- add interim backlog milestone for scene & stream polish (issues #214-#217) (#218)
- Stream Deck connection steps in the obs-websocket section (#213)
- design the automated winget-pkgs submission flow (#201)
- document the stream-info editor in the combined chat dock (#198)
- spec and workstream issues for the Automation & Determinism milestone (#193)
- track F-M6-001/002 live-evidence follow-ups (#182/#183) (#184)
- document global status surface and sync stale repo docs with the wiki (#181)
- describe combined chat dock and OS-vault account model (#170)
- creator toolkit completion report and milestone close (#168)
- M6 status to In progress with per-criterion gate notes (#153)
- AI settings placement — Settings page + Assistant tab (closes #149) (#151)
- close M5 with honest annotations (#150)
- M5 descope annotations — OBS-compat to M11, honest blockers (#148)
- AI Creative Studio (Spark-like) roadmap acceptance + off-switches (#143)
- mark global hotkeys, Discord RP and chat dock (M5) Done (#133)
- record SignPath Foundation application as submitted (#131)
- add ready-to-submit SignPath Foundation application draft (#126)
- Z96-4 hosting contract, platform matrix, and gating (#122)
- decompose #78 and #96 into subtasks (#111)
Build & packaging
CI
- switch GitHub Actions updates to daily with one grouped PR (#330)
- make the pin-staleness check a blocking PR check (#327)
- SHA256SUMS aus einem getesteten Skript, plus Post-Publish-Verifikation (#285)
- melde verrutschte Action-Pins bei jedem Push statt nur nachts (#280)
- bump the stale rust-toolchain pin and stop treating branch drift as fatal (#279)
- offene Code-Scanning-Alerts als Gate erzwingen (#274)
- daily PAT expiry guard for SCOOP_BUCKET_TOKEN (#202)
- bump codeql-action pins v4.38.0 -> v4.38.1 (#196)
- delete temporary release branch after a successful release (#195)
- extend apt package parity to all workflows (#178)
- enforce apt package parity between ci.yml and nightly.yml (#175)
- prepare every active channel once per week from weekly-latest (#145)
Tests
- run the #293 examples in CI, link their overview, and drain the YouTube fixture request (#310)
- M8 API-contract proof, wrapper regression guards, and honest delivery state (#307)
- Frame-Budget-Gate misst den Producer-Pfad statt des Schedulers (#287)
- pace the resource-report producer so the gate stops depending on machine load (#278)
- stop the EventSub puppet test from losing a subscription POST (#275)
- shared wait_until poll helper replaces hand-rolled deadline loops (#269)
- poll async engine state instead of fixed sleeps (timing audit) (#267)
- deterministic test helpers: golden frames, PTS/DTS, scene state (#266)
- poll the log buffer instead of a fixed sleep in worker log tests (#264)
- consolidate ci_pinning surface guards, phase 3 (Part of #231) (#262)
- harden the per-track model (issue #242) with isolation, pad, and doc parity (#254)
- unit-test the remux funnel fan-in with simulated tsdemux pad waves (#249)
- pin shared-chat reply threading to the joined room's delivery id (#206)
- require a git identity in every weekly-promotion committing step (#199)
- M6 resource report — 6 routed sources with full filter chains within budget (#161)
Refactoring
- parse workflow YAML structurally in guard scripts (Part of #231) (#263)
- slim the pinning suite by origin-tested detail pins (phase 1+2) (#257)
Housekeeping
Rivulet 0.65.0-alpha.294
Features
- stabile Capture-Backends (#296), strukturierte Encoder-Erkennung (#295) und typisierte Früh-Validierung (#294) (#320)
- Crashreport wie in OBS anbieten (Help → Crash reports, ohne Token, ohne Auto-Filing) (#305)
- Crashreport als kopierfertigen Bugreport erzeugen (Settings, lokal, ohne Transport) (#299)
- YouTube sendet ueber die offizielle Live-Streaming-API (Issue #100) (#291)
- Steam-Erkennung laeuft auch auf Linux, ueber XDG statt Registry (#284)
- Steam-Installationsverzeichnisse fuellen die Executable-Liste (#283)
- Epic, GOG, Origin/EA app und Battle.net identifizieren (#281)
- batch rendering — video from code (M7 W3, #189)
- report which nondeterminism sources a run used (M7 W2a, #187) (#265)
- rivulet inspect — pipeline inspector/diagnostics (M7 W5, #191) (#261)
- track-model GUI — tracks panel, membership, persistence, i18n (#247)
- container/remux parity for multi-track recordings (#242) (#246)
- build per-bus pipeline branches with live track masters (#242) (#245)
- per-track audio model — bus types, audio_tracks_v1, migration (#242) (#244)
- log redacted pipeline plus GStreamer domain/code on construction failure (#243)
- Steam game detection via local manifests (#239) (#240)
- add injectable engine clock with virtual PTS stamping (#187) (#238)
- add macOS Core Audio device capture for the Mixer (#231) (#237)
- add Linux PipeWire device capture for the Mixer (#231) (#236)
- real wry browser-source adapter with input forwarding and transparency (#227) (#228)
- live-refresh the per-app process picker while it is open
- live-refresh the WASAPI device picker while it is open
- WASAPI device capture for mixer Output/Input sources (#229) (#230)
- scene-item copy/paste with deterministic ids and paste-undo (#192) (#226)
- wry/WebView2 browser-source POC via CapturePreview (#215) (#223)
- per-platform stream title/game drafts in the stream-info editor (#214) (#220)
- add replay-buffer and studio-mode v5 actions for full Stream Deck coverage (#219)
- per-source rate limiting with visible suppression notices (#210)
- parse YouTube engagement events (Super Chats/Stickers/members) from the Innertube poll feed (#209)
- parse Kick engagement events (subs/gifts) from the Pusher chat stream (#208)
- make the raid alert direction configurable (out/in/both) (#207)
- resolve shared-chat room ids to channel logins via cached Helix lookup (#205)
- attribute Twitch Shared Chat messages by source room (#203)
- stream-info editor in the combined dock (#197)
- headless rivulet-cli MVP with record subcommand (issue #186) (#194)
- VOD track settings UI for the streaming view (issue #78) (#180)
- VOD track third audio branch in dual-output recording (issue #78) (#179)
- re-enable AccessKit and confirm destructive actions (#171)
- combined alerts dock — one live list for all platforms (#166)
- combined multi-platform chat dock — one list, one send box (#164)
- sound/voice generation track for the AI Creative Studio (#162)
- macOS system-loopback per-app fallback (Phase 5 of #154) (#160)
- Linux PipeWire per-app audio capture backend (Phase 4 of #154) (#158)
- WASAPI per-application capture backend (Phase 3, #154) (#157)
- multi-track audio routing mixer (M6 #154 Phase 2) (#156)
- multi-track audio routing engine core (M6, #154 Phase 1) (#155)
- emit SceneSwitch, ChatConnect and RecordingError events (#152)
- Phase 3 capability approval + install flow (registry + GUI) (#146)
- complete Phase 2 WASM plugin runtime (wasmtime sandbox + lifecycle) (#142)
- AUR PKGBUILD for Arch Linux (#140)
- mobile & HTTP remote companion for LAN scenes/record/stream (M6) (#141)
- native outbound Twitch EventSub WebSocket transport (M5) (#139)
- opt-in loopback webhook receiver (M5) (#132)
- Flathub Stage 2 preparation (M5) (#135)
- Scoop bucket for Rivulet (no signing required) (#137)
- WinGet Stage 2 preparation (M5) (#134)
- native chat-dock alert ingestion (M5) (#130)
- M5 opt-in, privacy-first usage telemetry (#128)
- Spanish as third wiki language + topic report in wiki job (#125)
- SignPath Foundation Windows signing path (#50) (#124)
- Linux GPG signing and maintainer setup doc (#50) (#123)
- auto-derive user-guide topics from GUI i18n keys (#121)
- doc-freshness enforcement for wiki and user manual (#120)
- host-boundary skip-path tests (Z96-3) (#118)
- Windows COM host skeleton (Z96-2) with boundary tests (#117)
- source delete hotkey (M5 OBS 32.2 parity) (#113) (#114)
- restream, auto-clips, VST3 host boundary (#116)
- complete multi-language support (M5) (#115)
Bug fixes
- bump tokio 1.53.1 to 1.53.3 for RUSTSEC-2026-0386 (#332)
- update yanked clipboard-win 5.4.1 -> 5.4.3 (#331)
- wasmtime 48.0.5 → 49.0.3, wasmtime-wasi → 49.0.3 und rustls → 0.23.46 (16 RUSTSEC-Advisories) (#321)
- Doku-Assets aus der Manifest-Abdeckung ausschliessen (#286)
- make the retry backoff and the filename renderer total (#273)
- stop the PMT pre-scan from dropping the last audio track (#272)
- parse H.265 recording streams so NVENC/x265 pipelines build (#255)
- report a failed pipeline build once per session, not once per frame (#253)
- colocate WebView2Loader.dll with the exe on every Windows build
- speak the real v5 wire names so Stream Deck plugins can drive Rivulet (#212)
- use the directional from_broadcaster_user_id raid condition (#204)
- nightly is green again — alsa deps, drifted pins, tag regex (#173)
- poll EventSub stats until subscriptions are created (#169)
- arm EventSub API stub deadline on first request (#167)
- weekly promotion sets a git identity before tagging (#165)
- resolve the open code-scanning alerts (#112)
Documentation
- record #327 (blocking stale-pins gate) and the develop ruleset change (#329)
- Beta-Scope auf Windows + Linux festgelegt, Kriterium #4 ehrlich formuliert (macOS bewusst zurückgestellt) (#306)
- Meilenstein eroeffnet — sechs Workstream-Issues plus belegter Ist-Zustand (#298)
- M7-Abschlussbericht + korrekte Statuszeilen (Conditional Pass) (#290)
- document and pin the dismissed Dependabot glib advisory (#271)
- document the full branch-commit-PR-merge flow (#250)
- document the WebView2Loader.dll copy step for local GUI runs
- close the interim backlog milestone — README status, shipped #215 (#224)
- mark M6.9 per-platform stream metadata (#214) as shipped (#221)
- add interim backlog milestone for scene & stream polish (issues #214-#217) (#218)
- Stream Deck connection steps in the obs-websocket section (#213)
- design the automated winget-pkgs submission flow (#201)
- document the stream-info editor in the combined chat dock (#198)
- spec and workstream issues for the Automation & Determinism milestone (#193)
- track F-M6-001/002 live-evidence follow-ups (#182/#183) (#184)
- document global status surface and sync stale repo docs with the wiki (#181)
- describe combined chat dock and OS-vault account model (#170)
- creator toolkit completion report and milestone close (#168)
- M6 status to In progress with per-criterion gate notes (#153)
- AI settings placement — Settings page + Assistant tab (closes #149) (#151)
- close M5 with honest annotations (#150)
- M5 descope annotations — OBS-compat to M11, honest blockers (#148)
- AI Creative Studio (Spark-like) roadmap acceptance + off-switches (#143)
- mark global hotkeys, Discord RP and chat dock (M5) Done (#133)
- record SignPath Foundation application as submitted (#131)
- add ready-to-submit SignPath Foundation application draft (#126)
- Z96-4 hosting contract, platform matrix, and gating (#122)
- decompose #78 and #96 into subtasks (#111)
Build & packaging
CI
- make the pin-staleness check a blocking PR check (#327)
- SHA256SUMS aus einem getesteten Skript, plus Post-Publish-Verifikation (#285)
- melde verrutschte Action-Pins bei jedem Push statt nur nachts (#280)
- bump the stale rust-toolchain pin and stop treating branch drift as fatal (#279)
- offene Code-Scanning-Alerts als Gate erzwingen (#274)
- daily PAT expiry guard for SCOOP_BUCKET_TOKEN (#202)
- bump codeql-action pins v4.38.0 -> v4.38.1 (#196)
- delete temporary release branch after a successful release (#195)
- extend apt package parity to all workflows (#178)
- enforce apt package parity between ci.yml and nightly.yml (#175)
- prepare every active channel once per week from weekly-latest (#145)
Tests
- run the #293 examples in CI, link their overview, and drain the YouTube fixture request (#310)
- M8 API-contract proof, wrapper regression guards, and honest delivery state (#307)
- Frame-Budget-Gate misst den Producer-Pfad statt des Schedulers (#287)
- pace the resource-report producer so the gate stops depending on machine load (#278)
- stop the EventSub puppet test from losing a subscription POST (#275)
- shared wait_until poll helper replaces hand-rolled deadline loops (#269)
- poll async engine state instead of fixed sleeps (timing audit) (#267)
- deterministic test helpers: golden frames, PTS/DTS, scene state (#266)
- poll the log buffer instead of a fixed sleep in worker log tests (#264)
- consolidate ci_pinning surface guards, phase 3 (Part of #231) (#262)
- harden the per-track model (issue #242) with isolation, pad, and doc parity (#254)
- unit-test the remux funnel fan-in with simulated tsdemux pad waves (#249)
- pin shared-chat reply threading to the joined room's delivery id (#206)
- require a git identity in every weekly-promotion committing step (#199)
- M6 resource report — 6 routed sources with full filter chains within budget (#161)
Refactoring
- parse workflow YAML structurally in guard scripts (Part of #231) (#263)
- slim the pinning suite by origin-tested detail pins (phase 1+2) (#257)
Housekeeping
Rivulet 0.65.0-alpha.293
Features
- stabile Capture-Backends (#296), strukturierte Encoder-Erkennung (#295) und typisierte Früh-Validierung (#294) (#320)
- Crashreport wie in OBS anbieten (Help → Crash reports, ohne Token, ohne Auto-Filing) (#305)
- Crashreport als kopierfertigen Bugreport erzeugen (Settings, lokal, ohne Transport) (#299)
- YouTube sendet ueber die offizielle Live-Streaming-API (Issue #100) (#291)
- Steam-Erkennung laeuft auch auf Linux, ueber XDG statt Registry (#284)
- Steam-Installationsverzeichnisse fuellen die Executable-Liste (#283)
- Epic, GOG, Origin/EA app und Battle.net identifizieren (#281)
- batch rendering — video from code (M7 W3, #189)
- report which nondeterminism sources a run used (M7 W2a, #187) (#265)
- rivulet inspect — pipeline inspector/diagnostics (M7 W5, #191) (#261)
- track-model GUI — tracks panel, membership, persistence, i18n (#247)
- container/remux parity for multi-track recordings (#242) (#246)
- build per-bus pipeline branches with live track masters (#242) (#245)
- per-track audio model — bus types, audio_tracks_v1, migration (#242) (#244)
- log redacted pipeline plus GStreamer domain/code on construction failure (#243)
- Steam game detection via local manifests (#239) (#240)
- add injectable engine clock with virtual PTS stamping (#187) (#238)
- add macOS Core Audio device capture for the Mixer (#231) (#237)
- add Linux PipeWire device capture for the Mixer (#231) (#236)
- real wry browser-source adapter with input forwarding and transparency (#227) (#228)
- live-refresh the per-app process picker while it is open
- live-refresh the WASAPI device picker while it is open
- WASAPI device capture for mixer Output/Input sources (#229) (#230)
- scene-item copy/paste with deterministic ids and paste-undo (#192) (#226)
- wry/WebView2 browser-source POC via CapturePreview (#215) (#223)
- per-platform stream title/game drafts in the stream-info editor (#214) (#220)
- add replay-buffer and studio-mode v5 actions for full Stream Deck coverage (#219)
- per-source rate limiting with visible suppression notices (#210)
- parse YouTube engagement events (Super Chats/Stickers/members) from the Innertube poll feed (#209)
- parse Kick engagement events (subs/gifts) from the Pusher chat stream (#208)
- make the raid alert direction configurable (out/in/both) (#207)
- resolve shared-chat room ids to channel logins via cached Helix lookup (#205)
- attribute Twitch Shared Chat messages by source room (#203)
- stream-info editor in the combined dock (#197)
- headless rivulet-cli MVP with record subcommand (issue #186) (#194)
- VOD track settings UI for the streaming view (issue #78) (#180)
- VOD track third audio branch in dual-output recording (issue #78) (#179)
- re-enable AccessKit and confirm destructive actions (#171)
- combined alerts dock — one live list for all platforms (#166)
- combined multi-platform chat dock — one list, one send box (#164)
- sound/voice generation track for the AI Creative Studio (#162)
- macOS system-loopback per-app fallback (Phase 5 of #154) (#160)
- Linux PipeWire per-app audio capture backend (Phase 4 of #154) (#158)
- WASAPI per-application capture backend (Phase 3, #154) (#157)
- multi-track audio routing mixer (M6 #154 Phase 2) (#156)
- multi-track audio routing engine core (M6, #154 Phase 1) (#155)
- emit SceneSwitch, ChatConnect and RecordingError events (#152)
- Phase 3 capability approval + install flow (registry + GUI) (#146)
- complete Phase 2 WASM plugin runtime (wasmtime sandbox + lifecycle) (#142)
- AUR PKGBUILD for Arch Linux (#140)
- mobile & HTTP remote companion for LAN scenes/record/stream (M6) (#141)
- native outbound Twitch EventSub WebSocket transport (M5) (#139)
- opt-in loopback webhook receiver (M5) (#132)
- Flathub Stage 2 preparation (M5) (#135)
- Scoop bucket for Rivulet (no signing required) (#137)
- WinGet Stage 2 preparation (M5) (#134)
- native chat-dock alert ingestion (M5) (#130)
- M5 opt-in, privacy-first usage telemetry (#128)
- Spanish as third wiki language + topic report in wiki job (#125)
- SignPath Foundation Windows signing path (#50) (#124)
- Linux GPG signing and maintainer setup doc (#50) (#123)
- auto-derive user-guide topics from GUI i18n keys (#121)
- doc-freshness enforcement for wiki and user manual (#120)
- host-boundary skip-path tests (Z96-3) (#118)
- Windows COM host skeleton (Z96-2) with boundary tests (#117)
- source delete hotkey (M5 OBS 32.2 parity) (#113) (#114)
- restream, auto-clips, VST3 host boundary (#116)
- complete multi-language support (M5) (#115)
Bug fixes
- update yanked clipboard-win 5.4.1 -> 5.4.3 (#331)
- wasmtime 48.0.5 → 49.0.3, wasmtime-wasi → 49.0.3 und rustls → 0.23.46 (16 RUSTSEC-Advisories) (#321)
- Doku-Assets aus der Manifest-Abdeckung ausschliessen (#286)
- make the retry backoff and the filename renderer total (#273)
- stop the PMT pre-scan from dropping the last audio track (#272)
- parse H.265 recording streams so NVENC/x265 pipelines build (#255)
- report a failed pipeline build once per session, not once per frame (#253)
- colocate WebView2Loader.dll with the exe on every Windows build
- speak the real v5 wire names so Stream Deck plugins can drive Rivulet (#212)
- use the directional from_broadcaster_user_id raid condition (#204)
- nightly is green again — alsa deps, drifted pins, tag regex (#173)
- poll EventSub stats until subscriptions are created (#169)
- arm EventSub API stub deadline on first request (#167)
- weekly promotion sets a git identity before tagging (#165)
- resolve the open code-scanning alerts (#112)
Documentation
- record #327 (blocking stale-pins gate) and the develop ruleset change (#329)
- Beta-Scope auf Windows + Linux festgelegt, Kriterium #4 ehrlich formuliert (macOS bewusst zurückgestellt) (#306)
- Meilenstein eroeffnet — sechs Workstream-Issues plus belegter Ist-Zustand (#298)
- M7-Abschlussbericht + korrekte Statuszeilen (Conditional Pass) (#290)
- document and pin the dismissed Dependabot glib advisory (#271)
- document the full branch-commit-PR-merge flow (#250)
- document the WebView2Loader.dll copy step for local GUI runs
- close the interim backlog milestone — README status, shipped #215 (#224)
- mark M6.9 per-platform stream metadata (#214) as shipped (#221)
- add interim backlog milestone for scene & stream polish (issues #214-#217) (#218)
- Stream Deck connection steps in the obs-websocket section (#213)
- design the automated winget-pkgs submission flow (#201)
- document the stream-info editor in the combined chat dock (#198)
- spec and workstream issues for the Automation & Determinism milestone (#193)
- track F-M6-001/002 live-evidence follow-ups (#182/#183) (#184)
- document global status surface and sync stale repo docs with the wiki (#181)
- describe combined chat dock and OS-vault account model (#170)
- creator toolkit completion report and milestone close (#168)
- M6 status to In progress with per-criterion gate notes (#153)
- AI settings placement — Settings page + Assistant tab (closes #149) (#151)
- close M5 with honest annotations (#150)
- M5 descope annotations — OBS-compat to M11, honest blockers (#148)
- AI Creative Studio (Spark-like) roadmap acceptance + off-switches (#143)
- mark global hotkeys, Discord RP and chat dock (M5) Done (#133)
- record SignPath Foundation application as submitted (#131)
- add ready-to-submit SignPath Foundation application draft (#126)
- Z96-4 hosting contract, platform matrix, and gating (#122)
- decompose #78 and #96 into subtasks (#111)
Build & packaging
CI
- make the pin-staleness check a blocking PR check (#327)
- SHA256SUMS aus einem getesteten Skript, plus Post-Publish-Verifikation (#285)
- melde verrutschte Action-Pins bei jedem Push statt nur nachts (#280)
- bump the stale rust-toolchain pin and stop treating branch drift as fatal (#279)
- offene Code-Scanning-Alerts als Gate erzwingen (#274)
- daily PAT expiry guard for SCOOP_BUCKET_TOKEN (#202)
- bump codeql-action pins v4.38.0 -> v4.38.1 (#196)
- delete temporary release branch after a successful release (#195)
- extend apt package parity to all workflows (#178)
- enforce apt package parity between ci.yml and nightly.yml (#175)
- prepare every active channel once per week from weekly-latest (#145)
Tests
- run the #293 examples in CI, link their overview, and drain the YouTube fixture request (#310)
- M8 API-contract proof, wrapper regression guards, and honest delivery state (#307)
- Frame-Budget-Gate misst den Producer-Pfad statt des Schedulers (#287)
- pace the resource-report producer so the gate stops depending on machine load (#278)
- stop the EventSub puppet test from losing a subscription POST (#275)
- shared wait_until poll helper replaces hand-rolled deadline loops (#269)
- poll async engine state instead of fixed sleeps (timing audit) (#267)
- deterministic test helpers: golden frames, PTS/DTS, scene state (#266)
- poll the log buffer instead of a fixed sleep in worker log tests (#264)
- consolidate ci_pinning surface guards, phase 3 (Part of #231) (#262)
- harden the per-track model (issue #242) with isolation, pad, and doc parity (#254)
- unit-test the remux funnel fan-in with simulated tsdemux pad waves (#249)
- pin shared-chat reply threading to the joined room's delivery id (#206)
- require a git identity in every weekly-promotion committing step (#199)
- M6 resource report — 6 routed sources with full filter chains within budget (#161)
Refactoring
- parse workflow YAML structurally in guard scripts (Part of #231) (#263)
- slim the pinning suite by origin-tested detail pins (phase 1+2) (#257)
Housekeeping
- codeql-action v4.39.0 -> v4.39.1 nachgezogen (#326)
- Sechs veraltete Action-Pins innerhalb ihrer Major-Version angehoben (#325)
- bump actions/upload-artifact from 7.0.1 to 7.0.2 (#313)
- bump github/codeql-action/init from 4.38.2 to 4.38.3 (#317)
- bump rustls from 0.23.43 to 0.23.45 in /fuzz (#308)
- bump the wasm...
Rivulet 0.65.0-alpha.292
Features
- stabile Capture-Backends (#296), strukturierte Encoder-Erkennung (#295) und typisierte Früh-Validierung (#294) (#320)
- Crashreport wie in OBS anbieten (Help → Crash reports, ohne Token, ohne Auto-Filing) (#305)
- Crashreport als kopierfertigen Bugreport erzeugen (Settings, lokal, ohne Transport) (#299)
- YouTube sendet ueber die offizielle Live-Streaming-API (Issue #100) (#291)
- Steam-Erkennung laeuft auch auf Linux, ueber XDG statt Registry (#284)
- Steam-Installationsverzeichnisse fuellen die Executable-Liste (#283)
- Epic, GOG, Origin/EA app und Battle.net identifizieren (#281)
- batch rendering — video from code (M7 W3, #189)
- report which nondeterminism sources a run used (M7 W2a, #187) (#265)
- rivulet inspect — pipeline inspector/diagnostics (M7 W5, #191) (#261)
- track-model GUI — tracks panel, membership, persistence, i18n (#247)
- container/remux parity for multi-track recordings (#242) (#246)
- build per-bus pipeline branches with live track masters (#242) (#245)
- per-track audio model — bus types, audio_tracks_v1, migration (#242) (#244)
- log redacted pipeline plus GStreamer domain/code on construction failure (#243)
- Steam game detection via local manifests (#239) (#240)
- add injectable engine clock with virtual PTS stamping (#187) (#238)
- add macOS Core Audio device capture for the Mixer (#231) (#237)
- add Linux PipeWire device capture for the Mixer (#231) (#236)
- real wry browser-source adapter with input forwarding and transparency (#227) (#228)
- live-refresh the per-app process picker while it is open
- live-refresh the WASAPI device picker while it is open
- WASAPI device capture for mixer Output/Input sources (#229) (#230)
- scene-item copy/paste with deterministic ids and paste-undo (#192) (#226)
- wry/WebView2 browser-source POC via CapturePreview (#215) (#223)
- per-platform stream title/game drafts in the stream-info editor (#214) (#220)
- add replay-buffer and studio-mode v5 actions for full Stream Deck coverage (#219)
- per-source rate limiting with visible suppression notices (#210)
- parse YouTube engagement events (Super Chats/Stickers/members) from the Innertube poll feed (#209)
- parse Kick engagement events (subs/gifts) from the Pusher chat stream (#208)
- make the raid alert direction configurable (out/in/both) (#207)
- resolve shared-chat room ids to channel logins via cached Helix lookup (#205)
- attribute Twitch Shared Chat messages by source room (#203)
- stream-info editor in the combined dock (#197)
- headless rivulet-cli MVP with record subcommand (issue #186) (#194)
- VOD track settings UI for the streaming view (issue #78) (#180)
- VOD track third audio branch in dual-output recording (issue #78) (#179)
- re-enable AccessKit and confirm destructive actions (#171)
- combined alerts dock — one live list for all platforms (#166)
- combined multi-platform chat dock — one list, one send box (#164)
- sound/voice generation track for the AI Creative Studio (#162)
- macOS system-loopback per-app fallback (Phase 5 of #154) (#160)
- Linux PipeWire per-app audio capture backend (Phase 4 of #154) (#158)
- WASAPI per-application capture backend (Phase 3, #154) (#157)
- multi-track audio routing mixer (M6 #154 Phase 2) (#156)
- multi-track audio routing engine core (M6, #154 Phase 1) (#155)
- emit SceneSwitch, ChatConnect and RecordingError events (#152)
- Phase 3 capability approval + install flow (registry + GUI) (#146)
- complete Phase 2 WASM plugin runtime (wasmtime sandbox + lifecycle) (#142)
- AUR PKGBUILD for Arch Linux (#140)
- mobile & HTTP remote companion for LAN scenes/record/stream (M6) (#141)
- native outbound Twitch EventSub WebSocket transport (M5) (#139)
- opt-in loopback webhook receiver (M5) (#132)
- Flathub Stage 2 preparation (M5) (#135)
- Scoop bucket for Rivulet (no signing required) (#137)
- WinGet Stage 2 preparation (M5) (#134)
- native chat-dock alert ingestion (M5) (#130)
- M5 opt-in, privacy-first usage telemetry (#128)
- Spanish as third wiki language + topic report in wiki job (#125)
- SignPath Foundation Windows signing path (#50) (#124)
- Linux GPG signing and maintainer setup doc (#50) (#123)
- auto-derive user-guide topics from GUI i18n keys (#121)
- doc-freshness enforcement for wiki and user manual (#120)
- host-boundary skip-path tests (Z96-3) (#118)
- Windows COM host skeleton (Z96-2) with boundary tests (#117)
- source delete hotkey (M5 OBS 32.2 parity) (#113) (#114)
- restream, auto-clips, VST3 host boundary (#116)
- complete multi-language support (M5) (#115)
Bug fixes
- wasmtime 48.0.5 → 49.0.3, wasmtime-wasi → 49.0.3 und rustls → 0.23.46 (16 RUSTSEC-Advisories) (#321)
- Doku-Assets aus der Manifest-Abdeckung ausschliessen (#286)
- make the retry backoff and the filename renderer total (#273)
- stop the PMT pre-scan from dropping the last audio track (#272)
- parse H.265 recording streams so NVENC/x265 pipelines build (#255)
- report a failed pipeline build once per session, not once per frame (#253)
- colocate WebView2Loader.dll with the exe on every Windows build
- speak the real v5 wire names so Stream Deck plugins can drive Rivulet (#212)
- use the directional from_broadcaster_user_id raid condition (#204)
- nightly is green again — alsa deps, drifted pins, tag regex (#173)
- poll EventSub stats until subscriptions are created (#169)
- arm EventSub API stub deadline on first request (#167)
- weekly promotion sets a git identity before tagging (#165)
- resolve the open code-scanning alerts (#112)
Documentation
- record #327 (blocking stale-pins gate) and the develop ruleset change (#329)
- Beta-Scope auf Windows + Linux festgelegt, Kriterium #4 ehrlich formuliert (macOS bewusst zurückgestellt) (#306)
- Meilenstein eroeffnet — sechs Workstream-Issues plus belegter Ist-Zustand (#298)
- M7-Abschlussbericht + korrekte Statuszeilen (Conditional Pass) (#290)
- document and pin the dismissed Dependabot glib advisory (#271)
- document the full branch-commit-PR-merge flow (#250)
- document the WebView2Loader.dll copy step for local GUI runs
- close the interim backlog milestone — README status, shipped #215 (#224)
- mark M6.9 per-platform stream metadata (#214) as shipped (#221)
- add interim backlog milestone for scene & stream polish (issues #214-#217) (#218)
- Stream Deck connection steps in the obs-websocket section (#213)
- design the automated winget-pkgs submission flow (#201)
- document the stream-info editor in the combined chat dock (#198)
- spec and workstream issues for the Automation & Determinism milestone (#193)
- track F-M6-001/002 live-evidence follow-ups (#182/#183) (#184)
- document global status surface and sync stale repo docs with the wiki (#181)
- describe combined chat dock and OS-vault account model (#170)
- creator toolkit completion report and milestone close (#168)
- M6 status to In progress with per-criterion gate notes (#153)
- AI settings placement — Settings page + Assistant tab (closes #149) (#151)
- close M5 with honest annotations (#150)
- M5 descope annotations — OBS-compat to M11, honest blockers (#148)
- AI Creative Studio (Spark-like) roadmap acceptance + off-switches (#143)
- mark global hotkeys, Discord RP and chat dock (M5) Done (#133)
- record SignPath Foundation application as submitted (#131)
- add ready-to-submit SignPath Foundation application draft (#126)
- Z96-4 hosting contract, platform matrix, and gating (#122)
- decompose #78 and #96 into subtasks (#111)
Build & packaging
CI
- make the pin-staleness check a blocking PR check (#327)
- SHA256SUMS aus einem getesteten Skript, plus Post-Publish-Verifikation (#285)
- melde verrutschte Action-Pins bei jedem Push statt nur nachts (#280)
- bump the stale rust-toolchain pin and stop treating branch drift as fatal (#279)
- offene Code-Scanning-Alerts als Gate erzwingen (#274)
- daily PAT expiry guard for SCOOP_BUCKET_TOKEN (#202)
- bump codeql-action pins v4.38.0 -> v4.38.1 (#196)
- delete temporary release branch after a successful release (#195)
- extend apt package parity to all workflows (#178)
- enforce apt package parity between ci.yml and nightly.yml (#175)
- prepare every active channel once per week from weekly-latest (#145)
Tests
- run the #293 examples in CI, link their overview, and drain the YouTube fixture request (#310)
- M8 API-contract proof, wrapper regression guards, and honest delivery state (#307)
- Frame-Budget-Gate misst den Producer-Pfad statt des Schedulers (#287)
- pace the resource-report producer so the gate stops depending on machine load (#278)
- stop the EventSub puppet test from losing a subscription POST (#275)
- shared wait_until poll helper replaces hand-rolled deadline loops (#269)
- poll async engine state instead of fixed sleeps (timing audit) (#267)
- deterministic test helpers: golden frames, PTS/DTS, scene state (#266)
- poll the log buffer instead of a fixed sleep in worker log tests (#264)
- consolidate ci_pinning surface guards, phase 3 (Part of #231) (#262)
- harden the per-track model (issue #242) with isolation, pad, and doc parity (#254)
- unit-test the remux funnel fan-in with simulated tsdemux pad waves (#249)
- pin shared-chat reply threading to the joined room's delivery id (#206)
- require a git identity in every weekly-promotion committing step (#199)
- M6 resource report — 6 routed sources with full filter chains within budget (#161)
Refactoring
- parse workflow YAML structurally in guard scripts (Part of #231) (#263)
- slim the pinning suite by origin-tested detail pins (phase 1+2) (#257)
Housekeeping
- codeql-action v4.39.0 -> v4.39.1 nachgezogen (#326)
- Sechs veraltete Action-Pins innerhalb ihrer Major-Version angehoben (#325)
- bump actions/upload-artifact from 7.0.1 to 7.0.2 (#313)
- bump github/codeql-action/init from 4.38.2 to 4.38.3 (#317)
- bump rustls from 0.23.43 to 0.23.45 in /fuzz (#308)
- bump the wasmtime family 48.0.3 -> 48.0.5 for seven advisories (#...
Rivulet 0.65.0-alpha.291
Features
- stabile Capture-Backends (#296), strukturierte Encoder-Erkennung (#295) und typisierte Früh-Validierung (#294) (#320)
- Crashreport wie in OBS anbieten (Help → Crash reports, ohne Token, ohne Auto-Filing) (#305)
- Crashreport als kopierfertigen Bugreport erzeugen (Settings, lokal, ohne Transport) (#299)
- YouTube sendet ueber die offizielle Live-Streaming-API (Issue #100) (#291)
- Steam-Erkennung laeuft auch auf Linux, ueber XDG statt Registry (#284)
- Steam-Installationsverzeichnisse fuellen die Executable-Liste (#283)
- Epic, GOG, Origin/EA app und Battle.net identifizieren (#281)
- batch rendering — video from code (M7 W3, #189)
- report which nondeterminism sources a run used (M7 W2a, #187) (#265)
- rivulet inspect — pipeline inspector/diagnostics (M7 W5, #191) (#261)
- track-model GUI — tracks panel, membership, persistence, i18n (#247)
- container/remux parity for multi-track recordings (#242) (#246)
- build per-bus pipeline branches with live track masters (#242) (#245)
- per-track audio model — bus types, audio_tracks_v1, migration (#242) (#244)
- log redacted pipeline plus GStreamer domain/code on construction failure (#243)
- Steam game detection via local manifests (#239) (#240)
- add injectable engine clock with virtual PTS stamping (#187) (#238)
- add macOS Core Audio device capture for the Mixer (#231) (#237)
- add Linux PipeWire device capture for the Mixer (#231) (#236)
- real wry browser-source adapter with input forwarding and transparency (#227) (#228)
- live-refresh the per-app process picker while it is open
- live-refresh the WASAPI device picker while it is open
- WASAPI device capture for mixer Output/Input sources (#229) (#230)
- scene-item copy/paste with deterministic ids and paste-undo (#192) (#226)
- wry/WebView2 browser-source POC via CapturePreview (#215) (#223)
- per-platform stream title/game drafts in the stream-info editor (#214) (#220)
- add replay-buffer and studio-mode v5 actions for full Stream Deck coverage (#219)
- per-source rate limiting with visible suppression notices (#210)
- parse YouTube engagement events (Super Chats/Stickers/members) from the Innertube poll feed (#209)
- parse Kick engagement events (subs/gifts) from the Pusher chat stream (#208)
- make the raid alert direction configurable (out/in/both) (#207)
- resolve shared-chat room ids to channel logins via cached Helix lookup (#205)
- attribute Twitch Shared Chat messages by source room (#203)
- stream-info editor in the combined dock (#197)
- headless rivulet-cli MVP with record subcommand (issue #186) (#194)
- VOD track settings UI for the streaming view (issue #78) (#180)
- VOD track third audio branch in dual-output recording (issue #78) (#179)
- re-enable AccessKit and confirm destructive actions (#171)
- combined alerts dock — one live list for all platforms (#166)
- combined multi-platform chat dock — one list, one send box (#164)
- sound/voice generation track for the AI Creative Studio (#162)
- macOS system-loopback per-app fallback (Phase 5 of #154) (#160)
- Linux PipeWire per-app audio capture backend (Phase 4 of #154) (#158)
- WASAPI per-application capture backend (Phase 3, #154) (#157)
- multi-track audio routing mixer (M6 #154 Phase 2) (#156)
- multi-track audio routing engine core (M6, #154 Phase 1) (#155)
- emit SceneSwitch, ChatConnect and RecordingError events (#152)
- Phase 3 capability approval + install flow (registry + GUI) (#146)
- complete Phase 2 WASM plugin runtime (wasmtime sandbox + lifecycle) (#142)
- AUR PKGBUILD for Arch Linux (#140)
- mobile & HTTP remote companion for LAN scenes/record/stream (M6) (#141)
- native outbound Twitch EventSub WebSocket transport (M5) (#139)
- opt-in loopback webhook receiver (M5) (#132)
- Flathub Stage 2 preparation (M5) (#135)
- Scoop bucket for Rivulet (no signing required) (#137)
- WinGet Stage 2 preparation (M5) (#134)
- native chat-dock alert ingestion (M5) (#130)
- M5 opt-in, privacy-first usage telemetry (#128)
- Spanish as third wiki language + topic report in wiki job (#125)
- SignPath Foundation Windows signing path (#50) (#124)
- Linux GPG signing and maintainer setup doc (#50) (#123)
- auto-derive user-guide topics from GUI i18n keys (#121)
- doc-freshness enforcement for wiki and user manual (#120)
- host-boundary skip-path tests (Z96-3) (#118)
- Windows COM host skeleton (Z96-2) with boundary tests (#117)
- source delete hotkey (M5 OBS 32.2 parity) (#113) (#114)
- restream, auto-clips, VST3 host boundary (#116)
- complete multi-language support (M5) (#115)
Bug fixes
- wasmtime 48.0.5 → 49.0.3, wasmtime-wasi → 49.0.3 und rustls → 0.23.46 (16 RUSTSEC-Advisories) (#321)
- Doku-Assets aus der Manifest-Abdeckung ausschliessen (#286)
- make the retry backoff and the filename renderer total (#273)
- stop the PMT pre-scan from dropping the last audio track (#272)
- parse H.265 recording streams so NVENC/x265 pipelines build (#255)
- report a failed pipeline build once per session, not once per frame (#253)
- colocate WebView2Loader.dll with the exe on every Windows build
- speak the real v5 wire names so Stream Deck plugins can drive Rivulet (#212)
- use the directional from_broadcaster_user_id raid condition (#204)
- nightly is green again — alsa deps, drifted pins, tag regex (#173)
- poll EventSub stats until subscriptions are created (#169)
- arm EventSub API stub deadline on first request (#167)
- weekly promotion sets a git identity before tagging (#165)
- resolve the open code-scanning alerts (#112)
Documentation
- Beta-Scope auf Windows + Linux festgelegt, Kriterium #4 ehrlich formuliert (macOS bewusst zurückgestellt) (#306)
- Meilenstein eroeffnet — sechs Workstream-Issues plus belegter Ist-Zustand (#298)
- M7-Abschlussbericht + korrekte Statuszeilen (Conditional Pass) (#290)
- document and pin the dismissed Dependabot glib advisory (#271)
- document the full branch-commit-PR-merge flow (#250)
- document the WebView2Loader.dll copy step for local GUI runs
- close the interim backlog milestone — README status, shipped #215 (#224)
- mark M6.9 per-platform stream metadata (#214) as shipped (#221)
- add interim backlog milestone for scene & stream polish (issues #214-#217) (#218)
- Stream Deck connection steps in the obs-websocket section (#213)
- design the automated winget-pkgs submission flow (#201)
- document the stream-info editor in the combined chat dock (#198)
- spec and workstream issues for the Automation & Determinism milestone (#193)
- track F-M6-001/002 live-evidence follow-ups (#182/#183) (#184)
- document global status surface and sync stale repo docs with the wiki (#181)
- describe combined chat dock and OS-vault account model (#170)
- creator toolkit completion report and milestone close (#168)
- M6 status to In progress with per-criterion gate notes (#153)
- AI settings placement — Settings page + Assistant tab (closes #149) (#151)
- close M5 with honest annotations (#150)
- M5 descope annotations — OBS-compat to M11, honest blockers (#148)
- AI Creative Studio (Spark-like) roadmap acceptance + off-switches (#143)
- mark global hotkeys, Discord RP and chat dock (M5) Done (#133)
- record SignPath Foundation application as submitted (#131)
- add ready-to-submit SignPath Foundation application draft (#126)
- Z96-4 hosting contract, platform matrix, and gating (#122)
- decompose #78 and #96 into subtasks (#111)
Build & packaging
CI
- make the pin-staleness check a blocking PR check (#327)
- SHA256SUMS aus einem getesteten Skript, plus Post-Publish-Verifikation (#285)
- melde verrutschte Action-Pins bei jedem Push statt nur nachts (#280)
- bump the stale rust-toolchain pin and stop treating branch drift as fatal (#279)
- offene Code-Scanning-Alerts als Gate erzwingen (#274)
- daily PAT expiry guard for SCOOP_BUCKET_TOKEN (#202)
- bump codeql-action pins v4.38.0 -> v4.38.1 (#196)
- delete temporary release branch after a successful release (#195)
- extend apt package parity to all workflows (#178)
- enforce apt package parity between ci.yml and nightly.yml (#175)
- prepare every active channel once per week from weekly-latest (#145)
Tests
- run the #293 examples in CI, link their overview, and drain the YouTube fixture request (#310)
- M8 API-contract proof, wrapper regression guards, and honest delivery state (#307)
- Frame-Budget-Gate misst den Producer-Pfad statt des Schedulers (#287)
- pace the resource-report producer so the gate stops depending on machine load (#278)
- stop the EventSub puppet test from losing a subscription POST (#275)
- shared wait_until poll helper replaces hand-rolled deadline loops (#269)
- poll async engine state instead of fixed sleeps (timing audit) (#267)
- deterministic test helpers: golden frames, PTS/DTS, scene state (#266)
- poll the log buffer instead of a fixed sleep in worker log tests (#264)
- consolidate ci_pinning surface guards, phase 3 (Part of #231) (#262)
- harden the per-track model (issue #242) with isolation, pad, and doc parity (#254)
- unit-test the remux funnel fan-in with simulated tsdemux pad waves (#249)
- pin shared-chat reply threading to the joined room's delivery id (#206)
- require a git identity in every weekly-promotion committing step (#199)
- M6 resource report — 6 routed sources with full filter chains within budget (#161)
Refactoring
- parse workflow YAML structurally in guard scripts (Part of #231) (#263)
- slim the pinning suite by origin-tested detail pins (phase 1+2) (#257)
Housekeeping
- codeql-action v4.39.0 -> v4.39.1 nachgezogen (#326)
- Sechs veraltete Action-Pins innerhalb ihrer Major-Version angehoben (#325)
- bump actions/upload-artifact from 7.0.1 to 7.0.2 (#313)
- bump github/codeql-action/init from 4.38.2 to 4.38.3 (#317)
- bump rustls from 0.23.43 to 0.23.45 in /fuzz (#308)
- bump the wasmtime family 48.0.3 -> 48.0.5 for seven advisories (#277)
- team readiness — CODEOWNERS, staged review gate, clean desk (#251)
- bum...
Rivulet 0.65.0-alpha.290
Features
- stabile Capture-Backends (#296), strukturierte Encoder-Erkennung (#295) und typisierte Früh-Validierung (#294) (#320)
- Crashreport wie in OBS anbieten (Help → Crash reports, ohne Token, ohne Auto-Filing) (#305)
- Crashreport als kopierfertigen Bugreport erzeugen (Settings, lokal, ohne Transport) (#299)
- YouTube sendet ueber die offizielle Live-Streaming-API (Issue #100) (#291)
- Steam-Erkennung laeuft auch auf Linux, ueber XDG statt Registry (#284)
- Steam-Installationsverzeichnisse fuellen die Executable-Liste (#283)
- Epic, GOG, Origin/EA app und Battle.net identifizieren (#281)
- batch rendering — video from code (M7 W3, #189)
- report which nondeterminism sources a run used (M7 W2a, #187) (#265)
- rivulet inspect — pipeline inspector/diagnostics (M7 W5, #191) (#261)
- track-model GUI — tracks panel, membership, persistence, i18n (#247)
- container/remux parity for multi-track recordings (#242) (#246)
- build per-bus pipeline branches with live track masters (#242) (#245)
- per-track audio model — bus types, audio_tracks_v1, migration (#242) (#244)
- log redacted pipeline plus GStreamer domain/code on construction failure (#243)
- Steam game detection via local manifests (#239) (#240)
- add injectable engine clock with virtual PTS stamping (#187) (#238)
- add macOS Core Audio device capture for the Mixer (#231) (#237)
- add Linux PipeWire device capture for the Mixer (#231) (#236)
- real wry browser-source adapter with input forwarding and transparency (#227) (#228)
- live-refresh the per-app process picker while it is open
- live-refresh the WASAPI device picker while it is open
- WASAPI device capture for mixer Output/Input sources (#229) (#230)
- scene-item copy/paste with deterministic ids and paste-undo (#192) (#226)
- wry/WebView2 browser-source POC via CapturePreview (#215) (#223)
- per-platform stream title/game drafts in the stream-info editor (#214) (#220)
- add replay-buffer and studio-mode v5 actions for full Stream Deck coverage (#219)
- per-source rate limiting with visible suppression notices (#210)
- parse YouTube engagement events (Super Chats/Stickers/members) from the Innertube poll feed (#209)
- parse Kick engagement events (subs/gifts) from the Pusher chat stream (#208)
- make the raid alert direction configurable (out/in/both) (#207)
- resolve shared-chat room ids to channel logins via cached Helix lookup (#205)
- attribute Twitch Shared Chat messages by source room (#203)
- stream-info editor in the combined dock (#197)
- headless rivulet-cli MVP with record subcommand (issue #186) (#194)
- VOD track settings UI for the streaming view (issue #78) (#180)
- VOD track third audio branch in dual-output recording (issue #78) (#179)
- re-enable AccessKit and confirm destructive actions (#171)
- combined alerts dock — one live list for all platforms (#166)
- combined multi-platform chat dock — one list, one send box (#164)
- sound/voice generation track for the AI Creative Studio (#162)
- macOS system-loopback per-app fallback (Phase 5 of #154) (#160)
- Linux PipeWire per-app audio capture backend (Phase 4 of #154) (#158)
- WASAPI per-application capture backend (Phase 3, #154) (#157)
- multi-track audio routing mixer (M6 #154 Phase 2) (#156)
- multi-track audio routing engine core (M6, #154 Phase 1) (#155)
- emit SceneSwitch, ChatConnect and RecordingError events (#152)
- Phase 3 capability approval + install flow (registry + GUI) (#146)
- complete Phase 2 WASM plugin runtime (wasmtime sandbox + lifecycle) (#142)
- AUR PKGBUILD for Arch Linux (#140)
- mobile & HTTP remote companion for LAN scenes/record/stream (M6) (#141)
- native outbound Twitch EventSub WebSocket transport (M5) (#139)
- opt-in loopback webhook receiver (M5) (#132)
- Flathub Stage 2 preparation (M5) (#135)
- Scoop bucket for Rivulet (no signing required) (#137)
- WinGet Stage 2 preparation (M5) (#134)
- native chat-dock alert ingestion (M5) (#130)
- M5 opt-in, privacy-first usage telemetry (#128)
- Spanish as third wiki language + topic report in wiki job (#125)
- SignPath Foundation Windows signing path (#50) (#124)
- Linux GPG signing and maintainer setup doc (#50) (#123)
- auto-derive user-guide topics from GUI i18n keys (#121)
- doc-freshness enforcement for wiki and user manual (#120)
- host-boundary skip-path tests (Z96-3) (#118)
- Windows COM host skeleton (Z96-2) with boundary tests (#117)
- source delete hotkey (M5 OBS 32.2 parity) (#113) (#114)
- restream, auto-clips, VST3 host boundary (#116)
- complete multi-language support (M5) (#115)
Bug fixes
- wasmtime 48.0.5 → 49.0.3, wasmtime-wasi → 49.0.3 und rustls → 0.23.46 (16 RUSTSEC-Advisories) (#321)
- Doku-Assets aus der Manifest-Abdeckung ausschliessen (#286)
- make the retry backoff and the filename renderer total (#273)
- stop the PMT pre-scan from dropping the last audio track (#272)
- parse H.265 recording streams so NVENC/x265 pipelines build (#255)
- report a failed pipeline build once per session, not once per frame (#253)
- colocate WebView2Loader.dll with the exe on every Windows build
- speak the real v5 wire names so Stream Deck plugins can drive Rivulet (#212)
- use the directional from_broadcaster_user_id raid condition (#204)
- nightly is green again — alsa deps, drifted pins, tag regex (#173)
- poll EventSub stats until subscriptions are created (#169)
- arm EventSub API stub deadline on first request (#167)
- weekly promotion sets a git identity before tagging (#165)
- resolve the open code-scanning alerts (#112)
Documentation
- Beta-Scope auf Windows + Linux festgelegt, Kriterium #4 ehrlich formuliert (macOS bewusst zurückgestellt) (#306)
- Meilenstein eroeffnet — sechs Workstream-Issues plus belegter Ist-Zustand (#298)
- M7-Abschlussbericht + korrekte Statuszeilen (Conditional Pass) (#290)
- document and pin the dismissed Dependabot glib advisory (#271)
- document the full branch-commit-PR-merge flow (#250)
- document the WebView2Loader.dll copy step for local GUI runs
- close the interim backlog milestone — README status, shipped #215 (#224)
- mark M6.9 per-platform stream metadata (#214) as shipped (#221)
- add interim backlog milestone for scene & stream polish (issues #214-#217) (#218)
- Stream Deck connection steps in the obs-websocket section (#213)
- design the automated winget-pkgs submission flow (#201)
- document the stream-info editor in the combined chat dock (#198)
- spec and workstream issues for the Automation & Determinism milestone (#193)
- track F-M6-001/002 live-evidence follow-ups (#182/#183) (#184)
- document global status surface and sync stale repo docs with the wiki (#181)
- describe combined chat dock and OS-vault account model (#170)
- creator toolkit completion report and milestone close (#168)
- M6 status to In progress with per-criterion gate notes (#153)
- AI settings placement — Settings page + Assistant tab (closes #149) (#151)
- close M5 with honest annotations (#150)
- M5 descope annotations — OBS-compat to M11, honest blockers (#148)
- AI Creative Studio (Spark-like) roadmap acceptance + off-switches (#143)
- mark global hotkeys, Discord RP and chat dock (M5) Done (#133)
- record SignPath Foundation application as submitted (#131)
- add ready-to-submit SignPath Foundation application draft (#126)
- Z96-4 hosting contract, platform matrix, and gating (#122)
- decompose #78 and #96 into subtasks (#111)
Build & packaging
CI
- SHA256SUMS aus einem getesteten Skript, plus Post-Publish-Verifikation (#285)
- melde verrutschte Action-Pins bei jedem Push statt nur nachts (#280)
- bump the stale rust-toolchain pin and stop treating branch drift as fatal (#279)
- offene Code-Scanning-Alerts als Gate erzwingen (#274)
- daily PAT expiry guard for SCOOP_BUCKET_TOKEN (#202)
- bump codeql-action pins v4.38.0 -> v4.38.1 (#196)
- delete temporary release branch after a successful release (#195)
- extend apt package parity to all workflows (#178)
- enforce apt package parity between ci.yml and nightly.yml (#175)
- prepare every active channel once per week from weekly-latest (#145)
Tests
- run the #293 examples in CI, link their overview, and drain the YouTube fixture request (#310)
- M8 API-contract proof, wrapper regression guards, and honest delivery state (#307)
- Frame-Budget-Gate misst den Producer-Pfad statt des Schedulers (#287)
- pace the resource-report producer so the gate stops depending on machine load (#278)
- stop the EventSub puppet test from losing a subscription POST (#275)
- shared wait_until poll helper replaces hand-rolled deadline loops (#269)
- poll async engine state instead of fixed sleeps (timing audit) (#267)
- deterministic test helpers: golden frames, PTS/DTS, scene state (#266)
- poll the log buffer instead of a fixed sleep in worker log tests (#264)
- consolidate ci_pinning surface guards, phase 3 (Part of #231) (#262)
- harden the per-track model (issue #242) with isolation, pad, and doc parity (#254)
- unit-test the remux funnel fan-in with simulated tsdemux pad waves (#249)
- pin shared-chat reply threading to the joined room's delivery id (#206)
- require a git identity in every weekly-promotion committing step (#199)
- M6 resource report — 6 routed sources with full filter chains within budget (#161)
Refactoring
- parse workflow YAML structurally in guard scripts (Part of #231) (#263)
- slim the pinning suite by origin-tested detail pins (phase 1+2) (#257)
Housekeeping
- codeql-action v4.39.0 -> v4.39.1 nachgezogen (#326)
- Sechs veraltete Action-Pins innerhalb ihrer Major-Version angehoben (#325)
- bump actions/upload-artifact from 7.0.1 to 7.0.2 (#313)
- bump github/codeql-action/init from 4.38.2 to 4.38.3 (#317)
- bump rustls from 0.23.43 to 0.23.45 in /fuzz (#308)
- bump the wasmtime family 48.0.3 -> 48.0.5 for seven advisories (#277)
- team readiness — CODEOWNERS, staged review gate, clean desk (#251)
- bump codeql-action pins to v4.38.2 (#248)
- paste-in SignPath...
Rivulet 0.65.0-alpha.289
Features
- stabile Capture-Backends (#296), strukturierte Encoder-Erkennung (#295) und typisierte Früh-Validierung (#294) (#320)
- Crashreport wie in OBS anbieten (Help → Crash reports, ohne Token, ohne Auto-Filing) (#305)
- Crashreport als kopierfertigen Bugreport erzeugen (Settings, lokal, ohne Transport) (#299)
- YouTube sendet ueber die offizielle Live-Streaming-API (Issue #100) (#291)
- Steam-Erkennung laeuft auch auf Linux, ueber XDG statt Registry (#284)
- Steam-Installationsverzeichnisse fuellen die Executable-Liste (#283)
- Epic, GOG, Origin/EA app und Battle.net identifizieren (#281)
- batch rendering — video from code (M7 W3, #189)
- report which nondeterminism sources a run used (M7 W2a, #187) (#265)
- rivulet inspect — pipeline inspector/diagnostics (M7 W5, #191) (#261)
- track-model GUI — tracks panel, membership, persistence, i18n (#247)
- container/remux parity for multi-track recordings (#242) (#246)
- build per-bus pipeline branches with live track masters (#242) (#245)
- per-track audio model — bus types, audio_tracks_v1, migration (#242) (#244)
- log redacted pipeline plus GStreamer domain/code on construction failure (#243)
- Steam game detection via local manifests (#239) (#240)
- add injectable engine clock with virtual PTS stamping (#187) (#238)
- add macOS Core Audio device capture for the Mixer (#231) (#237)
- add Linux PipeWire device capture for the Mixer (#231) (#236)
- real wry browser-source adapter with input forwarding and transparency (#227) (#228)
- live-refresh the per-app process picker while it is open
- live-refresh the WASAPI device picker while it is open
- WASAPI device capture for mixer Output/Input sources (#229) (#230)
- scene-item copy/paste with deterministic ids and paste-undo (#192) (#226)
- wry/WebView2 browser-source POC via CapturePreview (#215) (#223)
- per-platform stream title/game drafts in the stream-info editor (#214) (#220)
- add replay-buffer and studio-mode v5 actions for full Stream Deck coverage (#219)
- per-source rate limiting with visible suppression notices (#210)
- parse YouTube engagement events (Super Chats/Stickers/members) from the Innertube poll feed (#209)
- parse Kick engagement events (subs/gifts) from the Pusher chat stream (#208)
- make the raid alert direction configurable (out/in/both) (#207)
- resolve shared-chat room ids to channel logins via cached Helix lookup (#205)
- attribute Twitch Shared Chat messages by source room (#203)
- stream-info editor in the combined dock (#197)
- headless rivulet-cli MVP with record subcommand (issue #186) (#194)
- VOD track settings UI for the streaming view (issue #78) (#180)
- VOD track third audio branch in dual-output recording (issue #78) (#179)
- re-enable AccessKit and confirm destructive actions (#171)
- combined alerts dock — one live list for all platforms (#166)
- combined multi-platform chat dock — one list, one send box (#164)
- sound/voice generation track for the AI Creative Studio (#162)
- macOS system-loopback per-app fallback (Phase 5 of #154) (#160)
- Linux PipeWire per-app audio capture backend (Phase 4 of #154) (#158)
- WASAPI per-application capture backend (Phase 3, #154) (#157)
- multi-track audio routing mixer (M6 #154 Phase 2) (#156)
- multi-track audio routing engine core (M6, #154 Phase 1) (#155)
- emit SceneSwitch, ChatConnect and RecordingError events (#152)
- Phase 3 capability approval + install flow (registry + GUI) (#146)
- complete Phase 2 WASM plugin runtime (wasmtime sandbox + lifecycle) (#142)
- AUR PKGBUILD for Arch Linux (#140)
- mobile & HTTP remote companion for LAN scenes/record/stream (M6) (#141)
- native outbound Twitch EventSub WebSocket transport (M5) (#139)
- opt-in loopback webhook receiver (M5) (#132)
- Flathub Stage 2 preparation (M5) (#135)
- Scoop bucket for Rivulet (no signing required) (#137)
- WinGet Stage 2 preparation (M5) (#134)
- native chat-dock alert ingestion (M5) (#130)
- M5 opt-in, privacy-first usage telemetry (#128)
- Spanish as third wiki language + topic report in wiki job (#125)
- SignPath Foundation Windows signing path (#50) (#124)
- Linux GPG signing and maintainer setup doc (#50) (#123)
- auto-derive user-guide topics from GUI i18n keys (#121)
- doc-freshness enforcement for wiki and user manual (#120)
- host-boundary skip-path tests (Z96-3) (#118)
- Windows COM host skeleton (Z96-2) with boundary tests (#117)
- source delete hotkey (M5 OBS 32.2 parity) (#113) (#114)
- restream, auto-clips, VST3 host boundary (#116)
- complete multi-language support (M5) (#115)
Bug fixes
- wasmtime 48.0.5 → 49.0.3, wasmtime-wasi → 49.0.3 und rustls → 0.23.46 (16 RUSTSEC-Advisories) (#321)
- Doku-Assets aus der Manifest-Abdeckung ausschliessen (#286)
- make the retry backoff and the filename renderer total (#273)
- stop the PMT pre-scan from dropping the last audio track (#272)
- parse H.265 recording streams so NVENC/x265 pipelines build (#255)
- report a failed pipeline build once per session, not once per frame (#253)
- colocate WebView2Loader.dll with the exe on every Windows build
- speak the real v5 wire names so Stream Deck plugins can drive Rivulet (#212)
- use the directional from_broadcaster_user_id raid condition (#204)
- nightly is green again — alsa deps, drifted pins, tag regex (#173)
- poll EventSub stats until subscriptions are created (#169)
- arm EventSub API stub deadline on first request (#167)
- weekly promotion sets a git identity before tagging (#165)
- resolve the open code-scanning alerts (#112)
Documentation
- Beta-Scope auf Windows + Linux festgelegt, Kriterium #4 ehrlich formuliert (macOS bewusst zurückgestellt) (#306)
- Meilenstein eroeffnet — sechs Workstream-Issues plus belegter Ist-Zustand (#298)
- M7-Abschlussbericht + korrekte Statuszeilen (Conditional Pass) (#290)
- document and pin the dismissed Dependabot glib advisory (#271)
- document the full branch-commit-PR-merge flow (#250)
- document the WebView2Loader.dll copy step for local GUI runs
- close the interim backlog milestone — README status, shipped #215 (#224)
- mark M6.9 per-platform stream metadata (#214) as shipped (#221)
- add interim backlog milestone for scene & stream polish (issues #214-#217) (#218)
- Stream Deck connection steps in the obs-websocket section (#213)
- design the automated winget-pkgs submission flow (#201)
- document the stream-info editor in the combined chat dock (#198)
- spec and workstream issues for the Automation & Determinism milestone (#193)
- track F-M6-001/002 live-evidence follow-ups (#182/#183) (#184)
- document global status surface and sync stale repo docs with the wiki (#181)
- describe combined chat dock and OS-vault account model (#170)
- creator toolkit completion report and milestone close (#168)
- M6 status to In progress with per-criterion gate notes (#153)
- AI settings placement — Settings page + Assistant tab (closes #149) (#151)
- close M5 with honest annotations (#150)
- M5 descope annotations — OBS-compat to M11, honest blockers (#148)
- AI Creative Studio (Spark-like) roadmap acceptance + off-switches (#143)
- mark global hotkeys, Discord RP and chat dock (M5) Done (#133)
- record SignPath Foundation application as submitted (#131)
- add ready-to-submit SignPath Foundation application draft (#126)
- Z96-4 hosting contract, platform matrix, and gating (#122)
- decompose #78 and #96 into subtasks (#111)
Build & packaging
CI
- SHA256SUMS aus einem getesteten Skript, plus Post-Publish-Verifikation (#285)
- melde verrutschte Action-Pins bei jedem Push statt nur nachts (#280)
- bump the stale rust-toolchain pin and stop treating branch drift as fatal (#279)
- offene Code-Scanning-Alerts als Gate erzwingen (#274)
- daily PAT expiry guard for SCOOP_BUCKET_TOKEN (#202)
- bump codeql-action pins v4.38.0 -> v4.38.1 (#196)
- delete temporary release branch after a successful release (#195)
- extend apt package parity to all workflows (#178)
- enforce apt package parity between ci.yml and nightly.yml (#175)
- prepare every active channel once per week from weekly-latest (#145)
Tests
- run the #293 examples in CI, link their overview, and drain the YouTube fixture request (#310)
- M8 API-contract proof, wrapper regression guards, and honest delivery state (#307)
- Frame-Budget-Gate misst den Producer-Pfad statt des Schedulers (#287)
- pace the resource-report producer so the gate stops depending on machine load (#278)
- stop the EventSub puppet test from losing a subscription POST (#275)
- shared wait_until poll helper replaces hand-rolled deadline loops (#269)
- poll async engine state instead of fixed sleeps (timing audit) (#267)
- deterministic test helpers: golden frames, PTS/DTS, scene state (#266)
- poll the log buffer instead of a fixed sleep in worker log tests (#264)
- consolidate ci_pinning surface guards, phase 3 (Part of #231) (#262)
- harden the per-track model (issue #242) with isolation, pad, and doc parity (#254)
- unit-test the remux funnel fan-in with simulated tsdemux pad waves (#249)
- pin shared-chat reply threading to the joined room's delivery id (#206)
- require a git identity in every weekly-promotion committing step (#199)
- M6 resource report — 6 routed sources with full filter chains within budget (#161)
Refactoring
- parse workflow YAML structurally in guard scripts (Part of #231) (#263)
- slim the pinning suite by origin-tested detail pins (phase 1+2) (#257)
Housekeeping
- Sechs veraltete Action-Pins innerhalb ihrer Major-Version angehoben (#325)
- bump actions/upload-artifact from 7.0.1 to 7.0.2 (#313)
- bump github/codeql-action/init from 4.38.2 to 4.38.3 (#317)
- bump rustls from 0.23.43 to 0.23.45 in /fuzz (#308)
- bump the wasmtime family 48.0.3 -> 48.0.5 for seven advisories (#277)
- team readiness — CODEOWNERS, staged review gate, clean desk (#251)
- bump codeql-action pins to v4.38.2 (#248)
- paste-in SignPath artifact configuration XML (#136)
Other changes
...
Rivulet 0.65.0-alpha.288
Features
- stabile Capture-Backends (#296), strukturierte Encoder-Erkennung (#295) und typisierte Früh-Validierung (#294) (#320)
- Crashreport wie in OBS anbieten (Help → Crash reports, ohne Token, ohne Auto-Filing) (#305)
- Crashreport als kopierfertigen Bugreport erzeugen (Settings, lokal, ohne Transport) (#299)
- YouTube sendet ueber die offizielle Live-Streaming-API (Issue #100) (#291)
- Steam-Erkennung laeuft auch auf Linux, ueber XDG statt Registry (#284)
- Steam-Installationsverzeichnisse fuellen die Executable-Liste (#283)
- Epic, GOG, Origin/EA app und Battle.net identifizieren (#281)
- batch rendering — video from code (M7 W3, #189)
- report which nondeterminism sources a run used (M7 W2a, #187) (#265)
- rivulet inspect — pipeline inspector/diagnostics (M7 W5, #191) (#261)
- track-model GUI — tracks panel, membership, persistence, i18n (#247)
- container/remux parity for multi-track recordings (#242) (#246)
- build per-bus pipeline branches with live track masters (#242) (#245)
- per-track audio model — bus types, audio_tracks_v1, migration (#242) (#244)
- log redacted pipeline plus GStreamer domain/code on construction failure (#243)
- Steam game detection via local manifests (#239) (#240)
- add injectable engine clock with virtual PTS stamping (#187) (#238)
- add macOS Core Audio device capture for the Mixer (#231) (#237)
- add Linux PipeWire device capture for the Mixer (#231) (#236)
- real wry browser-source adapter with input forwarding and transparency (#227) (#228)
- live-refresh the per-app process picker while it is open
- live-refresh the WASAPI device picker while it is open
- WASAPI device capture for mixer Output/Input sources (#229) (#230)
- scene-item copy/paste with deterministic ids and paste-undo (#192) (#226)
- wry/WebView2 browser-source POC via CapturePreview (#215) (#223)
- per-platform stream title/game drafts in the stream-info editor (#214) (#220)
- add replay-buffer and studio-mode v5 actions for full Stream Deck coverage (#219)
- per-source rate limiting with visible suppression notices (#210)
- parse YouTube engagement events (Super Chats/Stickers/members) from the Innertube poll feed (#209)
- parse Kick engagement events (subs/gifts) from the Pusher chat stream (#208)
- make the raid alert direction configurable (out/in/both) (#207)
- resolve shared-chat room ids to channel logins via cached Helix lookup (#205)
- attribute Twitch Shared Chat messages by source room (#203)
- stream-info editor in the combined dock (#197)
- headless rivulet-cli MVP with record subcommand (issue #186) (#194)
- VOD track settings UI for the streaming view (issue #78) (#180)
- VOD track third audio branch in dual-output recording (issue #78) (#179)
- re-enable AccessKit and confirm destructive actions (#171)
- combined alerts dock — one live list for all platforms (#166)
- combined multi-platform chat dock — one list, one send box (#164)
- sound/voice generation track for the AI Creative Studio (#162)
- macOS system-loopback per-app fallback (Phase 5 of #154) (#160)
- Linux PipeWire per-app audio capture backend (Phase 4 of #154) (#158)
- WASAPI per-application capture backend (Phase 3, #154) (#157)
- multi-track audio routing mixer (M6 #154 Phase 2) (#156)
- multi-track audio routing engine core (M6, #154 Phase 1) (#155)
- emit SceneSwitch, ChatConnect and RecordingError events (#152)
- Phase 3 capability approval + install flow (registry + GUI) (#146)
- complete Phase 2 WASM plugin runtime (wasmtime sandbox + lifecycle) (#142)
- AUR PKGBUILD for Arch Linux (#140)
- mobile & HTTP remote companion for LAN scenes/record/stream (M6) (#141)
- native outbound Twitch EventSub WebSocket transport (M5) (#139)
- opt-in loopback webhook receiver (M5) (#132)
- Flathub Stage 2 preparation (M5) (#135)
- Scoop bucket for Rivulet (no signing required) (#137)
- WinGet Stage 2 preparation (M5) (#134)
- native chat-dock alert ingestion (M5) (#130)
- M5 opt-in, privacy-first usage telemetry (#128)
- Spanish as third wiki language + topic report in wiki job (#125)
- SignPath Foundation Windows signing path (#50) (#124)
- Linux GPG signing and maintainer setup doc (#50) (#123)
- auto-derive user-guide topics from GUI i18n keys (#121)
- doc-freshness enforcement for wiki and user manual (#120)
- host-boundary skip-path tests (Z96-3) (#118)
- Windows COM host skeleton (Z96-2) with boundary tests (#117)
- source delete hotkey (M5 OBS 32.2 parity) (#113) (#114)
- restream, auto-clips, VST3 host boundary (#116)
- complete multi-language support (M5) (#115)
Bug fixes
- wasmtime 48.0.5 → 49.0.3, wasmtime-wasi → 49.0.3 und rustls → 0.23.46 (16 RUSTSEC-Advisories) (#321)
- Doku-Assets aus der Manifest-Abdeckung ausschliessen (#286)
- make the retry backoff and the filename renderer total (#273)
- stop the PMT pre-scan from dropping the last audio track (#272)
- parse H.265 recording streams so NVENC/x265 pipelines build (#255)
- report a failed pipeline build once per session, not once per frame (#253)
- colocate WebView2Loader.dll with the exe on every Windows build
- speak the real v5 wire names so Stream Deck plugins can drive Rivulet (#212)
- use the directional from_broadcaster_user_id raid condition (#204)
- nightly is green again — alsa deps, drifted pins, tag regex (#173)
- poll EventSub stats until subscriptions are created (#169)
- arm EventSub API stub deadline on first request (#167)
- weekly promotion sets a git identity before tagging (#165)
- resolve the open code-scanning alerts (#112)
Documentation
- Beta-Scope auf Windows + Linux festgelegt, Kriterium #4 ehrlich formuliert (macOS bewusst zurückgestellt) (#306)
- Meilenstein eroeffnet — sechs Workstream-Issues plus belegter Ist-Zustand (#298)
- M7-Abschlussbericht + korrekte Statuszeilen (Conditional Pass) (#290)
- document and pin the dismissed Dependabot glib advisory (#271)
- document the full branch-commit-PR-merge flow (#250)
- document the WebView2Loader.dll copy step for local GUI runs
- close the interim backlog milestone — README status, shipped #215 (#224)
- mark M6.9 per-platform stream metadata (#214) as shipped (#221)
- add interim backlog milestone for scene & stream polish (issues #214-#217) (#218)
- Stream Deck connection steps in the obs-websocket section (#213)
- design the automated winget-pkgs submission flow (#201)
- document the stream-info editor in the combined chat dock (#198)
- spec and workstream issues for the Automation & Determinism milestone (#193)
- track F-M6-001/002 live-evidence follow-ups (#182/#183) (#184)
- document global status surface and sync stale repo docs with the wiki (#181)
- describe combined chat dock and OS-vault account model (#170)
- creator toolkit completion report and milestone close (#168)
- M6 status to In progress with per-criterion gate notes (#153)
- AI settings placement — Settings page + Assistant tab (closes #149) (#151)
- close M5 with honest annotations (#150)
- M5 descope annotations — OBS-compat to M11, honest blockers (#148)
- AI Creative Studio (Spark-like) roadmap acceptance + off-switches (#143)
- mark global hotkeys, Discord RP and chat dock (M5) Done (#133)
- record SignPath Foundation application as submitted (#131)
- add ready-to-submit SignPath Foundation application draft (#126)
- Z96-4 hosting contract, platform matrix, and gating (#122)
- decompose #78 and #96 into subtasks (#111)
Build & packaging
CI
- SHA256SUMS aus einem getesteten Skript, plus Post-Publish-Verifikation (#285)
- melde verrutschte Action-Pins bei jedem Push statt nur nachts (#280)
- bump the stale rust-toolchain pin and stop treating branch drift as fatal (#279)
- offene Code-Scanning-Alerts als Gate erzwingen (#274)
- daily PAT expiry guard for SCOOP_BUCKET_TOKEN (#202)
- bump codeql-action pins v4.38.0 -> v4.38.1 (#196)
- delete temporary release branch after a successful release (#195)
- extend apt package parity to all workflows (#178)
- enforce apt package parity between ci.yml and nightly.yml (#175)
- prepare every active channel once per week from weekly-latest (#145)
Tests
- run the #293 examples in CI, link their overview, and drain the YouTube fixture request (#310)
- M8 API-contract proof, wrapper regression guards, and honest delivery state (#307)
- Frame-Budget-Gate misst den Producer-Pfad statt des Schedulers (#287)
- pace the resource-report producer so the gate stops depending on machine load (#278)
- stop the EventSub puppet test from losing a subscription POST (#275)
- shared wait_until poll helper replaces hand-rolled deadline loops (#269)
- poll async engine state instead of fixed sleeps (timing audit) (#267)
- deterministic test helpers: golden frames, PTS/DTS, scene state (#266)
- poll the log buffer instead of a fixed sleep in worker log tests (#264)
- consolidate ci_pinning surface guards, phase 3 (Part of #231) (#262)
- harden the per-track model (issue #242) with isolation, pad, and doc parity (#254)
- unit-test the remux funnel fan-in with simulated tsdemux pad waves (#249)
- pin shared-chat reply threading to the joined room's delivery id (#206)
- require a git identity in every weekly-promotion committing step (#199)
- M6 resource report — 6 routed sources with full filter chains within budget (#161)
Refactoring
- parse workflow YAML structurally in guard scripts (Part of #231) (#263)
- slim the pinning suite by origin-tested detail pins (phase 1+2) (#257)
Housekeeping
- bump actions/upload-artifact from 7.0.1 to 7.0.2 (#313)
- bump github/codeql-action/init from 4.38.2 to 4.38.3 (#317)
- bump rustls from 0.23.43 to 0.23.45 in /fuzz (#308)
- bump the wasmtime family 48.0.3 -> 48.0.5 for seven advisories (#277)
- team readiness — CODEOWNERS, staged review gate, clean desk (#251)
- bump codeql-action pins to v4.38.2 (#248)
- paste-in SignPath artifact configuration XML (#136)
Other changes
- Feat/m8 examples run evidence (#324)
- ui(game-detect): selbst gezeichnete ...