date: 2026-07-05 procedure: adopting-updates node: random-ai-prompt outcome: completed hub_version: 0.14.3 hub_commit: 63fef52
Process Report — adopting-updates, 2026-07-05
A full, honest account of running a fairyfox system procedure. The point is to improve the system — so say what was rough even if the run succeeded. Voice: direct, matter-of-fact, no hype. Standard:
hub/standards/process-reports.md.
Outcome in one line
Adopted the updated docs-site chrome (header/footer/submenu) and the redesigned reader menu into the
project doc-theme, migrated to the versioned reader key fairyfox:reader:b, and aligned the reading
defaults to the hub. Completed and verified.
What was done
- Refreshed the read-only hub clone at
assets/references/fairyfox.io/.git pull --ff-only origin devaborted because hubdevhad been force-pushed (diverging) — took the documented fallback (git fetch+git reset --hard origin/dev) on the reference clone only. Landed at63fef52, site version0.14.3. - Read the express-authorization ledger (
hub/authorizations.yml). The standingadopt-standards-by-defaultentry covershub/standards/+hub/templates/, so this adoption is pre-authorized: applied directly, skipping only the check-report-wait pause. Every other safety step still ran. - Studied the source of truth:
hub/standards/docs-site/(README,05-navigation,02-design-tokens,reference/chrome.html,reference/main.css) and the live hub readerassets/js/reader.js. - Located the project's implementation (
assets/docs-theme/:modules/reader.js,modules/chrome.js,theme/reader.css,theme/chrome.css,theme/tokens.css,theme/base.css). - Ported the new reader (icon theme tiles + Auto, accent swatches, size slider, panel head/foot) into
the project module, keeping the
loadAndApply()/initReader()split andelhelper. New keyfairyfox:reader:b. Replacedtheme/reader.csswith the new panel design, mapped onto the project's existingvar(--*)tokens (all present). - Synced the chrome: primary nav → fixed mesh-wide set (added Games, removed Downloads from primary;
Download kept in the subnav), footer Explore column matched, reader button moved to after the nav
(
.nav{margin-left:auto}+ btn margin.5rem). - On the follow-up request ("same defaults as main hub"), aligned the CSS resting defaults to the hub:
html 16.5px,body 1rem/var(--reading-lh),--reading-lh 1.65,--reading-fs 1rem, width46rem. - Verified before and after (see Environment/Verify below). Fixed a stale nav list in
notes/reference/documentation.md; wrote changelog + session entries; bumpedVERSION+package.jsonto2.43.1(PATCH).
What went well
- The ledger made the authorization decision unambiguous — the standing grant clearly covered a standards adoption, so no redundant prompt.
- The docs-site standard's
reference/chrome.html+main.csssnapshots plus the livereader.jsgave an exact target; the project module already mirrored the hub's vanilla reader closely, so the port was a clean structural swap rather than a rewrite. - The project already carried the full accent-token family (
--accent/--violet/--accent-ink/--link/--glow), so the new accent feature worked with no token additions. - The
--ff-only→reset --hardfallback is spelled out in this project's CLAUDE.md, so the force-pushed hubdevwas a non-event.
What went wrong / friction
file://is blocked by the browser extension, so the built doc-site couldn't be opened directly for the visual check. Had to stand up a tiny local static server to servedocs/jsdoc/over http. Minor, but worth noting for anyone doing a visual verify of a generated docs site.- Root-font-size vs
--reading-fs. The new hub reader scales<html>font-size directly, while the project historically drove a--reading-fscontent var. These coexist fine, but the "same defaults" follow-up was needed to reconcile the resting values (1.8→1.65line-height,1.05rem→1remcontent, addhtml{font-size:16.5px}). The standard describes the reader's defaults well but doesn't spell out the base/token resting values a project should adopt for a JS-disabled / first-paint match — I had to derive16.5px/1.65/46remfromreference/main.cssand02-design-tokens. - Downloads vs Games in the primary nav. The project had
Downloadsin the primary nav; the standard says the primary set is fixed (…Games…) and project links belong in the submenu. This was drift, not a sanctioned divergence, so I synced it — but a project maintainer could reasonably have read it as intentional. The standard is clear once found (05-navigation), but the "what counts as a sanctioned divergence" line is a judgment call each time.
Suggestions / feedback
- The docs-site
reference/could include a short "base/token resting defaults" block (or a line in02-design-tokens) stating the exacthtml font-size,body font-size/line-height, and the--reading-*default triple a project should set — so "match the hub defaults" doesn't require reverse-engineeringmain.css. (Tie: the "same defaults" friction above.) 09-adopting-and-maintainingcould name the common primary-nav drift case explicitly (e.g. a project that added a project-specific item to the global nav) and say the fix is "move it to the submenu", to remove the per-run judgment call.
Environment
- Repo/stack:
random-ai-prompt— Node 24, ES modules. The doc-site theme is hand-authored vanilla JS/CSS underassets/docs-theme/, layered onto a docdash/JSDoc generator vianpm run docs; the reader/chrome are injected client-side. This made the port a faithful hand-reimplementation (the standard's intended model), not a file copy. - OS/shell: Windows, PowerShell (per the project's standing "use PowerShell, not the bash sandbox" rule). Git ops and builds run from the repo root.
- Branch model on arrival: git-flow; this change went on
devas an ordinary PATCH. - Verify:
npm run lint(eslint + stylelint) green;npm run docsbuilds 651 pages;npm run smokenpm run check:docsgreen. Live browser check on the built site: header/subnav correct, reader panel matches the master design,fairyfox:reader:bwritten on interaction (old key null), theme/accent/size apply live, and a fresh-visitor (cleared-storage) load computes root16.5px/ body16.5px/ line-height1.65/--reading-fs 1rem/ width46rem— matching the hub. JSDoc emitted its usual pre-existing non-fatal type-expression warnings (unrelated React source); the build treats them as non-fatal.