# CoreScope v3.9.2 **Upgrade urgency: Recommended.** Big batch of operator-felt wins. ## Highlights ### Accessibility (#1668 — M2/M3/M4/M5 merged; M6 in flight) - Two-tier CSS palette with semantic tokens (`--palette-*` → `--color-*`/`--text-*`); operators can now hot-swap theme palettes - WCAG AA color-contrast hits across all 22 audited routes — **443 baseline violations → 0** verified by the new axe CI gate (#1696) - Typography pass: 14px body / 12px+500 chip floor across the entire chrome (#1679) - Hash-cell analytics palette, badge contrast, /live VCR controls (#1681) - Audio-lab BPM + Volume sliders now have aria-labels ### MQTT observability - Per-source MQTT status endpoint + Observers panel (#1682) — connected/disconnected/last-packet/error counters per broker - Mobile-friendly: cards at ≤640px instead of squished table (#1698) ### Cold-load + analytics correctness - **Packet-store cold-load actually loads the database now (#1691).** Pre-fix: after restart, only 0.3% of DB rows were loaded into RAM, dashboards looked empty for hours. Root cause: hot-load filtered by `first_seen` (immutable per hash) instead of effective recency. New `transmissions.last_seen` denormalized column + writer-side update fixes this end-to-end. - Analytics endpoint returns 503 Retry-After during warm-up (#1688) — operators no longer see post-restart partial slices - Warm-up banner surfaces backfill state in the UI (#1683) ### Firmware 1.16 sync - Server-side decoder parity for extended ACK payloads (#1695) - Customizer toggle to hide 1-byte path hops (collide ~8-way at 2k nodes) — #1689 ### Performance - `/packets` init parallelizes loadObservers + loadPackets (#1693) — first-row time dropped from 25-40s to <5s on slow links - Confidence rating weighted by hash mode (#1687) — 1-byte sightings carry less weight than 6-byte ### CI / operability - OpenAPI completeness gate (#1678 Phase 1) - Release fast-path: re-tag :edge → :vX.Y.Z when SHA matches (#1680) — most patch releases now skip the 30min full pipeline rerun - Staging disk monitor + cleanup cron (#1686) - Slideover E2E flake-gate reduced 20× → 3×, root cause fixed in #1693 ## Container image `ghcr.io/kpa-clawbot/corescope:v3.9.2` (multi-arch: amd64, arm64) ## Verification - 22 routes × 2 themes × 2 viewports automated a11y gate (axe-core, #1696) - All 19 PRs ran through the full polish chain (parallel reviewers + Kent Beck TDD gate) - Cold-load fix verified by `transmissions.last_seen` test fixture (#1691) ## Operator upgrade (MikroTik) ``` /container add remote-image=ghcr.io/kpa-clawbot/corescope:v3.9.2 envlist=cs-env mounts=cs-data,cs-caddyfile interface=veth-corescope start-on-boot=yes name=corescope-prod-v392 ``` ## Acknowledgements External contributors carry over from v3.9.1.