Releases
v0.4.0
Compare
Sorry, something went wrong.
No results found
0.4.0 (2026-09-14)
⚠ BREAKING CHANGES
sections: hand a section type its input rather than a string
cli: the duxt-report binary is replaced by duxt report. Use pnpm exec duxt report and pnpm exec duxt report --json where pnpm exec duxt-report was used.
shortcuts: duxt.shortcuts is a policy object, not a binding list. A site that replaced the bindings sets shortcuts.singleCharacter instead; there is no per-key override. onDuxtShortcut() takes a getter for the live list and an action-keyed handler, and matchesDuxtShortcut() and shortcutLabel() are gone — useDuxtShortcuts() replaces both.
Features
align machine-readable exports with llms.txt v2 (3809e2a ), closes #71
analytics: report reader interactions to an opt-in callback (7b2eb01 ), closes #50
announcements: add a configurable site-wide banner (97617d9 ), closes #49
bruno: build a downloadable archive per version and locale (3239c09 ), closes #18
bruno: publish a Bruno collection as a reference section (b05f825 ), closes #18
bruno: read a Bruno collection out of its directory (af2e1b5 ), closes #18
changelog: show a release's contributors in the history (4d47767 ), closes #67
changelog: version generated changelogs alongside docs and API (0d0eae8 ), closes #83
ci: cache remote sources for pull-request checks (4f2f10a ), closes #36
cli: make the report command discoverable (fc1672c ), closes #73
config: expose consumer-owned layer behavior (e35c68b ), closes #14
content: document and verify the database adapters (baa18d7 ), closes #35
demo: gather openapi, bruno and terraform under /demo (51de1c8 )
deploy: skip superseded builds before publication (8f5e4c3 ), closes #46
footer: center and reorder the mobile layout (dec597c ), closes #41
frontmatter: let a page control the docs shell around it (ffff134 ), closes #15
header: add tooltips to header controls (550d27f )
hooks: open one build-time extension point (059cd6a ), closes #16
images: serve responsive sources and show the zoom affordance (6018680 ), closes #17
image: view images full screen with zoom and theme backgrounds (273a79f )
landing: drop the tab strip from the preview window (ef3cacb )
mcp: deepen the documentation interface (40d261e ), closes #72
og-image: cache rendered images between deploys (c9a2a25 ), closes #43
prerender: benchmark the concurrency instead of assuming it (f9fe00e ), closes #44
search: benchmark a candidate index instead of assuming it (b90611c ), closes #33
search: give palette rows a shared context line (3565678 ), closes #78
search: name sources and preview results (ba90088 ), closes #38
sections: hand a section type its input rather than a string (9537f7d ), closes #18
sheet: default the sheet's side to the reader's end (0f0146e ), closes #13
shortcuts: make global keyboard shortcuts configurable (f13d5ef ), closes #79
shortcuts: surface and document the keys (6cdc8e4 ), closes #80
sources: discover documentation releases (a1d55f3 ), closes #60
sources: key the remote download cache (e46f24f ), closes #36
support tfplugindocs sources (8e3a973 ), closes #12
theme: make direction a property of the theme (8fd818a ), closes #13
Bug Fixes
api-client: read the config before the body mode needs it (8e8900e )
app-config: read an edited app.config after a dev restart (1f2c324 )
bruno: close the three holes in the redaction guarantee (86473c9 ), closes #18
bruno: keep two requests that slugify alike from becoming one page (f3db69a ), closes #18
bruno: put the archive where the build output serves it from (3004a4f ), closes #18
changelog: read release contributors from the own checkout (a38aa79 )
check-images: run the badge assertion that never matched (00a4a98 ), closes #17
check-routes: read the manifest the Cloudflare build actually writes (a9fd43e ), closes #70
check-routes: require a row or an exemption for every handler (d89fcbe ), closes #70
cli: point the cache commands at their guide (332cc18 )
code: copy through one composable in the reader's language (bc11262 )
content: replace the deprecated nativeSqlite option (8018cb9 ), closes #34
copy-page: divide the model hand-off from the source link (e02ea0a ), closes #14
demo: answer every method on the echo route from the page origin (c2170a4 )
dialog: stop forwarding showCloseButton to reka (0df73d5 )
dialog: style the close control as an icon button (ce300a9 )
error: list the nearest pages once and in one column (3ba32d5 )
error: provide tooltips and one title template on the error page (f24ca0f )
frontmatter: give every boolean page control a default (df2dabe ), closes #88
header: hide the shortcuts trigger below lg (19134a7 )
highlight: load the grammars the landing demos name (ceebe6e )
i18n: register the bruno messages for every locale (7a82798 )
images: restore the zoom and gate its prerendered variants (06166af ), closes #17
landing: crossfade code tabs and keep the prose in place (d5078c2 )
llms: avoid loading page bodies for index (6b196ba ), closes #84
locale: keep machine routes at the root in every locale (d8be082 )
locale: keep the switcher trigger a single stable element (a24bcb8 )
mcp: take the request from the event, not from the SDK's extra (08c7045 ), closes #90
navigation: make page: false authoritative for every traversal (0e93a9b ), closes #12
navigation: mark external links with an arrow kept beside the label (7a032e3 )
navigation: resolve the tfplugindocs prefix before the first await (f9de044 )
navigation: skip synthetic tfplugindocs groups (ee27e00 ), closes #12
og-image: take the cache reset from the removal, not a prior check (161f1ec )
package: declare the sitemap dependency the layer imports (632cbc0 ), closes #14
package: describe duxt as the landing page does (f04c769 )
package: ship the tfplugindocs module (4530e6f ), closes #12
page-header: let the title row wrap rather than push the page sideways (f71143e ), closes #91
page: render a missing page as a 404 without a fatal log (16db4b5 )
page: render nothing for a missing page on its way to the 404 (31a0cdf )
progress: measure scroll position once per frame (54887d6 )
scripts: refuse a build run from inside a .git directory (24e877c ), closes #87
search: reach the results from the search input (ad5e721 ), closes #89
search: show the closest-match note only with results (44fc6ad )
section-row: reserve the bold label width so chips stay put (9cdce36 )
sections: point a hand-listed per-version section at the reader (04c0002 )
sections: write generated pages through shared markdown helpers (3e7710c )
sources: keep non-Markdown out of the partials collection (0dd4e69 ), closes #14
sources: report unreadable Git tags as a Git failure (1896bc9 ), closes #60
storage: read stored lists through one guarded helper (8ddd6a8 )
theme: see the direction in a declaration, not only in a utility (a27a9d8 ), closes #13
ui: draw every tab and choice strip with one pill (6a30d84 )
version: point the banner and canonical at a page that exists (d8f52b6 ), closes #83
versions: keep sections, sidebar and search on every edition (90c716d )
You can’t perform that action at this time.