From 874596818685794ad06efcf5db115acaf938da68 Mon Sep 17 00:00:00 2001 From: Morgan Lunt Date: Mon, 8 Jun 2026 15:03:49 -0700 Subject: [PATCH] code-modernization: harden topology viewer and template injection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes from an adversarial review of the new viewer: - pin d3 to 7.9.0 and load it via dynamic import with an explicit error panel when the CDN is unreachable (previously a blocked CDN produced a silent dark page — a real concern for restricted networks) - coerce ids/names/loc at intake: a single missing name or non-numeric loc previously threw inside the render loop or propagated NaN through the pack layout, blanking the canvas with no error - normalize flows/steps/edges defensively (null entries, missing steps, numeric ids vs string lookups) - mirror the level-of-detail reveal rule in the hit test so clicks can't select nodes that aren't drawn - scope the Escape shortcut so clearing the search box doesn't reset the viewport; set zoom clickDistance(4) so trackpad jitter doesn't swallow selection clicks - round canvas backing-store size (fractional devicePixelRatio caused a reallocation every frame on 125%/150% display scaling) - modernize-map: use braced ${CLAUDE_PLUGIN_ROOT} so substitution actually happens, assert the injection marker exists in the template, and correct the documented failure mode --- .../assets/topology-viewer.html | 69 +++++++++++++++---- .../commands/modernize-map.md | 18 +++-- 2 files changed, 65 insertions(+), 22 deletions(-) diff --git a/plugins/code-modernization/assets/topology-viewer.html b/plugins/code-modernization/assets/topology-viewer.html index 4a71bf18..0d78f86c 100644 --- a/plugins/code-modernization/assets/topology-viewer.html +++ b/plugins/code-modernization/assets/topology-viewer.html @@ -92,14 +92,32 @@ Re-run /modernize-map to regenerate it.