Repository navigation
v8.0.0 — Polar-only payments, hosted API as a product
8.0.0 — 2026-08-31
Polar-only payments, and the hosted API as a product: JSON mode, CORS, public API docs.
Semver rationale: major — removes packaged exports and changes the createLicenseValidator construction contract; the CLI surface and all hosted behavior for valid Polar licenses are unchanged.
Removed
- The retired Lemon Squeezy payment line:
src/entitlement.jsno longer exportsLS_LICENSE_VALIDATE_URL,evaluateLicenseResponse,LEMON_SQUEEZY_PROVIDER, orcreateLemonSqueezyLicenseValidator(deep-import users must switch tocreatePolarLicenseValidatorinsrc/entitlement-polar.js). createLicenseValidator({ provider })now requires an explicitprovider(fail-closedTypeErrorat construction; previously defaulted to Lemon Squeezy).PATINA_LICENSE_PROVIDERno longer selects a vendor:api/rewrite.jsandapi/packs.jsvalidate unconditionally against Polar (POLAR_ORGANIZATION_ID,POLAR_PRO_BENEFIT_ID). LS identity env names (LS_STORE_ID,LS_PRO_VARIANT_ID,LS_PRO_PRODUCT_ID) andPATINA_LS_*tunables are inert and removed from.env.example.
Added
- Hosted API product surface (
docs/HTTP-API.md):Accept: application/jsonreturns one buffered JSON response with runner terminal semantics preserved (safety-gate refusals →422with a stable machine-readablecode; upstream failures →500); exact media-type Accept negotiation (explicit NDJSON wins,q=0excludes, lookalikes never match); CORS for cross-origin API use (wildcard origin, Bearer-only, quota-exempt preflight); premature client close never writes to a destroyed response. The playground CTA now frames Pro as API access, localized in ko/en/zh/ja.
Unchanged
- The pack CLI (
patina pack) command syntax and config keys; only the server-side license authority changed. License recovery guidance now points to the Polar customer portal.