v103.1.1lumaweave2026-06-02

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.12026-06-02
  • ·resolvedTilesArray(raw, viewport): single upstream resolution pass — docked→derived, floating/legacy→clamped. All downstream reads (deriveGroups, GroupBar, GroupOutline, getLiveTiles) see live coords.
  • ·TileLayer: viewport state + debounced resize listener (100ms) so tiles reflow on window resize; resolved array in useMemo([raw,viewport])
  • ·getLiveTiles/getLiveTile in TileProvider now resolve positions — snap and reconcile math in event handlers sees live coords
  • ·FloatingTile: docked tile flipped to "floating" on drag start (tile.x/y is the resolved position from TileLayer, so drag origin is correct)
  • ·Legacy/no-mode tiles default to floating+clamp — stranded tiles rescued this pass without formal migration