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.