Maintaining the static navigation

The header and footer are intentionally duplicated. Committed HTML works with npm run serve immediately; no include fetch, new template layer or navigation build is required. This is a maintenance choice, not an assertion that all markup is byte-identical.

Current navigation

  • Tools: Camouflage lab, Video analyser, Makeup Explorer.
  • Explore / Understand: About Ghostmaxxing, Genealogy, Research references, Related projects.
  • Explore / Use and contribute: Documentation, Gallery, Fediverse integration, Source code.
  • Ghòstati! / NINA: Union blog in Italian and English, initiative/workshops, confidential reporting at NINA.
  • Primary CTA: Open the lab.

The Union blog covers multiple initiatives. Its links must not imply a software-only blog. Workshops link to the stable Ghòstati! initiative rather than a permanently fixed dated announcement. NINA destinations own editorial content and confidential reporting. ↗ indicates an external destination, not a new tab.

Copies to update together

Content pages: index.html, about.html, fediverse.html, gallery.html.

Generated pages and their sources:

HTML outputAuthored source
projects/index.htmlprojects/templates/projects.template.html
references/index.htmlreferences/templates/references.template.html
genealogy.htmlHEADER and FOOTER strings in scripts-dev/build-genealogy.py
Functional documentation under docs/siteHeader() and siteFooter() in scripts-dev/build-functional-docs.cjs

Tool variants: lab.html, loader.html, realtime.html. They contain home / Tools / Help navigation and no full footer. Preserve each tool's controls, IDs, locale selector and session behaviour. The compact script lives in lab-js/tool-nav.js so the Sindacato importer includes it. Root links are deliberately rewritten to the software host by that importer; other tools are not silently imported along with the lab.

Shared CSS: styles/chrome.css. Content enhancement: pages-js/nav.js. The styleguide and the site-chrome / CTA sections of the visual and voice guides document this pattern; review them when it changes. Generated JSDoc and the codemap retain their own technical navigation and are reached from documentation.

Regeneration and checks

After editing generator sources:

CODE
npm run docs:functional
npm run update:projects
npm run update:references
npm run update:genealogy

These are existing build commands, also used by npm run htmls. No new navigation command is needed. The functional documentation is gitignored by existing repository policy; a release package can include it to make local browsing immediately complete. Keep that policy unless intentionally changing the documentation delivery strategy.

Check committed pages before regeneration and generated pages afterwards: Tools/Explore/NINA destinations, the primary CTA, footer attribution, current-page markers, and per-tool Help. At narrow widths, verify the Menu toggle, visible lab CTA, panel width and keyboard focus. Without JavaScript, native disclosures still expose all destinations. With JavaScript, only one disclosure stays open; Escape restores focus to its summary, and a second Escape closes the mobile menu.

The HTML copies are the maintained reference. Do not add a script that patches a template before another script renders it. A future contributor or agent should edit each authored copy and regenerate the existing outputs in one change.