From 2673949b4c8e70914127e4057093f07897b973ca Mon Sep 17 00:00:00 2001 From: 100gle Date: Wed, 14 Oct 2026 15:11:16 +0800 Subject: [PATCH 1/9] chore(website): refresh the website build toolchain - wrangler 4.143.0 -> 4.149.0 - pnpm 10.34.6 -> 12.11.2 - `onlyBuiltDependencies` -> `allowBuilds`, which is what pnpm 11 renamed it to - `minimumReleaseAge: 4320`: three days, to block supply-chain attacks - CI: pnpm/action-setup v4 -> v6, the first major that installs pnpm 12 wrangler stops at 4.149.0 because 4.150.0 is younger than the cooldown. Verified: frozen install, build, and deploy dry-run (417 assets, only `ASSETS`). --- .github/workflows/main.yml | 2 +- website/DEPLOYMENT.md | 6 + website/package.json | 4 +- website/pnpm-lock.yaml | 738 ++++++++++++++++++------------------ website/pnpm-workspace.yaml | 13 +- 5 files changed, 386 insertions(+), 377 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a59f1540..db60296b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -49,7 +49,7 @@ jobs: uses: actions/checkout@v6 - name: Set up pnpm - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@v6 with: package_json_file: website/package.json diff --git a/website/DEPLOYMENT.md b/website/DEPLOYMENT.md index 1402d46b..660fa64e 100644 --- a/website/DEPLOYMENT.md +++ b/website/DEPLOYMENT.md @@ -21,6 +21,8 @@ Recommended settings: - Environment variable: `SITE_URL=https://bub.build` - Node version: `24.21.0` (pinned in `website/.node-version`; remove any older `NODE_VERSION` override, or set it to `24.21.0`) +- Package manager version: `12.11.2` (pinned as `packageManager` in + `website/package.json`, no other setting needed) - Build secret: `GITHUB_TOKEN=` (optional, recommended for higher GitHub API limits) The repo keeps a minimal [wrangler.jsonc](./wrangler.jsonc) and relies on @@ -35,6 +37,10 @@ Cloudflare bundle then fails to resolve it. Other dependencies require Node the build Node version, clear Cloudflare's build cache and retry if a cached installation still lacks the WASM runtime. +`pnpm-workspace.yaml` sets a three-day release cooldown (`minimumReleaseAge`). +The purpose is to block supply-chain attacks. A frozen install also fails while a +lockfile entry is younger than three days, so a dependency bump must wait. + Astro sessions are explicitly disabled because the site does not use per-user server state. The generated Worker should have only the `ASSETS` binding, with no automatically provisioned `SESSION` KV namespace. Verify this with diff --git a/website/package.json b/website/package.json index 15b629ac..c5c9a67c 100644 --- a/website/package.json +++ b/website/package.json @@ -2,7 +2,7 @@ "name": "website", "type": "module", "version": "0.0.1", - "packageManager": "pnpm@10.34.6", + "packageManager": "pnpm@12.11.2", "engines": { "node": "^22.19.0 || >=24.0.0" }, @@ -35,6 +35,6 @@ "devDependencies": { "@lucide/astro": "^1.48.0", "tailwindcss": "^4.3.3", - "wrangler": "^4.143.0" + "wrangler": "^4.149.0" } } diff --git a/website/pnpm-lock.yaml b/website/pnpm-lock.yaml index c0f073a5..f91f9fcb 100644 --- a/website/pnpm-lock.yaml +++ b/website/pnpm-lock.yaml @@ -1,3 +1,186 @@ +--- +lockfileVersion: '9.0' + +importers: + + .: + configDependencies: {} + packageManagerDependencies: + '@pnpm/exe': + specifier: 12.11.2 + version: 12.11.2 + pnpm: + specifier: 12.11.2 + version: 12.11.2 + +packages: + + '@pnpm/exe.android-arm64@12.11.2': + resolution: {integrity: sha512-owLw13OfPkEoY+hLBNeeG+dCFhywr7q2d/EHPz4mNL2RhKnv8gNwMARkjkiDQu234aItVwFNDeGnmQXm+ikkAg==} + cpu: [arm64] + os: [android] + + '@pnpm/exe.android-x64@12.11.2': + resolution: {integrity: sha512-GYPkVebl4iokOA/4MPSpGoUVfFlsth7uqOCe1XiaiM23LAdvUOMJBObqHJijr89ZqjwHm9pO6vO45GRwJ2U2qA==} + cpu: [x64] + os: [android] + + '@pnpm/exe.darwin-arm64@12.11.2': + resolution: {integrity: sha512-n9M4On66y8FDxUAKgMO1FXt0qihyG4e+56p3/F0uo8Bx9KplW8BwKVnXigzCJ8aNM6sVVPkOE6M9XXbeVIxnZA==} + cpu: [arm64] + os: [darwin] + + '@pnpm/exe.darwin-x64@12.11.2': + resolution: {integrity: sha512-oSW7n3sBT0c0cyk4kj10T2Y6Mpm+OFEiCAWozgX039tdoI6yqJF1uaFD3sw7ugLdu6VV3+uY0pa1TUZIPdxDWA==} + cpu: [x64] + os: [darwin] + + '@pnpm/exe.freebsd-x64@12.11.2': + resolution: {integrity: sha512-qbzc3KoDpa/Lkf8vs3jnDe6dUUbso+6eLIyssYFMiliLpYNxn8dirk11YoNnOQcdHVB50v5RFls1Yid6ttT5pg==} + cpu: [x64] + os: [freebsd] + + '@pnpm/exe.linux-arm64-musl@12.11.2': + resolution: {integrity: sha512-uMEYDwKRktGwANubQ+kYCwmhNwg3Ik6qK89ahsbQ5cP30R/5FVJb/T99vr9XRUBC/A7mZI6eeT92oyVas9ACyg==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@pnpm/exe.linux-arm64@12.11.2': + resolution: {integrity: sha512-6e8ZAQUwFXAWHHHv5FesWqf/kEK04wuitBv5f/gxzkC0DiBfaixr+f+6JQede8SF4Ji5LcMwVFJbzAtffpWxEg==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-ppc64@12.11.2': + resolution: {integrity: sha512-Ui8A4nepkVupx2VpuFfysEluMvWK6gTB5rgVts7Ss/+8dj0RD28x3F/seNeH/zSypgC6yKdV6qsKVQh/uffTuQ==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-riscv64@12.11.2': + resolution: {integrity: sha512-i1yLdQ5bu+wjQ+srtFoJAaY2gN/+oXHFdjul4llCeoDxHE0rTIG3R41NhHfCjyFPW4+CpbBT58933CL9sMOCnA==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-s390x@12.11.2': + resolution: {integrity: sha512-YS1/lhPjjTsN4QL50VaFZKRa3Uc/bDnhE8eKbJMFvuX06UuFS5YaiDg04APoZdfVSGqTfX27QAg7rfLMSWaqxA==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-x64-musl@12.11.2': + resolution: {integrity: sha512-7eIxQR05fvJxCujUSKp5KTtehJ7QqrgqP/HD1+BcB/SaV2Be4XI1PEHiOgA1zxsiMIeMvTF6E4G4dYHrFjeXRg==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@pnpm/exe.linux-x64@12.11.2': + resolution: {integrity: sha512-FK7QKe24AYgppJwO3mpooYptduuvIGqKJPi5ac7MdnWkjUy46JBfYhCW0grnkWKC8YOf0x+vGviuQqJEj3SpQQ==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.win32-arm64@12.11.2': + resolution: {integrity: sha512-PCTjVDdJb6VvraZxrEeFv6EqEA0hhIsAySx28e95J2Tqpi88hLpgOXgNqV0vpxq9A+b8GLQfyk/D+1UlJPv/YQ==} + cpu: [arm64] + os: [win32] + + '@pnpm/exe.win32-x64@12.11.2': + resolution: {integrity: sha512-8sgX86OvRjJ3yZs/TvGR2L31wH9ScPZ+f+geKI3ikuB0RRiK3i4LlTRO8OXN6pdRqj8epMde4312MCjj7JsJdA==} + cpu: [x64] + os: [win32] + + '@pnpm/exe@12.11.2': + resolution: {integrity: sha512-uUudrvXShgp6yYRL/6XjeB2B2kbjE/alBdVWjFBP0jDiOnV5R83OpCWuGtc+Tn4stk0DEgO/x+vhEUTUf4x+Yw==} + engines: {node: '>=18.*'} + hasBin: true + + pnpm@12.11.2: + resolution: {integrity: sha512-JaUWUqGWeFr18ovabf6NxYLr76SsHRgCIc4TkCMcX7dmN4IupLbkYzznSs3LCnf3Ja8RutOBd/3t2u6BipVcuQ==} + engines: {node: '>=18.*'} + hasBin: true + +snapshots: + + '@pnpm/exe.android-arm64@12.11.2': + optional: true + + '@pnpm/exe.android-x64@12.11.2': + optional: true + + '@pnpm/exe.darwin-arm64@12.11.2': + optional: true + + '@pnpm/exe.darwin-x64@12.11.2': + optional: true + + '@pnpm/exe.freebsd-x64@12.11.2': + optional: true + + '@pnpm/exe.linux-arm64-musl@12.11.2': + optional: true + + '@pnpm/exe.linux-arm64@12.11.2': + optional: true + + '@pnpm/exe.linux-ppc64@12.11.2': + optional: true + + '@pnpm/exe.linux-riscv64@12.11.2': + optional: true + + '@pnpm/exe.linux-s390x@12.11.2': + optional: true + + '@pnpm/exe.linux-x64-musl@12.11.2': + optional: true + + '@pnpm/exe.linux-x64@12.11.2': + optional: true + + '@pnpm/exe.win32-arm64@12.11.2': + optional: true + + '@pnpm/exe.win32-x64@12.11.2': + optional: true + + '@pnpm/exe@12.11.2': + optionalDependencies: + '@pnpm/exe.android-arm64': 12.11.2 + '@pnpm/exe.android-x64': 12.11.2 + '@pnpm/exe.darwin-arm64': 12.11.2 + '@pnpm/exe.darwin-x64': 12.11.2 + '@pnpm/exe.freebsd-x64': 12.11.2 + '@pnpm/exe.linux-arm64': 12.11.2 + '@pnpm/exe.linux-arm64-musl': 12.11.2 + '@pnpm/exe.linux-ppc64': 12.11.2 + '@pnpm/exe.linux-riscv64': 12.11.2 + '@pnpm/exe.linux-s390x': 12.11.2 + '@pnpm/exe.linux-x64': 12.11.2 + '@pnpm/exe.linux-x64-musl': 12.11.2 + '@pnpm/exe.win32-arm64': 12.11.2 + '@pnpm/exe.win32-x64': 12.11.2 + + pnpm@12.11.2: + optionalDependencies: + '@pnpm/exe.android-arm64': 12.11.2 + '@pnpm/exe.android-x64': 12.11.2 + '@pnpm/exe.darwin-arm64': 12.11.2 + '@pnpm/exe.darwin-x64': 12.11.2 + '@pnpm/exe.freebsd-x64': 12.11.2 + '@pnpm/exe.linux-arm64': 12.11.2 + '@pnpm/exe.linux-arm64-musl': 12.11.2 + '@pnpm/exe.linux-ppc64': 12.11.2 + '@pnpm/exe.linux-riscv64': 12.11.2 + '@pnpm/exe.linux-s390x': 12.11.2 + '@pnpm/exe.linux-x64': 12.11.2 + '@pnpm/exe.linux-x64-musl': 12.11.2 + '@pnpm/exe.win32-arm64': 12.11.2 + '@pnpm/exe.win32-x64': 12.11.2 + +--- lockfileVersion: '9.0' settings: @@ -14,13 +197,13 @@ importers: dependencies: '@astrojs/cloudflare': specifier: ^14.3.3 - version: 14.3.3(@types/node@24.19.0)(astro@7.3.5(@astrojs/markdown-remark@7.3.1)(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))(esbuild@0.28.2)(jiti@2.7.0)(wrangler@4.143.0(@types/node@24.19.0))(yaml@2.9.1) + version: 14.3.3(@types/node@24.19.0)(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))(esbuild@0.28.2)(jiti@2.7.0)(wrangler@4.149.0(@types/node@24.19.0))(yaml@2.9.1) '@astrojs/starlight': specifier: ^0.42.4 - version: 0.42.4(@astrojs/markdown-remark@7.3.1)(astro@7.3.5(@astrojs/markdown-remark@7.3.1)(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1)) + version: 0.42.4(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))(supports-color@10.2.2) '@astrojs/starlight-tailwind': specifier: ^5.0.0 - version: 5.0.0(@astrojs/starlight@0.42.4(@astrojs/markdown-remark@7.3.1)(astro@7.3.5(@astrojs/markdown-remark@7.3.1)(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1)))(tailwindcss@4.3.3) + version: 5.0.0(@astrojs/starlight@0.42.4(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))(supports-color@10.2.2))(tailwindcss@4.3.3) '@fontsource-variable/jetbrains-mono': specifier: ^5.3.0 version: 5.3.0 @@ -38,10 +221,10 @@ importers: version: 4.3.3(vite@8.3.1(@types/node@24.19.0)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1)) astro: specifier: ^7.3.5 - version: 7.3.5(@astrojs/markdown-remark@7.3.1)(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1) + version: 7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1) astro-mermaid: specifier: ^2.1.0 - version: 2.1.0(astro@7.3.5(@astrojs/markdown-remark@7.3.1)(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))(mermaid@11.17.2) + version: 2.1.0(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))(mermaid@11.17.2) clsx: specifier: ^2.1.1 version: 2.1.1 @@ -63,13 +246,13 @@ importers: devDependencies: '@lucide/astro': specifier: ^1.48.0 - version: 1.48.0(astro@7.3.5(@astrojs/markdown-remark@7.3.1)(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1)) + version: 1.48.0(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1)) tailwindcss: specifier: ^4.3.3 version: 4.3.3 wrangler: - specifier: ^4.143.0 - version: 4.143.0(@types/node@24.19.0) + specifier: ^4.149.0 + version: 4.149.0(@types/node@24.19.0) packages: @@ -312,30 +495,60 @@ packages: cpu: [x64] os: [darwin] + '@cloudflare/workerd-darwin-64@1.20261006.1': + resolution: {integrity: sha512-lCX6avJO2It9AyDEYitjmOtJRVp/xmaW0TziyoLAnfxlzozyyRbSFfIIMMCiDx/sTP1++E4VLbV+7BHSD33f0Q==} + engines: {node: '>=16'} + cpu: [x64] + os: [darwin] + '@cloudflare/workerd-darwin-arm64@1.20260926.1': resolution: {integrity: sha512-oVuLXfCnr1Xu9sBMNYrEPcFZQNMcviNcacz9l+oqQiLHc5UrVp++lpKbsuWstCfh+/c39Pp37TVeaNBLA8+ReA==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] + '@cloudflare/workerd-darwin-arm64@1.20261006.1': + resolution: {integrity: sha512-PyFGjOaldtppnLuKsdkoYWXfLVpDjuf8u+uoykX+1Xvxo2EPmCVViq0iDKm+U7c7PRno85ehS3/MPVXyk2HwHw==} + engines: {node: '>=16'} + cpu: [arm64] + os: [darwin] + '@cloudflare/workerd-linux-64@1.20260926.1': resolution: {integrity: sha512-BjmiDvYBVBG5248gCHSZS3yONbcm3/3qKTu9RaQA8o7jQHJfXx9JnWbhkld2KsbXnRGEGHFwpLLidIpIGtQYUA==} engines: {node: '>=16'} cpu: [x64] os: [linux] + '@cloudflare/workerd-linux-64@1.20261006.1': + resolution: {integrity: sha512-Ntf9S8eesmVufdjaT2kzWlz6Ng9XGYTc6cHQVRKAg59lFufwsIabGeMT6U4KkrpEeSIxgHq8aPtuLbZXE19tCA==} + engines: {node: '>=16'} + cpu: [x64] + os: [linux] + '@cloudflare/workerd-linux-arm64@1.20260926.1': resolution: {integrity: sha512-28bdfQDIFcpaKXMPisADy8BchpIsX+tEAhD+bhfEBXukFGFr8F3ouyiG3HzN3CqAh/OYvifJizzFZtptUPCy7w==} engines: {node: '>=16'} cpu: [arm64] os: [linux] + '@cloudflare/workerd-linux-arm64@1.20261006.1': + resolution: {integrity: sha512-JyeDBymVWw5tVRebSsVE8ojDYxd6UlZrAseHU8G+NpIyd5wF61tXlF/axLeCUqu0pOhBFHb8I5QKi0jwrCK41Q==} + engines: {node: '>=16'} + cpu: [arm64] + os: [linux] + '@cloudflare/workerd-windows-64@1.20260926.1': resolution: {integrity: sha512-ehdL3ataKdEmlnW9oom6OZUR8n3XsTL/zl8+KGREpLi5sMSW0mek0PrF4wK9SX51f3Alnlu8tF8eKBg+mc3xFw==} engines: {node: '>=16'} cpu: [x64] os: [win32] + '@cloudflare/workerd-windows-64@1.20261006.1': + resolution: {integrity: sha512-nWP0URNqOBN9fa/gZ7eh/w051DwjOXN8j4lDZDYVXyQPsux6sV3DfyYZT+CjR/rt9nKBSmJT9QE9/bWT18+84w==} + engines: {node: '>=16'} + cpu: [x64] + os: [win32] + '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -362,312 +575,156 @@ packages: '@emnapi/wasi-threads@1.2.3': resolution: {integrity: sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==} - '@esbuild/aix-ppc64@0.28.1': - resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.28.2': resolution: {integrity: sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.28.1': - resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.28.2': resolution: {integrity: sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.28.1': - resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.28.2': resolution: {integrity: sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.28.1': - resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.28.2': resolution: {integrity: sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.28.1': - resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.28.2': resolution: {integrity: sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.28.1': - resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.28.2': resolution: {integrity: sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.28.1': - resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.28.2': resolution: {integrity: sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.28.1': - resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.28.2': resolution: {integrity: sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.28.1': - resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.28.2': resolution: {integrity: sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.28.1': - resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.28.2': resolution: {integrity: sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.28.1': - resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.28.2': resolution: {integrity: sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.28.1': - resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.28.2': resolution: {integrity: sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.28.1': - resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.28.2': resolution: {integrity: sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.28.1': - resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.28.2': resolution: {integrity: sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.28.1': - resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.28.2': resolution: {integrity: sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.28.1': - resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.28.2': resolution: {integrity: sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.28.1': - resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.28.2': resolution: {integrity: sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.28.1': - resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - '@esbuild/netbsd-arm64@0.28.2': resolution: {integrity: sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.28.1': - resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.28.2': resolution: {integrity: sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.28.1': - resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-arm64@0.28.2': resolution: {integrity: sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.28.1': - resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.28.2': resolution: {integrity: sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.28.1': - resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - '@esbuild/openharmony-arm64@0.28.2': resolution: {integrity: sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.28.1': - resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.28.2': resolution: {integrity: sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.28.1': - resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.28.2': resolution: {integrity: sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.28.1': - resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.28.2': resolution: {integrity: sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.28.1': - resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.28.2': resolution: {integrity: sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==} engines: {node: '>=18'} @@ -1965,11 +2022,6 @@ packages: esast-util-from-js@2.0.1: resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} - esbuild@0.28.1: - resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} - engines: {node: '>=18'} - hasBin: true - esbuild@0.28.2: resolution: {integrity: sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==} engines: {node: '>=18'} @@ -2603,6 +2655,10 @@ packages: resolution: {integrity: sha512-m/M3rpLnaouw6QSoKzylfw6Z1dnOwRM48idnZ7kc5ivRqBXANFQ8XqKCyQ/V+xqQ9Rg1L99j4WkZGVU9uT4L2w==} engines: {node: '>=22.0.0'} + miniflare@5.20261006.1-alpha: + resolution: {integrity: sha512-6ylv8tamkrspDI2R/cAYfv+YWmfGNdXe76Pi9TauEUWsFVXn3LNF9Yk8oduzf1a+TYsSRYTqlOE7+nGGRsMHdw==} + engines: {node: '>=22.0.0'} + motion-dom@13.4.5: resolution: {integrity: sha512-p63p2Doq+US/O5wADauIPUVx0/eONHMLPzsudBM9XMWRuBQLXogdxH0vwIA8WYQZw864pyzoV723xoDqakwWTg==} @@ -3192,12 +3248,17 @@ packages: engines: {node: '>=16'} hasBin: true - wrangler@4.143.0: - resolution: {integrity: sha512-c2lHXVr1uDzqrHLdB07zGloUI+AoCBPa06fk+JMrX5TfoydISdhfVAR1IK1Ry2eu2RJmsMsGJY3vJNykJWik2Q==} + workerd@1.20261006.1: + resolution: {integrity: sha512-8MadBuffZ5NdpLwZjUmsqT5QlaKXq4gjgT6wzcKeynZTICNXyePhc+5QVoKiK7+MMhFTLNrRO2KXLlpk8Q6BkA==} + engines: {node: '>=16'} + hasBin: true + + wrangler@4.149.0: + resolution: {integrity: sha512-OzK7xmB5r5iLKb3cIT3783g13fe6T7xyeKu9LEdUyl+DKAM2KP/jkjnE0OUhyw+mB/XJM9ycjgF3MWm8PR9amg==} engines: {node: '>=22.0.0'} hasBin: true peerDependencies: - '@cloudflare/workers-types': ^5.20260926.1 + '@cloudflare/workers-types': ^5.20261006.1 peerDependenciesMeta: '@cloudflare/workers-types': optional: true @@ -3252,15 +3313,15 @@ snapshots: package-manager-detector: 1.8.0 tinyexec: 1.3.1 - '@astrojs/cloudflare@14.3.3(@types/node@24.19.0)(astro@7.3.5(@astrojs/markdown-remark@7.3.1)(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))(esbuild@0.28.2)(jiti@2.7.0)(wrangler@4.143.0(@types/node@24.19.0))(yaml@2.9.1)': + '@astrojs/cloudflare@14.3.3(@types/node@24.19.0)(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))(esbuild@0.28.2)(jiti@2.7.0)(wrangler@4.149.0(@types/node@24.19.0))(yaml@2.9.1)': dependencies: '@astrojs/internal-helpers': 0.11.0 '@astrojs/underscore-redirects': 1.0.4 - '@cloudflare/vite-plugin': 1.62.0(@types/node@24.19.0)(vite@8.3.1(@types/node@24.19.0)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1))(wrangler@4.143.0(@types/node@24.19.0)) - astro: 7.3.5(@astrojs/markdown-remark@7.3.1)(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1) + '@cloudflare/vite-plugin': 1.62.0(@types/node@24.19.0)(vite@8.3.1(@types/node@24.19.0)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1))(wrangler@4.149.0(@types/node@24.19.0)) + astro: 7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1) piccolore: 0.1.3 vite: 8.3.1(@types/node@24.19.0)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1) - wrangler: 4.143.0(@types/node@24.19.0) + wrangler: 4.149.0(@types/node@24.19.0) transitivePeerDependencies: - '@types/node' - '@vitejs/devtools' @@ -3339,11 +3400,11 @@ snapshots: smol-toml: 1.9.0 unified: 11.0.5 - '@astrojs/markdown-remark@7.3.1': + '@astrojs/markdown-remark@7.3.1(supports-color@10.2.2)': dependencies: '@astrojs/internal-helpers': 0.11.0 '@astrojs/prism': 4.0.2 - '@mdx-js/mdx': 3.1.1 + '@mdx-js/mdx': 3.1.1(supports-color@10.2.2) acorn: 8.18.0 estree-util-visit: 2.0.0 github-slugger: 2.0.0 @@ -3353,8 +3414,8 @@ snapshots: mdast-util-definitions: 6.0.0 rehype-raw: 7.0.0 rehype-stringify: 10.0.1 - remark-gfm: 4.0.1 - remark-parse: 11.0.0 + remark-gfm: 4.0.1(supports-color@10.2.2) + remark-parse: 11.0.0(supports-color@10.2.2) remark-rehype: 11.1.2 remark-smartypants: 3.0.3 source-map: 0.7.6 @@ -3374,14 +3435,14 @@ snapshots: github-slugger: 2.0.0 satteri: 0.10.5 - '@astrojs/mdx@8.0.2(@astrojs/markdown-remark@7.3.1)(@astrojs/markdown-satteri@0.4.2)(astro@7.3.5(@astrojs/markdown-remark@7.3.1)(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))': + '@astrojs/mdx@8.0.2(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@astrojs/markdown-satteri@0.4.2)(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))': dependencies: '@astrojs/internal-helpers': 0.11.0 '@astrojs/markdown-satteri': 0.4.2 - astro: 7.3.5(@astrojs/markdown-remark@7.3.1)(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1) + astro: 7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1) es-module-lexer: 2.3.2 optionalDependencies: - '@astrojs/markdown-remark': 7.3.1 + '@astrojs/markdown-remark': 7.3.1(supports-color@10.2.2) '@astrojs/prism@4.0.2': dependencies: @@ -3392,22 +3453,22 @@ snapshots: sitemap: 9.0.1 zod: 4.6.5 - '@astrojs/starlight-tailwind@5.0.0(@astrojs/starlight@0.42.4(@astrojs/markdown-remark@7.3.1)(astro@7.3.5(@astrojs/markdown-remark@7.3.1)(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1)))(tailwindcss@4.3.3)': + '@astrojs/starlight-tailwind@5.0.0(@astrojs/starlight@0.42.4(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))(supports-color@10.2.2))(tailwindcss@4.3.3)': dependencies: - '@astrojs/starlight': 0.42.4(@astrojs/markdown-remark@7.3.1)(astro@7.3.5(@astrojs/markdown-remark@7.3.1)(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1)) + '@astrojs/starlight': 0.42.4(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))(supports-color@10.2.2) tailwindcss: 4.3.3 - '@astrojs/starlight@0.42.4(@astrojs/markdown-remark@7.3.1)(astro@7.3.5(@astrojs/markdown-remark@7.3.1)(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))': + '@astrojs/starlight@0.42.4(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))(supports-color@10.2.2)': dependencies: '@astrojs/markdown-satteri': 0.4.2 - '@astrojs/mdx': 8.0.2(@astrojs/markdown-remark@7.3.1)(@astrojs/markdown-satteri@0.4.2)(astro@7.3.5(@astrojs/markdown-remark@7.3.1)(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1)) + '@astrojs/mdx': 8.0.2(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@astrojs/markdown-satteri@0.4.2)(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1)) '@astrojs/sitemap': 3.7.4 '@pagefind/default-ui': 1.5.2 '@types/hast': 3.0.5 '@types/js-yaml': 4.0.9 '@types/mdast': 4.0.4 - astro: 7.3.5(@astrojs/markdown-remark@7.3.1)(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1) - astro-expressive-code: 0.44.2(astro@7.3.5(@astrojs/markdown-remark@7.3.1)(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1)) + astro: 7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1) + astro-expressive-code: 0.44.2(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1)) bcp-47: 2.1.1 hast-util-format: 1.1.0 hast-util-select: 6.0.4 @@ -3418,18 +3479,18 @@ snapshots: js-yaml: 4.3.2 klona: 2.0.6 magic-string: 1.4.2 - mdast-util-directive: 3.1.0 + mdast-util-directive: 3.1.0(supports-color@10.2.2) mdast-util-to-markdown: 2.1.3 mdast-util-to-string: 4.0.0 pagefind: 1.5.2 - remark-directive: 4.0.0 + remark-directive: 4.0.0(supports-color@10.2.2) satteri: 0.10.5 ultrahtml: 1.7.0 unified: 11.0.5 unist-util-visit: 5.1.0 vfile: 6.0.3 optionalDependencies: - '@astrojs/markdown-remark': 7.3.1 + '@astrojs/markdown-remark': 7.3.1(supports-color@10.2.2) transitivePeerDependencies: - supports-color - typescript @@ -3515,14 +3576,20 @@ snapshots: optionalDependencies: workerd: 1.20260926.1 - '@cloudflare/vite-plugin@1.62.0(@types/node@24.19.0)(vite@8.3.1(@types/node@24.19.0)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1))(wrangler@4.143.0(@types/node@24.19.0))': + '@cloudflare/unenv-preset@2.16.2(unenv@2.0.0-rc.24)(workerd@1.20261006.1)': + dependencies: + unenv: 2.0.0-rc.24 + optionalDependencies: + workerd: 1.20261006.1 + + '@cloudflare/vite-plugin@1.62.0(@types/node@24.19.0)(vite@8.3.1(@types/node@24.19.0)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1))(wrangler@4.149.0(@types/node@24.19.0))': dependencies: '@cloudflare/unenv-preset': 2.16.2(unenv@2.0.0-rc.24)(workerd@1.20260926.1) miniflare: 5.20260926.0-alpha(@types/node@24.19.0) unenv: 2.0.0-rc.24 vite: 8.3.1(@types/node@24.19.0)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1) workerd: 1.20260926.1 - wrangler: 4.143.0(@types/node@24.19.0) + wrangler: 4.149.0(@types/node@24.19.0) ws: 8.21.0 transitivePeerDependencies: - '@types/node' @@ -3532,18 +3599,33 @@ snapshots: '@cloudflare/workerd-darwin-64@1.20260926.1': optional: true + '@cloudflare/workerd-darwin-64@1.20261006.1': + optional: true + '@cloudflare/workerd-darwin-arm64@1.20260926.1': optional: true + '@cloudflare/workerd-darwin-arm64@1.20261006.1': + optional: true + '@cloudflare/workerd-linux-64@1.20260926.1': optional: true + '@cloudflare/workerd-linux-64@1.20261006.1': + optional: true + '@cloudflare/workerd-linux-arm64@1.20260926.1': optional: true + '@cloudflare/workerd-linux-arm64@1.20261006.1': + optional: true + '@cloudflare/workerd-windows-64@1.20260926.1': optional: true + '@cloudflare/workerd-windows-64@1.20261006.1': + optional: true + '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 @@ -3582,159 +3664,81 @@ snapshots: tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.28.1': - optional: true - '@esbuild/aix-ppc64@0.28.2': optional: true - '@esbuild/android-arm64@0.28.1': - optional: true - '@esbuild/android-arm64@0.28.2': optional: true - '@esbuild/android-arm@0.28.1': - optional: true - '@esbuild/android-arm@0.28.2': optional: true - '@esbuild/android-x64@0.28.1': - optional: true - '@esbuild/android-x64@0.28.2': optional: true - '@esbuild/darwin-arm64@0.28.1': - optional: true - '@esbuild/darwin-arm64@0.28.2': optional: true - '@esbuild/darwin-x64@0.28.1': - optional: true - '@esbuild/darwin-x64@0.28.2': optional: true - '@esbuild/freebsd-arm64@0.28.1': - optional: true - '@esbuild/freebsd-arm64@0.28.2': optional: true - '@esbuild/freebsd-x64@0.28.1': - optional: true - '@esbuild/freebsd-x64@0.28.2': optional: true - '@esbuild/linux-arm64@0.28.1': - optional: true - '@esbuild/linux-arm64@0.28.2': optional: true - '@esbuild/linux-arm@0.28.1': - optional: true - '@esbuild/linux-arm@0.28.2': optional: true - '@esbuild/linux-ia32@0.28.1': - optional: true - '@esbuild/linux-ia32@0.28.2': optional: true - '@esbuild/linux-loong64@0.28.1': - optional: true - '@esbuild/linux-loong64@0.28.2': optional: true - '@esbuild/linux-mips64el@0.28.1': - optional: true - '@esbuild/linux-mips64el@0.28.2': optional: true - '@esbuild/linux-ppc64@0.28.1': - optional: true - '@esbuild/linux-ppc64@0.28.2': optional: true - '@esbuild/linux-riscv64@0.28.1': - optional: true - '@esbuild/linux-riscv64@0.28.2': optional: true - '@esbuild/linux-s390x@0.28.1': - optional: true - '@esbuild/linux-s390x@0.28.2': optional: true - '@esbuild/linux-x64@0.28.1': - optional: true - '@esbuild/linux-x64@0.28.2': optional: true - '@esbuild/netbsd-arm64@0.28.1': - optional: true - '@esbuild/netbsd-arm64@0.28.2': optional: true - '@esbuild/netbsd-x64@0.28.1': - optional: true - '@esbuild/netbsd-x64@0.28.2': optional: true - '@esbuild/openbsd-arm64@0.28.1': - optional: true - '@esbuild/openbsd-arm64@0.28.2': optional: true - '@esbuild/openbsd-x64@0.28.1': - optional: true - '@esbuild/openbsd-x64@0.28.2': optional: true - '@esbuild/openharmony-arm64@0.28.1': - optional: true - '@esbuild/openharmony-arm64@0.28.2': optional: true - '@esbuild/sunos-x64@0.28.1': - optional: true - '@esbuild/sunos-x64@0.28.2': optional: true - '@esbuild/win32-arm64@0.28.1': - optional: true - '@esbuild/win32-arm64@0.28.2': optional: true - '@esbuild/win32-ia32@0.28.1': - optional: true - '@esbuild/win32-ia32@0.28.2': optional: true - '@esbuild/win32-x64@0.28.1': - optional: true - '@esbuild/win32-x64@0.28.2': optional: true @@ -4013,11 +4017,11 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.6.0 - '@lucide/astro@1.48.0(astro@7.3.5(@astrojs/markdown-remark@7.3.1)(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))': + '@lucide/astro@1.48.0(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))': dependencies: - astro: 7.3.5(@astrojs/markdown-remark@7.3.1)(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1) + astro: 7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1) - '@mdx-js/mdx@3.1.1': + '@mdx-js/mdx@3.1.1(supports-color@10.2.2)': dependencies: '@types/estree': 1.0.9 '@types/estree-jsx': 1.0.5 @@ -4029,14 +4033,14 @@ snapshots: estree-util-is-identifier-name: 3.0.0 estree-util-scope: 1.0.1 estree-walker: 3.0.3 - hast-util-to-jsx-runtime: 2.3.6 + hast-util-to-jsx-runtime: 2.3.6(supports-color@10.2.2) markdown-extensions: 2.0.0 recma-build-jsx: 1.0.0 recma-jsx: 1.0.1(acorn@8.18.0) recma-stringify: 1.0.0 - rehype-recma: 1.0.0 - remark-mdx: 3.1.1 - remark-parse: 11.0.0 + rehype-recma: 1.0.0(supports-color@10.2.2) + remark-mdx: 3.1.1(supports-color@10.2.2) + remark-parse: 11.0.0(supports-color@10.2.2) remark-rehype: 11.1.2 source-map: 0.7.6 unified: 11.0.5 @@ -4481,21 +4485,21 @@ snapshots: astring@1.9.0: optional: true - astro-expressive-code@0.44.2(astro@7.3.5(@astrojs/markdown-remark@7.3.1)(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1)): + astro-expressive-code@0.44.2(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1)): dependencies: - astro: 7.3.5(@astrojs/markdown-remark@7.3.1)(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1) + astro: 7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1) rehype-expressive-code: 0.44.2 url-extras: 0.1.0 - astro-mermaid@2.1.0(astro@7.3.5(@astrojs/markdown-remark@7.3.1)(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))(mermaid@11.17.2): + astro-mermaid@2.1.0(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))(mermaid@11.17.2): dependencies: - astro: 7.3.5(@astrojs/markdown-remark@7.3.1)(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1) + astro: 7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1) import-meta-resolve: 4.2.0 mdast-util-to-string: 4.0.0 mermaid: 11.17.2 unist-util-visit: 5.1.0 - astro@7.3.5(@astrojs/markdown-remark@7.3.1)(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1): + astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1): dependencies: '@astrojs/compiler-rs': 0.5.1 '@astrojs/internal-helpers': 0.11.0 @@ -4551,7 +4555,7 @@ snapshots: yargs-parser: 22.0.0 zod: 4.6.5 optionalDependencies: - '@astrojs/markdown-remark': 7.3.1 + '@astrojs/markdown-remark': 7.3.1(supports-color@10.2.2) sharp: 0.35.5(@types/node@24.19.0) transitivePeerDependencies: - '@azure/app-configuration' @@ -4884,9 +4888,11 @@ snapshots: dayjs@1.11.23: {} - debug@4.4.3: + debug@4.4.3(supports-color@10.2.2): dependencies: ms: 2.1.3 + optionalDependencies: + supports-color: 10.2.2 decode-named-character-reference@1.3.0: dependencies: @@ -4972,35 +4978,6 @@ snapshots: vfile-message: 4.0.3 optional: true - esbuild@0.28.1: - optionalDependencies: - '@esbuild/aix-ppc64': 0.28.1 - '@esbuild/android-arm': 0.28.1 - '@esbuild/android-arm64': 0.28.1 - '@esbuild/android-x64': 0.28.1 - '@esbuild/darwin-arm64': 0.28.1 - '@esbuild/darwin-x64': 0.28.1 - '@esbuild/freebsd-arm64': 0.28.1 - '@esbuild/freebsd-x64': 0.28.1 - '@esbuild/linux-arm': 0.28.1 - '@esbuild/linux-arm64': 0.28.1 - '@esbuild/linux-ia32': 0.28.1 - '@esbuild/linux-loong64': 0.28.1 - '@esbuild/linux-mips64el': 0.28.1 - '@esbuild/linux-ppc64': 0.28.1 - '@esbuild/linux-riscv64': 0.28.1 - '@esbuild/linux-s390x': 0.28.1 - '@esbuild/linux-x64': 0.28.1 - '@esbuild/netbsd-arm64': 0.28.1 - '@esbuild/netbsd-x64': 0.28.1 - '@esbuild/openbsd-arm64': 0.28.1 - '@esbuild/openbsd-x64': 0.28.1 - '@esbuild/openharmony-arm64': 0.28.1 - '@esbuild/sunos-x64': 0.28.1 - '@esbuild/win32-arm64': 0.28.1 - '@esbuild/win32-ia32': 0.28.1 - '@esbuild/win32-x64': 0.28.1 - esbuild@0.28.2: optionalDependencies: '@esbuild/aix-ppc64': 0.28.2 @@ -5257,7 +5234,7 @@ snapshots: unist-util-visit: 5.1.0 zwitch: 2.0.4 - hast-util-to-estree@3.1.3: + hast-util-to-estree@3.1.3(supports-color@10.2.2): dependencies: '@types/estree': 1.0.9 '@types/estree-jsx': 1.0.5 @@ -5267,9 +5244,9 @@ snapshots: estree-util-attach-comments: 3.0.0 estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.2.0 - mdast-util-mdxjs-esm: 2.0.1 + mdast-util-mdx-expression: 2.0.1(supports-color@10.2.2) + mdast-util-mdx-jsx: 3.2.0(supports-color@10.2.2) + mdast-util-mdxjs-esm: 2.0.1(supports-color@10.2.2) property-information: 7.2.0 space-separated-tokens: 2.0.2 style-to-js: 1.1.21 @@ -5293,7 +5270,7 @@ snapshots: stringify-entities: 4.0.4 zwitch: 2.0.4 - hast-util-to-jsx-runtime@2.3.6: + hast-util-to-jsx-runtime@2.3.6(supports-color@10.2.2): dependencies: '@types/estree': 1.0.9 '@types/hast': 3.0.5 @@ -5302,9 +5279,9 @@ snapshots: devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.2.0 - mdast-util-mdxjs-esm: 2.0.1 + mdast-util-mdx-expression: 2.0.1(supports-color@10.2.2) + mdast-util-mdx-jsx: 3.2.0(supports-color@10.2.2) + mdast-util-mdxjs-esm: 2.0.1(supports-color@10.2.2) property-information: 7.2.0 space-separated-tokens: 2.0.2 style-to-js: 1.1.21 @@ -5550,13 +5527,13 @@ snapshots: unist-util-visit: 5.1.0 optional: true - mdast-util-directive@3.1.0: + mdast-util-directive@3.1.0(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.3 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-to-markdown: 2.1.3 parse-entities: 4.0.2 stringify-entities: 4.0.4 @@ -5572,14 +5549,14 @@ snapshots: unist-util-visit-parents: 6.0.2 optional: true - mdast-util-from-markdown@2.0.3: + mdast-util-from-markdown@2.0.3(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.3 decode-named-character-reference: 1.3.0 devlop: 1.1.0 mdast-util-to-string: 4.0.0 - micromark: 4.0.3 + micromark: 4.0.3(supports-color@10.2.2) micromark-util-decode-numeric-character-reference: 2.0.2 micromark-util-decode-string: 2.0.1 micromark-util-normalize-identifier: 2.0.1 @@ -5598,73 +5575,73 @@ snapshots: micromark-util-character: 2.1.1 optional: true - mdast-util-gfm-footnote@2.1.0: + mdast-util-gfm-footnote@2.1.0(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-to-markdown: 2.1.3 micromark-util-normalize-identifier: 2.0.1 transitivePeerDependencies: - supports-color optional: true - mdast-util-gfm-strikethrough@2.0.1: + mdast-util-gfm-strikethrough@2.0.1(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-to-markdown: 2.1.3 transitivePeerDependencies: - supports-color optional: true - mdast-util-gfm-table@2.0.0: + mdast-util-gfm-table@2.0.0(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 markdown-table: 3.0.4 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-to-markdown: 2.1.3 transitivePeerDependencies: - supports-color optional: true - mdast-util-gfm-task-list-item@2.0.0: + mdast-util-gfm-task-list-item@2.0.0(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-to-markdown: 2.1.3 transitivePeerDependencies: - supports-color optional: true - mdast-util-gfm@3.1.0: + mdast-util-gfm@3.1.0(supports-color@10.2.2): dependencies: - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-gfm-autolink-literal: 2.0.1 - mdast-util-gfm-footnote: 2.1.0 - mdast-util-gfm-strikethrough: 2.0.1 - mdast-util-gfm-table: 2.0.0 - mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-gfm-footnote: 2.1.0(supports-color@10.2.2) + mdast-util-gfm-strikethrough: 2.0.1(supports-color@10.2.2) + mdast-util-gfm-table: 2.0.0(supports-color@10.2.2) + mdast-util-gfm-task-list-item: 2.0.0(supports-color@10.2.2) mdast-util-to-markdown: 2.1.3 transitivePeerDependencies: - supports-color optional: true - mdast-util-mdx-expression@2.0.1: + mdast-util-mdx-expression@2.0.1(supports-color@10.2.2): dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.5 '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-to-markdown: 2.1.3 transitivePeerDependencies: - supports-color optional: true - mdast-util-mdx-jsx@3.2.0: + mdast-util-mdx-jsx@3.2.0(supports-color@10.2.2): dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.5 @@ -5672,7 +5649,7 @@ snapshots: '@types/unist': 3.0.3 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-to-markdown: 2.1.3 parse-entities: 4.0.2 stringify-entities: 4.0.4 @@ -5682,24 +5659,24 @@ snapshots: - supports-color optional: true - mdast-util-mdx@3.0.0: + mdast-util-mdx@3.0.0(supports-color@10.2.2): dependencies: - mdast-util-from-markdown: 2.0.3 - mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.2.0 - mdast-util-mdxjs-esm: 2.0.1 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) + mdast-util-mdx-expression: 2.0.1(supports-color@10.2.2) + mdast-util-mdx-jsx: 3.2.0(supports-color@10.2.2) + mdast-util-mdxjs-esm: 2.0.1(supports-color@10.2.2) mdast-util-to-markdown: 2.1.3 transitivePeerDependencies: - supports-color optional: true - mdast-util-mdxjs-esm@2.0.1: + mdast-util-mdxjs-esm@2.0.1(supports-color@10.2.2): dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.5 '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-to-markdown: 2.1.3 transitivePeerDependencies: - supports-color @@ -6040,10 +6017,10 @@ snapshots: micromark-util-types@2.0.3: {} - micromark@4.0.3: + micromark@4.0.3(supports-color@10.2.2): dependencies: '@types/debug': 4.1.13 - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) decode-named-character-reference: 1.3.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.4 @@ -6076,6 +6053,19 @@ snapshots: - bufferutil - utf-8-validate + miniflare@5.20261006.1-alpha(@types/node@24.19.0): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + sharp: 0.35.5(@types/node@24.19.0) + undici: 7.30.0 + workerd: 1.20261006.1 + ws: 8.21.0 + youch: 4.1.0-beta.10 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - utf-8-validate + motion-dom@13.4.5: dependencies: motion-utils: 13.3.0 @@ -6290,11 +6280,11 @@ snapshots: vfile: 6.0.3 optional: true - rehype-recma@1.0.0: + rehype-recma@1.0.0(supports-color@10.2.2): dependencies: '@types/estree': 1.0.9 '@types/hast': 3.0.5 - hast-util-to-estree: 3.1.3 + hast-util-to-estree: 3.1.3(supports-color@10.2.2) transitivePeerDependencies: - supports-color optional: true @@ -6306,39 +6296,39 @@ snapshots: unified: 11.0.5 optional: true - remark-directive@4.0.0: + remark-directive@4.0.0(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 - mdast-util-directive: 3.1.0 + mdast-util-directive: 3.1.0(supports-color@10.2.2) micromark-extension-directive: 4.0.0 unified: 11.0.5 transitivePeerDependencies: - supports-color - remark-gfm@4.0.1: + remark-gfm@4.0.1(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 - mdast-util-gfm: 3.1.0 + mdast-util-gfm: 3.1.0(supports-color@10.2.2) micromark-extension-gfm: 3.0.0 - remark-parse: 11.0.0 + remark-parse: 11.0.0(supports-color@10.2.2) remark-stringify: 11.0.0 unified: 11.0.5 transitivePeerDependencies: - supports-color optional: true - remark-mdx@3.1.1: + remark-mdx@3.1.1(supports-color@10.2.2): dependencies: - mdast-util-mdx: 3.0.0 + mdast-util-mdx: 3.0.0(supports-color@10.2.2) micromark-extension-mdxjs: 3.0.0 transitivePeerDependencies: - supports-color optional: true - remark-parse@11.0.0: + remark-parse@11.0.0(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) micromark-util-types: 2.0.3 unified: 11.0.5 transitivePeerDependencies: @@ -6776,16 +6766,24 @@ snapshots: '@cloudflare/workerd-linux-arm64': 1.20260926.1 '@cloudflare/workerd-windows-64': 1.20260926.1 - wrangler@4.143.0(@types/node@24.19.0): + workerd@1.20261006.1: + optionalDependencies: + '@cloudflare/workerd-darwin-64': 1.20261006.1 + '@cloudflare/workerd-darwin-arm64': 1.20261006.1 + '@cloudflare/workerd-linux-64': 1.20261006.1 + '@cloudflare/workerd-linux-arm64': 1.20261006.1 + '@cloudflare/workerd-windows-64': 1.20261006.1 + + wrangler@4.149.0(@types/node@24.19.0): dependencies: '@cloudflare/kv-asset-handler': 0.5.0 - '@cloudflare/unenv-preset': 2.16.2(unenv@2.0.0-rc.24)(workerd@1.20260926.1) + '@cloudflare/unenv-preset': 2.16.2(unenv@2.0.0-rc.24)(workerd@1.20261006.1) blake3-wasm: 2.1.5 - esbuild: 0.28.1 - miniflare: 5.20260926.0-alpha(@types/node@24.19.0) + esbuild: 0.28.2 + miniflare: 5.20261006.1-alpha(@types/node@24.19.0) path-to-regexp: 6.3.0 unenv: 2.0.0-rc.24 - workerd: 1.20260926.1 + workerd: 1.20261006.1 optionalDependencies: fsevents: 2.3.3 transitivePeerDependencies: diff --git a/website/pnpm-workspace.yaml b/website/pnpm-workspace.yaml index 853c2687..efffc16d 100644 --- a/website/pnpm-workspace.yaml +++ b/website/pnpm-workspace.yaml @@ -1,6 +1,10 @@ strictPeerDependencies: true engineStrict: true +# Release cooldown, in minutes. Three days, to block supply-chain attacks. A +# frozen install also fails while any lockfile entry is younger. +minimumReleaseAge: 4320 + # Patch pinned transitive dependencies until upstream adopts these fixes. overrides: # https://github.com/advisories/GHSA-px8p-9vwx-vf98 @@ -8,10 +12,11 @@ overrides: # https://github.com/advisories/GHSA-3wwx-pv8p-q78v miniflare>undici: ^7.29.1 -onlyBuiltDependencies: - - esbuild - - sharp - - workerd +# Packages that are not listed here keep their install scripts disabled. +allowBuilds: + esbuild: true + sharp: true + workerd: true # Starlight's HTML processors use Sätteri in the Cloudflare bundle. Install # its WASI fallback as well as the native binding used to prerender in Node. From d7a842f4e242dcef4b54a9f45c6f4f5e473e370c Mon Sep 17 00:00:00 2001 From: 100gle Date: Wed, 14 Oct 2026 15:11:20 +0800 Subject: [PATCH 2/9] chore(website): bump the Workers compatibility date to 2026-08-03 One day before 2026-08-04, where Cloudflare starts enabling the `nodejs_compat` flags for every Worker and the upload grows. --- website/DEPLOYMENT.md | 4 ++++ website/wrangler.jsonc | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/website/DEPLOYMENT.md b/website/DEPLOYMENT.md index 660fa64e..1880d745 100644 --- a/website/DEPLOYMENT.md +++ b/website/DEPLOYMENT.md @@ -46,6 +46,10 @@ server state. The generated Worker should have only the `ASSETS` binding, with no automatically provisioned `SESSION` KV namespace. Verify this with `pnpm wrangler versions upload --dry-run` after building. +`compatibility_date` stops one day before `2026-08-04`, where Cloudflare starts +enabling the `nodejs_compat` flags for every Worker and the upload grows. To +cross that line, check the size with `pnpm exec wrangler deploy --dry-run`. + GitHub repo stats are snapshotted during `pnpm build` into `src/data/github-snapshot.ts`. The Worker does not call the GitHub API at runtime, so `GITHUB_TOKEN` only needs to exist as a build secret. diff --git a/website/wrangler.jsonc b/website/wrangler.jsonc index cbd77f6e..c12b7aab 100644 --- a/website/wrangler.jsonc +++ b/website/wrangler.jsonc @@ -1,7 +1,7 @@ { "$schema": "./node_modules/wrangler/config-schema.json", "name": "bub", - "compatibility_date": "2026-04-22", + "compatibility_date": "2026-08-03", "observability": { "enabled": false, "head_sampling_rate": 1, From d05c6abff700115ac33320dbd7d86efdb2d62a40 Mon Sep 17 00:00:00 2001 From: 100gle Date: Wed, 14 Oct 2026 15:31:45 +0800 Subject: [PATCH 3/9] chore(website): bump astro and its integration patches - astro 7.3.5 -> 7.3.8 - @astrojs/starlight 0.42.4 -> 0.42.6 - @astrojs/cloudflare 14.3.3 -> 14.3.4 - @fontsource/noto-sans-sc 5.3.0 -> 5.3.1 - @lucide/astro 1.48.0 -> 1.55.0 (dev) Everything stays within the existing semver ranges and passes the three-day release cooldown. satori (0.33 -> 0.47) and motion (13 -> 14) are left out on purpose: both majors need their own verification pass. Verified: frozen install, `BUB_ASTRO_IMAGE_MODE=build pnpm build`. --- website/package.json | 10 +-- website/pnpm-lock.yaml | 148 ++++++++++++++++++++++++----------------- 2 files changed, 93 insertions(+), 65 deletions(-) diff --git a/website/package.json b/website/package.json index c5c9a67c..1487c563 100644 --- a/website/package.json +++ b/website/package.json @@ -15,15 +15,15 @@ "preview": "wrangler dev" }, "dependencies": { - "@astrojs/cloudflare": "^14.3.3", - "@astrojs/starlight": "^0.42.4", + "@astrojs/cloudflare": "^14.3.4", + "@astrojs/starlight": "^0.42.6", "@astrojs/starlight-tailwind": "^5.0.0", "@fontsource-variable/jetbrains-mono": "^5.3.0", "@fontsource-variable/outfit": "^5.3.0", - "@fontsource/noto-sans-sc": "^5.3.0", + "@fontsource/noto-sans-sc": "^5.3.1", "@fontsource/outfit": "^5.3.0", "@tailwindcss/vite": "^4.3.3", - "astro": "^7.3.5", + "astro": "^7.3.8", "astro-mermaid": "^2.1.0", "clsx": "^2.1.1", "mermaid": "^11.17.2", @@ -33,7 +33,7 @@ "tailwind-merge": "^3.7.0" }, "devDependencies": { - "@lucide/astro": "^1.48.0", + "@lucide/astro": "^1.55.0", "tailwindcss": "^4.3.3", "wrangler": "^4.149.0" } diff --git a/website/pnpm-lock.yaml b/website/pnpm-lock.yaml index f91f9fcb..504ef620 100644 --- a/website/pnpm-lock.yaml +++ b/website/pnpm-lock.yaml @@ -196,14 +196,14 @@ importers: .: dependencies: '@astrojs/cloudflare': - specifier: ^14.3.3 - version: 14.3.3(@types/node@24.19.0)(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))(esbuild@0.28.2)(jiti@2.7.0)(wrangler@4.149.0(@types/node@24.19.0))(yaml@2.9.1) + specifier: ^14.3.4 + version: 14.3.4(@types/node@24.19.0)(astro@7.3.8(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1))(esbuild@0.28.2)(jiti@2.7.0)(wrangler@4.149.0(@types/node@24.19.0))(yaml@2.9.1) '@astrojs/starlight': - specifier: ^0.42.4 - version: 0.42.4(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))(supports-color@10.2.2) + specifier: ^0.42.6 + version: 0.42.6(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(astro@7.3.8(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1))(supports-color@10.2.2) '@astrojs/starlight-tailwind': specifier: ^5.0.0 - version: 5.0.0(@astrojs/starlight@0.42.4(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))(supports-color@10.2.2))(tailwindcss@4.3.3) + version: 5.0.0(@astrojs/starlight@0.42.6(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(astro@7.3.8(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1))(supports-color@10.2.2))(tailwindcss@4.3.3) '@fontsource-variable/jetbrains-mono': specifier: ^5.3.0 version: 5.3.0 @@ -211,8 +211,8 @@ importers: specifier: ^5.3.0 version: 5.3.0 '@fontsource/noto-sans-sc': - specifier: ^5.3.0 - version: 5.3.0 + specifier: ^5.3.1 + version: 5.3.1 '@fontsource/outfit': specifier: ^5.3.0 version: 5.3.0 @@ -220,11 +220,11 @@ importers: specifier: ^4.3.3 version: 4.3.3(vite@8.3.1(@types/node@24.19.0)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1)) astro: - specifier: ^7.3.5 - version: 7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1) + specifier: ^7.3.8 + version: 7.3.8(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1) astro-mermaid: specifier: ^2.1.0 - version: 2.1.0(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))(mermaid@11.17.2) + version: 2.1.0(astro@7.3.8(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1))(mermaid@11.17.2) clsx: specifier: ^2.1.1 version: 2.1.1 @@ -245,8 +245,8 @@ importers: version: 3.7.0 devDependencies: '@lucide/astro': - specifier: ^1.48.0 - version: 1.48.0(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1)) + specifier: ^1.55.0 + version: 1.55.0(astro@7.3.8(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1)) tailwindcss: specifier: ^4.3.3 version: 4.3.3 @@ -259,8 +259,8 @@ packages: '@antfu/install-pkg@2.1.0': resolution: {integrity: sha512-sdg9NxU3zR4Mnawfbc/x6GB5Wf17WYud5qOuEuxXjaKpYpMkISSJEjItGebXJ2bQ4DIcly4NYH23mtkGJjvKUw==} - '@astrojs/cloudflare@14.3.3': - resolution: {integrity: sha512-kYb1xf+BBa8oAIMSZPfXxZWVWSEDhA+AgBN6ClDDDZspIN1M2XsIC6/fozyuCApNuiyqa3eUQbai62WohqJUgQ==} + '@astrojs/cloudflare@14.3.4': + resolution: {integrity: sha512-i79WZrMANUuDCHBrUHFqVPNkZ4whEIgqx6y3kPX4byl1VEc57/ueh2+DJ7qaubL9zkjZ/yh8515eBgLQpe2B8g==} peerDependencies: astro: ^7.2.0 wrangler: ^4.125.0 @@ -339,12 +339,18 @@ packages: '@astrojs/internal-helpers@0.11.0': resolution: {integrity: sha512-3rzxJ+xbo0+8YyqOzLziIN32wmsHdCjEVz2sGOpRxJ+Ben/KiLph4ItxBy1abEL+E8fkRzqjg0rfXmaHJGw9JA==} + '@astrojs/internal-helpers@0.12.0': + resolution: {integrity: sha512-pKPuwCDtO0L7zgmt1JGd9X4Aes1+0SX3IEBSqBNPHsScYdPMlfmed3Y7DTbXyF7E+8ylnb563o/0OzGQPOFehw==} + '@astrojs/markdown-remark@7.3.1': resolution: {integrity: sha512-QCjsjZQl0+Cgb91+T3Ip9hyUe1r5aLm4udi584rML9YO3syupbAYE+jWpAxYg+z4lFLNUugPrylFxZ+8qFTClg==} '@astrojs/markdown-satteri@0.4.2': resolution: {integrity: sha512-g4QehXnB/MzxQWnSf17NciFInMqEJy9948p8cc7zGg/r7995m0Ln5PMr3Xlnj24iey1LchaoZ3SzTOa3D4P/3w==} + '@astrojs/markdown-satteri@0.4.3': + resolution: {integrity: sha512-PFbEHPnwUlLvpXd7RXrrKM+j12akF4bG+DSuNuoN+3eiwjOwp4HaPi+QQdbkBV7QEYXmzyKca50OJsmGxhNIUA==} + '@astrojs/mdx@8.0.2': resolution: {integrity: sha512-WedIVP2Bu8fXSzxb3ZYZ8xDrWWjf2SRKCneh52Llhoa+O3lcpHPhoZVP3FerlivUaH/0LJz2yVaCNvMdg0u8Bw==} engines: {node: '>=22.12.0'} @@ -369,8 +375,8 @@ packages: '@astrojs/starlight': '>=0.38.0' tailwindcss: ^4.0.0 - '@astrojs/starlight@0.42.4': - resolution: {integrity: sha512-EsQsqGJ1uTBQcIMojvLqqg4Ku9idwi6PSNuppIOoYmvVP18xjoUkijMdKoDkhmmwKdhbB4ctLhGjPRJzxaq+Jw==} + '@astrojs/starlight@0.42.6': + resolution: {integrity: sha512-Cfs7GdgzgNRCauDxQVsFUVL1thrGHK/rQdbv/SURv/xhGBXx+j5ypOHW9ENPraQxbIzUC8KAnJV7L9mvEVRuyQ==} peerDependencies: '@astrojs/markdown-remark': ^7.3.0 astro: ^7.2.10 @@ -749,8 +755,8 @@ packages: '@fontsource-variable/outfit@5.3.0': resolution: {integrity: sha512-fPb5XnYK0k7SbR++HEmm4+ZqDszmLKQ+sPRUr8oQ/KNC0vy6r6hazJFe8iYozv4cqlHbvJ/JECkJWrfDodUMVQ==} - '@fontsource/noto-sans-sc@5.3.0': - resolution: {integrity: sha512-HeqIlGm0+ohOKxZLuHj1qW6r6avHH0OWdKERAcSDI0RQ+MXrteuLKA+M+5eOA8rYy0MFvOR5AT0fQo2rUkye0Q==} + '@fontsource/noto-sans-sc@5.3.1': + resolution: {integrity: sha512-YxZ/VWAWo9FWzH08Q6fGTzIW6vYNP2TMhUFCnfhlimbhdXnWrxJLrzX3KWt2FKnV0s8XiM5vjpGHQiyFRlTj0w==} '@fontsource/outfit@5.3.0': resolution: {integrity: sha512-0AVHzTTVJSxWDOxPKSfMeHhZeBFDU3cmgrcOb76ZEyhGo0+xgyG3GsLF3h9+X8w0IX7G4jzjJgFQEBiWdX6VgA==} @@ -1100,8 +1106,8 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@lucide/astro@1.48.0': - resolution: {integrity: sha512-BL+7lLGjjSTfdYEBd9pAB0ixhJ7M84OVzxHoY3oG3M92kX/q1UG2+znp+pqH3waxpIHF1l8Hd1QZxytqv5WH8A==} + '@lucide/astro@1.55.0': + resolution: {integrity: sha512-PjTTgicKDheri7BQaO5lGO47TPwQZBE6xSs5LnwXHcXvXn+6PF1SJU/7RqPbgaXTkTq7aGwyx5YBFGiWE8HbbQ==} peerDependencies: astro: ^4 || ^5 || ^6 || ^7 @@ -1577,8 +1583,8 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - am-i-vibing@0.4.0: - resolution: {integrity: sha512-MxT4XZL7pzLHpuvhDKdMaQHMGGkJDLluKBLsbstn+8wv9sWcFT6h+0ve9qkml95amVTZtZV83gQe2hY+ojgHLg==} + am-i-vibing@0.5.0: + resolution: {integrity: sha512-KLcsDhqf1XRrJmJr+9I/C0EX2K+sGrAGZFgkmd84c8TJO9zJBu+/kFInjazu1KfJWFhWDKdRWkpBzEs7s35DVA==} hasBin: true anymatch@3.1.3: @@ -1617,8 +1623,8 @@ packages: '@mermaid-js/layout-elk': optional: true - astro@7.3.5: - resolution: {integrity: sha512-1p/ernaq/RuESbM5NMjWzbO6SiebMGrGcYlGjMfBhzzgM+n/X7AUmVyw8BqW2QYCdivpsHwJBcD1fqmlTZjZHg==} + astro@7.3.8: + resolution: {integrity: sha512-LHzDHSaV+YzZiR3EFndDYTLLeNeuMtP1qX1FLcCNUUHOCqTTIWPczy2UV3zpA5VqvJe5cWZolqM9Z8JFqR2i9w==} engines: {node: '>=22.12.0', npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true peerDependencies: @@ -2013,6 +2019,9 @@ packages: es-module-lexer@2.3.2: resolution: {integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==} + es-module-lexer@3.0.3: + resolution: {integrity: sha512-yWGe1O/j+almnV4hOYrmZo8u58JdnmXEMneRQAYkWtqSiT86yoMIEKF4rpqEDj52tbYl3xceBD3DQIBwcsC9Pw==} + es-toolkit@1.52.0: resolution: {integrity: sha512-XTNEJQh1tY1ZJVcf6ayP/2n4ZPyaHlW2FWs7xvw5ddPuhUVjLD3olQVQS7kf58JbAB48iL0uL/jerTrjtV3lDA==} @@ -2119,8 +2128,8 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - get-tsconfig@5.0.0-beta.4: - resolution: {integrity: sha512-7nF7C9fIPFEMHgEMEfgIlO9wDdZ8CyHw27rWciFZfHvHDReIiPhsYuzPRXsfvBCqFy1l8RRyyWV7QLM+ZhUJsQ==} + get-tsconfig@5.0.0-beta.6: + resolution: {integrity: sha512-X6fBC0pmImC70gvX2zm56go9hx0MyoGVdG0tUCkg/D+Xnh5TJsOZ7iDbOdI3PvmtrDxnu1YdDufpK2QJX1Meqw==} engines: {node: '>=20.20.0'} github-slugger@2.0.0: @@ -3176,8 +3185,8 @@ packages: resolution: {integrity: sha512-xZe/16rV4aa+HGSOCiY2YeLT1OybRLrrkL/Rqaq7p7GMVXjFh+6wN4oMYgjFmnSnhY8t6Xpdl2l9qmnHYuMHwQ==} hasBin: true - verkit@0.4.1: - resolution: {integrity: sha512-mMVzj0TXExtVdlDEq+Mzp0eyOuyznNpFobNM3uAqe3HVm/Ps2c+u17BligMkZjZCA6EiXpoon8iRTer3iu40SQ==} + verkit@0.5.0: + resolution: {integrity: sha512-u4J1hr6Y+C/hit34GwL3eIcUf3wngT8TlYUjK7tk0jxydKLAq3sYvifjdTDA6U3KCKRcQCQDGf/srjxfZF3l7g==} engines: {node: '>=18.12.0'} vfile-location@5.0.3: @@ -3313,12 +3322,12 @@ snapshots: package-manager-detector: 1.8.0 tinyexec: 1.3.1 - '@astrojs/cloudflare@14.3.3(@types/node@24.19.0)(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))(esbuild@0.28.2)(jiti@2.7.0)(wrangler@4.149.0(@types/node@24.19.0))(yaml@2.9.1)': + '@astrojs/cloudflare@14.3.4(@types/node@24.19.0)(astro@7.3.8(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1))(esbuild@0.28.2)(jiti@2.7.0)(wrangler@4.149.0(@types/node@24.19.0))(yaml@2.9.1)': dependencies: - '@astrojs/internal-helpers': 0.11.0 + '@astrojs/internal-helpers': 0.12.0 '@astrojs/underscore-redirects': 1.0.4 '@cloudflare/vite-plugin': 1.62.0(@types/node@24.19.0)(vite@8.3.1(@types/node@24.19.0)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1))(wrangler@4.149.0(@types/node@24.19.0)) - astro: 7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1) + astro: 7.3.8(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1) piccolore: 0.1.3 vite: 8.3.1(@types/node@24.19.0)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1) wrangler: 4.149.0(@types/node@24.19.0) @@ -3400,6 +3409,17 @@ snapshots: smol-toml: 1.9.0 unified: 11.0.5 + '@astrojs/internal-helpers@0.12.0': + dependencies: + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + picomatch: 4.0.7 + retext-smartypants: 6.2.0 + shiki: 4.4.3 + smol-toml: 1.9.0 + unified: 11.0.5 + yaml: 2.9.1 + '@astrojs/markdown-remark@7.3.1(supports-color@10.2.2)': dependencies: '@astrojs/internal-helpers': 0.11.0 @@ -3435,11 +3455,18 @@ snapshots: github-slugger: 2.0.0 satteri: 0.10.5 - '@astrojs/mdx@8.0.2(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@astrojs/markdown-satteri@0.4.2)(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))': + '@astrojs/markdown-satteri@0.4.3': + dependencies: + '@astrojs/internal-helpers': 0.12.0 + '@astrojs/prism': 4.0.2 + github-slugger: 2.0.0 + satteri: 0.10.5 + + '@astrojs/mdx@8.0.2(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@astrojs/markdown-satteri@0.4.2)(astro@7.3.8(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1))': dependencies: '@astrojs/internal-helpers': 0.11.0 '@astrojs/markdown-satteri': 0.4.2 - astro: 7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1) + astro: 7.3.8(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1) es-module-lexer: 2.3.2 optionalDependencies: '@astrojs/markdown-remark': 7.3.1(supports-color@10.2.2) @@ -3453,22 +3480,22 @@ snapshots: sitemap: 9.0.1 zod: 4.6.5 - '@astrojs/starlight-tailwind@5.0.0(@astrojs/starlight@0.42.4(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))(supports-color@10.2.2))(tailwindcss@4.3.3)': + '@astrojs/starlight-tailwind@5.0.0(@astrojs/starlight@0.42.6(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(astro@7.3.8(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1))(supports-color@10.2.2))(tailwindcss@4.3.3)': dependencies: - '@astrojs/starlight': 0.42.4(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))(supports-color@10.2.2) + '@astrojs/starlight': 0.42.6(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(astro@7.3.8(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1))(supports-color@10.2.2) tailwindcss: 4.3.3 - '@astrojs/starlight@0.42.4(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))(supports-color@10.2.2)': + '@astrojs/starlight@0.42.6(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(astro@7.3.8(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1))(supports-color@10.2.2)': dependencies: '@astrojs/markdown-satteri': 0.4.2 - '@astrojs/mdx': 8.0.2(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@astrojs/markdown-satteri@0.4.2)(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1)) + '@astrojs/mdx': 8.0.2(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@astrojs/markdown-satteri@0.4.2)(astro@7.3.8(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1)) '@astrojs/sitemap': 3.7.4 '@pagefind/default-ui': 1.5.2 '@types/hast': 3.0.5 '@types/js-yaml': 4.0.9 '@types/mdast': 4.0.4 - astro: 7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1) - astro-expressive-code: 0.44.2(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1)) + astro: 7.3.8(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1) + astro-expressive-code: 0.44.2(astro@7.3.8(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1)) bcp-47: 2.1.1 hast-util-format: 1.1.0 hast-util-select: 6.0.4 @@ -3771,7 +3798,7 @@ snapshots: '@fontsource-variable/outfit@5.3.0': {} - '@fontsource/noto-sans-sc@5.3.0': {} + '@fontsource/noto-sans-sc@5.3.1': {} '@fontsource/outfit@5.3.0': {} @@ -4017,9 +4044,9 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.6.0 - '@lucide/astro@1.48.0(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))': + '@lucide/astro@1.55.0(astro@7.3.8(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1))': dependencies: - astro: 7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1) + astro: 7.3.8(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1) '@mdx-js/mdx@3.1.1(supports-color@10.2.2)': dependencies: @@ -4464,7 +4491,7 @@ snapshots: acorn@8.18.0: optional: true - am-i-vibing@0.4.0: + am-i-vibing@0.5.0: dependencies: process-ancestry: 0.1.0 @@ -4485,30 +4512,30 @@ snapshots: astring@1.9.0: optional: true - astro-expressive-code@0.44.2(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1)): + astro-expressive-code@0.44.2(astro@7.3.8(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1)): dependencies: - astro: 7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1) + astro: 7.3.8(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1) rehype-expressive-code: 0.44.2 url-extras: 0.1.0 - astro-mermaid@2.1.0(astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1))(mermaid@11.17.2): + astro-mermaid@2.1.0(astro@7.3.8(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1))(mermaid@11.17.2): dependencies: - astro: 7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1) + astro: 7.3.8(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1) import-meta-resolve: 4.2.0 mdast-util-to-string: 4.0.0 mermaid: 11.17.2 unist-util-visit: 5.1.0 - astro@7.3.5(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(jiti@2.7.0)(yaml@2.9.1): + astro@7.3.8(@astrojs/markdown-remark@7.3.1(supports-color@10.2.2))(@types/node@24.19.0)(@vercel/functions@3.4.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1): dependencies: '@astrojs/compiler-rs': 0.5.1 - '@astrojs/internal-helpers': 0.11.0 - '@astrojs/markdown-satteri': 0.4.2 + '@astrojs/internal-helpers': 0.12.0 + '@astrojs/markdown-satteri': 0.4.3 '@astrojs/telemetry': 3.3.3 '@capsizecss/unpack': 4.0.1 '@clack/prompts': 1.8.1 '@oslojs/encoding': 1.1.0 - am-i-vibing: 0.4.0 + am-i-vibing: 0.5.0 aria-query: 5.3.2 axobject-query: 4.1.0 ci-info: 4.4.0 @@ -4518,16 +4545,14 @@ snapshots: devalue: 5.9.4 diff: 9.0.0 dset: 3.1.4 - es-module-lexer: 2.3.2 - esbuild: 0.28.2 + es-module-lexer: 3.0.3 find-proc: 0.2.0 flattie: 1.1.1 fontace: 0.4.1 - get-tsconfig: 5.0.0-beta.4 + get-tsconfig: 5.0.0-beta.6 github-slugger: 2.0.0 html-escaper: 3.0.3 http-cache-semantics: 4.2.0 - js-yaml: 4.3.2 jsonc-parser: 3.3.1 magic-string: 1.4.2 magicast: 0.5.5 @@ -4539,6 +4564,7 @@ snapshots: package-manager-detector: 1.8.0 piccolore: 0.1.3 picomatch: 4.0.7 + rolldown: 1.2.11 shiki: 4.4.3 smol-toml: 1.9.0 svgo: 4.1.0 @@ -4548,7 +4574,7 @@ snapshots: ultrahtml: 1.7.0 unifont: 0.7.5 unstorage: 1.17.5(@vercel/functions@3.4.3) - verkit: 0.4.1 + verkit: 0.5.0 vite: 8.3.1(@types/node@24.19.0)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1) vitefu: 1.1.3(vite@8.3.1(@types/node@24.19.0)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.1)) xxhash-wasm: 1.1.0 @@ -4576,6 +4602,7 @@ snapshots: - '@vitejs/devtools' - aws4fetch - db0 + - esbuild - idb-keyval - ioredis - jiti @@ -4960,6 +4987,8 @@ snapshots: es-module-lexer@2.3.2: {} + es-module-lexer@3.0.3: {} + es-toolkit@1.52.0: {} esast-util-from-estree@2.0.0: @@ -5106,7 +5135,7 @@ snapshots: fsevents@2.3.3: optional: true - get-tsconfig@5.0.0-beta.4: + get-tsconfig@5.0.0-beta.6: dependencies: resolve-pkg-maps: 1.0.0 @@ -6719,7 +6748,7 @@ snapshots: uuid@14.0.2: {} - verkit@0.4.1: {} + verkit@0.5.0: {} vfile-location@5.0.3: dependencies: @@ -6795,8 +6824,7 @@ snapshots: xxhash-wasm@1.1.0: {} - yaml@2.9.1: - optional: true + yaml@2.9.1: {} yargs-parser@22.0.0: {} From 74a6bbaf0e2c14e0946c10c9fd469c807bcedf49 Mon Sep 17 00:00:00 2001 From: 100gle Date: Wed, 14 Oct 2026 15:36:05 +0800 Subject: [PATCH 4/9] chore(website): upgrade motion to 14 motion 14.0 has no breaking changes for the JavaScript API. It only deprecates internal APIs and pins its internal dependencies exactly, which shows up here as `framer-motion: 14.1.0` instead of `^13.4.5`. Audited every call site (HookIntro, TapeModel, Testimonials, BaseLayout). The site only uses `animate`, `inView`, and `stagger`, with `duration`, `ease`, `delay`, transforms, and `controls.stop()`. None of the earlier renames apply: `easing` -> `ease` and `stagger`'s `start` -> `startDelay` landed in 11.0, and the 12.0 `inView` callback signature already matches. Verified: frozen install, `BUB_ASTRO_IMAGE_MODE=build pnpm build`, and the client bundle. Only the shared animate chunk grows, 52,480 -> 52,863 B (gzip 18,803 -> 18,953 B); the viewport (inView) chunk is byte identical with the same content hash. Total JS 3,539,565 -> 3,539,948 B. --- website/package.json | 2 +- website/pnpm-lock.yaml | 36 ++++++++++++++++++------------------ 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/website/package.json b/website/package.json index 1487c563..0cef541d 100644 --- a/website/package.json +++ b/website/package.json @@ -27,7 +27,7 @@ "astro-mermaid": "^2.1.0", "clsx": "^2.1.1", "mermaid": "^11.17.2", - "motion": "^13.4.5", + "motion": "^14.1.0", "satori": "^0.33.5", "sharp": "^0.35.5", "tailwind-merge": "^3.7.0" diff --git a/website/pnpm-lock.yaml b/website/pnpm-lock.yaml index 504ef620..d5a917ad 100644 --- a/website/pnpm-lock.yaml +++ b/website/pnpm-lock.yaml @@ -232,8 +232,8 @@ importers: specifier: ^11.17.2 version: 11.17.2 motion: - specifier: ^13.4.5 - version: 13.4.5(react@19.2.5) + specifier: ^14.1.0 + version: 14.1.0(react@19.2.5) satori: specifier: ^0.33.5 version: 0.33.5 @@ -2112,8 +2112,8 @@ packages: resolution: {integrity: sha512-Wp1zXWPVUPBmfoa3Cqc9ctaKuzKAV6uLstRqlR56kSjplf5uAce+qeyYym7F+PHbGTk+tCEdkCW6RD7DX/gBZw==} engines: {node: '>=20'} - framer-motion@13.4.5: - resolution: {integrity: sha512-iXRMQ0Dp9cNf2k/1bNCguTgEOjqKjYgFmez/HA5NmAeuarzuj24jcDCZRnTAHXfMZZjOBXCE196ni3hmOGDIMA==} + framer-motion@14.1.0: + resolution: {integrity: sha512-QsdZSdWoyQfUmgi+GZfow8Du5COG6VRYEo9FlgKUPgH87/Le/fYekHCAKwLdYKHdCZcZfWHg4iOxlD6RoqXciQ==} peerDependencies: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 @@ -2668,14 +2668,14 @@ packages: resolution: {integrity: sha512-6ylv8tamkrspDI2R/cAYfv+YWmfGNdXe76Pi9TauEUWsFVXn3LNF9Yk8oduzf1a+TYsSRYTqlOE7+nGGRsMHdw==} engines: {node: '>=22.0.0'} - motion-dom@13.4.5: - resolution: {integrity: sha512-p63p2Doq+US/O5wADauIPUVx0/eONHMLPzsudBM9XMWRuBQLXogdxH0vwIA8WYQZw864pyzoV723xoDqakwWTg==} + motion-dom@14.1.0: + resolution: {integrity: sha512-FyFLkNUAAETzCvf851mZcl+v+kaZrKq+UM+XmkY4G8n+ny/WYfiWh9j0fhSQ1KOKVQrM9/cLO11THO2k71HJlg==} - motion-utils@13.3.0: - resolution: {integrity: sha512-sgSschQp7EseHInIlR7hBbMuvet3RA0bs28KPZAXJcGKGdxHGvh1ogpYDilY3bOMtl73EqPNmp75sAKHYPU5sg==} + motion-utils@14.1.0: + resolution: {integrity: sha512-xd4FeWOnnXsJHmAaRCLNbOS7mEaNOangjMt3Pl241H07f1kxW48fADQ/8O5hLLNhf1qdlozgY3PPAHBdOoU7AA==} - motion@13.4.5: - resolution: {integrity: sha512-PfSAiAqsmBYfX7Jgu698pakn6ifJEkixtftHBJyZR02CIEnz0/0e0E9GtK7GhWFeAYkeS50Iix863oZag+nePg==} + motion@14.1.0: + resolution: {integrity: sha512-lsCsW9uJ+iMJj8MSiLccpUC+ZUpoSspaX6Pm78KrnZKMioCPAPG6WeG1d1d/Ywg+z1mny+STP6VyEYW+3nAqNw==} peerDependencies: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 @@ -5124,10 +5124,10 @@ snapshots: dependencies: tiny-inflate: 1.0.3 - framer-motion@13.4.5(react@19.2.5): + framer-motion@14.1.0(react@19.2.5): dependencies: - motion-dom: 13.4.5 - motion-utils: 13.3.0 + motion-dom: 14.1.0 + motion-utils: 14.1.0 tslib: 2.8.1 optionalDependencies: react: 19.2.5 @@ -6095,15 +6095,15 @@ snapshots: - bufferutil - utf-8-validate - motion-dom@13.4.5: + motion-dom@14.1.0: dependencies: - motion-utils: 13.3.0 + motion-utils: 14.1.0 - motion-utils@13.3.0: {} + motion-utils@14.1.0: {} - motion@13.4.5(react@19.2.5): + motion@14.1.0(react@19.2.5): dependencies: - framer-motion: 13.4.5(react@19.2.5) + framer-motion: 14.1.0(react@19.2.5) tslib: 2.8.1 optionalDependencies: react: 19.2.5 From d2f7a3b94412582a805a9ada906afdbc3ca7c8da Mon Sep 17 00:00:00 2001 From: 100gle Date: Wed, 14 Oct 2026 16:02:46 +0800 Subject: [PATCH 5/9] chore(website): upgrade satori to 0.47 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit satori 0.34 through 0.47 rewrote the CSS engine: it drops the `yoga-layout` dependency in favour of its own `layout.wasm`, applies `opacity` per group, interpolates gradients in their own colour space, and aligns text by baseline. Verified against the 0.33.5 baseline with a per-pixel diff of all eight prerendered OG images. Differences are confined to the CJK description line (bbox x 62-550, y 407-437) and top out at maxΔ 16-18 with meanΔ 0.003-0.009, i.e. sub-pixel antialiasing. Titles, logo and the gradient background are byte-identical, so the gradient colour-space change is a no-op for this card. The yoga-layout removal drops three lockfile entries. satori stays a build-time-only dependency: it does not appear in dist/server. Verified: frozen install, `BUB_ASTRO_IMAGE_MODE=build pnpm build`. --- website/package.json | 2 +- website/pnpm-lock.yaml | 16 +++++----------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/website/package.json b/website/package.json index 0cef541d..88cf7cc3 100644 --- a/website/package.json +++ b/website/package.json @@ -28,7 +28,7 @@ "clsx": "^2.1.1", "mermaid": "^11.17.2", "motion": "^14.1.0", - "satori": "^0.33.5", + "satori": "^0.47.1", "sharp": "^0.35.5", "tailwind-merge": "^3.7.0" }, diff --git a/website/pnpm-lock.yaml b/website/pnpm-lock.yaml index d5a917ad..20a0a2f4 100644 --- a/website/pnpm-lock.yaml +++ b/website/pnpm-lock.yaml @@ -235,8 +235,8 @@ importers: specifier: ^14.1.0 version: 14.1.0(react@19.2.5) satori: - specifier: ^0.33.5 - version: 0.33.5 + specifier: ^0.47.1 + version: 0.47.1 sharp: specifier: ^0.35.5 version: 0.35.5(@types/node@24.19.0) @@ -2924,8 +2924,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - satori@0.33.5: - resolution: {integrity: sha512-PNW6ktrQ8SM6kk7u4aOuTkkUewkzyTOrj+QeEzXSsnNMAdff4ire9CAqIz8+4C3rCiBtK8QTELv52AZEd1PbRw==} + satori@0.47.1: + resolution: {integrity: sha512-hoRMFMXQ9o4VvcOZ+5pXKRAuWJkjvUzRz3fZJoFrAT3MVfuUvMWROe50lB7AREI1m9a0FAlEMDdQ3WPvHLm7FA==} engines: {node: '>=16'} satteri@0.10.5: @@ -3300,9 +3300,6 @@ packages: resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} engines: {node: '>=12.20'} - yoga-layout@3.2.1: - resolution: {integrity: sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ==} - youch-core@0.3.3: resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==} @@ -6452,7 +6449,7 @@ snapshots: safer-buffer@2.1.2: {} - satori@0.33.5: + satori@0.47.1: dependencies: '@shuding/opentype.js': 1.4.0-beta.0 css-background-parser: 0.1.0 @@ -6466,7 +6463,6 @@ snapshots: linebreak: 1.1.0 parse-css-color: 0.2.1 postcss-value-parser: 4.2.0 - yoga-layout: 3.2.1 satteri@0.10.5: dependencies: @@ -6830,8 +6826,6 @@ snapshots: yocto-queue@1.2.2: {} - yoga-layout@3.2.1: {} - youch-core@0.3.3: dependencies: '@poppinss/exception': 1.2.3 From d3741a2055aa6e4ec12d2ef278576fbc56673a76 Mon Sep 17 00:00:00 2001 From: 100gle Date: Wed, 14 Oct 2026 16:30:45 +0800 Subject: [PATCH 6/9] chore(website): move compatibility_date to 2026-10-13 The old value stopped one day before 2026-08-04 to avoid the nodejs_compat defaults, on the assumption that crossing the line grows the upload. That assumption does not hold for this project, and the date was costing us the Node.js builtins: the SSR bundle imports `node:fs`, `node:wasi`, `node:worker_threads` and `node:path`, which cannot resolve at a date before 2026-08-04 without the flag. Measured on a single build with `wrangler deploy --dry-run`, patching only the date: 2026-08-03, 2026-08-04, 2026-10-01, 2026-10-06, 2026-10-13 and 2026-10-14 all produce byte-identical output -- 557 modules, same gzip size. An explicit `nodejs_compat` flag does not change it either. The Astro adapter emits `no_bundle: true`, so Wrangler never bundles the Worker and never injects the unenv polyfills the docs describe. 2026-10-13 is the ceiling rather than the current date because wrangler ships the workerd binary: at 2026-10-14, `wrangler dev` refuses to start with "This Worker requires compatibility date \"2026-10-14\", but the newest date supported by this server binary is \"2026-10-13\"". wrangler 4.149.0 pins workerd 1.20261006.1; raise wrangler before raising the date. Behaviour verified against the pinned wrangler dev server: every route still serves, no runtime warnings, and the SSR output for `/` and `/zh-cn/` is byte-identical to the same build running at 2026-08-03. Verified: `pnpm install --frozen-lockfile`, `BUB_ASTRO_IMAGE_MODE=build pnpm build`, `pnpm exec wrangler deploy --dry-run` (still only the ASSETS binding). --- website/DEPLOYMENT.md | 20 +++++++++++++++++--- website/wrangler.jsonc | 4 +++- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/website/DEPLOYMENT.md b/website/DEPLOYMENT.md index 1880d745..82e63610 100644 --- a/website/DEPLOYMENT.md +++ b/website/DEPLOYMENT.md @@ -46,9 +46,23 @@ server state. The generated Worker should have only the `ASSETS` binding, with no automatically provisioned `SESSION` KV namespace. Verify this with `pnpm wrangler versions upload --dry-run` after building. -`compatibility_date` stops one day before `2026-08-04`, where Cloudflare starts -enabling the `nodejs_compat` flags for every Worker and the upload grows. To -cross that line, check the size with `pnpm exec wrangler deploy --dry-run`. +`compatibility_date` is `2026-10-13`, one day behind the current date. Cloudflare +advises setting it as close to the current date as possible, but the local +toolchain sets the ceiling: `wrangler` bundles the `workerd` binary, and a date +newer than that binary supports makes `pnpm dev` and `pnpm preview` refuse to +start with `This Worker requires compatibility date X, but the newest date +supported by this server binary is Y`. With `wrangler` 4.149.0 (`workerd` +1.20261006.1) the newest usable date is `2026-10-13`; `2026-10-14` fails. Bump +`wrangler` before moving the date forward. + +Crossing `2026-08-04` enables `nodejs_compat` and `nodejs_compat_v2` for every +Worker, so the `node:` builtins imported by the SSR bundle resolve at runtime +instead of throwing. It does not change the upload size here: the Astro adapter +emits `no_bundle: true`, so Wrangler never bundles the Worker and never injects +the `unenv` polyfills the Node.js compatibility docs describe. Re-checked with +`pnpm exec wrangler deploy --dry-run` on a single build across every date from +`2026-08-03` through `2026-10-14`: byte-identical output, 557 modules, same +gzip size. Keep using that command to re-check the size. GitHub repo stats are snapshotted during `pnpm build` into `src/data/github-snapshot.ts`. The Worker does not call the GitHub API at diff --git a/website/wrangler.jsonc b/website/wrangler.jsonc index c12b7aab..fcdc7352 100644 --- a/website/wrangler.jsonc +++ b/website/wrangler.jsonc @@ -1,7 +1,9 @@ { "$schema": "./node_modules/wrangler/config-schema.json", "name": "bub", - "compatibility_date": "2026-08-03", + // The newest date the pinned `wrangler` binary can actually run. Going past it + // breaks `pnpm dev` / `pnpm preview`; see DEPLOYMENT.md before moving this. + "compatibility_date": "2026-10-13", "observability": { "enabled": false, "head_sampling_rate": 1, From aec605e0e89c11f85038be2576758ee48b8c1c2a Mon Sep 17 00:00:00 2001 From: 100gle Date: Wed, 14 Oct 2026 16:47:26 +0800 Subject: [PATCH 7/9] docs(website): drop the repeated and stale deployment lines Two of these were verbatim duplicates: the required Cloudflare project configuration was already listed a few lines earlier under "recommended settings", and the Git-integration statement is covered by the responsibilities section at the end of the file. The MkDocs paragraph is stale -- the repository has no `mkdocs.yml` and no root `docs/` -- and the only fact it carried, that production targets Cloudflare Workers, is already the subject of the section directly below it. Deletions only, 14 lines; no wording was changed. --- website/DEPLOYMENT.md | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/website/DEPLOYMENT.md b/website/DEPLOYMENT.md index 82e63610..72b81dbe 100644 --- a/website/DEPLOYMENT.md +++ b/website/DEPLOYMENT.md @@ -4,10 +4,6 @@ The new `website/` directory is the docs and marketing site for Bub. -Legacy MkDocs source files may still exist in the repository during the -transition, but production deployment now targets the Astro site on -Cloudflare Workers. - ## Cloudflare Workers Connect the repository to a Cloudflare Worker using Git integration. @@ -74,9 +70,6 @@ SSR Worker build: - `_worker.js` - `_routes.json` -Production deployment is handled by Cloudflare Workers Git integration instead of -GitHub Actions. - ## Current Repo State The local developer entrypoints now target the new site: @@ -94,10 +87,3 @@ The deployment split is intentionally simple: - `main.yml` only verifies that the website builds - `on-release-main.yml` only handles package release tasks - Cloudflare Workers deploys the website from the connected repository - -Required Cloudflare Workers project configuration: - -- Git integration enabled for this repository -- Build command set to `pnpm install --frozen-lockfile && pnpm build` -- Deploy command set to `pnpm wrangler deploy` -- Working directory set to `website` From dad66b85da82a40e8ada593eebbd94c63e2ce7f9 Mon Sep 17 00:00:00 2001 From: 100gle Date: Wed, 14 Oct 2026 17:09:11 +0800 Subject: [PATCH 8/9] fix(pre-commit): allow check-yaml to read multi-document YAML pnpm 12 writes pnpm-lock.yaml as two YAML documents: an env document holding the pinned package manager and its binaries, and the project document. check-yaml rejects any file with more than one document unless --allow-multiple-documents is set. --- .pre-commit-config.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a0fefde1..370b911e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,6 +6,7 @@ repos: - id: check-merge-conflict - id: check-toml - id: check-yaml + args: [--allow-multiple-documents] - id: check-json exclude: ^.devcontainer/devcontainer.json - id: pretty-format-json From 9370fe0efcd1566a032221f9d48e387dbb0d430a Mon Sep 17 00:00:00 2001 From: 100gle Date: Wed, 14 Oct 2026 17:14:16 +0800 Subject: [PATCH 9/9] docs(website): drop the compatibility-date and cooldown notes Both restated what the configuration already says. The compatibility-date constraint now sits as a comment next to the value in wrangler.jsonc, and the cooldown is documented by the minimumReleaseAge comment in pnpm-workspace.yaml. --- website/DEPLOYMENT.md | 22 ---------------------- website/wrangler.jsonc | 4 ++-- 2 files changed, 2 insertions(+), 24 deletions(-) diff --git a/website/DEPLOYMENT.md b/website/DEPLOYMENT.md index 72b81dbe..43b8d718 100644 --- a/website/DEPLOYMENT.md +++ b/website/DEPLOYMENT.md @@ -33,33 +33,11 @@ Cloudflare bundle then fails to resolve it. Other dependencies require Node the build Node version, clear Cloudflare's build cache and retry if a cached installation still lacks the WASM runtime. -`pnpm-workspace.yaml` sets a three-day release cooldown (`minimumReleaseAge`). -The purpose is to block supply-chain attacks. A frozen install also fails while a -lockfile entry is younger than three days, so a dependency bump must wait. - Astro sessions are explicitly disabled because the site does not use per-user server state. The generated Worker should have only the `ASSETS` binding, with no automatically provisioned `SESSION` KV namespace. Verify this with `pnpm wrangler versions upload --dry-run` after building. -`compatibility_date` is `2026-10-13`, one day behind the current date. Cloudflare -advises setting it as close to the current date as possible, but the local -toolchain sets the ceiling: `wrangler` bundles the `workerd` binary, and a date -newer than that binary supports makes `pnpm dev` and `pnpm preview` refuse to -start with `This Worker requires compatibility date X, but the newest date -supported by this server binary is Y`. With `wrangler` 4.149.0 (`workerd` -1.20261006.1) the newest usable date is `2026-10-13`; `2026-10-14` fails. Bump -`wrangler` before moving the date forward. - -Crossing `2026-08-04` enables `nodejs_compat` and `nodejs_compat_v2` for every -Worker, so the `node:` builtins imported by the SSR bundle resolve at runtime -instead of throwing. It does not change the upload size here: the Astro adapter -emits `no_bundle: true`, so Wrangler never bundles the Worker and never injects -the `unenv` polyfills the Node.js compatibility docs describe. Re-checked with -`pnpm exec wrangler deploy --dry-run` on a single build across every date from -`2026-08-03` through `2026-10-14`: byte-identical output, 557 modules, same -gzip size. Keep using that command to re-check the size. - GitHub repo stats are snapshotted during `pnpm build` into `src/data/github-snapshot.ts`. The Worker does not call the GitHub API at runtime, so `GITHUB_TOKEN` only needs to exist as a build secret. diff --git a/website/wrangler.jsonc b/website/wrangler.jsonc index fcdc7352..85d6f81f 100644 --- a/website/wrangler.jsonc +++ b/website/wrangler.jsonc @@ -1,8 +1,8 @@ { "$schema": "./node_modules/wrangler/config-schema.json", "name": "bub", - // The newest date the pinned `wrangler` binary can actually run. Going past it - // breaks `pnpm dev` / `pnpm preview`; see DEPLOYMENT.md before moving this. + // Must not be newer than the `workerd` bundled with the pinned `wrangler`, or + // `pnpm dev` / `pnpm preview` refuse to start. "compatibility_date": "2026-10-13", "observability": { "enabled": false,