Adopted the fairyfox hub's updated docs-site chrome + reader into the Doxygen docs theme, mirroring the sibling random-ai-prompt (adapted from its JSDoc stack to Doxygen). Refreshed the read-only hub clone first (0.11.2 → 0.14.4); the standing adopt-standards-by-default authorization covered the adoption, so it applied without the report-then-wait pause, with full verification still run.
What was done
- Refreshed the hub clone (assets/references/fairyfox.io/) with a clean fast-forward dev pull (0 ahead / 45 behind), landing at 9efb6ad, site 0.14.4. Read the updated docs-site standard (reference/chrome.html, 02-design-tokens, 05-navigation, 11-measurements) and the sibling's assets/docs-theme/ implementation (modules/chrome.js, modules/reader.js, theme/*.css, fonts).
- Chrome (docs/fairyfox/header.html + footer.html) — replaced the old brand bar + "Back to
Fairy Fox" button with the current mesh chrome: fixed primary nav (Home · Projects · Games · Docs · Updates · About) with the hub fox logo as the way home, a project subnav, and the reader "Aa" button. Footer rebuilt to brand · Explore · This project + bottom bar.
- Reader menu (docs/fairyfox/ff-docs.js, new) — the "Aa" panel (theme / accent / size / spacing / width, key fairyfox:reader:b), reimplemented standalone (no ES modules) against Doxygen's DOM and this project's --ff-* tokens. Also drives doxygen-awesome's light-mode/dark-mode class, measures --ff-header-h, and marks the active subnav item.
- API-only sidebar — the treeview shows only on class/file/namespace pages; Overview + notes render full-width prose. A localStorage guard freezes doxygen_width on prose pages so the hidden sidebar can't corrupt the API-page sidebar width (found + fixed during the in-browser verify).
- Theme-conflict fix — scoped the token mapping to all three doxygen-awesome theme states so the fairyfox tokens win over its html:not(.light-mode) / html.dark-mode dark rules (Light on a dark OS was washing text out to doxygen-awesome's dark foreground). HTML_COLORSTYLE AUTO_DARK → LIGHT. Added data-theme light + sepia palettes.
- Self-hosted fonts — Fraunces / Inter / JetBrains Mono woff2 + fonts.css under docs/fairyfox/fonts/; dropped the Google Fonts link. pages.yml no longer injects DoxygenLayout user-tabs (the subnav carries them).
Verify
Local Doxygen 1.17 build clean (only pre-existing doc-comment warnings). Served docs/html/ over http and checked in-browser: chrome + subnav correct, no "Back to Fairy Fox" leftover, hub fox logo, Projects active; reader panel matches the hub design; theme switch repaints the whole page (dark / light / sepia) with correct contrast (--page-foreground-color = --ff-text); accent swatches + size slider apply live; sidebar present on annotated.html, absent on index.html / pages.html; doxygen_width stays at the healthy default after visiting a prose page then an API page; no console errors. Per-page requests this session (mid-verify): hub logo not the project's, Projects active not Docs, sidebar API-only — all applied.
Follow-up polish (from a visual review in Chrome vs. the reference site)
A screenshot review against random-ai-prompt caught three things the first pass missed (lesson: always eyeball the actual render + compare to the reference, don't trust "it should look right"):
- Duplicate nav — doxygen-awesome's own #titlearea + #main-menu (Main Page / Related Pages / Namespaces / Classes / Files) sat under our chrome as a second nav. Hidden; our subnav + treeview cover navigation. (Side effect: Doxygen's built-in search box, which lives in #main-menu, is now hidden too — matches the reference chrome.)
- Double scrollbar — doxygen-awesome gives #doc-content its own inner scroll pane, which fought our sticky chrome. Switched to a single-page scroll: #doc-content flows (height:auto;
overflow:visible), and on API pages the treeview is a position:fixed column pinned below the chrome (always visible). Prose pages stay full-width.
- Washed accent links — the reader's accent formula mixed the accent toward the near-white body text, so links went muddy pastel on dark. Now theme-aware (ff-docs.js): lightens toward white on dark, darkens on light/sepia, keeping saturation. Default (no accent) links are unchanged.
Re-verified in Chrome: dark / light / sepia, Overview / Related Pages / class detail pages — single title, single scrollbar, fixed sidebar on API pages, vivid links, no console errors.
Second review pass (loaded the reference site side-by-side)
Opened the live reference docs (https://fairyfox.io/random-ai-prompt/, incl. its API page) in Chrome and compared element-by-element (extracting its computed tokens/spacing), which surfaced more the first pass missed:
- Gradient washes — the body had radial accent/amber glows + a vertical gradient; the reference is a flat --bg surface. Flattened body to background: var(--ff-bg). This also fixed the "pink" header/nav: the nav links were already the right neutral warm-grey token (--text-soft, same value as the reference) — the pink was the gradient bleeding through the translucent header.
- Files / Classes → a single API subnav item (the reference collapses the code reference under one "API" entry). ff-docs.js marks it active on any class/file/namespace page.
- Member banding — doxygen-awesome fills each summary type/name cell with the dark code background
- borders (heavy horizontal bands). Flattened to transparent rows with one hairline separator, and turned the detailed member docs into flat cards with a left accent bar (closer to the reference's cards). Body copy set to the softer --text-soft (headings stay bright), matching the reference.
Still open (honest): the left treeview is not yet API-only — it still lists the notes/README sections alongside Classes/Files. Doxygen's navtree lazy-renders collapsed nodes, so pruning it in the DOM is unreliable (tried it, reverted — not worth a fragile hack); this needs a Doxygen config-level fix. Search is also still hidden (it lived in the hidden #main-menu).
Notes / workflow