diff --git a/Assets/llama-logo.png b/Assets/llama-logo.png index abfe64c..53b6e08 100644 Binary files a/Assets/llama-logo.png and b/Assets/llama-logo.png differ diff --git a/HANDOFF.md b/HANDOFF.md index 5221ab4..9704498 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -8,6 +8,18 @@ ## Session state (last updated: 2026-08-14) - **Branch:** `main`, in sync with `origin/main`. +- **TASK 21 — real logo + creator-hub About: SHIPPED** (this session). The About overlay is now the + **creator hub**: the real logo ("llama fortnite superman logo" copied from `\\llamavault` → `Assets/llama-logo.png`, + the creator's own art — no third-party license), plus hub links — **llama chile shop on YouTube** + (`MainViewModel.ChannelUrl`, public now), **Mastodon** (`https://mastodon.llamachile.tube/@gramps`), + **Buy me a coffee** (`https://buymeacoffee.com/llamachiley` — LIVE), and **Unlock Premium** (greyed + "coming soon"; the itch.io product URL is a **tabled seam**, `MainViewModel.PremiumUrl` — the itch.io + account was just created and needs a setup session later). **Licenses & legal** flips the About overlay + to an in-app scrolling panel loading the shipped `THIRD-PARTY-NOTICES.txt` (`ShowLicenses()` reads from + the executable dir on first open, graceful "not found" fallback — never the OS viewer); "← Back to + About" (`BackToAbout_Click`) returns. Integration test (ONE): `AboutHubTests` drives the real window, + asserting the hub opens, the link URLs are real, licensing loads the shipped notices text, and back + returns to the hub. **174 tests passing, 0 warnings.** - **TASK 8 — meter scaling amplification:** SHIPPED + pushed (`0b71b03`). `AudioLevelMeter.ToDisplay` adds **+10 dB input amplification** before the −60..0 dBFS log map: speech peaks (~0.2 RMS) read ~0.93 (red) and normal speech (~0.05) ~0.73 (yellow) at maxed volume; ≤0.001 linear still reads 0 @@ -26,17 +38,18 @@ IsLivePrivate}"` (MainWindow.xaml ~110). 5. **Integration test** — `ytLive.Tests/YouTubeStreamServiceTests.cs`: the broadcast-insert request must carry `"privacyStatus":"private"` (RecordingHandler seam) + a no-session → null guard test. -- **Verified:** build 0 warnings / 0 errors; **173/173 tests pass** (171 + the 2 stream-service tests). -- **Uncommitted (this session's ship step 7 batch):** `GoLiveWindow.xaml`, `ViewModels/GoLiveViewModel.cs`, - `ViewModels/MainViewModel.cs`, `Services/YouTubeStreamService.cs`, `MainWindow.xaml`, - `ytLive.Tests/YouTubeStreamServiceTests.cs` (new), `TASKS.md`, `ai.md`, `ViewModels/index.md`, - `Services/index.md`, `HANDOFF.md`. **Commit + push before continuing.** -- **Next step:** commit + push ship step 7, then **TASK 5 — reusable `variable` stream** (create once +- **Verified:** build 0 warnings / 0 errors; **174/174 tests pass** (173 + the new AboutHubTests). +- **Uncommitted (this session's TASK 21 batch):** `MainWindow.xaml`, `ViewModels/MainViewModel.cs`, + `MainWindow.xaml.cs`, `Assets/llama-logo.png` (replaced with the real logo), `ytLive.Tests/AboutHubTests.cs` + (new), `TASKS.md`, `HANDOFF.md`. ai.md + ViewModels/index.md updates pending — **commit + push + before continuing.** +- **Next step:** commit + push TASK 21, then **TASK 5 — reusable `variable` stream** (create once per channel, cache ingestion URL, bind to broadcast, feed `_rtmpUrlProvider` so the pump actually - pushes — `_currentBroadcastId` is already stashed for it). Also queued: task 21 (logo + About hub), - task 22 (voice filters). Nothing else queued — do not expand the task queue on your own. Optional, - not queued: rewriting the healed entry's `ProfileUrl` to `https://mastodon.llamachile.tube/@gramps` - (user must say the word). + pushes — `_currentBroadcastId` is already stashed for it). Also queued: **task 22 (voice filters)**, + and **setting up the itch.io product page** (the creator just made the account; the premium-unlock + URL then lands in `MainViewModel.PremiumUrl` and the About hub's "Unlock Premium" button lights up). + Nothing else queued — do not expand the task queue on your own. Optional, not queued: rewriting the + healed entry's `ProfileUrl` to `https://mastodon.llamachile.tube/@gramps` (user must say the word). - **Landmines:** - Never add another test that constructs `new App()` — use `RealAppHost.Run(...)` (shared STA host diff --git a/MainWindow.xaml b/MainWindow.xaml index 6972a1c..67a0f26 100644 --- a/MainWindow.xaml +++ b/MainWindow.xaml @@ -1110,25 +1110,63 @@ - - - - - - - -