e1d8b10388
Audit of institutional knowledge lost across the refactor (creator PM session 2026-09-01): - New queue: TASK 32 resilience (blip retry/measured-grace sign/one-click back-on-air/ crash-safe fragmented-MP4 recording/pre-flight), TASK 33 auto step-down (v1 - the map claimed it existed; it didn't), TASK 34 drawer scheduling, TASK 35 scene-linked audio, TASK 36 gold pass (visibility unlock, flash-live enable, screens/layers audit, native verification suite, expiry reminders, signing/installer/EULA/Velopack, compile-flag ceiling HARDENED+MOCK_REWARDS). - 'v1 = the finished product' + closed 'Out of product' list (Stream Deck, profiles, chroma, virtual cam, replay buffer, restream, clipping, advanced-tab, bug-reporter, D3DImage preview) - the 10% margin, bounded and written. - Corrections: ffmpeg 'does reconnect' claims (input-side flags only; retry is app-side); TASK 2's orphaned 'resume deferred to TASK 3' now owned by TASK 32; TASK 2 End-signs-out superseded by TASK 18 explicit sign-out; Alerts freed from stale 'the one paid feature' language (paid = flash removal only); TASK 3 item 16 superseded; TASK 9 items 4/6/7 reconciled; TASK 10 monetization chain scoped v1; README roadmap/Structure rewritten.
75 lines
3.7 KiB
Markdown
75 lines
3.7 KiB
Markdown
# ytLlive
|
|
|
|
<p align="center">
|
|
<img src="Assets/llamacasty-logo.jpg" alt="LlamaCasty — livestream smarter" height="120"/>
|
|
</p>
|
|
|
|
A creator-proof live-streaming and recording app for YouTube — native Windows (C# / WPF / .NET 8).
|
|
|
|
## Screenshot
|
|
|
|

|
|
|
|
## Design Principle
|
|
|
|
> This software is so intuitive that even the most right-brained person can easily intuit and use it.
|
|
|
|
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.
|
|
|
|
## Why ytLlive
|
|
|
|
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.
|
|
|
|
## Account Assumption
|
|
|
|
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.
|
|
|
|
## Audio Assumption
|
|
|
|
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.
|
|
|
|
## Run
|
|
|
|
```bash
|
|
dotnet build # Windows only — WPF
|
|
dotnet run
|
|
```
|
|
|
|
## Version Roadmap
|
|
|
|
**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.
|
|
|
|
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 subscription only removes the branding flash.
|
|
|
|
## Structure
|
|
|
|
| Path | Role |
|
|
|------|------|
|
|
| `Models/` | Scene, Source, WebcamSceneConfig, SceneElement, SceneCatalog, QualityOption, StreamConfig/Health, chat, Socials, BroadcastMetadata, Music, MicStatus |
|
|
| `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 |
|
|
| `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 |
|
|
|
|
## 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`.
|