2.7 KiB
2.7 KiB
HANDOFF — 2026-11-01 (exe renamed, depot builds, output rule enforced)
State
- Branch
main, level withoriginthrough8f79b20; this unit is local. - The shipped exe is
LlamaCasty.exe(AssemblyNamerenamed; four pack URIs fixed — the docs said three,KeepBroadcastDialog.xaml:5was the fourth). Guarded byAssemblyIdentityTests. scripts/publish.shstagesartifacts/steam-stageand refuses to finish ifffmpeg\, the licence, privacy or notices file is missing, or test assemblies leaked in. Output 257 MB.- The output-profile rule is built and enforced:
Models/OutputProfile.cs(921,600 px / 30 fps, fail closed) resolved once inBuildEncoderOptions— one ffmpeg process, two outputs.MainViewModel.DeveloperModebypasses it in Debug only. - Distribution is Steam-exclusive (2026-10-31): free app + paid edition as a Steam DLC; the
$10/month plan sold off-Steam by Polar, stated, never sold, in-app. Entitlement is
steamDlcOwned || polarKeyValid;steam_api64.dllships beside the exe and the app must start without Steam, falling back to free. - Site live with Steam (
a9d07ce);www.llamacasty.com301s to the apex.
Next action
Surge day 1: the entitlement seam. IEntitlement (HasDlc, IsValid), the Steam DLC
implementation on Steamworks.NET behind it, a fake for tests, and HasProOutput consuming the
interface instead of IsPremium. Steam-less launch must fall back to the free profile; then the
licence UI's four states against the fake.
Full week: TASKS.md → "Surge week — coding only" (days 1–5, sized 3–5 units each).
Landmines
- ⛔
ExcludeFromSingleFile="true"on the ffmpeg content — without it the publisher bundles libav*.dll into the exe and the app ships unable to find ffmpeg. Recipe inMyMistakes.md. - Dev affordances are compiled out, not hidden —
DeveloperPanelis removed from the Release build;Helpers/DevBuild.csis the single source for the flag (neverconst). - Nothing may gate a feature. The only paid delta is the output profile;
ShowBrandFlashstaysfalseand entitlement must never enable it. - No checkout inside a Steam build — the Wallet rule. The monthly is named, never sold, in-app.
- The org access token never ships.
organization_idis public; the token is not. - The site publishes the model, never the numbers, and never takes payment or links a checkout.
- No self-updater and no version banner: Steam updates the app.
- Pre-existing: the full test suite hangs (WASAPI teardown) — per-class runs;
ytLive.Testscarries 3 xUnit warnings the app-only gate does not see. - Not every hex is a theme colour —
BorderColorPalette/chat defaults are USER DATA, not tokens.