Repository navigation
Releases: shellui-dev/shelldocs
Release list
v0.1.19-alpha
The table of contents works on interactive sites again, plus fixes for border utilities, llms.txt groups and the page menu's chat links.
Fixed
- The table of contents on interactive sites. With
<Routes @rendermode="InteractiveServer" />, the "On this page" highlight stopped moving once the circuit started, and clicking an entry went to the home page. The scroll-spy now re-attaches when Blazor replaces the list or the headings (or changesdata-toc-idson navigation), TOC links carry the page's path (docs/setup#install; a bare#installresolves against<base href>), and same-page links, including[x](#id)in content, scroll in place and keep the path in the address bar. Sites that added their owntoc.jsworkaround can drop it. - The last short sections of a page never became active in the TOC. At the bottom of the page the last heading on screen is highlighted.
border-*utilities lost to the base border colour. The*, *::before, *::afterrule inshelldocs-theme.csswas outside any cascade layer, so it beat Tailwind'sborder-destructiveand friends in previews and home pages. It's in@layer basenow.llms.txtlisted a group twice when top-level pages sat on both sides of a folder ("## Pages" before and after it). Each group now appears once, in first-seen order.- The page menu's chat links used the visitor's origin instead of
SiteUrl, so a static export previewed on localhost asked about a localhost URL. WithSiteUrlset they name the published page.
What's Changed
- fix: table of contents on interactive sites, border layer, llms.txt groups by @Shewart in #49
- chore: release 0.1.19-alpha by @Shewart in #50
Full Changelog: v0.1.18-alpha...v0.1.19-alpha
v0.1.18-alpha
Colour presets, shelldocs preview for checking a static export locally, package pages on NuGet that render properly, plus fixes for sub-path links, folder titles and entities in component attributes.
Added
shelldocs preview(#43). Serves the output ofshelldocs build(publish/, or--output) onhttp://localhost:5050(--port) the way static hosts do: folders serve theirindex.html, unknown URLs get404.htmlwith a 404, and an export built with--base-hrefis served under that path (read from the export, or pass--base-href). Responses aren't cached, so a rebuild shows on reload. The oldpreview <name>stub is gone. The CLI now needs the ASP.NET Core runtime, which any machine building a Blazor site already has.- Colour presets (#44).
o.Theme = ShellDocsTheme.Harbor(orshelldocs init --theme harbor) swaps the neutral palette for a tinted one:Harbor(blue),Lagoon(teal),Forest(green),Savanna(amber on sand),Ember(red-orange) orJacaranda(purple). Each covers light and dark mode, tints backgrounds, borders and muted text, and colours the active sidebar item, focus rings, links and other accents, with text at 4.5:1 or better. The default,Graphite, is the existing palette. Presets are CSS intokens.csskeyed on adata-shelldocs-themeattribute the layouts render, so they work in static exports and your own token overrides still win. CONTRIBUTING.md(#45): setup, trying a change in the example site and a static export, the static-host rule, and how commits and changelog entries are laid out.
Fixed
- NuGet package pages showed raw HTML. All six packages shipped the GitHub README, whose centred header and badges are HTML that nuget.org prints as text. Each package now has its own Markdown README, and
scripts/pack-dry-runfails on HTML in a package README. The PowerShell version of that script also runs on Windows PowerShell 5.1 again. - A folder's
meta.jsontitlewas ignored (#41). The folder's section in the sidebar, breadcrumb and search took its title from the folder name (maui→ "Maui"). It now uses the folder's ownmeta.jsontitlewhen set, and falls back to the name otherwise. Sites whose folders set atitlewill see it, e.g. a top-leveldocs/meta.jsontitled "Documentation" now reads that way instead of "Docs". - HTML entities in component attributes showed literally (#42).
<Callout Title="Tom & Jerry" />in Markdown or arazor:previewfence now passes "Tom & Jerry", as Razor does.@expressions, directive attributes (@onclick,@bind-…) and code spans inside a value stay as written. - Links broke on sites served from a sub-path (#40). Sidebar, breadcrumb, header, prev/next, content and favicon links are root-relative (
/docs/introduction), which ignores<base href>, so an export built with--base-href /my-repo/linked outside the site.shelldocs build --base-hrefnow also puts the base in front of root-relativehref,srcanddata-srcvalues in every exported page.
Changed
ShellDocsTheme.Shadcn,FumaandNextraare obsolete aliases ofGraphite. They never changed the palette;FumaandNextrapromised a look that a palette can't give.shelldocs init --themetakes the new preset names.
Removed
SearchState,SidebarCollapseStateandMobileNavState(#46). Search, the sidebar collapse and the mobile drawer run inshelldocs.js, so nothing used these services;AddShellDocsno longer registers them. Code that injects one needs its own copy.
What's Changed
- fix(cli): put --base-href in front of root-relative links by @Shewart in #47
- feat: colour presets, shelldocs preview, NuGet READMEs and the issue backlog (0.1.18-alpha) by @Shewart in #48
Full Changelog: v0.1.17-alpha...v0.1.18-alpha
v0.1.17-alpha
llms.txt for AI agents, and five fixes found while writing the ShellDocs docs site.
Added
- llms.txt for AI agents.
o.EnableLlmsTxt(l => …)serves/llms.txt(every page with its description, grouped by sidebar section),/llms-full.txt(every page as Markdown) and each page as Markdown at its URL +.md, the same under every version root. Options:Summary,RulesFile(Markdown shown at the top, such as rules for agents),InstallCommandPattern(a regex; the first match in a page's code blocks is listed after it) andAgentFiles. Files aretext/plain; links are absolute fromSiteUrlor the request. - Agent instruction files.
AGENTS.md,CLAUDE.md,copilot-instructions.mdand a Cursor rule ({site}.mdc) under/agents/and each version root, served as downloads. Each is a## {SiteName}section, so it can be appended to an instructions file a project already has. - Page actions menu. A ⋯ menu by the page title: Copy page (the page's Markdown), View as Markdown, Open in Claude and Open in ChatGPT (prefilled with "Read {page}.md and help me with it."). It works in static exports. Turn it off with
PageActions = false. - Markdown for every ShellDocs tag. Demos become their source in a fence, callouts blockquotes (code fences inside kept), tabs and code groups a bold label per tab, cards a list, steps numbered, file trees a text block, type tables a table, other registered components their text; links to docs pages become absolute
.mdlinks. Tags inside code fences are left alone. shelldocs buildexports them.llms.txt,llms-full.txt, every page's.mdand the agent files are written into the output; links use--site-url, thenSiteUrl, else they're root-relative under--base-href.shelldocs initturns it on in the generatedProgram.cs.
Changed
- Links to
.txtand.mdfiles load the file. Blazor's router and enhanced navigation showed the docs' "Page not found" for them;shelldocs.jsnow lets the browser follow them.
Fixed
- The missing-tab note lost its spaces. It read "Not available onRazoryet": the note is a flex container, so the text around the label became separate flex items and the spaces were dropped. The sentence is now one inline box.
- A
razor:previewfence holding only HTML rendered as a code block. It now renders live in the frame, like a fence with components. A fence with no tags at all is still a code block, with a warning. 404.htmlnamed the build's probe URL. Every unknown URL showed "The page /docs/__shelldocs-not-found__ doesn't exist".shelldocs buildnow blanks and hides that line, andshelldocs.jsfills in the visitor's path (relative to the site's base).LogoSvglogos weren't sized. The scoped rule meant to fit the SVG toLogoHeightnever matched, so an SVG without its own size could collapse to nothing. Sites that added their own.brand-logo-svg > svgrule can drop it.- Search on home pages.
HomeLayouthad no<SearchDialog />, so Cmd/Ctrl+K and[data-search-open]did nothing there unless the site added one. It's included now; a site that added its own can remove it.
What's Changed
Full Changelog: v0.1.16-alpha...v0.1.17-alpha
v0.1.16-alpha
Fixes <IframePreview> showing the previous page's preview after navigating within a site.
Fixed
<IframePreview>after in-site navigation. When the next page has an iframe preview in the same place, Blazor reuses the element and only changes itsdata-src.shelldocs.jskept treating it as loaded, so the frame went on showing the previous page's preview and the Run button stayed hidden. It now watchesdata-srcanddata-lazy, unloads a host whose values change, and sets it up again: the Run button comes back forLazy="click", andvisible/nonepreviews load the new page. Sites that worked around it with their ownMutationObservercan drop it.
What's Changed
- fix: IframePreview keeps the previous page's preview after navigation (0.1.16-alpha) by @Shewart in #38
Full Changelog: v0.1.15-alpha...v0.1.16-alpha
v0.1.15-alpha
Search now works in static exports, the last piece of chrome that needed a running Blazor app.
Changed
- Search runs in the browser. The app serves its search index at
/_shelldocs/search.json(noProgram.cschange),shelldocs buildcopies it into the export, andshelldocs.jsfetches it on first use and ranks it with the same scoring as before: title, section, description and body, with body snippets, scoped to the current version. Search is the same on GitHub Pages or any static host as on a running app, including under--base-href. Results are links, so they open in a new tab like any other. - Search buttons are
[data-search-open]buttons handled byshelldocs.js; add the attribute to any element to open search from it.shelldocsSearch.open()still works from script, and there's a matchingshelldocsSearch.close(). SearchStateis no longer used and is kept only so existing code compiles.shelldocsSearch.initis gone.shelldocs buildwarns when the site'sShellDocs.Componentsis too old to serve an index, since search would not work in that export.
What's Changed
Full Changelog: v0.1.14-alpha...v0.1.15-alpha
v0.1.14-alpha
Static sites get the last piece of interactive chrome apart from search, the desktop sidebar collapse, and unknown pages finally answer 404, with a matching 404.html in static exports.
Added
<DocsNotFound />: the docs page's not-found view, now used by theinittemplate. It answers HTTP 404, so search engines skip unknown pages. The status is set as the headers go out, because .NET 10 sends an empty body for a page that is already 404 unless the app has aNotFoundPageor status-code re-execution.Path,HomeHrefandHomeLabeloverride the message and the link back (which defaults to where/docsleads). Existing sites replace theirelsebranch inDocsPage.razorwith<DocsNotFound />.shelldocs buildwrites404.htmlfrom the site's own not-found view, for static hosts that serve it for unknown URLs (GitHub Pages, Netlify, Cloudflare Pages).--spa-fallbackstill replaces it withindex.html.
Changed
- Desktop sidebar collapse works without a Blazor runtime. The collapse and expand buttons are
[data-sidebar-collapse-toggle]buttons handled byshelldocs.js, which flips[data-sidebar-collapsed]on the page shell and remembers the choice inlocalStorageacross pages. The page shell no longer gets adocs-sidebar-collapsedclass; style[data-sidebar-collapsed="true"]instead.SidebarCollapseStateis still registered but no longer used. shelldocs buildfails on a page that renders as not found, whether it answered 404 or rendered<DocsNotFound>with another status.
What's Changed
- fix: 404 for unknown pages, 404.html in static builds, static sidebar collapse (0.1.14-alpha) by @Shewart in #36
Full Changelog: v0.1.13-alpha...v0.1.14-alpha
v0.1.13-alpha
What's Changed
- chore: ShellDocs brand mark as package icon, favicon and README logo by @Shewart in #34
- feat: code variants on previews, page switch, IframePreview (0.1.13-alpha) by @Shewart in #35
Full Changelog: v0.1.12-alpha...v0.1.13-alpha
v0.1.12-alpha
What's Changed
Full Changelog: v0.1.11-alpha...v0.1.12-alpha
v0.1.11-alpha
What's Changed
Full Changelog: v0.1.10-alpha...v0.1.11-alpha