Public production record · 23 July 2026

One menu,
generated everywhere

How a missing mobile link exposed copied navigation and led to a deterministic shared header.

What the interface revealed

The Journal link no longer fit in the mobile header. Adding a burger menu solved the visible overflow, but the first implementation exposed a deeper problem: the same navigation structure existed in several static HTML pages and could drift between routes and languages.

The goal became larger than fitting one more link. Every page needed to receive the same language-specific header from one reproducible source.

Failure · Initial responsive behavior

A menu that appeared only after resize

The first burger used a native <details> element. On desktop its <summary> was hidden while the element remained closed, so the browser also hid the navigation on initial load. A resize appeared to repair it only because responsive state was recalculated.

The correction made desktop navigation explicitly visible while preserving the closed burger behavior on mobile, without requiring JavaScript.

Human review · Structural correction

The pages still did not share one menu

Review then found page-specific links and inconsistent labels: the homepage and journal pages did not expose the same destinations. The correction was explicit: the header should be generated and identical for every page in a language.

The final shared navigation contains The story, Journal, the language switcher, and Public source. Page-specific anchors do not belong in the global header.

Implementation · Deterministic export

From copied HTML to a small page compiler

site/build.py now discovers paired HTML source artifacts and includes them in one fixed order: head → header/menu → content → footer. Page routes come from the content directory. English and Greek pages are exported as static HTML and remain committed so the exact deployable result is visible in review.

python3 site/build.py --check rejects hand-edited or stale generated pages. The runtime site remains dependency-free; determinism is enforced at build time.

  • One shared responsive header and navigation component.
  • Paired bilingual HTML sources whose paths define their routes.
  • Accessible native burger behavior with desktop-first-load correctness.
  • Byte-identical output for unchanged inputs.

State · Public implementation record

What is actually complete

The compiler, shared menu, generated pages, and this bilingual record were prepared in draft pull request #6. At the time of this record, the pull request is open and not merged; that is not the same as being deployed or verified live.

Previous journal entry: From the assembly to the horizon.