diff --git a/README.md b/README.md index 6fb79e2..5a0653e 100644 --- a/README.md +++ b/README.md @@ -20,8 +20,11 @@ npm install fullbleed ``` For a version-pinned installation, use `npm install --save-exact fullbleed@0.1.5`. -Release verification compares the npm tarball with the checked +The npm tarball matches the checked [GitHub release](https://github.com/fullbleed-engine/fullbleed-node/releases/tag/v0.1.5). +A [fresh registry install](https://github.com/fullbleed-engine/fullbleed-node/blob/main/verification/npm-publication-0.1.5.json) +reproduces the retained PDF/PNG output and passes seven compact-font fixtures +and ten custom-family cases. See the [installation verification records](https://github.com/fullbleed-engine/fullbleed-node/tree/main/verification). Save this as `invoice.mjs` and run `node invoice.mjs`: diff --git a/examples/nextjs/README.md b/examples/nextjs/README.md index 9bdce64..2df2008 100644 --- a/examples/nextjs/README.md +++ b/examples/nextjs/README.md @@ -20,8 +20,8 @@ Open `http://127.0.0.1:3000` and select **Download sample PDF**. The route IDs return 404. Use `npm run dev` while editing the app. `PORT` changes the port; `FULLBLEED_HOST` changes the production server's loopback binding. -The lockfile pins Next.js 16.3.8, React 19.3.0 and Fullbleed Node 0.1.4 -(engine 2.5.7) from npm. The registry package is byte-identical to the +The lockfile pins Next.js 16.3.8, React 19.3.0 and Fullbleed Node 0.1.5 +(engine 2.5.8) from npm. The registry package is byte-identical to the verified GitHub release tarball. Installing this starter needs no Python, Rust, system fonts or browser renderer. diff --git a/examples/nextjs/package-lock.json b/examples/nextjs/package-lock.json index d831fa4..f77b909 100644 --- a/examples/nextjs/package-lock.json +++ b/examples/nextjs/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "MIT", "dependencies": { - "fullbleed": "0.1.4", + "fullbleed": "0.1.5", "next": "16.3.8", "react": "19.3.0", "react-dom": "19.3.0" @@ -787,9 +787,9 @@ } }, "node_modules/fullbleed": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/fullbleed/-/fullbleed-0.1.4.tgz", - "integrity": "sha512-zjnVGkS9odakL6H9MmLFwEm/rUZGJvKwFdqdd3Y1DUnqiCmrGW9nO7Yx5vKgA7YkZY16j7Tx2lmSKibOgtTVOw==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/fullbleed/-/fullbleed-0.1.5.tgz", + "integrity": "sha512-3AvPt+n2j/0KMoUk1rq/cu4dzcsnyUNKJNOwpUJkW48vkndFcroFtXgMx4CXJX46O2/gDSli67tuhUUiVsu5OQ==", "license": "MIT", "dependencies": { "@bjorn3/browser_wasi_shim": "0.4.2" diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index aca0742..cb295f2 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -16,7 +16,7 @@ "verify": "node tools/verify.mjs" }, "dependencies": { - "fullbleed": "0.1.4", + "fullbleed": "0.1.5", "next": "16.3.8", "react": "19.3.0", "react-dom": "19.3.0" diff --git a/verification/npm-publication-0.1.5.json b/verification/npm-publication-0.1.5.json new file mode 100644 index 0000000..2f861be --- /dev/null +++ b/verification/npm-publication-0.1.5.json @@ -0,0 +1,48 @@ +{ + "schema": "fullbleed.npm_publication.v1", + "ok": true, + "checked_at": "2026-10-05T07:47:11.961817+00:00", + "package": "fullbleed", + "version": "0.1.5", + "engine": "2.5.8", + "source": "npm", + "tarball": "https://registry.npmjs.org/fullbleed/-/fullbleed-0.1.5.tgz", + "tarball_sha256": "817e9ba5a4741b6626b62c5e829fdd921c0b69d1e165fb4905483d56887237dc", + "tarball_bytes": 2360938, + "package_integrity": "sha512-3AvPt+n2j/0KMoUk1rq/cu4dzcsnyUNKJNOwpUJkW48vkndFcroFtXgMx4CXJX46O2/gDSli67tuhUUiVsu5OQ==", + "identical_to_verified_github_release": true, + "installed_files_matched": 18, + "fresh_cache": true, + "empty_user_config": true, + "runtime_path": "Node executable directory only", + "node": "v22.23.3", + "smoke": { + "ok": true, + "engine": "2.5.8", + "pdf": "01fc1ca82a6ef2f50805fe7a4f00a173dc59beb09196af12dd2547f8c4c94b47", + "png": "d13276f02f35653e97fd484ec0a3e2951f250a290ffe99655b9854dce2d35bc4", + "cjs": true, + "coldTimeoutRecovered": true, + "settledWorkersReleased": true + }, + "extracted_text": { + "installed.pdf": "Installed package Invoice NS-1042", + "invoice.pdf": "Invoice NS-1042 Consulting: USD 1,200.00" + }, + "font_verifier_sha256": "629ff8f3b7c705487f37ccb56439a3f5998636ae9379e1734d9c70f02c00f450", + "readme_pdf_sha256": "1486fd3a94f088196e8f70687df0f16a33782c138466a5626cddc46e69f5e419", + "readme_png_sha256": "b6dc87279d114dd2f0fb4ecccc48b829bd3babb22ba7d71e7fccfeaeab242116", + "font_cases": 7, + "font_family_cases": 10, + "source_commit": "847b943934ee050c735c712ffcaaff1d3d4c277e", + "prepublication_ci": "https://github.com/fullbleed-engine/fullbleed-node/actions/runs/37278433886", + "spending": 0, + "release": "https://github.com/fullbleed-engine/fullbleed-node/releases/tag/v0.1.5", + "publishing_method": "GitHub Actions trusted publisher (OIDC)", + "publication_workflow": "https://github.com/fullbleed-engine/fullbleed-node/actions/runs/37279433480", + "publisher_repository": "fullbleed-engine/fullbleed-node", + "publisher_file": "publish-npm.yml", + "publisher_environment": "npm", + "provenance_log": "https://search.sigstore.dev/?logIndex=3084359509", + "verification_note": "Seven compact-font fixtures and ten family-selection cases from the fresh registry install match the verified release; independent readers check font programs, text, and page pixels." +}