From ac2dba6b186aee1b6b653affae4c243b240bd25b Mon Sep 17 00:00:00 2001 From: cstns Date: Mon, 10 Aug 2026 18:09:11 +0300 Subject: [PATCH 1/4] Add `tabSessionId` to context store with persistence using `sessionStorage` --- frontend/src/stores/context.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/frontend/src/stores/context.js b/frontend/src/stores/context.js index a1f2b08241..8e7a057286 100644 --- a/frontend/src/stores/context.js +++ b/frontend/src/stores/context.js @@ -1,4 +1,5 @@ import { defineStore } from 'pinia' +import { v4 as uuidv4 } from 'uuid' import { hasAMinimumTeamRoleOf } from '../composables/Permissions.js' import product from '../services/product.js' @@ -15,7 +16,8 @@ export const useContextStore = defineStore('context', { route: null, application: null, instance: null, - device: null + device: null, + tabSessionId: null }), getters: { team () { @@ -180,5 +182,14 @@ export const useContextStore = defineStore('context', { } await this.refreshTeamMembership() } + }, + persist: { + pick: ['tabSessionId'], + storage: sessionStorage, + afterHydrate ({ store }) { + if (!store.tabSessionId) { + store.tabSessionId = uuidv4() + } + } } }) From 2f02c271fa09709805803ba8bd5693e6837c1110 Mon Sep 17 00:00:00 2001 From: cstns Date: Tue, 11 Aug 2026 06:44:11 +0300 Subject: [PATCH 2/4] Update `account-auth` store persistence to include `sessionId` in `sessionStorage` --- frontend/src/stores/account-auth.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/frontend/src/stores/account-auth.js b/frontend/src/stores/account-auth.js index 0c3a06505f..e091c603d5 100644 --- a/frontend/src/stores/account-auth.js +++ b/frontend/src/stores/account-auth.js @@ -38,7 +38,6 @@ export const useAccountAuthStore = defineStore('account-auth', { isAdminUser: (state) => !!state.user?.admin }, actions: { - // In-memory, per page-load — duplicate tabs each mint their own getSessionId () { if (!this.sessionId) this.sessionId = uuidv4() return this.sessionId @@ -245,8 +244,14 @@ export const useAccountAuthStore = defineStore('account-auth', { useProductExpertStore().$reset() } }, - persist: { - pick: ['redirectUrlAfterLogin'], - storage: localStorage - } + persist: [ + { + pick: ['redirectUrlAfterLogin'], + storage: localStorage + }, + { + pick: ['sessionId'], + storage: sessionStorage + } + ] }) From 0702ebd8f9e456fda5b2d78071fb2bc0f4e1c83e Mon Sep 17 00:00:00 2001 From: cstns Date: Tue, 11 Aug 2026 06:52:28 +0300 Subject: [PATCH 3/4] Remove `tabSessionId` from context store and related persistence logic --- frontend/src/stores/context.js | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/frontend/src/stores/context.js b/frontend/src/stores/context.js index 8e7a057286..6e49bf35bf 100644 --- a/frontend/src/stores/context.js +++ b/frontend/src/stores/context.js @@ -16,8 +16,7 @@ export const useContextStore = defineStore('context', { route: null, application: null, instance: null, - device: null, - tabSessionId: null + device: null }), getters: { team () { @@ -182,14 +181,5 @@ export const useContextStore = defineStore('context', { } await this.refreshTeamMembership() } - }, - persist: { - pick: ['tabSessionId'], - storage: sessionStorage, - afterHydrate ({ store }) { - if (!store.tabSessionId) { - store.tabSessionId = uuidv4() - } - } } }) From 5d62084f9f8dd61b5f4c44878ae986e65bce0097 Mon Sep 17 00:00:00 2001 From: cstns Date: Tue, 11 Aug 2026 06:52:52 +0300 Subject: [PATCH 4/4] Remove unused `uuid` import from context store --- frontend/src/stores/context.js | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/src/stores/context.js b/frontend/src/stores/context.js index 6e49bf35bf..a1f2b08241 100644 --- a/frontend/src/stores/context.js +++ b/frontend/src/stores/context.js @@ -1,5 +1,4 @@ import { defineStore } from 'pinia' -import { v4 as uuidv4 } from 'uuid' import { hasAMinimumTeamRoleOf } from '../composables/Permissions.js' import product from '../services/product.js'