From 9fb628b4731fb13d4483d990733d9b32371a1d5a Mon Sep 17 00:00:00 2001 From: gramps Date: Thu, 8 Oct 2026 10:20:01 -0700 Subject: [PATCH] Docs: record Shorts/TikTok output-format verification (TASK 53) + free-forever/merch round (TASK 54); mark TASK 10 superseded (Unit: task catalog) --- TASKS.md | 4 ++- TASKS/task-53-output-formats.md | 34 +++++++++++++++++++++++ TASKS/task-54-marcom-free-merch.md | 43 ++++++++++++++++++++++++++++++ 3 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 TASKS/task-53-output-formats.md create mode 100644 TASKS/task-54-marcom-free-merch.md diff --git a/TASKS.md b/TASKS.md index 88cf5b3..5854ec5 100644 --- a/TASKS.md +++ b/TASKS.md @@ -29,7 +29,7 @@ | 07 | Meter scaling amplification | ✅ Done | [`TASKS/task-07-meter-scaling.md`](TASKS/task-07-meter-scaling.md) | | 08 | Audio milestone | ✅ SHIPPED 2026-08-14 | [`TASKS/task-08-audio-milestone.md`](TASKS/task-08-audio-milestone.md) | | 09 | YouTube Live Stream Management | ⏳ In progress — items 1–3, 4 shipped; item 5 open; item 6 locked (TASK 36) | [`TASKS/task-09-live-stream-management.md`](TASKS/task-09-live-stream-management.md) | -| 10 | Monetization: watermark-only paid delta (branding flash) | 🔶 **TEARDOWN, not a build** — Polar deleted in favour of Store IAP (2026-09-27); `$10/mo` + `$400` lifetime, no annual | [`TASKS/task-10-monetization.md`](TASKS/task-10-monetization.md) | +| 10 | Monetization: watermark-only paid delta (branding flash) | 🔶 **TEARDOWN, not a build** — Polar deleted in favour of Store IAP (2026-09-27); `$10/mo` + `$400` lifetime, no annual. **SUPERSEDED 2026-10-08** — free-forever ruling (watermark-free, gratuity/merch only); see TASK 54 | [`TASKS/task-10-monetization.md`](TASKS/task-10-monetization.md) | | 11 | Post-pause polish batch (creator's 8 review issues) | ✅ SHIPPED 2026-08-15 | [`TASKS/task-11-polish-batch.md`](TASKS/task-11-polish-batch.md) | | 12 | Master limiter on the live mix | ☐ Queued | [`TASKS/task-12-master-limiter.md`](TASKS/task-12-master-limiter.md) | | 13 | Social media launch kit | 🔶 Scoped — queued after v1 | [`TASKS/task-13-social-launch-kit.md`](TASKS/task-13-social-launch-kit.md) | @@ -68,6 +68,8 @@ | 50 | One-button "Publish this video" (resumable upload of the local recording) | ☐ Queued (2026-09-28) | [`TASKS/task-50-publish-recording.md`](TASKS/task-50-publish-recording.md) | | 51 | **Webcam background effects: Remove + Blur** | ☐ **v1 requirement** — booked 2026-10-08; next up now that the zoom box shipped (TASK 52) | [`TASKS/task-51-webcam-bg-effects.md`](TASKS/task-51-webcam-bg-effects.md) | | 52 | **Zoom box (anchored 2× magnifier)** | ✅ Done — shipped 2026-10-08 (3 creator corrections during the build: loupe → anchored capture over the full composite, drawn last → never shows the dim shading) | [`TASKS/task-52-zoom-box.md`](TASKS/task-52-zoom-box.md) | +| 53 | **Output-format verification: Shorts/TikTok geometry (9:16)** | ☐ Queued (2026-10-08) — output formats never tested end-to-end; pin + prove the vertical geometry | [`TASKS/task-53-output-formats.md`](TASKS/task-53-output-formats.md) | +| 54 | **Marcom round: free-forever positioning + merch storefront** | 🔶 In progress — llamacasty.com copy live 2026-10-08 (pricing stripped); merch POD + app About links queued | [`TASKS/task-54-marcom-free-merch.md`](TASKS/task-54-marcom-free-merch.md) | --- diff --git a/TASKS/task-53-output-formats.md b/TASKS/task-53-output-formats.md new file mode 100644 index 0000000..c1ee58e --- /dev/null +++ b/TASKS/task-53-output-formats.md @@ -0,0 +1,34 @@ +# TASK 53 — Output-format verification: Shorts / TikTok geometry (queued 2026-10-08) + +> Catalog: [`TASKS.md`](../TASKS.md) — status and requirements live here. + +**Why:** the output formats have never been tested end-to-end. The site claims "vertical 1080p60 +(9:16)" and Shorts-style streams, but nobody has verified that the geometry actually comes out +correct for Shorts and TikTok — safe zones, caption clearance, and the text-safe inset all still +need checking against a real capture. + +**Goal:** prove the vertical/short-form path is geometrically correct, or fix the gaps and then +prove it. Make the output formats a tested, locked contract instead of an assumption. + +**Slices (one integration test each, in order):** + +1. ☐ **What we actually emit** — enumerate the real encoding configurations (widescreen 1080p60/ + 1080p30/720p60/720p30 + vertical 9:16 1080p60) and pin them in one place (`FfmpegArgs`-adjacent), + each with its own geometry contract test. This turns "formats exist" into "formats are defined". +2. ☐ **9:16 geometry** — vertical render must be true 1080×1920 (or the GUP-negotiated size) with + the composite laid out for a phone: viewer-safe top strip (TikTok/Shorts overlays live top-left + and bottom), caption/text clearance, and the webcam not cropped off-centre. Test: composite a + known layout, decode the output frame, assert dimensions + element placement vs the contract. +3. ☐ **Live-shorts check on a real stream** — private Test Stream at 9:16, then pull the thumbnail/ + player quirk list from YouTube (Title visible, overlays); confirm nothing the streamer put on + screen sits under YouTube's own chrome. This is the "never tested" item the creator flagged — + test on a real vertical test stream and cite the observation. +4. ☐ **Recorded .mp4 matches output** — the saved vertical .mp4 must carry the same 9:16 frame the + stream showed, not a squeezed/wider master. Test: record vertical, decode first frames, assert. + +**Design decisions:** + +- Geometry is a contract with tests, not a hope. Derived ratios (stream vs composite vs canvas) + get a derived-value test so one change can't silently wreck Shorts/TikTok output. +- Keep widescreen untouched — only add what vertical needs (the existing test suite stays green + for 16:9). \ No newline at end of file diff --git a/TASKS/task-54-marcom-free-merch.md b/TASKS/task-54-marcom-free-merch.md new file mode 100644 index 0000000..847a15e --- /dev/null +++ b/TASKS/task-54-marcom-free-merch.md @@ -0,0 +1,43 @@ +# TASK 54 — Marcom round: free-forever positioning + merch (queued 2026-10-08) + +> Catalog: [`TASKS.md`](../TASKS.md) — status and requirements live here. + +**Why:** the monetization decision changed. LlamaCasty launches **watermark-free and free as in beer, +forever** — no paid tiers, no branding flash. The old watermark-paid-delta plan (TASK 10) is +superseded. Money, if any, comes from **gratuity and branded merch**, never from gating the app. + +**History of the ruling (creator-led, 2026-10-08):** feature set is locked for v1; there are no new +pricing tiers to build. The compensation decision: ship the app free and watermark-free, put a +coffee jar / merch storefront in front of people, done. Assistant recommendation that was accepted: +**print-on-demand merch** instead of a tip jar for the main channel, because a t-shirt the viewer +wears is free advertising a donation is not. + +**Done so far:** + +- ✅ llamacasty.com stripped of ALL pricing (2026-10-08): plans ($0/$10/$400), the feature chart, + the "made with LlamaCasty!" flash copy, and the `#pricing` section replaced with a **free-forever + band**: "Free forever. Completely yours." — no watermark, no branding on stream, no subscription, + no account. Nav + footer relinked to `#free`. Deployed + verified live (0 pricing refs). +- ✅ Ruling recorded: no watermark, no branding-flash, app ships as-is. + +**Merch plan (accepted):** + +- **Printful as primary** (quality + creative control, its storefront is enough; free), **Spreadshirt + as the set-and-forget fallback.** One store only, linked prominently on llamacasty.com and in the + app's About pop-up ("so it's always present"). +- **Small lineup: 3–5 items** to start (t-shirt, mug, sticker set — the llama logo is the obvious + draw). Assets live in `llamacasty.web/assets/img/` (icon-512.png, logo.webp, gramps-480.webp). + +**In-app tasks bundled here (small, App-layer only):** + +- ☐ Branding-flash text becomes **"llamacasty.com"** (single small mention) instead of the + "made with LlamaCasty!" overlay — pending the "no branding, completely yours" wording conflict: + a streamer showing zero branding and a streamer showing "llamacasty.com" are different promises; + creator to pick. +- ☐ Add the merch/storefront links to the **About pop-up** so the store is reachable from inside + the app at all times. + +**Marcom write-up:** capture this whole decision (positioning, competitor note — Meld Studio runs +free core + paid AI tiers and a merch store; ArtCraft monetizes AI credits — the free-forever +difference) into the dedicated **marcom.md** file once the creator creates it. This task file is the +working copy until then. \ No newline at end of file