Branding flash monetization: full-frame 'made with ytLlive!' every 300s replaces the always-on watermark

This commit is contained in:
2026-08-06 09:04:20 -07:00
parent 3a2c87f518
commit 4ef11ef5ac
4 changed files with 125 additions and 11 deletions
+14 -8
View File
@@ -81,20 +81,26 @@ Apply this to every UI decision:
- Visual/drag-and-drop scene building over property panels
- Every action produces a visible outcome — no dead ends
## Monetization (design decision — the watermark is the sword)
## Monetization (design decision — the branding flash is the sword)
Free forever: all streams unlimited, no time caps, no subscription, no per-feature paywalls. The
**one paid line is a one-time unlock** (delivered via itch.io — they handle hosting, payment, and key
delivery; we never own a server or a key shop):
- **Free:** a small "made with ytLlive" watermark is always on, every frame, every stream — the sword
of Damocles. Standard practice; only Streamlabs runs watermark-nagging to a capitalist extreme.
- **Paid (one-time):** watermark removed + **Alerts** (Super Chat / membership / subscribe pop-ins).
- **Free:** a periodic full-frame branding flash — "made with ytLlive!" rendered big and centered at
~25% opacity for about one second (soft 250ms fade in/out), repeated every 300s, on the live output
(and on v0.2 local recordings). Implemented as `BrandFlashLayer` in the preview compositor
(`MainWindow.xaml` CanvasGrid) + `BrandFlashTimer` in `MainViewModel` — cadence 300s, first flash
~5s after go-live, only while live or recording. An always-on watermark can be cropped or covered;
an intermittent full-frame flash can't be cropped and is impractical to edit around on a live feed.
- **Paid (one-time):** branding flash removed (flips `BrandFlashEnabled` off) + **Alerts**
(Super Chat / membership / subscribe pop-ins).
Deliberately rejected: hard stream-time cutoffs (the worst dead end — a stream dying mid-broadcast
reads as broken, and YouTube streams routinely run 2-4 hours), soft-limit nagging, freemium tiers,
and donation-only (relies on the kindness of strangers). Resolution/quality ceilings are **deferred**
that decision belongs to the resolution & streaming-constraints conversation, not monetization.
Deliberately rejected: always-on watermark (obscurable — replaced by the flash), hard stream-time
cutoffs (the worst dead end — a stream dying mid-broadcast reads as broken, and YouTube streams
routinely run 2-4 hours), soft-limit nagging, freemium tiers, and donation-only (relies on the
kindness of strangers). Resolution/quality ceilings are **deferred** — that decision belongs to the
resolution & streaming-constraints conversation, not monetization.
## Auth gates Go Live, but not exploration