# RCWeb Room Info App

The **RCWeb Room Info App** (`app/info`) is a diagnostic network tool. It acts as a visual systems debugger probing the real-time latency and hardware specs of every single participant connected within an active RCWeb room.

![icon](pwa-512x512.png "Info App Icon")

## Screenshot
![screenshot](screenshot.png "Info App")

## What it does

- **Passive Ecosystem Scanning**: Automatically reaches out into the WebSocket mesh broadcasting global payload arrays, forcing every connected app across the infrastructure to involuntarily relay detailed system metrics (hardware platform, browser language, timezone) back to its dashboard. 
- **Live Latency Graphing**: Instantiates a 60fps scrolling HTML5 Canvas line-chart utilizing the `SmoothieChart` library to visually render the raw sub-millisecond network heartbeat of all connecting peer devices on a persistent grid.
- **Active Node Eviction**: Polls connected device pings (`broadcastPing()`); if any device stops answering the handshake protocol within strict deadlines (`CLIENT_TIMEOUT_MS = 5000`), it forcefully evicts its DOM tree readouts and chart-lines from memory visually denoting it has uncoupled. 

## How it works

It represents an elegant payload execution script taking extreme advantage of the `rc.send()` wildcards.

- **Wildcard JS Pinging**: The `broadcastHello("*")` function doesn't broadcast strings; it broadcasts an entire chunk of raw, active Javascript syntax explicitly instructing the receiver's `comms.js` proxy to execute an `eval()` on variables mapping `navigator.userAgentData.platform` and `window.innerWidth`.
- **Peer Instantiation logic**: The core engine manages a localized `peers` object dictionary indexing dynamically generated clients by UUID. It dynamically injects, modifies, and destroys nested DOM metric cards updating `peer.latestLatency` flags seamlessly. 
- **Time Synchronized Deltas**: Every half second (`POLL_INTERVAL_MS`), it forces all active browsers in the room to bounce a `Date.now()` timestamp directly back to itself, allowing it to mathematically derive exactly how long the packet took to traverse the web-socket server array and build its visual graph.
