jwinterm c5dcf5cd2b web checkout: fail-closed CTA -> OIDC PKCE -> shop -> redemption
- app-config.js: public config placeholder (all null/false -> INERT). Operations
  populates OIDC client + shop tenant + checkout URL at deploy; no secrets.
- checkout.js: Authorization Code + S256 PKCE (public client, no secret), state CSRF
  guard, token in sessionStorage, code/state scrubbed from URL. Resolves premium via
  the ledger's per-user /me/entitlements (user's own OIDC token, never the shared
  read token) and sets window.SUCH_APP.premium for WebBillingManager. Redemption also
  resolves on page reload / next login (crypto is webhook-driven).
- index.html: load config+checkout in <head>; CTA calls SUCH_APP_startCheckout, else
  falls through to the store links (fail-closed). Store/itch buttons unchanged.
2026-08-01 10:34:19 -04:00
2026-03-04 12:11:48 -05:00
2026-03-05 08:56:48 -05:00
S
Description
Static HTML5 version of Bauhaus Echo game
122 MiB
Languages
JavaScript 95.5%
CSS 3.1%
GLSL 1.1%
HTML 0.3%