mirror of
https://github.com/Kpa-clawbot/meshcore-analyzer.git
synced 2026-07-04 05:12:04 +00:00
268751ff56
## Summary Animations on the live map (packet pulses, hop-to-hop trails, drawAnimatedLine, pulseNode rings, matrix chars) render BEHIND the node base layer — community-confirmed by @EldoonNemar in #1485 after pulling latest and rebuilding. The live map looks completely static because every node marker paints on top of moving packets. Closes #1485 ## Root cause PR #1334 ("role-aware marker shapes + outline-ring highlight") swapped node markers: - **Before:** `L.circleMarker([n.lat, n.lon], {...})` — rendered into the default Leaflet `overlayPane` (z=400) alongside other vector shapes. - **After:** `L.marker([n.lat, n.lon], { icon: L.divIcon({...}) })` — rendered into the default Leaflet `markerPane` (z=600). `animLayer` and `pathsLayer` (built from `L.polyline` / `L.circleMarker` shapes) still default to `overlayPane` @ 400. With nodes now in pane 600, every node marker occluded every animation. CDP confirmed pre-fix: ``` overlayPane z=400 (animations live here) ← 2 children markerPane z=600 (nodes live here) ← 516 children ← occludes ``` ## Fix Create a custom Leaflet pane `liveAnimPane` at `z-index: 650` (strictly above markerPane) and pin both `animLayer` and `pathsLayer` to it via the `{ pane: 'liveAnimPane' }` option on `L.layerGroup`. Polylines + circleMarkers added to those groups inherit the pane from their parent, so all `drawAnimatedLine` / `pulseNode` / `animatePath` / matrix-char shapes now paint above markers. `pointerEvents: 'none'` on the pane so it does not steal hover/click events from the markerPane beneath (`clickablePathsLayer` keeps the default overlayPane and continues to handle path clicks). Diff is +14 / -2 in `public/live.js`. No CSS changes, no API changes, no protocol changes. ## TDD Red commit (`b7ca794f`): test asserts on `public/live.js` source — 1. `map.createPane('liveAnimPane')` is called in init 2. that pane is assigned `style.zIndex` ≥ 650 (strictly above markerPane @ 600) 3. `animLayer` AND `pathsLayer` are constructed with `{ pane: 'liveAnimPane' }` 4. (sanity) animLayer still hosts ≥3 animation shapes, pathsLayer ≥3 trail shapes — regression detector if someone moves circles to the default pane. CI must fail on `b7ca794f` (RED). Fix lands in `627ce341` (GREEN). Test reruns 5× clean — non-flaky (source invariants). ## Browser verified Local headless chromium (CDP) against `http://analyzer-stg.00id.net/#/live`: - **Before fix:** overlayPane z=400 (2 anim children), markerPane z=600 (516 marker children) — animations buried. - **After hot-deploy:** liveAnimPane z=650 above markerPane z=600 — animations visible on top. Will attach screenshot post-merge once staging redeploys. E2E assertion added: `test-issue-1485-live-anim-z.js:54` (`liveAnimPane z-index >= 650`). ## Test wiring `test-all.sh` line 51 added; CI runs the new test alongside the existing 1418/1420/1438/1470 suite. ## Credit Reported by @EldoonNemar in #1485 — pulled via git, built the docker image, noticed the regression same day. Bug-report quality was excellent (concise repro: "live map now shows the animated packets behind the node base layer so you can't actually see the nodes moving"). --------- Co-authored-by: mc-bot <bot@meshcore.local>
59 lines
2.1 KiB
Bash
Executable File
59 lines
2.1 KiB
Bash
Executable File
#!/bin/sh
|
|
# Run all tests with coverage
|
|
set -e
|
|
|
|
echo "═══════════════════════════════════════"
|
|
echo " CoreScope — Test Suite"
|
|
echo "═══════════════════════════════════════"
|
|
echo ""
|
|
|
|
# Unit tests (deterministic, fast)
|
|
echo "── Unit Tests ──"
|
|
node test-packet-filter.js
|
|
node test-packet-filter-ux.js
|
|
node test-aging.js
|
|
node test-issue-1065-gesture-hints-gates.js
|
|
node test-frontend-helpers.js
|
|
node test-url-state.js
|
|
node test-perf-go-runtime.js
|
|
node test-channel-psk-ux.js
|
|
node test-channel-sidebar-layout.js
|
|
node test-channel-fluid-layout.js
|
|
node test-channel-modal-ux.js
|
|
node test-channel-decrypt-insecure-context.js
|
|
node test-channel-qr.js
|
|
node test-channel-qr-wiring.js
|
|
node test-channel-issue-1087.js
|
|
node test-issue-1409-no-encrypted-flood.js
|
|
node test-analytics-channels-integration.js
|
|
node test-observers-headings.js
|
|
node test-marker-outline-weight.js
|
|
node test-traces.js
|
|
|
|
# #1418 — route-view v2 (Tufte) coverage
|
|
node test-issue-1418-raw-hex-extraction.js
|
|
node test-issue-1418-edge-weights.js
|
|
node test-issue-1418-cb-preset-ramp.js
|
|
node test-issue-1418-spider-fan.js
|
|
node test-issue-1418-deeplink-hops-channels.js
|
|
node test-issue-1418-polish-review.js
|
|
node test-issue-1420-tile-providers.js
|
|
node test-issue-1438-marker-css-vars.js
|
|
node test-issue-1438-customizer-mcrole.js
|
|
node test-issue-1446-cb-preset-cascade.js
|
|
node test-issue-1450-logo-aspect.js
|
|
node test-issue-1454-channels-toggle.js
|
|
node test-issue-1456-score-labels.js
|
|
|
|
# #1461 mobile UX overhaul + #1470 node-detail tile helper (#1468 covered by E2E)
|
|
node test-issue-1461-mobile-page-actions.js
|
|
node test-issue-1470-node-tile-helper.js
|
|
node test-issue-1485-live-anim-z.js
|
|
node test-issue-1473-reserved-prefixes.js
|
|
node test-issue-1473-prefix-generator.js
|
|
|
|
echo ""
|
|
echo "═══════════════════════════════════════"
|
|
echo " All tests passed"
|
|
echo "═══════════════════════════════════════"
|