diff --git a/HANDOFF.md b/HANDOFF.md
index f3733c0..37a87ab 100644
--- a/HANDOFF.md
+++ b/HANDOFF.md
@@ -34,16 +34,17 @@
machine 0x8664, 408/408 green). TASK 48 item 2 carries the x64-only MSIX + `-r win-x64` publish.
- `onnxruntime.dll` is ~17 MB; an RID-less build copies every RID's native folder — TASK 48's MSIX
publish must pin win-x64.
-- `THIRD-PARTY-NOTICES.txt` + ai.md Licensing now say **GPL-3.0-only** (2026-10-09: `LICENSE`,
- `ADDITIONAL-TERMS.md` with §7 b/c/e, icon+logo all rights reserved, README License section; both
- files ship beside the exe). **Still to do when the repo goes public:** add the public repo URL
- (source offer) to the notices header + README; scan git history for secrets first. Still stale
- and NOT yet rewritten: ai.md "Windows packaging" (Store IAP / branding-flash paid delta) and
- "Monetization" sections, MARCOM.md asset table (`llama-logo.png` doesn't exist), README's
- "Why ytLlive" OBS comparison (breaks the no-comparison copy rule once public).
+- **License: GPL-3.0-or-later** (2026-10-09: `LICENSE`, `ADDITIONAL-TERMS.md` with §7 b/c/e, icon +
+ logo all rights reserved, AI-generated backgrounds/alert video = GPL placeholders; both files ship
+ beside the exe). Source offer = `https://llgit.llamachile.tube/gramps/LlamaCasty` (Gitea; the
+ creator toggles it public), in the notices header + README. **Before it goes public: scan git
+ history for secrets.** README rewritten (creator's voice, generic comparison, real build steps).
+ Still stale and NOT yet rewritten: ai.md "Windows packaging" (Store IAP / branding-flash paid
+ delta) and "Monetization" sections, MARCOM.md asset table (`llama-logo.png` doesn't exist).
- Carried: "Use default background" toggle still not working (from 2026-10-07).
## Next step
- TASK 51 slice 2: **Blur** in `BackgroundEffectProcessor` (separable box/gaussian, strength), one
- integration test. Then slice 3 config + persistence, slice 4 camera-path hookup + perf check on the
- creator's box, slice 5 properties-panel UI.
+ integration test. Then slice 3 config + persistence (`BackgroundEffect` + `Strength`), slice 4
+ camera-path hookup + perf check on the creator's box, slice 5 UI: radio-exclusive Remove/Blur pill
+ switches + strength slider in the webcam's Layers properties.
diff --git a/README.md b/README.md
index 46b781a..ad74504 100644
--- a/README.md
+++ b/README.md
@@ -1,81 +1,123 @@
-# ytLlive
+# LlamaCasty
-A creator-proof live-streaming and recording app for YouTube — native Windows (C# / WPF / .NET 8).
+A free, open-source Windows app for streaming live to YouTube and recording to your PC.
+Native Windows (C# / WPF / .NET 8). Website: https://llamacasty.com
-## Screenshot
+
-
+## Why I built it
-## Design Principle
+I'm Gramps. I've been gaming since 1981, and these days I stream *The Division 2* on YouTube.
-> This software is so intuitive that even the most right-brained person can easily intuit and use it.
+When I started streaming, I did what everybody does: I installed the big, general-purpose
+streaming tools. They're excellent software — powerful, flexible, and built to handle every
+platform, every camera rig, and every plugin anyone has ever dreamed up. That breadth is exactly
+what makes them great, and it's also what makes them a lot to learn. Before my first stream I was
+reading setup guides, picking encoders, balancing audio by hand, and wiring up scenes from
+scratch. The tools were ready for anything. I just wanted to go live.
-Every feature is measured against this. One-click go-live, sane YouTube defaults, visual scene
-building, and no dead ends — every action has a visible outcome.
+Most streamers I talk to are in the same spot. They don't need a tool for every platform and every
+setup — they need one that's ready for *theirs*. So I built LlamaCasty around three choices:
-## Why ytLlive
+- **One platform, done properly.** LlamaCasty streams to YouTube and only YouTube. That focus lets
+ it be built around how YouTube Live actually works — your channel, your chat, Super Chats and
+ memberships, Shorts-style vertical video, and the YouTube Partner Program — instead of treating
+ YouTube as one destination among many.
+- **Ready the moment you open it.** Five scenes (Starting, Live, BRB, Chat, Ending) are set up,
+ your game and voice are balanced with auto-ducking and voice polish built in, and YouTube's
+ settings are filled in. You arrange things by dragging them, then press Go Live.
+- **Calm while you're live.** A private Test Stream to practice, a layout that locks while you're
+ on air, and warnings only when YouTube reports a real problem.
-OBS treats YouTube as an afterthought; SLOBS is Twitch-first with YouTube bolted on. ytLlive is
-designed and dedicated to YouTube livestreaming and recording, and to YouTube's specific quirks.
+The general-purpose tools are the right choice when you need everything. LlamaCasty is for when you
+just want to get your show on air.
-## Account Assumption
+## Free, and staying that way
-ytLlive assumes you already have a YouTube creator account — connecting uses "Sign in with Google"
-to link that existing account. **ytLlive does not create accounts.** If you don't have a YouTube
-channel yet, set one up on YouTube first, then connect it here.
+LlamaCasty is free forever: no watermark, no branding on your stream, no subscription, no
+LlamaCasty account. It's also open source (see [License](#license)) — enjoy it, explore it,
+experiment with it. If it earns a spot in your setup and you'd like to say thanks, there's a
+coffee jar and a merch store linked from https://llamacasty.com. Completely optional, never
+expected, and the app will never ask.
-## Audio Assumption
+## How it's built
-ytLlive uses your **default** microphone and desktop/game output — it never hunts for a device or
-contends for one. **It assumes your audio is already configured and working** (default input and
-output set, not hijacked by another app). Audio issues are a Windows/device matter outside ytLlive's
-scope: we don't debug, detect, or try to fix them. If it doesn't sound right, fix the system's audio
-settings first — it's on the OS, not on us.
+LlamaCasty is built through AI-assisted pair programming, under the direction of a developer with
+decades of experience. Architecture, product direction, and quality gates are human-owned; AI
+speeds up the implementation. The repo's memory map (below) is how that collaboration stays honest
+from one session to the next.
-## Run
+## Requirements
-```bash
-dotnet build # Windows only — WPF
-dotnet run
-```
+- **64-bit Windows 10 or 11.** (The bundled FFmpeg and ONNX Runtime are 64-bit only.)
+- **A YouTube channel, to stream.** LlamaCasty links an existing channel with "Sign in with
+ Google" — it doesn't create accounts. Recording to an .mp4 works without signing in.
+- **Working sound in Windows.** Desktop and game audio come from your default output
+ automatically; you choose your mic in the app. LlamaCasty doesn't diagnose or repair Windows
+ audio — if it doesn't sound right in Windows, fix it there first.
-## Version Roadmap
+## Build from source
-**v1 is the finished product** (creator ruling, 2026-09-01 — there are no v1.x releases).
-Everything still queueing lands in v1; anything not on the feature list is on the closed
-**"Out of product — permanently"** list in `TASKS.md` — read that page before asking for a feature.
+The internal project, assembly, and namespace names are still `ytLive` (the app was renamed to
+LlamaCasty; the internals weren't). Building needs Windows and the .NET 8 SDK.
-What v1 ships: the five-scene director's control surface, webcam + screen capture, media + web +
-text sources, chat on-stream, the social bar, mic/desktop audio with auto-duck and TRAX, local
-recording, variable quality tiers with auto step-down, one-click go-live + scheduling, stream
-resilience (auto-reconnect inside YouTube's grace, one-click back on air), built-in monetization
-awareness (reward capture, session reports, YPP journey tracker), Alerts — all free and ungated;
-the paid tier only removes the branding flash.
+1. **Fetch the bundled FFmpeg** (not in git — ~135 MB, pinned and SHA-256-verified):
+ `scripts/fetch-ffmpeg.sh`
+2. **Add your own Google OAuth client.** `Helpers/OAuthCredentials.cs` is gitignored. Create a
+ "Desktop app" OAuth client with the YouTube Data API v3 enabled in Google Cloud Console, then:
+
+ ```csharp
+ namespace ytLive.Helpers;
+
+ public static class OAuthCredentials
+ {
+ public const string ClientId = "your-client-id.apps.googleusercontent.com";
+ public const string ClientSecret = "your-client-secret";
+ }
+ ```
+3. **Build and run:**
+
+ ```bash
+ dotnet build ytLive.csproj
+ dotnet run --project ytLive.csproj
+ ```
+
+## Version roadmap
+
+**v1 is the finished product** (no v1.x releases are planned). Everything still in the queue lands
+in v1; anything not on the feature list is on the **"Out of product — permanently"** list in
+`TASKS.md` — read that before asking for a feature.
+
+What v1 ships: the five-scene control surface, webcam + screen capture, media + web + text
+sources, chat on stream, the social bar, mic/desktop audio with auto-ducking and TRAX background
+music, local recording, quality tiers including vertical 9:16, one-click go-live + scheduling,
+stream resilience, monetization awareness (YPP tracker), animated alerts, and webcam background
+removal and blur — all free and ungated.
## Structure
| Path | Role |
|------|------|
-| `Models/` | Scene, Source, WebcamSceneConfig, SceneElement, SceneCatalog, QualityOption, StreamConfig/Health, chat, Socials, BroadcastMetadata, Music, MicStatus |
+| `Models/` | Scene, Source, WebcamSceneConfig, SceneElement, SceneCatalog, QualityOption, StreamConfig/Health, chat, Socials, BroadcastMetadata, Music, MicStatus, BackgroundEffect |
| `ViewModels/` | MainViewModel (partial classes per area) + dialogs: GoLive, CameraPicker, MicPicker, HotkeyConfig, Socials, LiveBroadcastForm |
-| `Services/` | YouTube (OAuth, streams/broadcasts, chat polling), LayoutStore (SQLite), capture (camera/screen-capture/media-file via FFmpeg), SceneCompositor + FramePump, FFmpeg encoder + RTMP, audio pipeline (WASAPI loopback + mic, mixer, filters, ducker, limiter, TRAX), SocialValidator, notifications, hotkeys, SceneGraph, ChatOverlayLayer |
-| `Helpers/` | ViewModelBase, RelayCommand, ImageCache, AppLog, TokenStore (DPAPI), OAuthCredentials, converters |
+| `Services/` | YouTube (OAuth, streams/broadcasts, chat polling), LayoutStore (SQLite), capture (camera/screen-capture/media-file via FFmpeg), SceneCompositor + FramePump, FFmpeg encoder + RTMP, audio pipeline (WASAPI loopback + mic, mixer, filters, ducker, limiter, TRAX), background effects (ONNX person segmentation), SocialValidator, notifications, hotkeys, SceneGraph, ChatOverlayLayer |
+| `Helpers/` | ViewModelBase, RelayCommand, ImageCache, AppLog, TokenStore (DPAPI), OAuthCredentials (gitignored), converters |
| `Themes/` | `Controls.xaml` — the dark-theme control styles, merged once in `App.xaml` |
| `MainWindow.xaml` | Dark-theme control surface: thumbnails + central preview, two-state left panel (layers/properties ↔ live chat), top bar, footer |
-| `Distribution.md` | GA-time plan: signing, installer, EULA, hardening — executed as TASK 36 |
+| `tools/` | Offline helper tools (e.g. `selfie-seg/` — converts and verifies the background-effects model) |
## Docs (memory map)
-`schema.md` defines the conventions; `ai.md` is the AI/session guide;
-`TASKS.md` is the task queue. Each code directory carries an `index.md`.
+`schema.md` defines the conventions; `ai.md` is the AI/session guide; `TASKS.md` is the task
+queue; `HANDOFF.md` is the current state. Each code directory carries an `index.md`.
## License
-LlamaCasty is free software, released under the **GNU General Public License v3.0**
+LlamaCasty is free software, released under the **GNU General Public License v3.0 or later**
([`LICENSE`](LICENSE)) with three additional terms permitted by GPL-3.0 section 7
([`ADDITIONAL-TERMS.md`](ADDITIONAL-TERMS.md)):
@@ -85,5 +127,8 @@ LlamaCasty is free software, released under the **GNU General Public License v3.
- **No trademark rights** — the LlamaCasty name and llama logo aren't licensed. The icon and logo
files are all rights reserved and aren't covered by the GPL.
-Bundled third-party components keep their own licenses: see
+The scene backgrounds and default alert video are AI-generated placeholders, licensed with the
+code — replace them with your own. Bundled third-party components keep their own licenses: see
[`THIRD-PARTY-NOTICES.txt`](THIRD-PARTY-NOTICES.txt).
+
+Source code: https://llgit.llamachile.tube/gramps/LlamaCasty
diff --git a/TASKS/task-51-webcam-bg-effects.md b/TASKS/task-51-webcam-bg-effects.md
index 1418ddf..436b4bc 100644
--- a/TASKS/task-51-webcam-bg-effects.md
+++ b/TASKS/task-51-webcam-bg-effects.md
@@ -76,8 +76,8 @@ delivery shape changed:
`PillToggle` style (`Themes/Controls.xaml`, already used in `Controls/LeftPanel.xaml`). They act
as **radio buttons**: turning one on turns the other off; at most one is active; both off =
`None`. Bound to the element's `BackgroundEffect`, per webcam element. (Supersedes the old
- "effect dropdown" idea. A strength slider was in the original plan but is NOT in the creator's
- spec — confirm before adding one.)
+ "effect dropdown" idea.) **Plus a strength slider** (creator: "keep", 2026-10-09) — Blur
+ radius / Remove edge softness via `Strength`.
- ☐ Replace-background affordance: **none in v1** — the creator drops any layer behind the
webcam. Effect preview must not obscure the fact that layers below still show through.
diff --git a/THIRD-PARTY-NOTICES.txt b/THIRD-PARTY-NOTICES.txt
index 7b7685d..e1b4139 100644
--- a/THIRD-PARTY-NOTICES.txt
+++ b/THIRD-PARTY-NOTICES.txt
@@ -7,6 +7,8 @@ LlamaCasty
additional terms under GPL-3.0 section 7 (attribution, marking of
modified versions, no trademark rights). See LICENSE and
ADDITIONAL-TERMS.md, shipped beside the application.
+ Source: https://llgit.llamachile.tube/gramps/LlamaCasty (complete
+ corresponding source, GPL-3.0 section 6)
LlamaCasty is free software: you can redistribute it and/or modify it
under those terms. It comes with ABSOLUTELY NO WARRANTY.
Brand artwork (the LlamaCasty name, icon, and logo files) is NOT covered
diff --git a/ai.md b/ai.md
index 58e8dd4..e0cd935 100644
--- a/ai.md
+++ b/ai.md
@@ -1673,8 +1673,9 @@ what keeps the merch brand protected). The scene backgrounds + default alert vid
**placeholders** (creator: made "with the intent of individual creators to immediately replace with
their own images") — they go out under the GPL with the code, no reservation. `LICENSE` + `ADDITIONAL-TERMS.md` ship beside the exe
(csproj `None` items); the About panel shows `THIRD-PARTY-NOTICES.txt`, whose header carries the
-LlamaCasty license notice (GPL §5(d) "Appropriate Legal Notices"). **Source offer (§6):** the public
-repo URL — add it to the notices header + README the day the repo goes public.
+LlamaCasty license notice (GPL §5(d) "Appropriate Legal Notices"). **Source offer (§6):**
+`https://llgit.llamachile.tube/gramps/LlamaCasty` (the Gitea repo; creator toggles it public — the
+old `gramps/ytLlive` path 301-redirects there), recorded in the notices header + README.
Every bundled component must stay GPL-3.0-compatible (MIT/BSD/Apache-2.0/LGPL/public domain all are;
**GPL-2.0-only and proprietary are not**; Apache-2.0 is fine with GPL-3 but NOT with GPL-2). The