Repository navigation
v3.4.0
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.htmlbecomesscraps/Reference/CLI%20Overview.html. The all-scraps and all-tags listings move toall-scraps/andall-tags/. For a tidy URL, give the file a tidy name and put the display name in the frontmattertitle(#832). - Custom templates in
static/that usedscrap.html_file_name,tag.slug,scrap_type.slugor the search index'sscrap.file_stemneedurl_pathinstead.
What's Changed
✨ Features
-
feat: read the frontmatter
tagslist as scrap tags (#812)The strings of a frontmatter
tagslist 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
typeas a scrap's kind (#813)type: Blogsays 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 toolslist_types/lookup_type_scrapsquery 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.
getandget_scrapreturn 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 forlinks,backlinks, the graph and every lint rule, and theirhrefpoints 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.mdanda-b.md(orBlog.mdandblog.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 asC#.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)
bodyfromscraps getandget_scrapis the content without the YAML block;--json frontmatterreturns 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
keyis 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 gainskey, and CLI text tables gain aKeycolumn.titleis what readers see: the frontmattertitle, or the file name.--ctxand{title, ctx}keep working, and a wiki without a frontmattertitlegets 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