From e157826364aa30e44fb697ee621f6513116f631a Mon Sep 17 00:00:00 2001 From: Jack Kingsman Date: Mon, 16 Feb 2026 16:16:44 -0800 Subject: [PATCH] Actually clean up node labels on clear --- frontend/src/components/PacketVisualizer3D.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/PacketVisualizer3D.tsx b/frontend/src/components/PacketVisualizer3D.tsx index 1b2362e..f571a7b 100644 --- a/frontend/src/components/PacketVisualizer3D.tsx +++ b/frontend/src/components/PacketVisualizer3D.tsx @@ -1045,10 +1045,11 @@ export function PacketVisualizer3D({ if (cssRenderer.domElement.parentNode) { cssRenderer.domElement.parentNode.removeChild(cssRenderer.domElement); } - // Clean up node meshes + // Clean up node meshes and their CSS2D label DOM elements for (const nd of nodeMeshesRef.current.values()) { + nd.mesh.remove(nd.label); + nd.labelDiv.remove(); scene.remove(nd.mesh); - scene.remove(nd.label); nd.mesh.geometry.dispose(); (nd.mesh.material as THREE.Material).dispose(); } @@ -1214,6 +1215,8 @@ export function PacketVisualizer3D({ for (const [id, nd] of nodeMeshesRef.current) { if (!currentNodeIds.has(id)) { + nd.mesh.remove(nd.label); + nd.labelDiv.remove(); scene.remove(nd.mesh); nd.mesh.geometry.dispose(); (nd.mesh.material as THREE.Material).dispose();