fix(demo): guard toFixed on undefined rssiDbm and handle Blob WebSocket data

- Add null-safe optional chaining for embPoints and rssiDbm in diagnostic log
- Handle Blob data in _handleLiveFrame (convert to ArrayBuffer before processing)
- Bump cache busters to v=13

Co-Authored-By: claude-flow <ruv@ruv.net>
This commit is contained in:
ruv 2026-03-12 21:16:29 -04:00
parent 7c1351fd5d
commit e5e3d42ca2
3 changed files with 9 additions and 3 deletions

View file

@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>WiFi-DensePose — Dual-Modal Pose Estimation</title>
<link rel="stylesheet" href="pose-fusion/css/style.css?v=12">
<link rel="stylesheet" href="pose-fusion/css/style.css?v=13">
</head>
<body>
@ -196,6 +196,6 @@
</div><!-- /main-grid -->
<script type="module" src="pose-fusion/js/main.js?v=12"></script>
<script type="module" src="pose-fusion/js/main.js?v=13"></script>
</body>
</html>

View file

@ -267,6 +267,12 @@ export class CsiSimulator {
return;
}
// Handle Blob data (convert to ArrayBuffer and re-process)
if (data instanceof Blob) {
data.arrayBuffer().then(ab => this._handleLiveFrame(ab)).catch(() => {});
return;
}
// Handle binary ArrayBuffer frames (ADR-018 format)
if (!(data instanceof ArrayBuffer)) return;
const view = new DataView(data);

View file

@ -361,7 +361,7 @@ function mainLoop(timestamp) {
// One-time diagnostic
if (!_diagDone) {
_diagDone = true;
console.log(`[PoseFusion] frame 1 OK — mode=${mode}, csi.bufLen=${csiSimulator.amplitudeBuffer.length}, embPts=${embPoints.fused.length}, rssi=${csiSimulator.rssiDbm.toFixed(1)}`);
console.log(`[PoseFusion] frame 1 OK — mode=${mode}, csi.bufLen=${csiSimulator.amplitudeBuffer.length}, embPts=${embPoints?.fused?.length ?? 0}, rssi=${(csiSimulator.rssiDbm ?? -99).toFixed(1)}`);
}
} catch (err) {