Fixes two compounding bugs: tileOut was creating malformed tiles (no mode/anchor/visible), and graph-sources/graph-inspector were permanently stuck because they were added to the registry after the one-time bootstrap ran. Single creation helper + per-load reconcile fixes both.
Resizing a grouped tile left neighboring tiles static (gap/overlap). Fixed by re-snapping neighbors to the resized tile's new edges on release. The reflow is INVERTED from drag — the resized tile is the anchor; neighbors move to it.
Three interaction bugs silently missed by appearance-only smoke. All traced to precise lines and fixed with minimal scope. The acceptance gate is interaction smoke, not render.
The visible fix. All tile x/y reads now go through resolvedTilesArray so docked tiles use viewport-relative coords and floating/legacy tiles are clamped into bounds. Stranded tiles (x:3092 from ultrawide sessions) are pulled into view on next render without migration.
Builds the type schema and position math for a docked/floating tile model that fixes the off-viewport bug at its root. Docked tiles derive position from anchor+slot+live viewport (cannot strand). Floating tiles clamp persisted x/y on load/resize. Resolution layer is isolated — nothing rendered yet.
Fixes over-failing of accent contrast. Accent is a UI/non-text color (WCAG 1.4.11, 3:1 bar) — it was being judged at the text criterion (1.4.3, 4.5 bar). Adds nonText option to computeWCAGResult and per-criterion aggregation, correcting void-circuit and agartha-dream from partial/AA to AAA.
Safety-critical governance fix. The theme-card WCAG badge was computing a single flattering pair (textPrimary/bg — always AAA), while the top-bar StatusPill reads getAccessibilityProfile (4 pairs, honest multi-pair aggregate). Card now reads the same source as the top bar; they cannot drift.
Adds useEffect([resolvedTokens]) following the active-mutate pattern. Re-applies style policy in-place on theme change — clustered nodes keep absolute color (D2), edges/no-cluster pick up new theme defaults. All 4 v103 graph theming disconnects now resolved.
Replaces the hardcoded rgba(100,130,180,0.55) edge color literal with themeTokens.graph.edgeDefault (per-theme: solar=blue, obsidian=purple, midnight=amber, void=pink). Pre-flight trace revealed the style layer was already theme-derived; this fixes build-time to match.
Wires the v103.0.1 resolver into buildGraphologyGraph. Replaces colorSuggestionEngine.pick("node-primary") — the arbitrary rotation that produced rainbow noise — with resolveClusterColor. Nodes are now colored by cluster/domain identity. raw.color set at build time per the ownership contract.
Builds the cluster-color resolution layer in isolation. loadClusterColors() reads cluster-colors.json via direct Vite import (single source of truth). resolveClusterColor() returns the cluster's absolute hex or null. Four Playwright unit tests verify the resolver before any render depends on it.
Design-only arc opener. Re-derives and authors the GRAPH_COLOR_OWNERSHIP.md contract from real code (previously absent from the tree). Locks four design decisions (D1-D4) for the cluster-color mapping system. No code — establishes the foundation for v103.0.1+ which wire the resolver.
Safety-critical fix replacing the hand-rolled WCAG impl with culori. Three defects eliminated: parse-to-black, wrong alpha math, AA-large as a normal-text level. All 3 callers reconciled; 6-pair reference table verified.
Fixes Browse card palette strip to show theme identity colors (accent/bg/surface/text/border) instead of graph node-differentiation colors. Adds a per-card WCAG contrast badge (textPrimary-on-bg, level-colored AAA/AA/warn/fail).
Updated .gitignore to exclude blog-bumper/ (sibling package) and tsconfig.tsbuildinfo (build artifact); configured next.config.mjs to pin outputFileTracingRoot and experimental.turbo.root to __dirname, preventing Next from inferring workspace root from stray lockfiles in ancestor directories.
Removed The System flow-diagram section from main page; reorganized navbar (Features removed, Labs dropdown added with Testing+Research); repositioned hero graph to pentagon layout with bright neon labels, dark strokes, always-on glow, and glitch hover.
Complete /blog reimplementation with Velite collection, dual-channel architecture (workshop essays, personal off-air), static post pages, client-side filtering, real CURRENTLY widget integration, mobile-responsive layout, and dev-log breadcrumbs.
Upgrades Browse cards from flat gradient swatches to themed SVG graph thumbnails + palette chip rows, sourced from real runtime tokens. Grid widens to 2-3 columns. Active sub-nav tab gains a 2px accent underline.
The site now surfaces blog.bumper as a released module with a refreshed module page, opens up the blog and dev-log navigation, and rounds out the socials — the tool that writes these posts finally has its own spot.
Adds the missing CSS for v102.0.0's CategoryTheme, which shipped with correct logic but no stylesheet. Fixes Browse card grid, sub-nav tabs, Active token inspector, and stub placeholder — all using existing SettingsPanel.css token vocabulary.