feat(alerts): add scene-local recent ticker
Model the AlertBox and standalone ticker with shared settings; scene tickers render the in-memory active and queued events without saving history. Keep AlertBox content active-event-only. Ref: https://obsproject.com/kb/obs-studio-overview
This commit is contained in:
+18
-22
@@ -1,31 +1,27 @@
|
||||
# HANDOFF — 2026-11-02 (Steam ownership check)
|
||||
# HANDOFF — 2026-11-02 (scene-local alert ticker)
|
||||
|
||||
## State
|
||||
|
||||
- `main`; local work unit, not pushed.
|
||||
- Distribution plan: one paid Steam app ($79 announced launch price, then $99) plus its associated
|
||||
free Demo. Same code; no subscription, DLC purchase, or GitHub binary.
|
||||
- `IEntitlement.IsAppOwned` feeds the app-wide `MainViewModel.IsAppOwned` flag. Debug uses a fake
|
||||
owned result; the fake is excluded from Release.
|
||||
- Release ownership uses `BIsSubscribedApp(paidAppId)` and fails closed when the ID or Steam is
|
||||
unavailable. **The paid app ID is not configured yet; the Steamworks application is pending.**
|
||||
- Steam's private-use clause is not, by itself, a proven blocker. EULA wording should expressly
|
||||
allow commercial/monetized streaming; OBS is the relevant Steam software precedent. See
|
||||
`MyMistakes.md` → Steam distribution.
|
||||
- `main`; ticker work is local and not pushed.
|
||||
- Standalone `SourceType.Ticker` is addable once per scene, has per-source settings, and shows the
|
||||
in-memory current + queued alert feed. It does not persist event history.
|
||||
- Stream Alerts keeps one box per layout; its ticker shares `Ticker` settings but shows only the
|
||||
active event. Existing per-Source columns persist the settings without a schema migration.
|
||||
- Focused build succeeded; the new integration test and all `AlertTickerPreviewDisplayTests` pass.
|
||||
|
||||
## Next action
|
||||
|
||||
Day 1 next: system-message strip. The queued Debug-only test-access rule also needs checking. Keep
|
||||
one integration test per change.
|
||||
Next queued unit: Day 1 system-message strip; also check the queued Debug-only test-access rule.
|
||||
Keep one integration test per change. Do not push absent a milestone/checkpoint request.
|
||||
|
||||
## Landmines
|
||||
|
||||
- The Demo has its own App ID. Ownership must check the paid app ID, never the Demo ID or test ID
|
||||
`480`.
|
||||
- No fake ownership code or developer panel in Release.
|
||||
- No Steam checkout in the app; Steam handles purchase and updates.
|
||||
- The paid app ID is not available yet; Release stays fail-closed until it is configured.
|
||||
- `verify.sh` clean app build passes; `EntitlementTests` passes 5/5. Full suite currently has 13–14
|
||||
UI/content failures; connection to this change is unconfirmed, investigate separately.
|
||||
- Bundled FFmpeg must stay outside the single-file exe (`ExcludeFromSingleFile="true"`).
|
||||
- Build with Windows `dotnet.exe`; run tests per class (the whole suite can hang in WASAPI teardown).
|
||||
- Build/test with Windows `dotnet.exe`; the full suite can hang in WASAPI teardown.
|
||||
- Focused ticker tests pass; clean app build is 0 warnings. Full suite reports 13–14 UI/content
|
||||
failures (508/521 or 507/521 pass), matching the prior baseline note; none is a ticker test. Their
|
||||
relationship to this change is unconfirmed, and `verify.sh` currently only allows two other tests.
|
||||
- The integration assertion is in `ytLive.Tests/AlertTickerPreviewDisplayTests.cs` and must use
|
||||
`LayoutPathOverride`/clear it in `finally` if it constructs `MainWindow`.
|
||||
- Scene tickers are dynamic per-element sources; only the AlertBox ticker uses the pump's global
|
||||
ticker overlay callback.
|
||||
- Bundled FFmpeg stays outside the single-file exe (`ExcludeFromSingleFile="true"`).
|
||||
|
||||
Reference in New Issue
Block a user