54c5d0ff1e74fea73129fbb842cc29cca59c663b
The in-place drag (N46 /a147cbc) had two failure modes: - Bucket constraints: each layout group (charts / rails / feed) was its own SortableContext; drops outside the active group silently no-op'd, so any cross-region drag did nothing. - Long drags lost their drop target: dnd-kit's closestCenter collision detection on a sparse grid would intermittently null out `over` mid-drag, which presented as the dragged tile snapping back to its original slot. Switched to a single-flat-list modal: - New <RearrangeWidgetsDialog>: opens from the "Rearrange" button, shows every visible widget as a row with a drag handle and a position number, single vertical SortableContext, Save commits. - Dashboard shell strips the DndContext + per-bucket SortableContext wrappers + the SortableWidget cell + all dnd-kit imports related to the canvas drag. Each widget renders as a plain <WidgetCell>. - Rearrange button now opens the dialog instead of toggling a drag mode. Disabled when there's fewer than 2 visible widgets. The drag persistence fix fromee4d5c8still applies — the dialog's Save calls the same setOrder() that PATCHes preferences. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Description
No description provided
Languages
TypeScript
98.7%
HTML
1%
CSS
0.1%
Shell
0.1%