- 38e85a9: Render three more Notion block types that previously fell through the dispatcher and disappeared from pages:
heading_4,bookmark/link_preview, anddivider. Headings now style anh4level alongsideh1–h3in both themes. Bookmark and link-preview blocks render as a self-contained card — the Notion API only returns the bare URL, so the title and description are fetched server-side from the target page's OpenGraph metadata (with a hostname fallback when a fetch fails or times out) and no remote images are loaded. Dividers render as a themedhr. Each block is a single-responsibility atom wired throughNotionRenderer, with element styles living in the theme stylesheets.
- dcec97e: Add an environment-driven style theme system so one codebase can be deployed to multiple sites with different looks.
SITE_THEMEselects the active theme —notion(the default) or the new serifminimal— and falls back tonotionwhen unset, so existing deployments render exactly as before. Themes now live in self-containedsrc/themes/<name>/directories — a stylesheet scoped to[data-site-theme="<name>"]plus itsnext/fontloaders — withglobals.cssreduced to the Tailwind setup that imports them in cascade order (notion first as the base). A README "Adding a new theme" guide and anadd-themeskill cover authoring new ones.
- 50dce54: Upgrade TypeScript from 5.9.3 to 6.0.3. The bundled
@typescript-eslint/*8.59.4 (resolved viaeslint-config-next@16) declarestypescript >=4.8.4 <6.1.0as a peer, so TS 6 is accepted without overrides.tsconfig.jsonis unchanged — none of the options it sets (target: ES2017,lib,module: esnext,moduleResolution: bundler,strict: true,esModuleInterop,jsx: react-jsx,incremental) were removed or deprecated in TS 6, and the new TS 6 defaults that shifted (notablynoUncheckedSideEffectImports: true,types: []) are masked by our explicit values.
- 21e813a: Upgrade Tailwind CSS from 3.4 to 4.3, moving to the new Oxide engine and CSS-first configuration.
postcss.config.mjsnow references@tailwindcss/postcss(a new devDependency) instead of the oldtailwindcssplugin entry.src/app/globals.cssreplaces the@tailwind base/components/utilitiesdirectives with a single@import "tailwindcss", andtailwind.config.tsis gone — itstheme.extend.colors.notionpalette is rewritten as--color-notion-*tokens inside an@themeblock that delegates to the existing--notion-*CSS variables, so the runtime light/dark switch via[data-theme="dark"]still works. The v3 catch-allsafelistregexes (/bg-./,/text-./,/border-./) are replaced by a narrow@source inline("{bg,text}-notion-{default,gray,brown,orange,yellow,green,blue,purple,pink,red}")listing exactly the classesrenderRichTextsynthesizes from Notion annotation colors. No component or rendering API changed.
- b399899: Upgrade Next.js from 15.5 to 16.2 (and
eslint-config-nextto the matching 16.x). Thenext lintcommand is removed in 16, sonpm run lintnow invokeseslint .directly andeslint.config.mjsimportseslint-config-next/core-web-vitalsandeslint-config-next/typescriptinstead of routing throughFlatCompat—@eslint/eslintrcis no longer a direct devDependency. Turbopack is the default innext dev, so the--turbopackflag is dropped from thedevscript.tsconfig.jsonis updated for Next 16:jsxis set toreact-jsx(the automatic runtime is mandatory) and.next/dev/types/**/*.tsis added toinclude. The async dynamic API enforcement in Next 16 was already satisfied by the existingPromise<{ slug: string }>typing insrc/app/[slug]/page.tsx, so no route handlers changed. Two transitivepostcss <8.5.10advisories nested undernextremain (next 9.3.4-canary → 16.3.0-canary.5); they will only clear in a future Next 16.3 release.
- f15d0eb: Upgrade
@notionhq/clientfrom v2.3.0 to v5.x (Notion API2025-09-03). The page-fetch path insrc/lib/notion/database.tsnow usesclient.databases.retrieve+client.dataSources.query({ data_source_id })in place of the removedclient.databases.query({ database_id }), picking the first data source on the configuredNOTION_DATABASE_ID. Deep type imports from@notionhq/client/build/src/api-endpointsare replaced with the package-root re-exports — the only supported import path since v3. ExistingNOTION_DATABASE_IDvalues continue to work because legacy single-data-source databases expose exactly one data source; no env, schema, or renderer changes. Costs one extra Notion API call per page render (caching remains out of scope).
-
b57fc48: Refresh patch/minor dependency baseline within current majors: React 19.2, ESLint 9.39,
eslint-config-next15.5,@types/node22, plus matching@types/react*,postcss,tailwindcss(3.x), andtypescript(5.x). No behavior change; clears transitive audit advisories. -
4dfa065: Add
@changesets/cli^2.31.0 as a devDependency. The repo already had.changeset/config.jsonand workflow references inAGENTS.md/CLAUDE.md, but the CLI itself was missing —.changeset/baseline-dep-bumps.mdwas authored by hand becausenpx changesethad no local binary to resolve. Installing the package enables the standard Changesets workflow locally, including scaffolding empty entries with:npx changeset add --empty
A Claude Code skill at
.claude/skills/generate-changeset/is included to drive this command from a working-tree diff — it proposes the bump level, drafts a message in the house style, and fills in the file scaffolded by--empty.
- Empty paragraphs are now visible.
- 258d977: Node 22 support.
- Update next version
- Added support for page mentions
- Added support for Paragraphs
- Added support for Headings
- Added support for Lists (bulleted, numbered and to-do)
- Added support for Images
- Added support for rich text formatting (bold, italic, underline, strikethrough, code, link, color)