@voltro/plugin-licensing 0.86.0 → 0.87.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5321 -0
- package/README.md +44 -0
- package/THIRD-PARTY-NOTICES.md +860 -221
- package/dist/cloud.d.ts +31 -0
- package/dist/cloud.js +61 -0
- package/dist/games.d.ts +39 -0
- package/dist/games.js +65 -0
- package/dist/gate.d.ts +7 -0
- package/dist/gate.js +28 -0
- package/dist/index.d.ts +28 -9
- package/dist/index.js +85 -47
- package/dist/inspect.d.ts +56 -0
- package/dist/inspect.js +48 -0
- package/dist/snapshot.js +23 -11
- package/dist/verify.js +66 -33
- package/package.json +26 -6
- package/dist/refresh.js +0 -57
package/README.md
CHANGED
|
@@ -24,3 +24,47 @@ deliberately short so there is nothing here to drift out of date.
|
|
|
24
24
|
|
|
25
25
|
Proprietary. © 2026 Voltro UG. Your use is governed by the
|
|
26
26
|
[Terms of Service](https://voltro.cloud/legal/terms). See the bundled `LICENSE`.
|
|
27
|
+
|
|
28
|
+
## Games licenses
|
|
29
|
+
|
|
30
|
+
`./games` exports GamesLicenseEdition/GamesSignLicenseInput/GAMES_PLUGIN_GRANTS/
|
|
31
|
+
withGamesPluginGrants: actual issuer limits/base grants plus thirteen
|
|
32
|
+
game-plugin grants, no signing key, price or invented quota. `./sign` remains
|
|
33
|
+
server-only. Dedicated production Rooms host activates the actual installed
|
|
34
|
+
licensing instance and requires a verified rooms grant before host startup;
|
|
35
|
+
tenant-scoped host signatures refuse until actual tenant-bound host authority
|
|
36
|
+
exists.
|
|
37
|
+
|
|
38
|
+
`./cloud` exposes authenticated bounded JSON retrieval through an actual private
|
|
39
|
+
credential Effect port. Root `fetchSnapshot` replaces the raw URL option;
|
|
40
|
+
offline verification and lifecycle generation retain authority. CLI registration
|
|
41
|
+
verifies before private ignored .env.local custody and outputs metadata only.
|
|
42
|
+
Signed tokens are redacted as secrets.
|
|
43
|
+
|
|
44
|
+
Explicit expiry-only grace now participates in offline verification after
|
|
45
|
+
restart, with unchanged signature/not-before checks and exclusive snapshot
|
|
46
|
+
boundaries. Default verification remains strict.
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
## Read-only process inspection
|
|
50
|
+
|
|
51
|
+
GET `/status` on the installed Licensing inspect mount projects the current process snapshot: observed time, lifecycle activation, current state, installed edition/expiry, deployment or tenant scope without its identity, currently valid Games grants, typed latest refusal, configured grace and optional refresh interval. Rejection details, token/public/private keys, tenant IDs and entitlement values are excluded. Refresh configuration is not evidence of a running schedule. The process-global identity is not isolated per app or Licensing instance.
|
|
52
|
+
|
|
53
|
+
The browser-safe `@voltro/plugin-licensing/inspect` schema is shared by the server, shared License page and both dashboards. Instance selection uses the actual authorized manifest and existing replica routing. No registration, renewal, purchase, key editing or other write action is installed. Failed or malformed refreshes hide stale observations; the reload control retains keyboard focus while pending.
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
## One template development notice
|
|
57
|
+
|
|
58
|
+
The nine current game API starters carry `game.template.json` with their actual template ID. After successful plugin activation, `voltro dev` in explicit development mode recognizes that origin and a declared Games plugin, then exclusively records `.framework/game-license-notice.json` before printing the production-license/Cloud registration message. Later boots and competing processes do not print that message again. Ordinary apps without template origin and production/test mode do not record it. Game factories no longer print recurring per-instance license notices.
|
|
59
|
+
|
|
60
|
+
The receipt contains only format/version/template identity. Linked, foreign-owned, corrupt or oversized origin/receipt files refuse notice custody without deletion or license authority. A failure stays unavailable. At-most-once output is deliberate: a crash after the durable claim but before logging can lose the message; it cannot safely guarantee exactly-once terminal delivery. This path sends no telemetry, asks no consent and issues no trial, license or Seat.
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
## Signed claim scope validation
|
|
64
|
+
|
|
65
|
+
A supplied tenant claim must be a nonempty, unpadded string of at most 256 characters. Invalid scope refuses `malformed`; it never becomes a deployment-wide grant, including during authenticated expiry grace. Only an omitted tenant is deployment-wide. Edition, key IDs, feature/plugin names and entitlement names follow the same string constraints. Supplied feature/plugin grants must be arrays containing valid strings; malformed members refuse the complete license instead of disappearing. Entitlements must be an object, not an array, with nonnegative finite limits or `unlimited`. An own `__proto__` entitlement stays an own data property without changing the decoded object's prototype.
|
|
66
|
+
|
|
67
|
+
Signed expiry and issued-at are nonnegative whole Unix seconds within the representable Date range (maximum 8,640,000,000,000 seconds); the redacted inspection schema uses the same expiry boundary. Absent expiry still represents an unbounded license with `exp: 0`; absence of optional grants still means empty grants. This decoder does not bind a trial to a Cloud project, repair a token or issue new-deployment authority. The manual migration `0.87.0/65_license-claim-scope` directs issuers to reissue malformed tokens.
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
`makeSnapshot()` detaches and freezes installed scope, expiry, entitlement values and feature/plugin grants; its returned snapshot and exposed claims are immutable. It no longer preserves the offered claims object's reference identity. Later edits to that object cannot extend expiry, broaden tenant scope or add installed grants. Entitlement lookup accepts own properties only: ungranted prototype keys such as `constructor`, `toString` and `__proto__` return `undefined`. An explicitly signed own entitlement with such a name remains data. This does not isolate the process-global license cell between apps or verify raw claims passed directly to `makeSnapshot()`; actual token verification remains the authority.
|