Docs-site nav v2 — the two-aside fix (2026-10-15)
Docs-site nav v2 — the two-aside fix (2026-10-15)
Follow-up to docs-restructure-vault-mirror. Young reported (screenshot): sidebar showed raw folder names (manual/investing/properties) and no Pulse/Docs groups. Root causes found and fixed at the Docus-framework level; all verified live this morning.
Root causes (in order of discovery)
- Docus hardcodes ONE
docscollection (node_modules/docus/content.config.ts): every page in the single collection → one global sidebar (238 Docs links rendering on /pulse). Separate sections are not a supported layout without an override. - Collection routing is hardcoded too: the
[...slug].vuepage always queriesdocs, so/pulse/**pages 404'd even with apulsecollection built (verified in the sqlite:_content_pulsehad all 331 docs).
The fix (overriding, not forking — Young's build-on-top rule)
Three small files in the repo, all diff-sized against upstream:
content.config.ts(repo root): two collections —docs(sourceDocs/**, prefix/docs) +pulse(sourcePulse/**, prefix/pulse). Docus merges our config over its default (extends mechanism).app/pages/[lang](lang)/[...slug].vue: upstream file copied + 2-line diff —collectionFor(path)resolvespulsefor/pulse/**, elsedocs..upstream-bakkept.app/app.vue: upstream copy + merged-navigation patch —queryCollectionNavigation('docs')+(...'pulse')concatenated, then the standardtransformNavigation. Imports re-pointeddocus/app/...(relative imports don't resolve in our app dir). Plusapp.config.tsnavigation.sub: 'aside'— second tab bar, per-section sidebar.
Battle scars (for the next person)
sync-docus.shrunsport.py(retired) — it stomped the mirror content mid-fix; reinstall from the tar after any port-era script runs..navigation.ymlneedsnavigation: trueas well astitle:for top-level grouping nodes (Docus Content v3 schema).- Tailwind scans content: the string
h-[calc(100dvh-...)]("..." literal) in a Pulse product-spec md failed the whole vite build (arbitrary-value class with literal "..." is invalid CSS). Rewrote tovar(--header-h,4rem). Rule: no literal...inside[]class strings in markdown. - Data flow trap:
useAsyncData+.then(merge)— thetransform:option receives the POST-.thenmerged array, not the raw tuple.(data[0]||[]).is-not-iterablewas the runtime 500. - Junk filter now in the forge:
_conflicts-*dirs and the 2026-01-01 leak-test stub are skipped (forgecontinueline).
Verification (final build, live)
- Routes all 200: /, /pulse, /pulse/{brief,research,podcast,weekly-study}, /docs, /docs/solosv3 incl. deep pages (manual/01-operation, fleet-ssh-tunnels, 3-package-deep-dive), /docs/investing/market-watch, /docs/vault-index.
/307→/pulse. Junk 404s. - Asides now section-scoped: /pulse pages show ONLY pulse tree (0 docs links); /docs pages show ONLY docs tree (manual group links listed, 237 doc hrefs).
- Group titles render (Docs, Pulse, Manual, SolOS V3, 01 Research, Brief, Research).
- Committed
bc3b7bfto solos-docs GitHub.
Docs-site cleanup — Tam lanes (2026-10-13)
Young: "clean up and consolidate and remove stale information — Pulse, Research, Investing, Property; remove MK Motorsports, PMP Journey." All verified live; committed 2a2512c to youngframeworks/solos-docs (also swept Mira's + Atlas' earlier unpushed commits to origin).
Docs-site nav v3 — state of play + Nova handoff (2026-10-16)
Young's screenshots (16 Oct): menu items unclickable / wrong section shown / mobile drawer empty / Pulse content "missing" (was refresh-cache; now live at 200).

