Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .agents/lessons.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,4 @@ alwaysApply: true
- Blume `<Component>`/islands **hard-cap** live-render at React/Vue/Svelte (+Astro static) — pilot-confirmed in Blume 1.0.4 (`FRAMEWORK_BY_EXT` maps jsx/tsx→react, no solid/preact; generated `astro.config.mjs` only wires react/vue/svelte; no integration hook). Installing `@astrojs/solid-js`/`preact` is inert; `.tsx` always routes to the React renderer (Preact hooks crash, Solid renders broken via React). Non-React recipes are permanently code-only; Vue preview needs `@astrojs/vue` + the `vue.vue` SFC compile fix. (Astro officially also supports Preact/SolidJS/Alpine/Lit; Angular/Qwik community — Blume exposes a strict subset.) [components](https://useblume.dev/docs/content/components), [astro frameworks](https://docs.astro.build/en/guides/framework-components/#official-front-end-framework-integrations).
- Recipes are `?raw`-imported, so `blume build` never typechecks them — gate with `bun run typecheck:recipes` in `apps/docs` (per-framework `tsconfig.recipes-*.json` + `tsconfig.solid.json`/`tsconfig.preact.json` via `vue-tsc`/`svelte-check`/`tsc`; wired into CI as root `typecheck`). (Supersedes the old solid/preact-no-`export default` + `vue.vue` SFC-compile bullet — both fixed; gate is live and green.)
- Recipe files keep their framework-native extension (`vue.vue`, `svelte-runes.svelte`, `angular.ts`) — renaming a Vue SFC to `vue.ts` makes oxlint parse `<template>` as TS and fail (`Expected '>' but found 'Identifier'`) while `?raw` + `blume build` stay green. Gate recipes with `bun run typecheck:recipes` (CI: root `typecheck`); `lint:ci` only covers `.ts`/`.tsx` — `.vue`/`.svelte` are oxlint-ignored.
- Blume 1.1.0 `blume audit` + `deployment.base`: skip `canonical_bad_target` / `non_canonical_in_sitemap` (canonical keeps base; `page.url` is stripped) and `html_too_large` (typedoc Lit API ~7MB) until upstream/page-split.
3 changes: 3 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,9 @@ jobs:
run: bun run docs:check -- --isolated
- name: Build docs site
run: bun run docs:build
# Post-build; skips live in apps/docs `audit` script (+ lessons).
- name: Audit docs site
run: bun run docs:audit

links:
name: 🔗 Doc links
Expand Down
11 changes: 10 additions & 1 deletion apps/docs/blume.config.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import { defineConfig } from "blume";

import { CURATED_POPULAR } from "./components/curated-popular";

export default defineConfig({
title: "Layers",
description:
Expand Down Expand Up @@ -62,7 +64,14 @@ export default defineConfig({
},

theme: { accent: "teal", radius: "md", mode: "system" },
search: { provider: "orama" },
search: {
provider: "orama",
// Keep Cmd+K empty-state in sync with custom Search + 404.
popular: CURATED_POPULAR.map(({ route, label }) => ({
href: route,
label,
})),
},

markdown: {
code: { icons: true },
Expand Down
3 changes: 2 additions & 1 deletion apps/docs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"private": true,
"type": "module",
"scripts": {
"audit": "blume audit --fail-on error --skip canonical_bad_target,non_canonical_in_sitemap,html_too_large",
"build": "blume build",
"check": "blume check",
"dev": "blume dev",
Expand All @@ -21,7 +22,7 @@
"dependencies": {
"@stainless-code/layers": "workspace:*",
"@stainless-code/react-layers": "workspace:*",
"blume": "1.0.4",
"blume": "1.1.0",
"react": "19.2.7",
"react-dom": "19.2.7"
},
Expand Down
1 change: 0 additions & 1 deletion apps/docs/pages/index.astro
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ const copyScript = `(()=>{const CHECK='<svg class="size-4" fill="none" height="1
logo={config.logo}
navigation={data.navigation}
ogEnabled={config.og.enabled}
ogImage="/opengraph-image.png"
page={{ description: config.description, route: "/", title: pageTitle }}
searchEnabled={config.search.enabled}
site={{ description: config.description, title: config.title }}
Expand Down
Loading
Loading