Files
notesnook/docs/help/coverage-audit.md
Ammar Ahmed 52d6044e73 docs(help): rebuild the help site with VitePress (#10169)
* docs: new help built with vitepress.

* docs: improve docs home ui

Added a Go to Docs button on homepage
Added a searchbar for directly searching what you are looking for in the docs

* docs(help): wire up with build system & setup proper ci

* Clean up new documentation (#10174)

* Docs: Cleanup pass 1

Signed-off-by: Chloe Oletto <NeedsChloesure@riseup.net>

* docs: cleanup pass 2

Signed-off-by: Chloe Oletto <NeedsChloesure@riseup.net>

* docs: Fix vscode's manglement that I missed.

Signed-off-by: Chloe Oletto <NeedsChloesure@riseup.net>

* Update docs/help/contents/plans-and-limits.md

Co-authored-by: Abdullah Atta <thecodrr@protonmail.com>
Signed-off-by: Chloe Oletto <NeedsChloesure@riseup.net>

* Update docs/help/contents/rich-text-editor/outline-lists.md

Co-authored-by: Abdullah Atta <thecodrr@protonmail.com>
Signed-off-by: Chloe Oletto <NeedsChloesure@riseup.net>

* docs: Remove self-hosting guide from sidebar, and comments for reviewer.

Signed-off-by: Chloe Oletto <NeedsChloesure@riseup.net>

---------

Signed-off-by: Chloe Oletto <NeedsChloesure@riseup.net>
Co-authored-by: Abdullah Atta <thecodrr@protonmail.com>

* docs: some fixes

* ci: do not publish help on push

* docs(help): improve regional pricing & free trials

* docs: improve sidebar

* docs: some more fixes after re-review

* docs: improve search and nav

* docs: a few more fixes

* docs: fix tabs formatting compat with prettier

* docs: fix tabs formatting in various places

* docs: show correct plus button image for mobile

* docs: disable notesnook self hosting docs

* docs: update help docs with fixes

---------

Signed-off-by: Chloe Oletto <NeedsChloesure@riseup.net>
Co-authored-by: Abdullah Atta <abdullahatta@streetwriters.co>
Co-authored-by: Chloe Oletto <NeedsChloesure@riseup.net>
Co-authored-by: Abdullah Atta <thecodrr@protonmail.com>
2026-08-14 08:57:51 +05:00

12 KiB

Help documentation coverage audit

Notesnook 3.4.x · help site 93 pages · last run 2026-08-01.

Method: mechanical sweeps over the whole contents/ tree, plus targeted verification of every load-bearing claim against the monorepo source (packages/common/src/utils/is-feature-available.ts, packages/crypto/src/, packages/theme/src/theme-engine/types.ts, packages/intl/src/strings.ts, apps/web/src/, apps/mobile/app/).

Where it stands

Pages 93
Orphan pages / dead sidebar links 0 / 0
Pages with a meta description 93 / 93
Pages with pageTitle and keywords 91 / 93 (404, index excluded)
Pages ending in a ## Related pages cluster 90 / 90 (404, docs, index excluded)
Internal links in body content ~810
Gated features (35) documented 35 / 35
Structured data BreadcrumbList + TechArticle on all 93; HowTo on 57; FAQPage on 13
Images with descriptive alt text 100%
Outstanding screenshot TODOs 24
npm run build passes — 0 dead internal links, 0 unresolved string keys
Legacy URLs still resolving 71 / 71 (8 section indexes now 301)

Verified against source this run

These were re-derived from the source rather than taken on trust:

Claim Source Result
All plan limits and every gated feature is-feature-available.ts 35 / 35 correct
All 35 <PlanTag> placements is-feature-available.ts all correct
Trash cleanup default of 7 days packages/core/src/collections/settings.ts:65 correct
297 code-block languages packages/editor/.../languages.json correct
Encryption primitives packages/crypto/src/ corrected — see below
Theme scopes / variants / colors packages/theme/src/theme-engine/types.ts corrected — see below
Refund windows apps/web/src/dialogs/buy-dialog/plans.ts 7 / 14 / 30 days, now documented
Keyboard shortcut registry packages/common/src/utils/keybindings.ts page regenerates with zero diff

Source bugs from earlier audits — all fixed in the app

The four app-side bugs earlier runs surfaced have since been fixed in the source, and keyboard-shortcuts.md regenerates with no diff:

Bug Status
strings.none() returned "Cell border width" fixed — returns None
strings.alignCenter() returned "Alignment" fixed — returns Align center
sinkListItem bound to Mod-Shift-Down fixed — page reads Tab
Font-size shortcuts inverted, and Ctrl- macified on Mac fixed — registry uses Mod-[ / Mod-], and font-size.ts binds from tiptapKeys, so labels and handlers cannot disagree

There are no known outstanding source-side bugs affecting the docs.

Errors found and fixed in this run

Contradictions and wrong facts

  • plans-and-limits.md referred to a refund "window listed above" that was never stated. The real windows (7 / 14 / 30 days by billing period) are now documented in their own section and in the FAQ schema.
  • Regional pricing was described as Pro-only in the body and as all-plans in the FAQPage schema. Both now say the same verifiable thing.
  • The flat "all plans have a 14-day free trial" claim was not verifiable — trial length is server-driven and passed into trialPlanConditions(duration). The page now says the length is shown on the plan before you start it.
  • attachments-and-files.md and trash.md gave three different answers to "does deleting attachments free storage". All three now describe storage as a monthly allowance, consistent with the 50MB/mo captions in is-feature-available.ts. See open questions below.
  • rich-text-editor-toolbar.md said toolbar config "is automatically synced across all your devices" and then that it is not.
  • how-is-my-data-encrypted.md named the cipher "XChaCha-Poly1305-IETF" (it is XChaCha20-Poly1305-IETF, crypto_aead_xchacha20poly1305_ietf) and called the KDF "PKDF". Both corrected; the page now also distinguishes argon2i (key derivation) from argon2id (password hashing), matching keyutils.ts and password.ts.
  • custom-themes/introduction.md claimed 10 scopes (there are 11 — titleBar was undocumented), 5 variants (there are 6 — disabled was undocumented) and "12 colors" above a table of 11 (there are 13 — shade and textSelection were missing). The transparency column was also wrong for background and placeholder.
  • recovering-your-account.md documented the first and third recovery options and skipped the second ({{backupFileMethod}}), had a truncated two-step Mobile tab, and carried an unresolved <!--Needs Validation--> comment. Mobile recovery is real (apps/mobile/app/components/auth/forgot-password.tsx) and is now documented.
  • Two images were wrong: the "clear completed tasks" step pointed at sort-task-icon.png, and the notebook "create a note" steps used the desktop plus button in the mobile tab with "Three dot button" as alt text.
  • faqs/what-are-merge-conflicts.md said "which version of the name you want to keep".

Structure

  • The VitePress migration dropped the ten README.md section stubs the legacy docgen site served as directory landing pages, so /organizing-notes, /rich-text-editor, /custom-themes, /faqs, /mobile-integration, /desktop-integration, /web-clipper and /inbox-api started returning 404. Every article slug survived the migration unchanged; only these eight moved. They are now 301'd to their cluster hub from contents/public/_redirects. (/ and /importing-notes were already covered by index.md and importing-notes/index.md.)
  • backup-and-restore-notes-in-notesnook.md and custom-themes/publish-a-theme.md each had two # H1s, which hid a whole section from the page outline. Both now use one H1.
  • app-lock.md had ### headings inside both tab panels, so each appeared twice in the outline with duplicate anchor slugs, plus step numbering that ran across headings and six alt="drawing" images. Rewritten with headings outside the tabs and real UI string keys.
  • keyboard-shortcuts.md started at ###, leaving the page outline empty. The generator (scripts/document-keyboard-shortcuts.mjs) now emits ## per category and a ## Related pages block, and the page carries proper SEO frontmatter.
  • /self-hosting was commented out of sidebar.mjs while remaining live, canonical and in the sitemap. It is now in the sidebar under Advanced.
  • faqs/what-are-merge-conflicts.md had an ### Example: with no H2 parent.
  • mobile-integration/pin-notes-to-notifications.md rendered an empty ::: info box.

Accessibility and SEO

  • 82 images had useless or missing alt text: 37 reading " in Notesnook", 27 reading "Toolbar" on theme screenshots, 9 alt="drawing", 6 "Step in Notesnook", 2 raw <img> tags with no alt at all, and 1 filename. All now describe what the reader should look for.
  • 33 pages had no pageTitle or keywords. All now do.
  • 5 pages had a body FAQ section but emitted only TechArticle. They now emit FAQPage (13 pages total, up from 5).
  • 4 meta descriptions exceeded 160 characters.
  • 32 uses of the banned words "simply", "just", "easily" across 30 files, and two version numbers in body copy ("Starting from v3", "Starting from v2.6.0"), both forbidden by STYLE.md.

Voice and editorial

  • faqs/is-there-an-eta.md hotlinked an image from imgs.xkcd.com — a third-party request from a privacy product's help site — and told users that asking about ETAs "is annoying". Rewritten to point at the roadmap and issue tracker.
  • First-person asides removed from how-is-my-data-encrypted.md ("that is when I found out"), create-a-theme-with-theme-builder.md ("like me") and publish-a-theme.md, which linked to a maintainer's personal fork.
  • The two "login to … attachments" FAQs were 83-word near-duplicates with trailing whitespace in their titles. Both keep their URLspackages/intl/src/strings.ts:2625 and :2741 link to them from inside the app — and are now distinct, question-shaped pages.
  • import-notes-from-standardnotes.md warned that its own steps could not be completed, then presented them anyway. Restructured around the Markdown/plaintext route that actually works.

Open questions that need a product answer

These could not be settled from this repo and are the main risk of a wrong claim shipping:

  1. Storage accounting. is-feature-available.ts captions the limit 50MB/mo, 1GB/mo and so on, and storageUsed / totalStorage arrive from the server. Whether the counter is a monthly upload allowance that resets, or a measure of bytes currently stored, is not determinable client-side. The docs now consistently describe it as a monthly allowance that does not return when you delete a file — this needs confirming, and correcting everywhere if it is wrong.
  2. Trial length per plan and period, which is server-driven.
  3. Monograph 15 MB limit and whether links-and-embeds gating is enforced anywhere client-side.
  4. Inbox API 10 MB body cap and 60 req/min rate limit — both server-side.
  5. Per-provider "supported formats" checklists, which depend on @notesnook-importer/core rather than this repo.

Screenshots

24 TODO markers remain, in three groups:

Group Why it isn't captured Examples
Needs a signed-in account The capture harness runs logged out on purpose attachment manager, sync status indicator, 2FA recovery codes, note links panel
Needs a paid plan Feature is gated the expiry badge on a note (Pro)
Needs a device or a date Not reproducible in a browser Android widgets, quick settings tile, Wrapped (December only)

Five screenshots in contents/public/screenshots/ were captured from a real production build of the web app and are current.

Existing images are old

69 of 81 images date from 2023, 9 from 2024 and 3 from 2026. The app has been through a major redesign since — editor tabs, a restructured settings dialog, the new side menu — so most screenshots predate the UI they illustrate.

Image Age Problem
config-toolbar-desktop.png 2023-06 Dialog is titled "Configure toolbar"; the current label is "Customize toolbar"
first-note-desktop.png 2023-02 Toolbar predates the bi-directional note link tool
desktop-enable-app-lock.png 2024 Matches 3.4 except the new Inbox section is missing

The 2023 cohort covering tables (11 images), publishing themes (16), colors, backups and the first-note flow should be re-shot wholesale rather than audited one by one.

Remaining work, in priority order

  1. Answer the five open questions above, then correct any page that guessed wrong.
  2. Screenshots — 25 TODOs, plus the 2023-era images. The account-gated ones need a throwaway account; the Android ones need a device or emulator.
  3. Thin coverage worth deepening: debug logs (other-settings.ts:400, the first thing support asks for), desktop CLI arguments (apps/desktop/src/cli.ts:38-83), the nn:// protocol handler on desktop, and subscription management detail (payment method, cancel trial, mobile restore purchase).

Notes for whoever writes here next

  • docs/help/STYLE.md is the contract: verification requirement, plan tags, platform tabs, SEO frontmatter, linking clusters.
  • Plan tiers come from packages/common/src/utils/is-feature-available.ts and nowhere else. All 35 gated features are monotonic across tiers, so "Pro includes Essential" is provably true.
  • Where keybindings.ts and an editor extension disagree about a shortcut, the extension wins.
  • keyboard-shortcuts.md is generated. Edit scripts/document-keyboard-shortcuts.mjs, never the page.
  • A frontmatter value containing : must be quoted, or the YAML parser fails the build.
  • Some help URLs are linked from inside the app via packages/intl/src/strings.ts. Grep it before renaming or deleting a page.
  • contents/v<version>/ is generated build output. Never edit it; edit the root copy, and use npm run fork to preserve old text for an archived version.