Skip to content

v0.87.0: fragments — reusable content, authored once and included anywhere

Choose a tag to compare

@glw907 glw907 released this 17 Jul 03:26

Fragments: author one piece of markdown, include it anywhere, edit it once. A site declares the
reserved fragments concept, and an editor inserts a published fragment into any post or page
with the "Include a fragment" picker; the fragment's markdown splices in as a block, renames
repoint every inbound include, and deleting a still-included fragment is refused with its
consumers named. New guide: Reuse content across
entries
.

The window also clears the docs friction log end to end: every open finding was verified against
the code and either shipped here or filed into ROADMAP with its trigger.

Changed

  • A routing: 'embedded' concept is now genuinely non-routable: its entries no longer resolve
    through byPermalink, prerender through entries(), or appear in site.all(). Consumers
    must:
    check any concept declared routing: 'embedded'. If its entries should have public
    URLs, declare routing: 'page' instead; if they only ever served as references or includes,
    nothing to do, and the stray URLs stop being served. Neither ecxc.ski nor 907.life declares an
    embedded concept.

Added

  • Fragments (above), including the ::include block directive, the picker, the manifest
    includes edge, the delete guard, rename repointing, and the fragment edit screen's standing
    "Included in" list.
  • Folded directive blocks name themselves: the fold pill reads "Callout · 12 lines" from the
    component registry's human label and carries the component's use line as its tooltip; an
    ::include line renders its fragment id at label strength.
  • SettingsData and VocabularyLoadData are exported from @glw907/cairn-cms/sveltekit.
  • A configured AuthBranding.replyTo now reaches the built-in magic-link email.

Fixed

  • Saving Tidy settings or the tag vocabulary over a malformed committed site config surfaces the
    parser's actionable message instead of a generic error page.
  • A required closed multiselect signals "Choose at least one." through the browser's own
    validation instead of failing only at the save bounce.
  • The suggestion popover styles a backtick-quoted word as code; help hints in repeated rows get
    distinct ids; and three fragments papercuts from an adversarial UX review (the list delete
    refusal's copy, the picker's empty state, the nameless-include notice).

Full detail: CHANGELOG.