diff --git a/plugins/_time_travel/extensions/webui/apply_snapshot_before/refresh-time-travel.js b/plugins/_time_travel/extensions/webui/apply_snapshot_before/refresh-time-travel.js index cbbf30d7a..07a493477 100644 --- a/plugins/_time_travel/extensions/webui/apply_snapshot_before/refresh-time-travel.js +++ b/plugins/_time_travel/extensions/webui/apply_snapshot_before/refresh-time-travel.js @@ -1,7 +1,8 @@ export default function refreshTimeTravelOnContextChange(ctx) { const store = globalThis.Alpine?.store?.("timeTravel"); - const canvas = globalThis.Alpine?.store?.("rightCanvas"); - if (!store || !canvas?.isOpen || canvas.activeSurfaceId !== "time-travel") return; + const modalOpen = globalThis.isModalOpen?.("/plugins/_time_travel/webui/main.html") + || globalThis.isModalOpen?.("plugins/_time_travel/webui/main.html"); + if (!store || !modalOpen) return; const nextContextId = String(ctx?.snapshot?.context || ""); if (nextContextId && nextContextId !== store.contextId) { store.scheduleRefresh({ contextId: nextContextId, reason: "context-change" }); diff --git a/plugins/_time_travel/extensions/webui/right-canvas-panels/time-travel-panel.html b/plugins/_time_travel/extensions/webui/right-canvas-panels/time-travel-panel.html index fef7ceb49..6b6fbbd7b 100644 --- a/plugins/_time_travel/extensions/webui/right-canvas-panels/time-travel-panel.html +++ b/plugins/_time_travel/extensions/webui/right-canvas-panels/time-travel-panel.html @@ -1,8 +1 @@ - + diff --git a/plugins/_time_travel/extensions/webui/right_canvas_register_surfaces/register-time-travel.js b/plugins/_time_travel/extensions/webui/right_canvas_register_surfaces/register-time-travel.js index c2f4f64c8..1d11d452f 100644 --- a/plugins/_time_travel/extensions/webui/right_canvas_register_surfaces/register-time-travel.js +++ b/plugins/_time_travel/extensions/webui/right_canvas_register_surfaces/register-time-travel.js @@ -1,37 +1,3 @@ -function waitForElement(selector, timeoutMs = 3000) { - const found = document.querySelector(selector); - if (found) return Promise.resolve(found); - return new Promise((resolve) => { - const timeout = globalThis.setTimeout(() => { - observer.disconnect(); - resolve(document.querySelector(selector)); - }, timeoutMs); - const observer = new MutationObserver(() => { - const element = document.querySelector(selector); - if (!element) return; - globalThis.clearTimeout(timeout); - observer.disconnect(); - resolve(element); - }); - observer.observe(document.body, { childList: true, subtree: true }); - }); -} - -export default async function registerTimeTravelSurface(canvas) { - canvas.registerSurface({ - id: "time-travel", - title: "Time Travel", - icon: "history", - order: 30, - modalPath: "/plugins/_time_travel/webui/main.html", - async open(payload = {}) { - await waitForElement('[data-surface-id="time-travel"] .time-travel-panel'); - const store = globalThis.Alpine?.store?.("timeTravel"); - await store?.onOpen?.(payload); - }, - async close() { - const store = globalThis.Alpine?.store?.("timeTravel"); - store?.cleanup?.(); - }, - }); +export default async function registerTimeTravelSurface() { + // Time Travel is opened from the sidebar dropdown as a modal-only surface. } diff --git a/plugins/_time_travel/extensions/webui/sidebar-quick-actions-dropdown-start/time-travel-entry.html b/plugins/_time_travel/extensions/webui/sidebar-quick-actions-dropdown-start/time-travel-entry.html new file mode 100644 index 000000000..75bb2f4a3 --- /dev/null +++ b/plugins/_time_travel/extensions/webui/sidebar-quick-actions-dropdown-start/time-travel-entry.html @@ -0,0 +1,12 @@ + +
+ +
diff --git a/webui/components/sidebar/top-section/header-icons.html b/webui/components/sidebar/top-section/header-icons.html index c11fcadba..d6e713829 100644 --- a/webui/components/sidebar/top-section/header-icons.html +++ b/webui/components/sidebar/top-section/header-icons.html @@ -83,7 +83,7 @@ Projects -