Files
Understand-Anything/understand-anything-plugin
Lum1104andClaude Opus 4.7 4b86c696a5 fix(dashboard): tour navigation glitches across layers
Four related issues that surfaced while walking the Learn-mode tour
through a multi-layer project (microservices-demo):

1. Tour auto-expand never released. The tour effect that expands
   highlighted nodes' containers had no corresponding collapse when the
   step changed, so containers accumulated open as the user advanced.
   Track the set of containers we expanded and release any not needed
   by the current step; user-toggled containers are never tracked here,
   so they're never auto-collapsed.

2. Manual container toggle yanked off-screen. Stage 2 reflow shifted
   the just-clicked container away from the cursor. `toggleContainer`
   now records `pendingFocusContainer` on expand; GraphView locks the
   viewport onto that container's centre with the current zoom so it
   appears to expand in place.

3. Tour fitView fired before highlighted children existed. A single
   RAF after `tourHighlightedNodeIds` change wasn't enough — child
   nodes only appear once Stage 2 layout writes
   `containerLayoutCache`, and React Flow only knows their absolute
   position after a measure pass. `useNodes()` doesn't fire on
   measure completion, so we poll `getInternalNode().measured` each
   frame (up to ~4s) and call `fitView({ nodes })` once every
   highlight is measured, with `maxZoom: 1.2 / minZoom: 0.4`. While
   waiting, a new `tourFitPending` flag drives a "Locating tour
   highlight…" overlay so the user knows the layout is still settling.

4. Cross-layer tour transitions reused stale Stage 2 cache. Container
   ids derive from per-layer state (folder names in folder strategy,
   `container:cluster-N` in community strategy) and collide across
   layers — API Contracts and Load Testing both produce
   `container:cluster-0`. `setTourStep` / `nextTourStep` /
   `prevTourStep` / `startTour` didn't reset the container caches the
   way `drillIntoLayer` does, so when tour crossed a layer the new
   layer's expanded containers hit the previous layer's cache, Stage 2
   skipped its rerun, and children never showed. Extracted
   `layerResetIfChanged` and applied it in all four tour actions.

Verified end-to-end against microservices-demo via headless Chrome:
all 15 tour steps now expand the right container(s), zoom onto the
referenced files, and collapse the previous step's auto-expansions.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 19:06:39 +08:00
..
2026-05-03 18:16:02 +08:00
2026-05-03 18:16:02 +08:00