Changelog
Every dated OwnDocs release, in full. Each entry mirrors the CHANGELOG.md in the product source you receive, so the two say the same thing.
Version 1.0.0
August 19, 2026Configuration
- Breaking: the NEXT_PUBLIC_SITE_URL environment variable is renamed to DOCS_SITE_URL. Rename it before upgrading, because nothing warns you: a deployment still setting the old name starts cleanly and then publishes http://localhost:3000 as its canonical URL, in the sitemap, the RSS feed, llms.txt, llms-full.txt, every page canonical, every Open Graph image URL, and the private-mode login redirect
- Every Tailwind color family now resolves through shared brand variables, so no stock Tailwind palette value reaches the browser
Content authoring and rendering
- File-based MDX and Markdown authoring: the file path is the URL, with no routing configuration
- GitHub Flavored Markdown support: tables, strikethrough, and task lists
- 6 alert types written with GitHub's syntax: note, tip, important, warning, caution, and danger
- 25 documentation components, including cards, tabs, accordions, comparison tables, and file trees
- Syntax highlighting for 71 languages, plus sanitized Mermaid diagram rendering
- LaTeX-style math typesetting, inline and as block equations
- Responsive iframe embeds, sandboxed without same-origin access and limited by the Content-Security-Policy, plus a click-to-zoom image lightbox
- Versioned documentation: archive and serve older releases of a page alongside the current one
API documentation
- API documentation blocks with method badges, headers, JSON request/response, multi-response tabs, and cURL examples
- OpenAPI and Swagger import that generates a full API reference page from a spec URL, with a Postman collection export
AI integration
- A built-in Model Context Protocol (MCP) server, so AI tools like Claude Desktop, Cursor, and Windsurf can search and fetch the documentation directly
- An AI chat panel that answers from the site's own documentation, with multi-thread session persistence and citations: bring your own key (Anthropic, an OpenAI-compatible endpoint, or a local or cloud Ollama model)
- /llms.txt and /llms-full.txt endpoints so AI agents can read a compact or full index of the docs
- Per-page AI reading deeplinks that open the page in ChatGPT, Claude, or Cursor with a ready-made prompt
- Copy the current page as Markdown or plain text
Navigation and search
- Sidebar navigation generated automatically from the file system, with collapsible groups and persisted state
- Auto-generated category index pages for folders with no index page of their own
- Breadcrumb navigation with auto-formatted path segments
- Previous / next page navigation
- Full-text search with a Cmd+K / Ctrl+K shortcut
- On-page table of contents that tracks scroll position
Design and accessibility
- A dynamic theme-variant system with 26 built-in color palettes, every one built from the same verified OKLCH color system, switched by one environment variable, with violet as the default
- A fully responsive, container-query-based layout, with touch targets sized for mobile
- An error boundary and a custom 404 page
- Accessibility support: skip-to-content, focus management, ARIA patterns, keyboard navigation, and focus trapping
- Fixed: dark mode rendered documentation headings at 1.14:1 contrast, because prose-gray and dark:prose-invert shared one @apply list. Dark mode now meets WCAG AA
- Fixed: every route scrolled sideways at 320px. Pages now reflow to 320px with no horizontal scroll
- Fixed: the closed mobile drawer left 15 controls in the tab order. It is now inert when closed, Escape closes it and returns focus to its toggle
- A site-wide footer, supplying the contentinfo landmark the documentation pages were missing
- A root error boundary that renders when the layout itself fails, separate from the per-route boundary
- Fixed: C4 diagram labels were squeezed into a fixed 54px box by Mermaid’s own textLength attribute. Labels now render at natural width and centered, with readable relationship chips and an icon per shape
- Wide Mermaid diagrams now scroll inside a focusable container instead of scaling down past legibility
Access control and security
- A public/private access-mode toggle set by one environment variable
- Password-protected access with signed JWT sessions (24-hour lifetime), browser fingerprinting, a timing-safe password comparison, origin validation, and account lockout after repeated failures
- 8 HTTP security headers in public mode, including HSTS and an environment-aware Content-Security-Policy, with a ninth added in private mode
- Four-layer search-engine and AI-crawler blocking while running in private mode
- Dual-mode MCP-server authentication with page-path validation to block traversal
- An SSRF-resistant OpenAPI importer that validates every remote address before connecting
- Rate limiting across login, AI chat, MCP requests, and reader feedback
Feedback and operations
- A reader feedback widget, backed by a Notion database or a local file so a read-only host still works
- A health-check endpoint at /api/health
- Sitemap generation and dynamic Open Graph image generation, both in public mode
- Configurable login-page footer branding via environment variables
- An RSS feed at /feed.xml, in public mode only
- Fuzzy did-you-mean suggestions on the 404 page
- Three Notion helper commands: notion:verify checks the feedback database has every field OwnDocs writes, notion:fix adds any that are missing, and notion:create creates a new one
Engineering and delivery
- A dual test suite, Vitest unit tests and Playwright end-to-end tests, runs in CI on every change, alongside linting and an npm audit gate
- Every GitHub Action in the pipeline pinned to a full commit hash; tagged releases publish a CycloneDX software bill of materials alongside the archives
- An automated, leak-scanned release pipeline that packages a clean commercial archive
- An environment setup script that auto-generates local secrets
- A proprietary source license
- An axe accessibility gate in CI, checking WCAG 2.2 AA at 320, 768, and 1280 pixels with the target-size rule enabled explicitly
- A per-route regression test that fails the build on any horizontal scroll at 320px
- Stylelint and a Tailwind class-correctness lint rule in CI