Changelog

Showing the 3 most recent releases. For the complete history see the full CHANGELOG on GitHub.


v0.17.0 — 2026-04-03

Per-module comment defaults, search in dev mode, interactive submenus, and themeDefault() API simplification.

Added

  • Per-module comment defaultsblog() and docs() now accept comments: boolean. Sets the default for every page in that module; individual pages can override via comments: true/false in frontmatter.
  • Search in dev modemodule-search now serves the pre-built Pagefind index from dist/pagefind/ during pnpm dev. Run pnpm build once to generate the index; after that, search works without a rebuild.
  • parent: in menus.yaml — any menu entry can nest under another by referencing its id. Falls back to root level with a warning if the id is not found.
  • static: menu entries — renders a non-interactive text label in the nav with no link or href, useful for section dividers.
  • Submenu interactivity — horizontal submenus open on hover, with click-to-pin, click-outside-to-close, and Escape-to-close. triangle indicator on entries with children.

Changed

  • themeDefault() takes no arguments — remove implements: [...] from your theme call. Pass all modules directly in modules[].

Updated packages

All packages bumped to 0.17.0.


v0.16.3 — 2026-04-03

Blog rendering bugfixes and CSS contract alignment after the design system migration.

Fixed

  • .blog-featured-image and .blog-featured-post CSS classes were missing after the design system migration; both are now defined in both CSS files.
  • PostListFeatured.astro was using the removed blog-list-featured class instead of blog-featured-post.
  • Removed broken FeaturedPost.astro component — was a duplicate of PostListFeatured.astro using wrong CSS classes and was never wired up.
  • CSS contract updated: removed stale blog-card required entry; added blog-list-item, blog-card-body, blog-list-featured-image.

v0.16.2 — 2026-04-03

Submenu nesting, static labels, and module enabled flag.

Added

  • Submenu nesting via parent: in menus.yaml — nest entries under a root entry by id.
  • static: menu entries — non-interactive text label shorthand.
  • Submenu interactivity — hover-open with click-to-pin; Escape and click-outside close.
  • triangle indicator on entries with sub-entries.
  • enabled: on all module configsblog(), docs(), tags(), search() all accept enabled: boolean to toggle routes and menu entries.
  • id? and parent? on MenuEntryConfig in @karaoke-cms/contracts.

Fixed

  • Disabled modules no longer show nav entries when using when: collection: guards.
  • docs([...]) array-form instances were silently skipped during collection registration — when: collection:api-docs entries no longer always hidden.
  • sanitizeHref now returns the trimmed href value correctly.

Full CHANGELOG on GitHub