bitmosh.dev/Blog/Dev Log/2026-06-02
v103.1.4lumaweave

Unified well-formed tile creation + reconcile missing default-visible tiles

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.

v103.1.3lumaweave

Group neighbors reflow flush on resize release — resized tile anchors, neighbors close gap

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.

v103.1.2lumaweave

Tile state consistency — close=hide, popover toggle fixed, group-reconcile, drag-flip seeds resolved position

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.

v103.1.1lumaweave

Wire resolveLivePosition into render + snap/group + resize — tiles no longer strand off-viewport

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.

v103.1.0lumaweave

Tile docking schema + resolution layer — docked/floating model, viewport-relative, 9 unit tests, unwired

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.

v103.0.5blumaweave

Accent uses WCAG 1.4.11 non-text criterion (3:1); per-criterion aggregation

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.

v103.0.5lumaweave

WCAG badge reads single source of truth — card and top bar now agree

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.

v103.0.4lumaweave

Live recolor on theme change — no rebuild, cluster colors stay absolute, all 4 disconnects fixed

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.

v103.0.3lumaweave

Edges from theme edgeDefault — remove hardcoded literal

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.

v103.0.2lumaweave

Node color from cluster resolver — fixes the rainbow, raw.color per ownership contract

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.

v103.0.1lumaweave

Cluster-color resolver — loadClusterColors + resolveClusterColor (semantic mode), unit-tested, unwired

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.

v103.0.0lumaweave

v103 Graph Theming arc opener — color ownership contract + locked design decisions

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.

v102.0.4lumaweave

WCAG contrast correct-by-construction — culori parsing, no silent-black, text-size-aware levels, verified

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.

v102.0.3lumaweave

Theme card identity palette + WCAG contrast badge

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).

v1.0.3bitmosh-website

Gitignore blog-bumper + tsconfig.tsbuildinfo; pin workspace root to silence lockfile warning

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.

v1.0.2bitmosh-website

Remove The System section; navbar reorg + Labs dropdown; pentagon hero graph with legible neon labels

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.

v1.0.1bitmosh-website

DATAMOSH blog system — landing, workshop + personal channels, post pages, filters, CURRENTLY widget, mobile responsive

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.

v102.0.2lumaweave

Browse card polish — themed graph thumbnail, 5-chip palette strip, wider grid, stronger sub-nav

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.

v1.0.0bitmosh-website

blog.bumper gets its home on the site

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.

v102.0.1lumaweave

Theme menu missing stylesheet — Browse card grid, sub-nav tabs, Active token rows

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.