From f3a3d694012cea308449a7eeda7d445576c4e523 Mon Sep 17 00:00:00 2001 From: amosblomqvist Date: Mon, 14 Sep 2026 03:23:20 +0300 Subject: [PATCH] Region tints follow the search filter: visible-only edge strokes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit buildRegions filtered everything by visibility except the intra-cluster edge strokes: with a search active, edges between filtered-out nodes were still stroked into the bitmap — which had already shrunk to the visible members — and segments crossing that rect cut diagonal hue streaks from other clusters across the filtered regions. Strokes now require both endpoints visible, same law as the world rect, member discs, and label anchors. The no-double-counting rule survives: a member touched only by a partially-invisible edge gets its disc. --- components/graph-canvas.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/components/graph-canvas.ts b/components/graph-canvas.ts index dfabc38..77cf146 100644 --- a/components/graph-canvas.ts +++ b/components/graph-canvas.ts @@ -1124,6 +1124,11 @@ export class GraphCanvasRenderer { for (const e of data.edges) { if (clusterOf.get(e.from) !== ci) continue; if (clusterOf.get(e.to) !== ci) continue; + // Search filter: stroke only fully-visible edges. Invisible-node + // segments still stroked into the (visible-only) bitmap cut + // diagonal hue streaks across other clusters' regions (user- + // reported 2026-09-14) — rect, discs, and anchors already filter. + if (!isVisible(e.from) || !isVisible(e.to)) continue; const a = this.nodeById.get(e.from); const b = this.nodeById.get(e.to); if (!a || !b) continue;