diff --git a/web/src/composables/useTraces.ts b/web/src/composables/useTraces.ts index 9c4aff15c3..566f08d3f5 100644 --- a/web/src/composables/useTraces.ts +++ b/web/src/composables/useTraces.ts @@ -89,7 +89,7 @@ const defaultObject = { >(), showErrorOnly: false, queryEditorPlaceholderFlag: true, - liveMode: localStorage.getItem("oo_live_mode_traces") === "true", + liveMode: localStorage.getItem("oo_toggle_auto_run") === "true", searchMode: "spans" as TraceSearchMode, serviceGraphVisualizationType: (localStorage.getItem("serviceGraph_visualizationType") as diff --git a/web/src/plugins/logs/Index.vue b/web/src/plugins/logs/Index.vue index ed96354eed..eb226f7c3b 100644 --- a/web/src/plugins/logs/Index.vue +++ b/web/src/plugins/logs/Index.vue @@ -1176,6 +1176,10 @@ export default defineComponent({ store.dispatch("logs/setIsInitialized", true); } else { await initialLogsState(); + const savedAutoRun = localStorage.getItem("oo_toggle_auto_run"); + if (savedAutoRun !== null) { + searchObj.meta.liveMode = savedAutoRun === "true"; + } await nextTick(); await getStreamList(false); await nextTick(); @@ -1214,6 +1218,11 @@ export default defineComponent({ } const handleActivation = async () => { + const savedAutoRun = localStorage.getItem("oo_toggle_auto_run"); + if (savedAutoRun !== null) { + searchObj.meta.liveMode = savedAutoRun === "true"; + } + try { const queryParams: any = router.currentRoute.value.query; @@ -2264,15 +2273,17 @@ export default defineComponent({ { deep: true }, ); - // Live mode: when auto_query_enabled is true in zoConfig, live mode is on - // by default so queries auto-run on filter or datetime changes (debounced). - // Users can toggle it off via the Run Query dropdown. - // zoConfig may not be populated yet at mount time; watch for it to arrive. + // Live mode: when auto_query_enabled is true in zoConfig, always sync from + // localStorage so the module-level singleton reflects the user's preference + // even after navigating between pages. Defaults to true when no preference + // has been saved yet. zoConfig may not be populated yet at mount time; + // watch for it to arrive. watch( () => store.state.zoConfig?.auto_query_enabled, (enabled) => { - if (enabled && !searchObj.meta.liveMode) { - searchObj.meta.liveMode = true; + if (enabled) { + const saved = localStorage.getItem("oo_toggle_auto_run"); + searchObj.meta.liveMode = saved === null ? true : saved === "true"; } }, { immediate: true }, diff --git a/web/src/plugins/logs/SearchBar.vue b/web/src/plugins/logs/SearchBar.vue index 5f25e3c160..fcaf907264 100644 --- a/web/src/plugins/logs/SearchBar.vue +++ b/web/src/plugins/logs/SearchBar.vue @@ -4805,7 +4805,7 @@ export default defineComponent({ const toggleLiveMode = () => { searchObj.meta.liveMode = !searchObj.meta.liveMode; - localStorage.setItem("oo_live_mode_logs", String(searchObj.meta.liveMode)); + localStorage.setItem("oo_toggle_auto_run", String(searchObj.meta.liveMode)); }; const handleHistogramMode = () => {}; diff --git a/web/src/plugins/traces/Index.vue b/web/src/plugins/traces/Index.vue index cc1a2d26ae..ffcf54af59 100644 --- a/web/src/plugins/traces/Index.vue +++ b/web/src/plugins/traces/Index.vue @@ -1420,6 +1420,12 @@ onUnmounted(() => { onActivated(async () => { setupContextProvider(); + + const savedAutoRun = localStorage.getItem("oo_toggle_auto_run"); + if (savedAutoRun !== null) { + searchObj.meta.liveMode = savedAutoRun === "true"; + } + const params = router.currentRoute.value.query; if (params.reload === "true") { restoreUrlQueryParams(); @@ -1866,13 +1872,17 @@ watch(moveSplitter, () => { } }); -// Live mode: enable by default when auto_query_enabled flag is on. -// zoConfig may not be populated yet at mount time; watch for it to arrive. +// Live mode: when auto_query_enabled is true in zoConfig, always sync from +// localStorage so the module-level singleton reflects the user's preference +// even after navigating between pages. Defaults to true when no preference +// has been saved yet. zoConfig may not be populated yet at mount time; +// watch for it to arrive. watch( () => store.state.zoConfig?.auto_query_enabled, (enabled) => { - if (enabled && !searchObj.meta.liveMode) { - searchObj.meta.liveMode = true; + if (enabled) { + const saved = localStorage.getItem("oo_toggle_auto_run"); + searchObj.meta.liveMode = saved === null ? true : saved === "true"; } }, { immediate: true }, diff --git a/web/src/plugins/traces/SearchBar.vue b/web/src/plugins/traces/SearchBar.vue index ee237de7b2..ac822c763a 100644 --- a/web/src/plugins/traces/SearchBar.vue +++ b/web/src/plugins/traces/SearchBar.vue @@ -709,7 +709,7 @@ export default defineComponent({ const toggleLiveMode = () => { searchObj.meta.liveMode = !searchObj.meta.liveMode; localStorage.setItem( - "oo_live_mode_traces", + "oo_toggle_auto_run", String(searchObj.meta.liveMode), ); }; diff --git a/web/src/utils/logs/constants.ts b/web/src/utils/logs/constants.ts index 73438b0a52..a7cf2d9f30 100644 --- a/web/src/utils/logs/constants.ts +++ b/web/src/utils/logs/constants.ts @@ -149,7 +149,7 @@ export const DEFAULT_LOGS_CONFIG = { isActionsEnabled: false, resetPlotChart: false, clearCache: false, - liveMode: localStorage.getItem("oo_live_mode_logs") === "true", + liveMode: localStorage.getItem("oo_toggle_auto_run") === "true", }, data: { query: "" as any,