Skip to content

v3.4.0

Choose a tag to compare

@boykush boykush released this 15 Oct 13:55
7032f87

Before upgrading a published site

No change is marked breaking, but two affect a deployed site:

  • Page URLs change. Pages are written at their name as written instead of a slug (#823). Every scrap, tag and type page whose name is not already lowercase without spaces or symbols gets a new URL, and no redirects are generated: scraps/reference/cli-overview.html becomes scraps/Reference/CLI%20Overview.html. The all-scraps and all-tags listings move to all-scraps/ and all-tags/. For a tidy URL, give the file a tidy name and put the display name in the frontmatter title (#832).
  • Custom templates in static/ that used scrap.html_file_name, tag.slug, scrap_type.slug or the search index's scrap.file_stem need url_path instead.

What's Changed

✨ Features

  • feat: read the frontmatter tags list as scrap tags (#812)

    The strings of a frontmatter tags list join a scrap's #[[tag]] tags, nested with / the same way. This starts reading Open Knowledge Format keys: Scraps reads them when present and requires none.

  • feat: read the frontmatter type as a scrap's kind (#813)

    type: Blog says what a scrap is, where a tag says what it is about: at most one per scrap, optional. scraps type list / scraps type scraps <type> and the MCP tools list_types / lookup_type_scraps query it.

  • feat(mcp): report the types in use from orient (#817)

  • feat: read the frontmatter description as a scrap's one-line summary (#819)

    When present it replaces the summary derived from the body on list views and fills the page's description meta tags. get and get_scrap return it as an opt-in field, and search hits carry it.

  • feat: read a Markdown link to a scrap's .md file as a link between scraps (#820)

    [customers](/tables/customers.md) and [revenue](../metrics/revenue.md#definition) now count as links for links, backlinks, the graph and every lint rule, and their href points at the scrap's page.

  • feat(build): narrow the static site's list views by a scrap's type (#818)

    On a wiki that uses type, the updated, backlinks and all-scraps views gain a filter row, and a typed scrap's page shows its type.

  • feat(plugins): let learn drop a point the user is not interested in (#822)

  • feat(build): write each page at its name instead of a slug (#823)

    Slugifying was lossy, so a b.md and a-b.md (or Blog.md and blog.md) collapsed onto one page and the build silently kept one. The key is now the output path, so distinct files always get distinct pages. See the upgrade note above.

  • feat(lint): add unlinkable-key and unportable-key rules (#826)

    unlinkable-key (on by default) reports a file that cannot be written inside [[ ]], such as C#.md. unportable-key (opt-in) reports file names that do not port across filesystems, such as ? on Windows or names differing only in case.

  • feat(get): leave the frontmatter block out of a scrap's body (#827)

    body from scraps get and get_scrap is the content without the YAML block; --json frontmatter returns the block for one scrap.

  • feat(build): serve the site's scripts from the site itself (#828)

  • feat(build): serve the site's fonts from the site itself (#829)

    A generated page no longer requests anything from a public CDN: fuse.js, mermaid, highlight.js and the Rubik / Noto Sans JP fonts are written to the output directory. Mermaid is fetched only by pages that contain a diagram.

  • feat: split a scrap's title into a key and a title, and read the frontmatter title (#832)

    A scrap's key is its path without .md: what links resolve to and what commands and tools take back (scraps get tables/orders, get_scrap {key}). Every JSON result gains key, and CLI text tables gain a Key column. title is what readers see: the frontmatter title, or the file name. --ctx and {title, ctx} keep working, and a wiki without a frontmatter title gets the same values as before.

🐛 Bug Fixes

  • fix: keep the frontmatter block out of rendering and extraction (#815)

    A frontmatter block used to render as a heading of YAML at the top of the page and become the list summary.

  • fix: compare names in Unicode NFC (#825)

    A link, tag or argument now matches a file name whatever way its characters were composed, so a wiki built on macOS and on Linux resolves and publishes the same.

📚 Documentation

  • docs: give frontmatter one reference page and document types (#814)
  • docs: type each documentation page by its Diátaxis kind (#816)

🔧 Maintenance

  • chore(claude): share one target/ across session worktrees (#824)
  • Dependency updates: serde_json 1.0.154 (#831), boykush/workflows digest (#834), livt 0.19.0 (#835), schemars 1.2.3 (#836), tokio 1.53.3 (#837)
  • v3.4.0 (#839)

Full Changelog: v3.3.0...v3.4.0