From 45b3a9de37f6aad75a25569120a6fd9c86e7bef6 Mon Sep 17 00:00:00 2001 From: ciregenz Date: Sun, 9 Aug 2026 18:31:04 -0700 Subject: [PATCH] [eric] canvas: layout load keeps exactly one fullscreen owner, so a pre-1.7.6 profile with a second persisted fullscreen entry can no longer drag cards while fullscreen --- frontend/src/shared/state/dashboardLayoutSlice.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/frontend/src/shared/state/dashboardLayoutSlice.ts b/frontend/src/shared/state/dashboardLayoutSlice.ts index 8ad827f7..118f777f 100644 --- a/frontend/src/shared/state/dashboardLayoutSlice.ts +++ b/frontend/src/shared/state/dashboardLayoutSlice.ts @@ -1886,6 +1886,13 @@ const dashboardLayoutSlice = createSlice({ for (const id of Object.keys(state.tiledCards)) { if (!tileOwnerExists(state, id)) delete state.tiledCards[id]; } + // Pre-1.7.6 profiles can persist several live 'fullscreen' entries; the selector crowns the first, so every OTHER card's drag guard compares against the wrong owner and lets the drag through. One owner, same rule as the write reducer. + let fsOwner: string | null = null; + for (const [id, zone] of Object.entries(state.tiledCards)) { + if (zone !== 'fullscreen') continue; + if (fsOwner === null) { fsOwner = id; continue; } + delete state.tiledCards[id]; + } for (const id of Object.keys(state.minimizedCards)) { if (!tileOwnerExists(state, id)) delete state.minimizedCards[id]; }