From 9c2e94bb17062f823b9ba421710a570b645ecf93 Mon Sep 17 00:00:00 2001 From: Sutu Sebastian Date: Mon, 20 Jul 2026 11:23:33 +0300 Subject: [PATCH 1/3] chore(docs): bump blume to 1.1.2 Pick up 1.1.1/1.1.2 patches (basePath sidebar scoping, OG titles for custom pages, build/check hardening). Adopt seo.og.titles for home/404; audit canonical skips still required under /persist. --- .agents/lessons.md | 2 +- apps/docs/blume.config.ts | 9 ++++++++- apps/docs/package.json | 2 +- bun.lock | 4 ++-- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/.agents/lessons.md b/.agents/lessons.md index fe843bf..2072ba9 100644 --- a/.agents/lessons.md +++ b/.agents/lessons.md @@ -19,6 +19,6 @@ alwaysApply: true - npm trusted publishing (OIDC) needs npm ≥ 11.5.1 + Node ≥ 22.14; oven-sh/setup-bun leaves npm 10.x in PATH, so a release job running `changeset publish`/`npm publish` must also run actions/setup-node (Node 24 → npm 11) or OIDC isn't detected → ENEEDAUTH. - Don't pin a GitHub action to a moving major tag's commit SHA (e.g. setup-node@) — the tag moves and orphans/GCs the commit → "unable to find version"; pin to an immutable release-tag commit or use the moving @vN tag. -- Docs `docs:audit` with `deployment.base` (e.g. `/persist`) skips `canonical_bad_target` + `non_canonical_in_sitemap` + `indexable_page_not_in_sitemap` until upstream fixes canonical vs stripped `page.url`; re-evaluate on docs-toolchain bumps. +- Docs `docs:audit` with `deployment.base` (e.g. `/persist`) still needs skips `canonical_bad_target` + `non_canonical_in_sitemap` + `indexable_page_not_in_sitemap` on Blume 1.1.2 (canonical vs stripped `page.url`); re-evaluate on bumps. - Format `apps/docs` non-content at `printWidth: 80` via nested `apps/docs/.oxfmtrc.json` (nearest-config-wins); keep `content/**` ignored so oxfmt cannot collapse `:::note`/`:::tip` fences (oxfmt Markdown bug — [Blume FAQ](https://useblume.dev/docs/faq#why-is-oxfmt--ultracite-collapsing-my-directives)); lint-staged must list `mdx` or content-only commits skip format entirely. - Bun `workspaces: ["apps/*"]` alone drops the root package from manypkg/changesets discovery → `Found changeset … which is not in the workspace`; include `"."` (and ignore private `@stainless-code/persist-docs`) so Release can `changeset version` the publishable root. diff --git a/apps/docs/blume.config.ts b/apps/docs/blume.config.ts index e670630..7f0fced 100644 --- a/apps/docs/blume.config.ts +++ b/apps/docs/blume.config.ts @@ -85,7 +85,14 @@ export default defineConfig({ }, seo: { - og: { enabled: true }, + // Custom .astro pages have no frontmatter — name OG cards explicitly (Blume 1.1.1+). + og: { + enabled: true, + titles: { + "/": "Persist", + "/404": "Page not found", + }, + }, rss: { enabled: true, types: ["changelog"] }, sitemap: true, robots: true, diff --git a/apps/docs/package.json b/apps/docs/package.json index 8949ad1..a6abd84 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -11,6 +11,6 @@ "validate": "blume validate" }, "dependencies": { - "blume": "1.1.0" + "blume": "1.1.2" } } diff --git a/bun.lock b/bun.lock index 3d81ed5..cdcc8d4 100644 --- a/bun.lock +++ b/bun.lock @@ -93,7 +93,7 @@ "apps/docs": { "name": "@stainless-code/persist-docs", "dependencies": { - "blume": "1.1.0", + "blume": "1.1.2", }, }, }, @@ -1318,7 +1318,7 @@ "bl": ["bl@4.1.0", "", { "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w=="], - "blume": ["blume@1.1.0", "", { "dependencies": { "@astrojs/check": "^0.9.0", "@astrojs/markdown-satteri": "^0.3.2", "@astrojs/mdx": "^7.0.0", "@astrojs/node": "^11.0.0", "@astrojs/react": "^6.0.0", "@astrojs/vercel": "^11.0.0", "@clack/prompts": "^1.7.0", "@iconify-json/lucide": "^1.2.115", "@iconify/types": "^2.0.0", "@iconify/utils": "^3.1.3", "@modelcontextprotocol/sdk": "^1.29.0", "@orama/orama": "^3.1.18", "@pierre/diffs": "^1.2.11", "@scalar/astro": "^0.4.5", "@scalar/openapi-parser": "^0.28.8", "@scalar/openapi-types": "^0.9.1", "@shikijs/transformers": "^4.2.0", "@shikijs/twoslash": "^4.2.0", "@tailwindcss/typography": "^0.5.20", "@tailwindcss/vite": "^4", "@vercel/analytics": "^2.0.1", "ai": "^5.0.0", "astro": "^7.0.2", "babel-plugin-react-compiler": "^1.0.0", "citty": "^0.1.6", "consola": "^3.4.0", "dompurify": "^3.4.11", "epub-gen-memory": "^1.1.2", "github-slugger": "^2.0.0", "gray-matter": "^4.0.3", "jiti": "^2.4.0", "js-yaml": "^4.1.0", "katex": "^0.17.0", "marked": "^18.0.5", "mermaid": "^11.15.0", "node-html-parser": "^9.0.0", "pagefind": "^1.3.0", "pathe": "^2.0.0", "react": "^19.0.0", "react-dom": "^19.0.0", "satteri": "^0.9.5", "shiki": "^4.2.0", "simple-icons": "^13.0.0", "tailwindcss": "^4", "takumi-js": "^2.2.1", "tinyglobby": "^0.2.10", "typescript": "^6.0.3", "undici": "^8.6.0", "zod": "^3.24.0" }, "peerDependencies": { "@ai-sdk/openai-compatible": "^1.0.41", "@astrojs/cloudflare": "^14.0.0", "@astrojs/netlify": "^8.0.0", "@astrojs/svelte": "^9.0.0", "@astrojs/vue": "^7.0.0", "@mixedbread/sdk": "^0.76.0", "@notionhq/client": "^2.2.15", "@openrouter/ai-sdk-provider": "^1.5.4", "@oramacloud/client": "^2.1.0", "@sanity/client": "^6.21.0", "algoliasearch": "^5.55.0", "flexsearch": "^0.8.0", "typesense": "^3.0.0" }, "optionalPeers": ["@ai-sdk/openai-compatible", "@astrojs/cloudflare", "@astrojs/netlify", "@astrojs/svelte", "@astrojs/vue", "@mixedbread/sdk", "@notionhq/client", "@openrouter/ai-sdk-provider", "@oramacloud/client", "@sanity/client", "algoliasearch", "flexsearch", "typesense"], "bin": { "blume": "bin/blume.mjs" } }, "sha512-zJg2SHzg442rXVIu4uaku+6cjgPidcXrZZ5IdQCyz13+Qr60BN31u6tN5F+9Oso1NU9+iv1w3vHtAmYC8piCxQ=="], + "blume": ["blume@1.1.2", "", { "dependencies": { "@astrojs/check": "^0.9.0", "@astrojs/markdown-satteri": "^0.3.2", "@astrojs/mdx": "^7.0.0", "@astrojs/node": "^11.0.0", "@astrojs/react": "^6.0.0", "@astrojs/vercel": "^11.0.0", "@clack/prompts": "^1.7.0", "@iconify-json/lucide": "^1.2.115", "@iconify/types": "^2.0.0", "@iconify/utils": "^3.1.3", "@modelcontextprotocol/sdk": "^1.29.0", "@orama/orama": "^3.1.18", "@pierre/diffs": "^1.2.11", "@scalar/astro": "^0.4.5", "@scalar/openapi-parser": "^0.28.8", "@scalar/openapi-types": "^0.9.1", "@shikijs/transformers": "^4.2.0", "@shikijs/twoslash": "^4.2.0", "@tailwindcss/typography": "^0.5.20", "@tailwindcss/vite": "^4", "@vercel/analytics": "^2.0.1", "ai": "^5.0.0", "astro": "^7.0.2", "babel-plugin-react-compiler": "^1.0.0", "citty": "^0.1.6", "consola": "^3.4.0", "dompurify": "^3.4.11", "epub-gen-memory": "^1.1.2", "github-slugger": "^2.0.0", "gray-matter": "^4.0.3", "jiti": "^2.4.0", "js-yaml": "^4.1.0", "katex": "^0.17.0", "marked": "^18.0.5", "mermaid": "^11.15.0", "node-html-parser": "^9.0.0", "pagefind": "^1.3.0", "pathe": "^2.0.0", "react": "^19.0.0", "react-dom": "^19.0.0", "satteri": "^0.9.5", "shiki": "^4.2.0", "simple-icons": "^13.0.0", "tailwindcss": "^4", "takumi-js": "^2.2.1", "tinyglobby": "^0.2.10", "twoslash": "^0.3.9", "typescript": "^6.0.3", "undici": "^8.6.0", "zod": "^3.24.0" }, "peerDependencies": { "@ai-sdk/openai-compatible": "^1.0.41", "@astrojs/cloudflare": "^14.0.0", "@astrojs/netlify": "^8.0.0", "@astrojs/svelte": "^9.0.0", "@astrojs/vue": "^7.0.0", "@mixedbread/sdk": "^0.76.0", "@notionhq/client": "^2.2.15", "@openrouter/ai-sdk-provider": "^1.5.4", "@oramacloud/client": "^2.1.0", "@sanity/client": "^6.21.0", "algoliasearch": "^5.55.0", "flexsearch": "^0.8.0", "typesense": "^3.0.0" }, "optionalPeers": ["@ai-sdk/openai-compatible", "@astrojs/cloudflare", "@astrojs/netlify", "@astrojs/svelte", "@astrojs/vue", "@mixedbread/sdk", "@notionhq/client", "@openrouter/ai-sdk-provider", "@oramacloud/client", "@sanity/client", "algoliasearch", "flexsearch", "typesense"], "bin": { "blume": "bin/blume.mjs" } }, "sha512-AnW/vqsP4Fp2t1ZMW6GWYoWNbsoShuaoLBA1xGebW4W2ZH+vNR9UJcxGdOxZ3idF9OkyJbNjZTkY8J3S7JuIAg=="], "body-parser": ["body-parser@2.3.0", "", { "dependencies": { "bytes": "^3.1.2", "content-type": "^2.0.0", "debug": "^4.4.3", "http-errors": "^2.0.1", "iconv-lite": "^0.7.2", "on-finished": "^2.4.1", "qs": "^6.15.2", "raw-body": "^3.0.2", "type-is": "^2.1.0" } }, "sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw=="], From 61e698b6774215ec6d7b57b515449178f91b4c73 Mon Sep 17 00:00:00 2001 From: Sutu Sebastian Date: Mon, 20 Jul 2026 11:24:00 +0300 Subject: [PATCH 2/3] docs(lessons): slim blume audit basePath skip note Drop version residue and process chatter; keep the canonical vs page.url constraint. --- .agents/lessons.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.agents/lessons.md b/.agents/lessons.md index 2072ba9..487a2fe 100644 --- a/.agents/lessons.md +++ b/.agents/lessons.md @@ -19,6 +19,6 @@ alwaysApply: true - npm trusted publishing (OIDC) needs npm ≥ 11.5.1 + Node ≥ 22.14; oven-sh/setup-bun leaves npm 10.x in PATH, so a release job running `changeset publish`/`npm publish` must also run actions/setup-node (Node 24 → npm 11) or OIDC isn't detected → ENEEDAUTH. - Don't pin a GitHub action to a moving major tag's commit SHA (e.g. setup-node@) — the tag moves and orphans/GCs the commit → "unable to find version"; pin to an immutable release-tag commit or use the moving @vN tag. -- Docs `docs:audit` with `deployment.base` (e.g. `/persist`) still needs skips `canonical_bad_target` + `non_canonical_in_sitemap` + `indexable_page_not_in_sitemap` on Blume 1.1.2 (canonical vs stripped `page.url`); re-evaluate on bumps. +- Blume `audit` + `deployment.base`: skip `canonical_bad_target` / `non_canonical_in_sitemap` / `indexable_page_not_in_sitemap` — canonical keeps the base; `page.url` is stripped. - Format `apps/docs` non-content at `printWidth: 80` via nested `apps/docs/.oxfmtrc.json` (nearest-config-wins); keep `content/**` ignored so oxfmt cannot collapse `:::note`/`:::tip` fences (oxfmt Markdown bug — [Blume FAQ](https://useblume.dev/docs/faq#why-is-oxfmt--ultracite-collapsing-my-directives)); lint-staged must list `mdx` or content-only commits skip format entirely. - Bun `workspaces: ["apps/*"]` alone drops the root package from manypkg/changesets discovery → `Found changeset … which is not in the workspace`; include `"."` (and ignore private `@stainless-code/persist-docs`) so Release can `changeset version` the publishable root. From 6eb1a1b3618c4e4cc7cea37fc1c7afa2805f2340 Mon Sep 17 00:00:00 2001 From: Sutu Sebastian Date: Mon, 20 Jul 2026 11:24:20 +0300 Subject: [PATCH 3/3] docs: drop version residue from og.titles comment --- apps/docs/blume.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/docs/blume.config.ts b/apps/docs/blume.config.ts index 7f0fced..0bd320d 100644 --- a/apps/docs/blume.config.ts +++ b/apps/docs/blume.config.ts @@ -85,7 +85,7 @@ export default defineConfig({ }, seo: { - // Custom .astro pages have no frontmatter — name OG cards explicitly (Blume 1.1.1+). + // Custom .astro pages lack frontmatter — set OG titles explicitly. og: { enabled: true, titles: {