From 163f7e11d5488680108dd9c41be70fc8111e0208 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <53631862+PR0M3TH3AN@users.noreply.github.com> Date: Wed, 1 Jul 2026 11:10:38 -0400 Subject: [PATCH] [docs] Dev plans for live-stream ingest (#16) and shorts (#16b) Two flag-gated, watch-only content types, each spec'd following the repo's docs/*-plan.md convention with open decisions embedded as DECISION callouts. - docs/shorts-plan.md (#16b): NIP-71 kind 22. Ingest already exists (nip71IngestAdapter handles kind 22), so this is an isShort marker + a Shorts sidebar tab + vertical UI + a shorts feed source. Behind FEATURE_SHORTS. - docs/live-ingest-plan.md (#16): NIP-53 kind 30311 (+1311 chat), HLS playback. Leads with a Phase 0 research spike (confirm tag shapes from zap.stream/ shosho.live, de-risk hls.js + CORS). Behind FEATURE_LIVE_INGEST; publishing (#16c) is explicitly out of scope with its own future flag. Both docs specify the "off = no trace" wiring (no tab, no feed registration, no subscriptions, no route, no lazy assets) per the locked shared requirement. TODO #16/#16b now link their plans. Co-Authored-By: Claude Opus 4.8 --- docs/live-ingest-plan.md | 173 +++++++++++++++++++++++++++++ docs/shorts-plan.md | 146 ++++++++++++++++++++++++ todo/TODO_2026-06-20_pre-launch.md | 2 + 3 files changed, 321 insertions(+) create mode 100644 docs/live-ingest-plan.md create mode 100644 docs/shorts-plan.md diff --git a/docs/live-ingest-plan.md b/docs/live-ingest-plan.md new file mode 100644 index 00000000..51cec142 --- /dev/null +++ b/docs/live-ingest-plan.md @@ -0,0 +1,173 @@ +# Live Streams — INGEST / watch-only — Dev Plan + +TODO ref: **#16** in `todo/TODO_2026-06-20_pre-launch.md` (watch-only). +Publishing / "Go Live" is **#16c** — a separate, larger effort with its **own** +config flag; it is explicitly **out of scope** for this doc. +Status: **PLANNING → needs a research spike (Phase 0)**. Not started. + +Live streams are **NIP-53 Live Activities** — a *different* NIP from short-form +video (#16b / NIP-71). Kind **30311** is the live event (addressable, carries the +`streaming` URL — usually HLS `.m3u8` — plus `status`, title, host `p` tags); +kind **1311** is live chat. zap.stream and shosho.live publish these. + +Scope of this feature: **discover live events, play the HLS stream, optionally +show read-only chat.** No broadcasting, no media hosting. Everything ships behind +a config flag that leaves **no trace** when off. + +--- + +## Decisions needed + +> **DECISION 1 — Listing scope.** List only **whitelisted hosts** (reuse the +> existing whitelist/WoT filter on the host `p`/author), or **all** `status=live` +> events discovered on the read relays (capped)? +> *Recommendation: whitelisted hosts for v1 — consistent with the rest of bitvid's +> trust model and avoids surfacing arbitrary/abusive streams.* + +> **DECISION 2 — Live chat in v1?** Read-only kind-1311 chat alongside the player, +> or playback-only for v1 (chat later)? +> *Recommendation: playback-only v1; add read-only chat in a later phase. Chat is +> a live subscription with its own moderation questions.* + +> **DECISION 3 — HLS playback dependency.** OK to lazy-load a small HLS library +> (**hls.js**, ~cdn/vendored) ONLY when the flag is on, or must playback stay +> dependency-free (native `