Files
LlamaCasty/HANDOFF.md
T
gramps ff5e8d94ae feat(entitlement): pivot to paid app ownership
Check Steam ownership of the paid app with BIsSubscribedApp; keep Debug fake ownership out of Release. Ref: https://partner.steamgames.com/doc/api/ISteamApps#BIsSubscribedApp
2026-11-02 09:18:03 -08:00

1.7 KiB
Raw Blame History

HANDOFF — 2026-11-02 (Steam ownership check)

State

  • main; local work unit, not pushed.
  • Distribution plan: one paid Steam app ($79 announced launch price, then $99) plus its associated free Demo. Same code; no subscription, DLC purchase, or GitHub binary.
  • IEntitlement.IsAppOwned feeds the app-wide MainViewModel.IsAppOwned flag. Debug uses a fake owned result; the fake is excluded from Release.
  • Release ownership uses BIsSubscribedApp(paidAppId) and fails closed when the ID or Steam is unavailable. The paid app ID is not configured yet; the Steamworks application is pending.
  • Steam's private-use clause is not, by itself, a proven blocker. EULA wording should expressly allow commercial/monetized streaming; OBS is the relevant Steam software precedent. See MyMistakes.md → Steam distribution.

Next action

Day 1: grey out higher tiers for non-owners and link to the paid Steam page; then the system-message strip. The queued Debug-only test-access rule also needs checking. Keep one integration test per change.

Landmines

  • The Demo has its own App ID. Ownership must check the paid app ID, never the Demo ID or test ID 480.
  • No fake ownership code or developer panel in Release.
  • No Steam checkout in the app; Steam handles purchase and updates.
  • The paid app ID is not available yet; Release stays fail-closed until it is configured.
  • verify.sh clean app build passes; EntitlementTests passes 5/5. Full suite currently has 13–14 UI/content failures; connection to this change is unconfirmed, investigate separately.
  • Bundled FFmpeg must stay outside the single-file exe (ExcludeFromSingleFile="true").
  • Build with Windows dotnet.exe; run tests per class (the whole suite can hang in WASAPI teardown).