From 631c106b01a552f016e3fb07d9ff5e7d47ea0982 Mon Sep 17 00:00:00 2001 From: bruno Date: Thu, 16 Jul 2026 09:59:07 -0400 Subject: [PATCH] fix: context menu uses Alpine proxy (window._wsData) instead of raw object The context menu component (_ctxMenuData) was calling methods on window._wsInitData (the raw JS object), NOT on Alpine's reactive proxy. This meant that changes made by ctxMenuDelete/ctxMenuDuplicate (like updating displayTree) were applied to the raw object but not reflected in Alpine's reactive proxy that controls DOM rendering. Fix: _ctxMenuData now uses a _ws() helper that returns window._wsData (Alpine proxy, set in init()) with fallback to window._wsInitData for safety. All context menu actions now go through the reactive proxy. --- app/templates/local_workspace.html | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/app/templates/local_workspace.html b/app/templates/local_workspace.html index 5c8fdc5..36f04e5 100644 --- a/app/templates/local_workspace.html +++ b/app/templates/local_workspace.html @@ -1986,14 +1986,16 @@ window._ctxMenuData = { ctxAvailTags: [], ctxNewTagColor: '#787774', ctxTagColors: ['#787774','#E03E3E','#D9730D','#DFAB01','#0F7B6C','#0B6E99','#6940A5','#AD1A72','#E16259','#D4A72C','#448361','#337EA9','#9065B0','#C94D8B'], - ctxMenuOpenPage() { window._wsInitData.ctxMenuOpenPage(); }, - ctxMenuOpenFolder() { window._wsInitData.ctxMenuOpenFolder(); }, - ctxMenuRename() { window._wsInitData.ctxMenuRename(); }, - ctxMenuDuplicate() { window._wsInitData.ctxMenuDuplicate(); }, - ctxMenuDelete() { window._wsInitData.ctxMenuDelete(); }, - ctxAddExistingTag(t) { window._wsInitData.ctxAddExistingTag(t); }, - ctxAddNewTag(n, c) { window._wsInitData.ctxAddNewTag(n, c); }, - ctxRemoveTag(id) { window._wsInitData.ctxRemoveTag(id); }, + // Use Alpine proxy (window._wsData) for reactivity, not raw object (window._wsInitData) + _ws() { return window._wsData || window._wsInitData; }, + ctxMenuOpenPage() { this._ws().ctxMenuOpenPage(); }, + ctxMenuOpenFolder() { this._ws().ctxMenuOpenFolder(); }, + ctxMenuRename() { this._ws().ctxMenuRename(); }, + ctxMenuDuplicate() { this._ws().ctxMenuDuplicate(); }, + ctxMenuDelete() { this._ws().ctxMenuDelete(); }, + ctxAddExistingTag(t) { this._ws().ctxAddExistingTag(t); }, + ctxAddNewTag(n, c) { this._ws().ctxAddNewTag(n, c); }, + ctxRemoveTag(id) { this._ws().ctxRemoveTag(id); }, }; console.log('FLOWDECK v2.4.6 — IIFE done, _wsInitData keys:', Object.keys(window._wsInitData).length);