v2.5.0 "Digital Rain"
Wake up, Neo... the mesh has you.
Three new visualization modes transform the live map into a cyberpunk packet observatory.
🟢 Matrix Mode
Toggle Matrix to shift the entire map into a green phosphor CRT aesthetic:
- Map tiles desaturated and re-tinted green via CSS filter chain
- CRT scanline overlay with subtle flicker
- All node markers dim to dark green
- UI panels, controls, and feed go green-on-black monospace
- Forces dark mode while active; restores your theme on toggle off
- Automatically disables heat map (incompatible combo)
🟢 Matrix Hex Flight
With Matrix enabled, packet animations show actual hex bytes from the raw packet data flowing between nodes:
- Real
raw_hexbytes, not generated — what you see is what was on the wire - White leading byte with triple-layer green neon glow
- Trailing bytes fade from bright to dim, shrinking with distance
- Scrolls through the entire packet payload as it travels each hop
- 60fps via
requestAnimationFrame, 1.1s per hop, 300ms fade-out
🟢 Matrix Rain
A separate Rain toggle adds falling hex columns across the screen:
- Each packet spawns a column of its raw hex bytes falling from the top
- Fall distance = hop count — 4+ hops reach the bottom (5 second fall); 1-hop barely drops
- More observations = more rain — each observer spawns its own column, staggered 150ms apart with ±1 hop variation
- All bytes shown — a 40-byte packet displays all 40 bytes trailing behind the leading character
- Canvas-rendered at 60fps — handles hundreds of simultaneous drops with zero DOM overhead
- Works standalone or combined with Matrix mode for the full effect
🐛 Fixes
- Animation null-guard for stale
setIntervalcallbacks after navigation - WS broadcast null packet on deduplicated observations
- Pause button crash killing WS handler
- Replay button now includes raw hex for rain support
47 commits. 0 fake bytes.