64682a900f
The "Decodes by type" statistics panel only showed AIS because statsRecordDecode was only called from dispatchDecodeMessage, which was bypassed by two code paths: 1. dispatchDecodeBatch: uniform-type batches dispatched to specialized batch handlers (onServerFt8Batch, etc.) returned early without recording stats. 2. restoreDecodeHistoryGroup: history messages restored on page load were never recorded in the statistics log. Fix both paths by recording stats up-front in dispatchDecodeBatch before dispatching to batch handlers, and in restoreDecodeHistoryGroup before restoring to plugin views. Add a skipStats parameter to dispatchDecodeMessage to prevent double-counting when the fallback per-message loop runs inside dispatchDecodeBatch. Also accept an optional timestamp in statsRecordDecode so history entries use their original ts_ms rather than Date.now(). https://claude.ai/code/session_01Ss2AD2bQgXu1ir1Z1WE3VY Signed-off-by: Claude <noreply@anthropic.com>