diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c6c4c2e..fcf5db3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -264,11 +264,38 @@ jobs: uses: ./.github/actions/setup - name: bun audit (block on high/critical) - # Blume's image-size has no patched release yet — ignore those GHSAs until one ships. + # Ignored GHSAs are all docs/dev/build-time-only with no reach into + # published `packages/*` tarballs (zero-dep core; adapters ship core + + # framework peer only) — revisit on Blume / Angular / toolchain bumps. run: | set +e # bun emits ANSI color even when piped — strip it or the severity grep misses it. - NO_COLOR=1 bun audit --ignore=GHSA-w3rx-r6r6-pgpr --ignore=GHSA-5p2g-fcmc-qvqq 2>&1 | sed -E 's/\x1b\[[0-9;]*m//g' > /tmp/bun-audit.log + IGNORES=( + # Blume's image-size has no patched release yet (dep dropped in Blume + # 2.1.3, so currently no-ops — kept in case the dep returns). + --ignore=GHSA-w3rx-r6r6-pgpr --ignore=GHSA-5p2g-fcmc-qvqq + # Angular SSR via docs recipe islands (@analogjs/astro-angular) and the + # adapter dev harness (@angular/build): no SSR in published tarballs. + --ignore=GHSA-v3p8-whq6-r5jg --ignore=GHSA-f6mr-pjwc-34m4 + --ignore=GHSA-j3r3-mxqp-r2p4 --ignore=GHSA-f67j-2jqw-jpq7 + # Docs Vue islands + adapter test harness (@vue/test-utils): published + # runtime peer is client-only vue. + --ignore=GHSA-g2v6-rqmx-r4w6 + # Blume/Astro docs-build subtree (glob, serialization, fetch/SVG/sourcemaps). + --ignore=GHSA-qhr7-859c-m2p7 --ignore=GHSA-6j4f-fj2g-mc7p + --ignore=GHSA-vfj7-8cjw-p6xm + --ignore=GHSA-j22f-vq7h-c4qm --ignore=GHSA-mcm9-63f2-9j32 --ignore=GHSA-x5rw-q4pp-hg5g + --ignore=GHSA-ch52-4w7c-c8xp --ignore=GHSA-2883-xcg3-v3hh + --ignore=GHSA-w27v-7q3p-w38r --ignore=GHSA-68fv-2mgg-jv7q + --ignore=GHSA-rfgv-xxqx-mfg5 --ignore=GHSA-w293-vg96-wgc3 --ignore=GHSA-vp8m-p9jh-q5pm + # Build/test tooling only: @angular/build workers, oxfmt workers, + # playground serialization, codemap/MCP express helpers. + --ignore=GHSA-67c8-pqhq-4rmx + --ignore=GHSA-5gmw-xhrv-c9v3 --ignore=GHSA-85c8-ppgw-ccpr + --ignore=GHSA-p6vx-979v-rg4c --ignore=GHSA-jp82-f5mq-hwhp + --ignore=GHSA-jqcg-44mw-7w3h + ) + NO_COLOR=1 bun audit "${IGNORES[@]}" 2>&1 | sed -E 's/\x1b\[[0-9;]*m//g' > /tmp/bun-audit.log cat /tmp/bun-audit.log if grep -E '(^|[[:space:]])(high|critical):[[:space:]]' /tmp/bun-audit.log; then echo "::error::high or critical vulnerabilities found — blocking" diff --git a/apps/docs/blume.config.ts b/apps/docs/blume.config.ts index 8b5b5f9..64d479c 100644 --- a/apps/docs/blume.config.ts +++ b/apps/docs/blume.config.ts @@ -1,4 +1,6 @@ import { defineConfig } from "blume"; +import { orama } from "blume/search"; +import { filesystem, githubReleases } from "blume/sources"; import { CURATED_POPULAR } from "./components/curated-popular"; @@ -21,33 +23,31 @@ export default defineConfig({ dir: "apps/docs", }, - lastModified: true, + lastModified: "git", content: { sources: [ - { type: "filesystem", root: "content" }, - { - type: "github-releases", + filesystem({ root: "content" }), + githubReleases({ prefix: "changelog", owner: "stainless-code", repo: "layers", limit: 100, - }, + }), ], }, navigation: { tabs: [ - { label: "Guides", path: "/guides", icon: "book-open" }, - { label: "Examples", path: "/examples", icon: "rocket" }, + { label: "Guides", path: "/guides" }, + { label: "Examples", path: "/examples" }, { label: "Integrations", path: "/integrations", - icon: "blocks", }, - { label: "Concepts", path: "/concepts", icon: "layers" }, - { label: "Adapters", path: "/adapters", icon: "plug" }, - { label: "Reference", path: "/reference", icon: "code" }, + { label: "Concepts", path: "/concepts" }, + { label: "Adapters", path: "/adapters" }, + { label: "Reference", path: "/reference" }, ], featured: [ { label: "Changelog", href: "/changelog", icon: "sparkles" }, @@ -60,9 +60,20 @@ export default defineConfig({ sidebar: { display: "flat" }, }, + footer: { + links: [ + { label: "Getting started", href: "/guides/getting-started" }, + { label: "Core API", href: "/reference/core-api" }, + { label: "Changelog", href: "/changelog" }, + ], + socials: { + github: "https://github.com/stainless-code/layers", + }, + }, + theme: { accent: "teal", radius: "md", mode: "system" }, search: { - provider: "orama", + provider: orama(), popular: CURATED_POPULAR.map(({ route, label }) => ({ href: route, label, @@ -70,16 +81,24 @@ export default defineConfig({ }, markdown: { - code: { icons: true }, - codeBlocks: { theme: { light: "github-light", dark: "github-dark" } }, + externalLinks: true, + code: { + icons: true, + theme: { light: "github-light", dark: "github-dark" }, + }, + }, + + variables: { + "svelte-runes-min": "5.7+", }, toc: { minHeadingLevel: 2, maxHeadingLevel: 3 }, export: { epub: true, pdf: true }, - ai: { + agents: { llmsTxt: true, + agentReadability: true, markdownComponents: { HeroDemo: () => "_Live hero demo: interactive confirm, toast, serial queue, and nested-confirm scenarios running the real React adapter. See the page for the rendered demo._", @@ -115,11 +134,9 @@ export default defineConfig({ sitemap: true, robots: true, structuredData: true, - agentReadability: true, }, deployment: { - output: "static", site: "https://stainless-code.com", base: "/layers", }, diff --git a/apps/docs/components.ts b/apps/docs/components.ts index 740148a..62b85c4 100644 --- a/apps/docs/components.ts +++ b/apps/docs/components.ts @@ -1,5 +1,6 @@ import { defineComponents } from "blume"; +import Header from "./components/blume/Header.astro"; import Pagination from "./components/blume/Pagination.astro"; import RecipeCodeBlock from "./components/RecipeCodeBlock.astro"; @@ -12,6 +13,7 @@ export default defineComponents({ CodeBlock: RecipeCodeBlock, }, layout: { + Header, // Use the theme radius token (rounded-blume) instead of the built-in pills // (rounded-full) — softer corners that match the table/install cards. Pagination, diff --git a/apps/docs/components/blume/Footer.astro b/apps/docs/components/blume/Footer.astro index 4328577..5f95730 100644 --- a/apps/docs/components/blume/Footer.astro +++ b/apps/docs/components/blume/Footer.astro @@ -72,8 +72,8 @@ const groups: { label: string; links: { href: string; label: string; external?: ]; --- -