v0.166.0: mobile nav off-canvas drawer + sidebar cleanup + versioned logo/favicon URLs
Mobile nav was broken — the <=768px block predated the v0.146.0 accordion and
flattened .nav-links into a horizontal overflow-x strip, clipping the accordion's
nested sub-lists. Replaced with a sticky top bar + off-canvas left drawer that
reuses the vertical sidebar (accordion untouched), plus a no-js static fallback.
Removed the sidebar customer-name span (kept on login). Added ?v={{.Version}}
cache-bust to logo/favicon URLs (Cloudflare 4h edge-cache; 0.126.1 failure mode).
Part 4 (outlined-logo constant swap) gated out per §3a: live felhom.eu main still
serves a logo.svg with live <text>/font-family; constants unchanged.
5 new tests via the real layout/CSS render; nav_accordion invariants unchanged.
This commit is contained in:
@@ -1,5 +1,52 @@
|
||||
## Changelog
|
||||
|
||||
### v0.166.0 — Mobile nav drawer + sidebar cleanup + versioned logo/favicon URLs (2026-07-24)
|
||||
|
||||
No agent coupling; MinAgent unchanged. Templates (layout/login/icons) + CSS + one login-handler data
|
||||
key + tests only — no backend logic, no routes, no settings, no dependency changes. Desktop (>768px)
|
||||
is unchanged.
|
||||
|
||||
**Mobile navigation rework (Option A — off-canvas drawer).** The `@media(max-width:768px)` block
|
||||
predated the v0.146.0 accordion: it flattened `.nav-links` into a horizontal `overflow-x` strip, and
|
||||
because the accordion's nested sub-lists share the `.nav-links` class, sub-items laid out horizontally
|
||||
inside an `overflow:hidden` grid row — everything past the first sub-item was clipped. The strip is
|
||||
**deleted** (not patched — Option C was rejected) and replaced by:
|
||||
|
||||
- a sticky **top bar** (`.mobile-topbar`, logo → `/`, single hamburger `.nav-burger` with
|
||||
`aria-expanded`/`aria-controls="sidebar"`, new `#i-menu` icon);
|
||||
- the existing vertical sidebar reused as an **off-canvas left drawer** (`.js .sidebar`,
|
||||
`transform:translateX(-100%)`→`is-open`), a `.nav-backdrop`, body scroll-lock (`body.nav-open`);
|
||||
drawer JS toggles on burger, closes on backdrop click or Escape. **The accordion handler is
|
||||
untouched** — it works identically inside the drawer (all sub-items stack vertically, nothing clipped).
|
||||
- a **no-JS fallback**: `<html class="no-js">` (swapped to `js` by an early head script); when JS is
|
||||
off the sidebar renders static inline above the content and the burger is hidden, so no destination
|
||||
dead-ends.
|
||||
- z-index ladder: top bar 800 < backdrop 900 < drawer 950 < `.modal-overlay` 1000 (modals stay on top);
|
||||
`height:100dvh`; drawer transition disabled under `prefers-reduced-motion`.
|
||||
|
||||
**Sidebar customer-name removed.** The `<span class="customer-name">` and its dead CSS rule are gone
|
||||
from the sidebar header (logo only). `{{.CustomerName}}` stays in base data and on the **login page**
|
||||
subtitle (identifies the box owner).
|
||||
|
||||
**Cache-bust on logo/favicon.** `/static/felhom-logo.svg` and `/static/favicon.svg` now carry
|
||||
`?v={{.Version}}` (sidebar logo, head favicon, login logo) — Cloudflare edge-caches `/static/*` for 4h,
|
||||
so unversioned asset URLs kept serving the previous release's copy after a deploy (the 0.126.1 CSS
|
||||
failure mode). `renderLogin` now passes `Version`.
|
||||
|
||||
**Part 4 (outlined-logo swap) GATED OUT — not shipped.** The §3a precondition failed: live felhom.eu
|
||||
`main` (`be9edb44`) still serves a `website/assets/logo.svg` with live `<text>`/`font-family` (the
|
||||
text-outlined master is Viktor's manual Inkscape push, still pending). The `FelhomLogoSVG` /
|
||||
`FelhomFaviconSVG` constants are therefore **unchanged** and still contain live `<text>` — the wordmark
|
||||
renders in a fallback font under `<img>` secure static mode until the outlined asset lands and Part 4
|
||||
ships. Only the `?v=` cache-bust portion of the logo work is in this release.
|
||||
|
||||
- Tests (5 new, all through the real layout/CSS): topbar+drawer markup, CSS strip-removed/drawer-present
|
||||
(scoped to the 768px block), sidebar-no-customer-name, login-customer-name-kept, versioned asset URLs.
|
||||
RED-proofs recorded pre-change (strip present, no drawer, customer-name present, no `?v=`, and the
|
||||
gated logo-constant proof). `nav_accordion_test.go` invariants pass unchanged. Focus-trap on the
|
||||
drawer deliberately omitted (page navigations reset state). Android drawer feel + desktop
|
||||
pixel-parity are Viktor's visual acceptance step.
|
||||
|
||||
### v0.165.1 — Native "Megosztás…" button in the share modal (Web Share API) (2026-07-24)
|
||||
|
||||
No agent coupling; MinAgent unchanged. Template JS + tests only — no backend, no routes, no
|
||||
|
||||
Reference in New Issue
Block a user