nimbus-docs 0.8.0
Minor Changes
-
#42
8e4e210Thanks @MohamedH1998! - Add the ownership + upgrade loop to thenimbus-docsCLI:nimbus-docs init— reconstruct animbus.jsonfor a project that lacks one (scaffolded before this record existed, an existing Astro site adopting Nimbus, or a deleted record), matching installed components against the registry and marking what it can’t recover.nimbus-docs outdated— a read-only check across both tiers: starter files behind theirtemplates-v*tag (whichgit diffcan’t show) and registry components whose recorded bytes differ from the registry.nimbus-docs diff [file]/diff --apply <file>— review upstream/your changes to starter files, and pull a clean upstream change per file (never a merge).nimbus-docs add <slug> --overwrite— re-install a component over your copy (review withgit diff).addalso records each install innimbus.json.
Also adds a
getRouteFlagslayout-flag helper and a CI guard for the registry tier invariants.Migration —
add --yesno longer overwrites files you own. It now assents to prompts (dependency installs, etc.) but keeps existing files on conflict, so a bare-yin CI never clobbers your code. Use--overwriteto replace files.# before — --yes overwrote conflicting files nimbus-docs add card --yes # after — replace files explicitly nimbus-docs add card --overwrite -
#34
73bbecfThanks @mvvmm! -nimbus/internal-linkandnimbus/image-refnow match theirignore: string[]option against full glob syntax (**,*,{a,b}, extglobs, …) viapicomatch, not just an exact match or aprefiximmediately followed by/**. In particular, a leading any-depth wildcard like**/llms.txtis now supported — the previous hand-rolled matcher had no way to express that.Existing
ignorelists using only exact paths orprefix/**patterns keep working unchanged.
nimbus-docs 0.7.1
Patch Changes
- #36
738c8a0Thanks @mvvmm! - Merge partial headings into the parent page’s TOC.<Render file="..." />partials that contain literal markdown headings (## Foo) now contribute those headings to the parent page’s “On this page” table of contents, in document order, recursively. PasspartialHeadings: { resolvePartialId }togetDocsPageProps()/getCollectionPageProps()to customise how<Render>attributes map to a partial collection id.
nimbus-docs 0.7.0
Minor Changes
- #27
1ebfb6cThanks @MohamedH1998! - Addiconto sidebar groups — an optional leading icon (astro-icon name) before the group label. Set it two ways: on a directory’sindexfrontmatter (sidebar: { group: { icon: "ph:…" } }) or on a configsidebar.itemsgroup entry ({ label, icon: "ph:…", autogenerate: … }). Threaded through the group schema,SidebarGroupItem/SidebarConfigItemtypes, and the sidebar tree builder (both the content-derived and config-defined paths).
nimbus-docs 0.6.1
Patch Changes
- #22
7ec9715Thanks @MohamedH1998! - Republish with npm provenance attestations. Supersedes 0.6.0 / 0.5.0, which published without provenance and before the repo was public.
nimbus-docs 0.6.0
Minor Changes
-
#20
fde68ebThanks @MohamedH1998! - Rename to the@cloudflarenpm scopenimbus-docs→@cloudflare/nimbus-docsandcreate-nimbus-docs→@cloudflare/create-nimbus-docs. The unscoped packages are deprecated and receive no further releases.Migration:
- Framework:
pnpm remove nimbus-docs && pnpm add @cloudflare/nimbus-docs, then update imports —from "nimbus-docs"→from "@cloudflare/nimbus-docs"(every subpath follows:/content,/schemas,/types,/client,/markdown,/react,/lib/pkgm,/components/NimbusHead.astro). Thenimbus-docsCLI bin name is unchanged. - Scaffolder:
pnpm create nimbus-docs→pnpm create @cloudflare/nimbus-docs.
No API, config, schema, or runtime behavior change — only the package names and import paths.
- Framework:
Patch Changes
-
#18
24fd3b0Thanks @MohamedH1998! - Fix@shikijs/typesdedup soCode.astrotypechecks in consuming sitesThe published
distinlined a local copy of@shikijs/types’sShikiTransformersurface instead of importing it, sodefaultCodeTransformersnever deduped against the@shikijs/typesthat Astro’s<Code>uses — breakingastro checkin scaffolded sites. The build now keeps@shikijs/typesand@shikijs/transformersas external type imports in the emitted.d.ts, and@shikijs/typesis a runtime dependency (^4.2.0) so the import resolves for consumers. No API or runtime behavior change.
nimbus-docs 0.5.0
Minor Changes
-
#16
4abd409Thanks @MohamedH1998! - Remove the built-in incremental-build cacheThe
incrementalBuildsoption, thepartialResolverhook, and thenimbus-docs cleancommand are gone, along with the internal cache module that backed them. Astro 7 owns incremental building now, and running a second cache on top of it undernode_modules/.astrowas redundant and a stale-serve risk.Breaking: if you passed
incrementalBuildsorpartialResolvertonimbus(), remove them — they no longer exist onNimbusIntegrationOptions. No replacement is needed; a plainastro buildis the supported path, and Astro 7’s native incremental building applies without any Nimbus opt-in.
nimbus-docs 0.4.0
Minor Changes
-
#13
456ca74Thanks @MohamedH1998! - Move to Astro 7nimbus-docsnow peers onastro ^7.0.0(was>=6.4.0 <7.0.0) and builds against the Astro 7 ecosystem:@astrojs/mdx ^7,@astrojs/markdown-satteri ^0.3.4(Sätteri^0.9), Vite 8. The markdown pipeline — Sätteri plus thehastPlugins/mdastPluginsseam and Shiki dual-theme output — is unchanged; the Sätteri0.6→0.9jump left the plugin-definition types intact, so no seam code moved.Astro 7 makes Sätteri the default processor, which unblocks opt-in server output alongside it (the gate for hosted MCP, Ask AI, and content negotiation).
Starter templates: Tailwind v4 now wires through
@tailwindcss/viteinstead of the PostCSS plugin, which does not build under Astro 7’s Vite 8 bundler. Scaffolded projects gain@tailwindcss/viteand drop@tailwindcss/postcss+postcss.config.mjs.Breaking (peer): sites must be on Astro 7. The
unified()escape hatch for remark/rehype plugins still works, but@astrojs/markdown-remarkmust now be installed explicitly (pnpm add @astrojs/markdown-remark) — pnpm does not expose it for import even though@astrojs/mdxpulls it transitively.
nimbus-docs 0.3.0
Minor Changes
-
#9
d83ef06Thanks @MohamedH1998! - Ship the static agent-surface layer: full corpus, raw-source twins, version labels/llms-full.txt— the whole published site as one deterministic markdown document, via the newrenderCorpusMarkdown()helper behind a ten-line starter route. Scope matches the rootllms.txt(primary + secondary collections, non-current doc versions excluded); collation is sorted and timestamp-free, so output is byte-identical across rebuilds./llms.txtlinks to it.- Raw-source twin at
<page>/index.mdx— the authored MDX body served verbatim with the same canonical frontmatter block as the.mdtwin. Twin grammar:index.mdis the downleveled render for reading,index.mdxis the source. The.mdtwin’sSource:line now points at the.mdxtwin instead of itself. IndexedEntrygainssourceUrl(site-relative URL of the raw-source twin;undefinedfor entries without a string body) andversion(the entry’s version label resolved from theversionsmanifest;undefinedon unversioned sites and non-docs collections). On versioned sites every twin’s frontmatter carries aversion:label so agents can pin a version; unversioned sites are byte-for-byte unchanged.astropeer range is now>=6.4.0 <7.0.0, declaring the Astro 6 requirement that@astrojs/mdx@6always implied. Astro 7 support lands as its own release.
nimbus-docs 0.2.2
Patch Changes
-
#7
692bd5eThanks @MohamedH1998! - Fixsidebar.isolatecollapsing the rail when a page links out of the boundaryWhen
sidebar.isolate.boundarieswas configured (e.g.["learning-paths/*"]), a single page inside the boundary group that linked out of the boundary’s URL subtree — a relative cross-sectionexternal_link— madeisolateToBoundarydiscard the module containing it (and its parent boundary group) and fall through to the first fully-in-prefix group in DFS order. Every page under that learning path then rendered the wrong rail: a sibling module (or a clean nested subfolder) flattened, or — under a multi-segment glob — the rail silently left unisolated.The boundary group is now identified positively instead of by “all descendants under the prefix.” Groups are stamped at build time with the URL subtree they own (
_routeKey): an autogenerate group’s directory path, a non-primary collection mount, or a manual group’ssegment.isolateToBoundaryselects the stamped group whose key equals the glob-implied prefix and which contains the current page (via the existingcontainsRouteKey, already robust to_neverActivelinks and_indexNeverActive/external landings).flattenSidebaris unchanged, sogetPrevNextpagination is unaffected.Behavior notes:
- Selection now pins to the glob-implied depth. On the rare nested-wrapper single-path tree — where the previous code isolated at whatever wrapper happened to be fully in-prefix — the isolated rail now sits at the glob depth instead. This aligns single- and multi-path trees, which previously diverged.
- A group must declare the URL subtree it owns to be an isolate boundary
(autogenerate
directory, collection mount, or manualsegment). A plain manual{ items }group with nosegmentis treated as a visual grouping rather than a URL boundary; if such a group previously isolated via the old descendant scan, add asegmentto keep it selectable.
nimbus-docs 0.2.1
Patch Changes
-
#4
1ae3a78Thanks @MohamedH1998! - Fix three defects found by post-0.2.0- Wide tables no longer overflow the page. A table with more columns than
the content column could fit slid under the TOC rail and forced page-level
horizontal scroll on desktop (the old scroll fallback only applied under
640px). A
<table>can’t both fill its column and scroll —overflowis ignored ondisplay: table— so scroll now lives on a wrapper:nimbus-docs/markdownexports atableScroll()hast plugin that wraps class-less tables in a.nb-table-scrollcontainer, and the starter wires it up with matching styles. Short tables still fill the column with no dead space. <Badge>label</Badge>renders its children. Thetextprop is now optional and falls back to<slot />; previously a slotted label was silently dropped and the badge rendered empty.nimbus-docs addno longer crashes in non-TTY environments. A file conflict without--yesin CI, a pipe, or an agent crashed with a rawuv_tty_init returned EINVALtrace when the overwrite prompt tried to open a TTY that wasn’t there. It now detects non-interactive stdin and exits with an actionable message pointing at--yes.
- Wide tables no longer overflow the page. A table with more columns than
the content column could fit slid under the TOC rail and forced page-level
horizontal scroll on desktop (the old scroll fallback only applied under
640px). A