|
| 1 | +# Changelog |
| 2 | + |
| 3 | +All notable changes to ShellDocs land here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Versioning is [SemVer](https://semver.org/spec/v2.0.0.html) with prerelease suffixes (`-alpha`, `-beta`, `-rc`) — the alpha window explicitly reserves the right to break APIs on minor bumps. |
| 4 | + |
| 5 | +## [Unreleased] |
| 6 | + |
| 7 | +## [0.1.0-alpha] — 2026-07-25 |
| 8 | + |
| 9 | +First public release. The whole Phase 1 target is shipped, plus most of Phase 2's primitives + consumer DX polish. See [ROADMAP.md](docs/ROADMAP.md). |
| 10 | + |
| 11 | +### Packages |
| 12 | + |
| 13 | +Published to NuGet: |
| 14 | + |
| 15 | +- `ShellDocs.CLI` — global tool: `dotnet tool install -g ShellDocs.CLI --prerelease`. Commands: `init`, `add`, `dev`, `build`, `preview` |
| 16 | +- `ShellDocs.Components` — RCL with `<DocsLayout>`, `<DocsHeader>`, `<DocsSidebar>`, `<TableOfContents>`, `<PrevNextNav>`, `<DocsBreadcrumb>`, `<SearchDialog>`, content primitives, API-reference primitives |
| 17 | +- `ShellDocs.Core` — navigation graph, search index model, routing helpers, markdown plain-text extractor |
| 18 | +- `ShellDocs.Markdown` — Markdig pipeline with frontmatter, `razor:preview` fenced blocks, inline Razor component tags |
| 19 | +- `ShellDocs.Templates` — starter markdown + Program.cs snippets for `shelldocs init` scaffolding |
| 20 | +- `ShellDocs.Tokens` — RCL with `tokens.css` — shadcn-compatible palette + spacing scale, single source of truth for `--background`, `--foreground`, `--primary`, `--radius`, dark mode |
| 21 | + |
| 22 | +### Added |
| 23 | + |
| 24 | +**Markdown pipeline (`ShellDocs.Markdown`)** |
| 25 | +- YAML frontmatter parsing via YamlDotNet |
| 26 | +- ` ```razor:preview ` fenced blocks — live-rendered previews with source-view toggle |
| 27 | +- Inline Razor component tags mid-markdown (`<Callout />`, `<Card ... />`) |
| 28 | +- Component type registry (`RegisterComponent<T>()`) with per-type tag aliases (`RegisterComponent<Button>("Btn")`) |
| 29 | +- Bulk `RegisterComponentsFromAssembly<TMarker>()` scan + `[ShellDocsIgnore]` opt-out attribute |
| 30 | +- Automatic string→typed coercion for `bool`, `int`, `enum` attribute values |
| 31 | + |
| 32 | +**Content primitives (`ShellDocs.Components`)** |
| 33 | +- `<Callout Variant="info|warning|danger|tip">` — coloured info box with icon + title + body |
| 34 | +- `<Card>` / `<CardGrid Columns="1|2|3">` / `<LinkCard>` — responsive card family |
| 35 | +- `<Steps>` / `<Step>` — CSS-counter numbered list with badge-on-rail spine |
| 36 | +- `<FileTree>` / `<FileTreeItem>` — recursive project-layout diagram |
| 37 | +- `<CodeGroup SyncKey>` / `<CodeTab>` — tabbed code samples with cross-page sync |
| 38 | + |
| 39 | +**API-reference primitives (`ShellDocs.Components`)** |
| 40 | +- `<TypeTable>` / `<TypeRow Name Type Default Description Required>` — props/API reference table |
| 41 | +- `<ComponentPreview Component="..." ...props>` — declarative-prop single-component demos |
| 42 | + |
| 43 | +**Chrome (`ShellDocs.Components`)** |
| 44 | +- `<DocsLayout>` with two variants (`TopNav`, `Sidebar` floating card) |
| 45 | +- `<DocsHeader>` with primary nav mega-menu, GitHub link, theme toggle |
| 46 | +- `<DocsSidebar>` with grouped nav, collapsible sections (animated grid-rows), auto-open on active path |
| 47 | +- `<TableOfContents>` — right-rail, h2/h3 auto-extraction, scroll-spy indicator with smooth slide |
| 48 | +- `<PrevNextNav>` — auto-derived from nav-graph adjacency |
| 49 | +- `<DocsBreadcrumb>` — auto-generated from nav path; sections render as text, current page as `aria-current`, only leaf pages become links |
| 50 | +- `<PackageSelector>` — consumer-configurable multi-package selector; hides when 0 or 1 packages declared |
| 51 | +- `<BrandLogo>` — consumer-configurable logo with three modes: `LogoSvg` (inline SVG, tints via `currentColor`), `LogoLight`/`LogoDark` (theme-paired image URLs), or dot placeholder fallback |
| 52 | +- `<SearchDialog>` — Cmd+K modal, client-side substring scoring against title / description / section / body, snippet extraction for body-only matches |
| 53 | +- `<DocsFooter>` / `<DocsMobileBar>` / `<ThemeToggle>` |
| 54 | + |
| 55 | +**Auto-chrome via `DocsPageState`** |
| 56 | +- Consumer's docs page collapses to just `<MarkdownContent Document="_document" />` — TOC, PrevNext, Breadcrumb all auto-render from a shared scoped service |
| 57 | +- Recomputes on `NavigationManager.LocationChanged` |
| 58 | + |
| 59 | +**Search (`ShellDocs.Core`)** |
| 60 | +- `SearchIndex.FromGraph()` — page + heading entries with URL, title, description, section |
| 61 | +- Page entries carry extracted plain-text `Body` (frontmatter / fences / HTML / Razor tags / images / links / inline code / emphasis / heading `#` all stripped) |
| 62 | +- `MarkdownPlainText.Extract()` — reusable helper for body extraction, 8KB default cap |
| 63 | + |
| 64 | +**Code highlighting (`ShellDocs.Components`)** |
| 65 | +- Shiki via WASM (bundle configurable) |
| 66 | +- Dual-theme via `--shiki-light` / `--shiki-dark` CSS custom properties |
| 67 | + |
| 68 | +**Design tokens (`ShellDocs.Tokens`)** |
| 69 | +- Standalone RCL with `tokens.css` (base + full variants) |
| 70 | +- Shadcn-compatible variable names for interop with ShellUI and other consumers |
| 71 | + |
| 72 | +**CLI (`ShellDocs.CLI`)** |
| 73 | +- `shelldocs init` — two modes: create (default, scaffolds a fresh Blazor Web App) and attach (`--attach`, augments existing project via `SHELLDOCS_SETUP.md`) |
| 74 | +- `shelldocs add <component|guide|page> <name>` — scaffolds starter `.md` from template into `content/` |
| 75 | +- `shelldocs dev` — dotnet watch with .md hot-reload |
| 76 | +- `shelldocs build` — publishes static site, handles base-href rewrite + SPA 404 fallback |
| 77 | + |
| 78 | +**Animation polish (Phase 2)** |
| 79 | +- Native view-transitions API for cross-fade on route change (Chromium — silent no-op elsewhere) |
| 80 | +- Sidebar section collapse animates via `grid-template-rows: 0fr → 1fr` |
| 81 | +- Copy-icon success bounce |
| 82 | +- Global `@media (prefers-reduced-motion: reduce)` guard — all animations collapse to instant |
| 83 | + |
| 84 | +**Consumer configuration (`ShellDocsOptions`)** |
| 85 | +- `RegisterComponentsFromAssembly<TMarker>(filter?)` — bulk-register a whole component library in one line |
| 86 | +- `AddPackage(id, title, description, rootUrl, iconPath?)` — declares consumer's package family for the sidebar selector |
| 87 | +- `SetLogo(url)` / `SetLogo(light, dark, alt?)` / `LogoSvg` — brand logo |
| 88 | +- `AddNavLink` / `AddNavMenu` — top-nav wiring |
| 89 | +- `LayoutVariant` — TopNav or Sidebar |
| 90 | + |
| 91 | +### Known limitations |
| 92 | + |
| 93 | +- Body-text search uses substring scoring, not an inverted index — fine for docs-sized corpora (~100 pages), will need rebuilding at 1000+ |
| 94 | +- Search snippets don't yet highlight the matched substring |
| 95 | +- `<TypeTable>` is hand-authored today; XML-doc auto-generation ships in `ShellDocs.Xml` (Phase 4) |
| 96 | +- No `<DocsBreadcrumb>` opt-out — currently hides when the trail has ≤ 1 node, otherwise always renders |
| 97 | + |
| 98 | +[Unreleased]: https://github.com/shellui-dev/shelldocs/compare/v0.1.0-alpha...HEAD |
| 99 | +[0.1.0-alpha]: https://github.com/shellui-dev/shelldocs/releases/tag/v0.1.0-alpha |
0 commit comments