In-App Documentation
In-App Documentation
Rendered markdown documentation viewer, bundled and available offline
Overview
The Documentation feature provides an in-app markdown viewer for the user guides. It renders
markdown with GFM support (tables, task lists, strikethrough), lazy-loaded syntax highlighting for
code blocks, and heading anchors that make #section deep links work. Content is bundled at build
time and served locally — no network required.
It shows the user guides only. The manifest generator publishes exactly one tree — docs/user/
— so the developer documentation under docs/dev/ is not bundled and is not reachable from this
viewer. Read that on GitHub or in a checkout.
Requirements
Functional Requirements
| ID | Requirement | Acceptance Criteria | Priority | Source |
|---|---|---|---|---|
| REQ-DOC-001 | The system shall render markdown with GFM support (tables, task lists, autolinks) | Navigate to a doc → markdown renders; tables, code blocks and lists display; no rendering errors | Must | MarkdownRenderer.jsx |
| REQ-DOC-002 | The system shall syntax-highlight code blocks for the registered languages | Fenced block tagged js, bash, json, yaml, css, nginx or markdown → highlighted. The highlighter is lazy-loaded on first use | Must | MarkdownRenderer.jsx |
| REQ-DOC-003 | The system shall give every heading a stable id and resolve intra-page #anchor links | Heading → id assigned by rehype-slug and wrapped in a self-anchor; clicking a same-page #anchor smooth-scrolls to it | Must | MarkdownRenderer.jsx |
| REQ-DOC-004 | The system shall present the guides in a sidebar grouped by the curated index | Open the viewer → sidebar lists every published guide, grouped and ordered by docs/user/README.md | Must | DocumentationSidebar.jsx |
| REQ-DOC-005 | The system shall display documentation in a responsive layout with sidebar navigation | Desktop → sidebar + content; mobile → collapsed sidebar; wide tables scroll inside their own container rather than the page | Must | DocumentationLayout.jsx |
| REQ-DOC-006 | The system shall publish exactly the docs/user/ tree | PUBLIC_DIR_PREFIXES is ['user/']; a doc outside it is absent from the manifest and unreachable from the viewer | Must | generate-docs-manifest.mjs |
Non-Functional Requirements
| ID | Requirement | Metric | Priority |
|---|---|---|---|
| NFR-DOC-001 | Documentation shall be fully available offline (bundled) | Availability | Must |
Data Requirements
- Content source: markdown under
docs/user/, collected at build time byapp/scripts/generate-docs-manifest.mjsintodata/docs-manifest.json - Frontmatter: parsed with
gray-matter - Rendering:
react-markdownwithremark-gfm - Syntax highlighting:
react-syntax-highlighter(Prism), loaded lazily with only the languages listed in REQ-DOC-002 registered - No external fetch: all content bundled at build time
Constraints & Limits
- There is no documentation search. The sidebar is static navigation with no filter input. To
find a phrase, use the browser's own find (
Cmd/Ctrl + Fis bound by the app to project/global search, so use the browser menu's Find on this page) or the global Quick Switcher for finding a guide by name. - There is no generated table-of-contents pane. Headings are anchored and same-page links scroll, so a TOC written into a document works — but the viewer does not build one from the heading hierarchy and does not highlight the section you are currently reading.
- Documentation content is static (bundled at build time); no user-editable documentation
- Available to all tiers (Free and Pro)
Offline Behavior
- Fully offline — all content is bundled and served locally
Dependencies
- Requires:
react-markdown,remark-gfm,react-syntax-highlighter,gray-matter,rehype-slug,rehype-autolink-headings
Accessing Documentation
Open Help in the sidebar and choose Documentation, or go straight to
/documentation/user/<DOC> — for example /documentation/user/FAQ. /docs redirects to the same
place.
Cmd/Ctrl + / opens the Help home. ? does not — that opens the keyboard-shortcuts overlay.
This page said ? opened the help panel until 2026-09-07.
The
user/segment is part of the route./documentation/FAQrenders "Document Not Found"; the working URL is/documentation/user/FAQ. Links from the sidebar always carry it.
Navigating Docs
- Use the sidebar to browse guides — it is grouped and ordered by
docs/user/README.md - Click a heading to copy its anchor, or follow any
#sectionlink to scroll to it - Use your browser's find-on-page to search within the open guide
Related Documentation
Last Updated: 2026-09-07 Version: 0.790.2
