mirror of
https://github.com/Kpa-clawbot/meshcore-analyzer.git
synced 2026-05-11 05:06:55 +00:00
bf68a99acf
Fixes #1105. Polish follow-ups from #1104's independent review (https://github.com/Kpa-clawbot/CoreScope/pull/1104#issuecomment-4381850096). All 9 MINORs addressed. ## Hardening (`public/app.js`, commitfa58cb6) 1. **`GUTTER = 24` magic constant** → live `getComputedStyle(navLeft).columnGap` read. The "matches `--space-lg`" assertion now lives in CSS, not a stale JS literal. 2. **`fits()` conflated two distinct gaps** → reads `.nav-left`'s gap (between brand/links/more/right cells) and `.nav-links`'s gap (between link items) separately. Today both are `--space-lg=24px`, but a future divergence won't silently miscompute fit. 3. **Implicit 1101px media-query flip dependency** → comment added explaining that `.nav-stats` toggles `display:none ↔ flex` at the boundary, and the rAF-debounced resize handler runs *after* the layout flip so `navRightEl.scrollWidth` reflects the post-flip value. 4. **Outer null-guard widened** → now also covers `linksContainer`, `navRightEl`, `navLeft`, `navTop`. Belt-and-braces. 5. **Cloned link listener parity** → More-menu clones now also get `closeNav()` in addition to `closeMoreMenu()`, matching the listener inline links get at hamburger init. Clicks from the More menu now collapse the hamburger panel just like inline link clicks. 6. **`overflowQueue` ordering** → comment added documenting the `data-priority="high"` signal + reverse construction; explicit numeric-priority migration path noted. 7. **`moreW` hard-coded `70` fallback** → now caches the live measured width the first time the More button is rendered visible; `MORE_BTN_RESERVE_PX = 70` only used as the conservative initial guess until that capture happens. ## Tests (`test-nav-priority-1102-e2e.js`, commit5e9872c) 8. **Identity, not cardinality** (MINOR 7): at 1080/800px the test asserts the visible set is EXACTLY `[#/home, #/packets, #/map, #/live, #/nodes]`. A buggy queue that hid Home and showed Lab would still pass `visibleCount >= 5` — that's no longer enough. 9. **Active-mirroring** (MINOR 9): new case navigates to `#/observers` at 1080px (a route whose link overflows into the More menu) and asserts the inline link is overflowed, the More-menu clone has `.active`, and `#navMoreBtn` has `.active`. Exercises `rebuildMoreMenu`'s active-mirroring path, which depends on `applyNavPriority` running on `hashchange` after the route handler. 10. **CI hookup** (MINOR 8): `deploy.yml` now runs `test-nav-priority-1102-e2e.js` with `CHROMIUM_REQUIRE=1`, so a Chromium provisioning regression fails the build instead of silently SKIPing (matching the existing `test-nav-fluid-1055-e2e.js` invocation). ## Why no red-then-green Per AGENTS.md TDD section: hardening commit is a pure code-quality/null-guard refactor — existing tests stay green and unaltered (the loose `visibleCount >=` assertions still pass against the new code). Test-improvement commit tightens assertions for behaviour that already works (high-priority pinning, active-mirroring); there's no production change to gate. Both branches of "exempt from red→green" are documented in the commit messages. ## E2E / browser validation Test runs against the Go server fixture (`-port 13581 -db test-fixtures/e2e-fixture.db`). All 5 cases (4 viewport cases + new active-mirror case) expected to pass; CI will run them with `CHROMIUM_REQUIRE=1` so any Chromium provisioning regression hard-fails. --------- Co-authored-by: openclaw-bot <bot@openclaw.local>