Four things derived this session superseded what the plan said twenty-four hours earlier,
and the docs are corrected where each one died:
**Licensing needs no server.** Polar's customer-portal endpoints authenticate on the key
itself plus the public organization_id; the org access token is only needed to create
products. Channel binding rides in `conditions: {channel_id}`, re-checked on every
validate — so the "claim page" (a hosted OAuth flow that wrote the UC id onto the key)
and the key database it implied are deleted. Device management, key rotation and
subscription auto-revocation are Polar's; four states, one lease, no callback endpoint.
**Signing is deferred until two subscribers.** It never removes the day-one SmartScreen
warning (EV's instant-bypass died in 2024), so buying it before revenue buys only the
publisher line. Renamed to Azure Artifact Signing, $9.99/mo Basic, and it requires a
paid Azure subscription. Year-one fixed cost drops from ~$135 to ~$15.
**The Store account is free.** Microsoft waived the $19 individual fee and removed the
$99 company fee in May 2026, which makes the Store the only zero-cost route to a
Microsoft-signed install — the free answer to SmartScreen, noted beside the paid one.
**Support is a filter, not a promise.** Email, best effort, no SLA, refunds on request
without argument; no training service, no helpdesk. A repeated question becomes a
training video on @llamacasty, which is content and monetization instead of a ticket.
GitHub issues on the releases repo are the deliberate friction.
Also settled: binaries live in a second Gitea repo (`llamacasty-releases`) push-mirrored
to a public GitHub repo — issues and assets public, code private, one publish direction
(a git mirror carries refs, not GitHub Release assets); `@llamacasty` is
standard-verified with intermediate features, so live streaming, >15 min uploads and
custom thumbnails work today and no SIM or ID is needed; and OAuth comes out of Testing
mode by publishing the app (100-user lifetime cap, no 7-day token death).
TASKS.md now opens with the four-day surge slice — artifact shape, output gate,
entitlement seam, real-machine day — because those are what the first public release
waits on. HANDOFF.md rewritten. MyMistakes.md gains the Polar recipe and the
"verify means three different things" entry. MARCOM.md gains the support→content loop
and the surface roles.
38 lines
2.3 KiB
Markdown
38 lines
2.3 KiB
Markdown
# HANDOFF — 2026-10-31 (commercial settled; the surge week starts at the artifact, not the Text layer)
|
|
|
|
## State
|
|
|
|
- Branch `main`, level with `origin` through `7827d23` + `0b41b7d`; this doc unit is local.
|
|
- **Commercial is settled and written down**: freemium (free = whole app at a 921,600 px / 30 fps
|
|
profile, stream **and** recording), Pro $10/mo or $400 lifetime through **Polar with no server at
|
|
all** — the client calls the customer-portal API with the key, and channel binding rides in
|
|
`conditions: {channel_id}`. Signing is **deferred until two subscribers**; the Store account is
|
|
now free; binaries live in `llamacasty-releases` push-mirrored to public GitHub.
|
|
- **Support policy recorded**: email, best effort, no SLA, refunds on request; no training service;
|
|
a repeated question becomes a training video on `@llamacasty`. `MARCOM.md` holds the loop.
|
|
- `www.llamacasty.com` resolves and 301s to the apex (CNAME + YunoHost domain + LE cert + nginx
|
|
`.d` include). Recipe in `MyMistakes.md`.
|
|
|
|
## Next action
|
|
|
|
**Surge week, day 1: artifact shape.** `LlamaCasty.exe` rename (three pack URIs:
|
|
`MainWindow.xaml:14`, `OverlayHost.xaml:96`, `RenameRecordingDialog.xaml:5`), `scripts/publish.sh`
|
|
(self-contained win-x64, no test artifacts), `portable.txt` via `LayoutPathOverride`. It ends when
|
|
the zip runs on a clean profile.
|
|
|
|
Then: OutputProfile gate + TASK 53 geometry tests → entitlement seam + system messages → licence UI
|
|
and a real test broadcast. Day 5 if all four land: the visibility picker.
|
|
|
|
## Landmines
|
|
|
|
- **Nothing may gate a feature.** The only paid delta is the output profile. `ShowBrandFlash` stays
|
|
`false` and entitlement must never enable it.
|
|
- **The org access token never ships.** `organization_id` is public; the token is not. No claim
|
|
page, no callback endpoint, no key database — `conditions` does the binding.
|
|
- **The site publishes the model, never the numbers**, and its CTA stays "Coming soon to the
|
|
Microsoft Store" until the creator says the download exists.
|
|
- **No self-updater, by policy**: `winget upgrade` + a version banner. `StorePackagingTests` asserts it.
|
|
- Pre-existing: the **full test suite hangs** (WASAPI teardown). Per-class runs are the way.
|
|
- Not every hex is a theme colour — `BorderColorPalette`/chat defaults are USER DATA; on-stream
|
|
graphics come from `OutputPalette`. A red settings control is still a bug.
|