v4.15.0
·
74 commits
to main
since this release
Focus: an explicit, self-describing schema for menu item separators.
Changes
- ➖ Added the explicit
menu.separatorsform for sidebar menu items:separators: { lineTop, lineBottom }spells out whether the line renders above or below the item — the oldseparator: truedid not say which (it was below), which confused both readers of the config and AI assistants authoring pages. - 🎚️ A separator value can name a thickness variant from the menu styles:
lineBottom: 'page'or'list'render the thicker line the legacy class-suffix hack (separator: ' page') produced. - ♻️ Fully backward compatible: the legacy
menu.separatorkey (boolean or class-suffix string) keeps working and normalizes tolineBottom; whenseparatorsis present, it wins. Rendered markup and CSS classes are unchanged. - 🧩 Added the
normalizeMenuSeparators/menuSeparatorClasshelpers (src/components/menu-separators.js) and rewiredDMenuItemto render both positions. - 📚 Updated the Pages & Routing guide in both locales with the new schema, and migrated the engine's own page registry to it.
- ✅ Validated with 250 passing tests (6 new) and a build probe confirming the rendered separator classes are byte-identical to the legacy output.
Notes
- No action required in consumer projects — existing
separator:entries keep rendering exactly as before. Migrating is a mechanical swap toseparators: { lineBottom: ... }.