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:
@@ -5,7 +5,7 @@
|
||||
> the creator picks their own clip (referenced from disk, never stored in the DB), the
|
||||
> clip fades in/out in ~0.3s (alpha envelope on the video + volume on the audio, mixed
|
||||
> into the live stream at unity — no duck), and an auto-composed **message ticker**
|
||||
> ("Funder — Super Chat · $10.00") scrolls across the very top of the frame, toggleable.
|
||||
> ("Funder — Super Chat · $10.00") appears inside the Stream Alerts box, toggleable.
|
||||
> The six TASK 43 animations remain the intrinsic fallback when no asset is playable.
|
||||
|
||||
## Provenance (recorded per the feature-provenance rule)
|
||||
@@ -25,8 +25,9 @@
|
||||
read-at-play clip lets the creator re-edit the file without a re-import). Decided
|
||||
with the creator: "never store the video in the layout." The built-in default is the
|
||||
one BLOB, stamped into the internal `Asset` table at startup.
|
||||
- **Creator rulings (asked once, held):** custom video + six-animation fallback
|
||||
(not either/or); ticker on top of the canvas (very top, full width); **no ducking** —
|
||||
- **Original creator rulings (asked once, held):** custom video + six-animation fallback
|
||||
(not either/or); ticker on top of the canvas (the placement was later corrected to
|
||||
inside Stream Alerts); **no ducking** —
|
||||
"don't lower my game audio for a tip" (the TASK 43 planner's auto-duck idea was
|
||||
rejected on the floor); a per-alert **Volume** slider instead.
|
||||
|
||||
@@ -309,3 +310,18 @@ Flash is on for half of each second; the panel shows and writes back the chosen
|
||||
risk by asserting all three alert fields together.
|
||||
|
||||
Full suite 339/339.
|
||||
|
||||
## Scene-local recent-alert ticker
|
||||
|
||||
The standalone `SourceType.Ticker` layer is addable once per scene. It shares the
|
||||
`Models/Ticker.cs` settings and `AlertTickerRenderer` with the AlertBox ticker, but
|
||||
each source has an independent `Ticker` object. The existing per-Source ticker DB
|
||||
columns persist both kinds without an alert-history table or schema migration. The
|
||||
standalone feed renders the active event followed by queued events; completed events
|
||||
are discarded. The AlertBox ticker remains limited to the active event and uses the
|
||||
active scene's AlertBox settings. Standalone tickers are ordinary dynamic sources in
|
||||
preview and output; the AlertBox ticker remains a positioned compositor overlay.
|
||||
|
||||
The integration guard in `AlertTickerPreviewDisplayTests` uses two scene tickers to
|
||||
prove settings are independent, then checks that the standalone feed differs from
|
||||
the AlertBox's active-only message while a second event is queued.
|
||||
|
||||
Reference in New Issue
Block a user