26 failing → 9. Stale tests from our own recent passes cleaned up. Flaky timing tests quarantined. 3 real regressions identified and flagged (NOT silently quarantined).
The two-spoke redundancy is gone. IDE spoke (the real provenance/snippet feature) is now the Code spoke. Placeholder deleted. 9→8 spokes in the radial.
Provenance parity spec was RED (4 missing minimap targets). Re-ran generate-provenance — manifest went from 11 to 18 entries. Parity spec GREEN. v105 Code Spoke arc opens on a clean baseline.
v104 arc closed. Minimap shipped: snapshot, navigation (click-to-pan/drag-scrub/wheel-zoom), viewport rect (viewportToGraph + shared projection), Y-orientation correct across all 3 files. semver 0.10.0 → 0.11.0.
sigma renders Y↑ (large raw Y = top). All 3 minimap components used no-flip convention → snapshot upside-down, rect inverted, click-to-pan sent camera to garbage coordinates. Fixed with consistent Y-flip + coordinate-space-correct pan delta.
v104.0.3 did land viewportToGraph, but three bugs kept the rect wacky: effect deps caused constant cleanup during settle (clientWidth = 0), Y-axis inversion made rect appear off-screen below the minimap, and getDimensions() needed instead of clientWidth.
Bounds were frozen at the early origin frame because afterRender only triggered on node count changes — not position changes (gwells uses setNodeAttribute("x"/"y")). Added delta-stability detection to drive recompute during settle then stop.
All 3 viewport rect bugs (inverted Y, off-center, zoom-doesn't-resize) traced to one root cause: cam.ratio was in Sigma's normalized space, not attribute space. Rewritten to use sigma.viewportToGraph on viewport corners.
Two bugs fixed. Minimap now shows the real graph (sigma readiness poll + afterRender count-change detection). Stale fixed-position inspector label removed from ThemeTargetInspectorOverlay — the status bar pill is the only one now.
Fills the useMinimapNavigation stub from v104.0.0. Click centers the camera on the clicked graph region (eased); drag scrubs instantly; wheel zooms. Viewport rect auto-tracks via afterRender. Snapshot doesn't redraw on camera moves.
Ports the designed minimap prototype into src/. Non-interactive render layer (snapshot canvas, viewport rect, drag shell, opacity slider). Navigation ships in v104.0.1. Stale schema version in design doc corrected (88→89 → 89→90).
v103 arc closed. Graph theming (.0.x) + tile docking (.1.x) complete. package.json bumped 0.9.0 → 0.10.0. NOW.md reconciled to reality. Next arc: v104 Minimap.
Applied the graph-rainbow lesson to tiles. Nine hardcoded rgba/hex literals across tile selectors replaced with --lw tokens; .tile-body given color+font baseline so content inherits themed text instead of bland browser defaults.
The docking engine was built correctly in v103.1.0 but had never run: it expects anchor.slot + mode:"docked", but all registry entries used anchor.offset and stored tiles had mode:undefined. Pure data/registry migration — no engine changes. Canvas tiles now dock.
Three UX fixes: (1) popover buried under tiles fixed (z-index 200→10100), (2) ⠿/⤴ unicode handles replaced with GripVertical (lucide), (3) broken anchor menu replaced with clean RotateCcw return-to-dock button.