14 lines
1.9 KiB
TypeScript
14 lines
1.9 KiB
TypeScript
import { VersionInfo } from '@start9labs/start-sdk'
|
||
|
||
export const v_0_2_54 = VersionInfo.of({
|
||
version: '0.2.54:0',
|
||
releaseNotes: {
|
||
en_US:
|
||
'Two real root-cause fixes (no entitlement-name shortcuts). (1) License verifier was always null, silently degrading every paid license to Core. keysat-client.js\'s loadVerifier() called `mod.createVerifier()` — but the licensing-client doesn\'t export a `createVerifier` factory; it exports a `Verifier` CLASS that must be constructed as `new Verifier(PublicKey.fromPem(pem))`. So `verifier` stayed null forever → offline verification was skipped → `entitlements` came back as an empty Set → tierFromEntitlements() always returned "core" no matter what the license actually contained. A Pro license with the documented `relay_pro` entitlement (correctly configured in Keysat) still resolved to Core. Fixed by using the documented constructor shape AND loading the issuer PEM from /app/assets/issuer.pub at first use. The same PEM file Recap-app ships, so any license that validates in Recap now validates here too. (2) Dockerfile wasn\'t copying the assets/ directory into the runtime image, so even with the verifier code fixed, issuer.pub wouldn\'t exist at runtime. Added `COPY assets/ ./assets/` alongside the public/ and server/ copies. The entitlement-name namespacing stays intact: relay still requires explicit "relay_pro" / "relay_max" to grant Pro/Max — bare "pro"/"max" entitlements remain a Recap-app-only signal as originally designed. Also includes the stitcher containment dedup from the earlier 0.2.54 build draft: sections that the analyze model emits as fully-contained inside another section (e.g., "Decentralizing 1:10–1:12" inside "Systemic Critique 1:10–1:23") are now dropped instead of both surviving into the final output.',
|
||
},
|
||
migrations: {
|
||
up: async ({ effects }) => {},
|
||
down: async ({ effects }) => {},
|
||
},
|
||
})
|