From 5a436cb3f2cf7206f7af97532a23ba08f039ee6a Mon Sep 17 00:00:00 2001 From: LongYinan Date: Thu, 8 Oct 2026 14:32:26 +0800 Subject: [PATCH] fix(deps): pin satori to 0.32.0 so sponsor and support-matrix images render satori 0.33 and later load HarfBuzz wasm at import time. In Cloudflare Workers its startup code reads self.location.href, which is undefined there, and it also needs runtime wasm compilation, which workerd blocks. Every render then fails, so /sponsors.svg, /sponsors.png, /support-matrix.svg and /support-matrix.png return 500. Pin satori to 0.32.0, the last version that renders in workerd, and restore the support-matrix snapshots it produces. Add a Renovate rule that keeps satori below 0.33 until upstream works in workerd again. Co-Authored-By: Claude Opus 5.5 (1M context) --- .../__snapshots__/card.test.ts.snap | 12 ++++----- package.json | 2 +- renovate.json | 5 ++++ yarn.lock | 26 ++++--------------- 4 files changed, 17 insertions(+), 28 deletions(-) diff --git a/lib/support-matrix/__snapshots__/card.test.ts.snap b/lib/support-matrix/__snapshots__/card.test.ts.snap index 95dfde3d..55e25a33 100644 --- a/lib/support-matrix/__snapshots__/card.test.ts.snap +++ b/lib/support-matrix/__snapshots__/card.test.ts.snap @@ -1,13 +1,13 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`renderSvg — snapshots > full / dark is stable 1`] = `""`; +exports[`renderSvg — snapshots > full / dark is stable 1`] = `""`; -exports[`renderSvg — snapshots > full / light is stable 1`] = `""`; +exports[`renderSvg — snapshots > full / light is stable 1`] = `""`; -exports[`renderSvg — snapshots > lzma / dark is stable 1`] = `""`; +exports[`renderSvg — snapshots > lzma / dark is stable 1`] = `""`; -exports[`renderSvg — snapshots > lzma / light is stable 1`] = `""`; +exports[`renderSvg — snapshots > lzma / light is stable 1`] = `""`; -exports[`renderSvg — snapshots > minimal / dark is stable 1`] = `""`; +exports[`renderSvg — snapshots > minimal / dark is stable 1`] = `""`; -exports[`renderSvg — snapshots > minimal / light is stable 1`] = `""`; +exports[`renderSvg — snapshots > minimal / light is stable 1`] = `""`; diff --git a/package.json b/package.json index 06c6806e..7f61881e 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "postcss-functions": "^4.0.2", "postcss-import": "^17.0.0", "pretty-bytes": "^7.1.0", - "satori": "^0.36.0", + "satori": "0.32.0", "shadcn": "^4.12.0", "svgo": "4.1.0", "tailwindcss": "^4.3.2", diff --git a/renovate.json b/renovate.json index 613651cb..a1b0523e 100644 --- a/renovate.json +++ b/renovate.json @@ -10,6 +10,11 @@ "groupName": "void", "matchPackageNames": ["void"], "matchPackagePrefixes": ["@void/"] + }, + { + "description": "Keep satori below 0.33. satori 0.33+ loads HarfBuzz wasm, which cannot start in Cloudflare Workers, so the /sponsors and /support-matrix images return 500. Remove this rule once satori renders in workerd again.", + "matchPackageNames": ["satori"], + "allowedVersions": "<0.33.0" } ], "lockFileMaintenance": { diff --git a/yarn.lock b/yarn.lock index 1d109e61..e990f52c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7146,13 +7146,6 @@ __metadata: languageName: node linkType: hard -"fflate@npm:0.7.3": - version: 0.7.3 - resolution: "fflate@npm:0.7.3" - checksum: 10c0/d116debcc828ca8860f78753e9472c3e0f14bc52cd2aab8bbcb01fd86577147993127317b8271d5f6eaaa821680e21adfa1e163211863300abfed6e006fc1d95 - languageName: node - linkType: hard - "fflate@npm:^0.7.3": version: 0.7.5 resolution: "fflate@npm:0.7.5" @@ -7430,13 +7423,6 @@ __metadata: languageName: node linkType: hard -"harfbuzzjs@npm:0.10.0": - version: 0.10.0 - resolution: "harfbuzzjs@npm:0.10.0" - checksum: 10c0/acc0cdcadb76de6ebe127468a30e7b9926edd9582fc1f0e966b0bbf955d9c5bb756de0d801344105da9d78357a86789ea3467d0ae2c37a075aef41c445a847a3 - languageName: node - linkType: hard - "has-symbols@npm:^1.1.0": version: 1.1.0 resolution: "has-symbols@npm:1.1.0" @@ -8809,7 +8795,7 @@ __metadata: react: "npm:^19" react-dom: "npm:^19" react-use: "npm:^17.6.1" - satori: "npm:^0.36.0" + satori: "npm:0.32.0" shadcn: "npm:^4.12.0" svgo: "npm:4.1.0" tailwind-merge: "npm:^3.6.0" @@ -10063,9 +10049,9 @@ __metadata: languageName: node linkType: hard -"satori@npm:^0.36.0": - version: 0.36.0 - resolution: "satori@npm:0.36.0" +"satori@npm:0.32.0": + version: 0.32.0 + resolution: "satori@npm:0.32.0" dependencies: "@shuding/opentype.js": "npm:1.4.0-beta.0" css-background-parser: "npm:^0.1.0" @@ -10074,13 +10060,11 @@ __metadata: css-to-react-native: "npm:^3.0.0" emoji-regex-xs: "npm:^2.0.1" escape-html: "npm:^1.0.3" - fflate: "npm:0.7.3" - harfbuzzjs: "npm:0.10.0" linebreak: "npm:^1.1.0" parse-css-color: "npm:^0.2.1" postcss-value-parser: "npm:^4.2.0" yoga-layout: "npm:^3.2.1" - checksum: 10c0/535f878845b1aa7f777fc0a5e320d46bee5670670e8674dcf643ae2ac9fa0f7264661719dc23404048e0441c5092d3972c95240393a64b48b8865da509a93d4f + checksum: 10c0/a459e08c22b079006e4d8ae8ffbbb2cb51300eccfe115ca8aa274cf34de32abc10d4255eed2837d96393a6d390f2e9d6eff761d9feeb174d9b6a4006c58def18 languageName: node linkType: hard