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
33 lines
1.7 KiB
Markdown
33 lines
1.7 KiB
Markdown
# 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).
|