diff --git a/static/js/api/baseModelApi.js b/static/js/api/baseModelApi.js index 68761bc7..6b54a352 100644 --- a/static/js/api/baseModelApi.js +++ b/static/js/api/baseModelApi.js @@ -1,7 +1,7 @@ import { state, getCurrentPageState } from '../state/index.js'; import { showToast } from '../utils/uiHelpers.js'; import { translate } from '../utils/i18nHelpers.js'; -import { getStorageItem, getSessionItem, saveMapToStorage } from '../utils/storageHelpers.js'; +import { getStorageItem, getSessionItem, removeSessionItem, saveMapToStorage } from '../utils/storageHelpers.js'; import { getCompleteApiConfig, getCurrentModelType, @@ -1360,13 +1360,20 @@ export class BaseModelApiClient { _addModelSpecificParams(params, pageState) { // Check for View Local Versions filter (takes priority over recipe filters) const vlmModelId = getSessionItem('vlm_model_id'); - if (vlmModelId) { + const vlmPageType = getSessionItem('vlm_page_type'); + if (vlmModelId && vlmPageType === this.modelType) { params.append('civitai_model_id', vlmModelId); const vlmBaseModel = getSessionItem('vlm_base_model'); if (vlmBaseModel) { params.append('base_model', vlmBaseModel); } return; + } else if (vlmModelId && vlmPageType !== this.modelType) { + // Stale VLM data from a different page type — clean up + removeSessionItem('vlm_model_id'); + removeSessionItem('vlm_model_name'); + removeSessionItem('vlm_base_model'); + removeSessionItem('vlm_page_type'); } if (this.modelType === 'loras') { diff --git a/static/js/components/controls/CheckpointsControls.js b/static/js/components/controls/CheckpointsControls.js index 3f6371c9..57c72897 100644 --- a/static/js/components/controls/CheckpointsControls.js +++ b/static/js/components/controls/CheckpointsControls.js @@ -101,6 +101,7 @@ export class CheckpointsControls extends PageControls { removeSessionItem('vlm_model_id'); removeSessionItem('vlm_model_name'); removeSessionItem('vlm_base_model'); + removeSessionItem('vlm_page_type'); window.location.reload(); return; } diff --git a/static/js/components/controls/LorasControls.js b/static/js/components/controls/LorasControls.js index 3c0f8455..b9e42473 100644 --- a/static/js/components/controls/LorasControls.js +++ b/static/js/components/controls/LorasControls.js @@ -118,6 +118,7 @@ export class LorasControls extends PageControls { removeSessionItem('vlm_model_id'); removeSessionItem('vlm_model_name'); removeSessionItem('vlm_base_model'); + removeSessionItem('vlm_page_type'); window.location.reload(); return; } diff --git a/static/js/components/controls/PageControls.js b/static/js/components/controls/PageControls.js index c8431916..3c6ce31c 100644 --- a/static/js/components/controls/PageControls.js +++ b/static/js/components/controls/PageControls.js @@ -466,10 +466,22 @@ export class PageControls { * Clear custom filter */ /** - * Check for View Local Versions filter in sessionStorage + * Check for View Local Versions filter in sessionStorage (page-type-scoped) */ checkVlmFilter() { const vlmModelId = getSessionItem('vlm_model_id'); + const vlmPageType = getSessionItem('vlm_page_type'); + + // Only show VLM indicator when it belongs to the current page type + if (vlmModelId && vlmPageType !== this.pageType) { + // Stale VLM data from a different page — clean up + removeSessionItem('vlm_model_id'); + removeSessionItem('vlm_model_name'); + removeSessionItem('vlm_base_model'); + removeSessionItem('vlm_page_type'); + return; + } + const vlmModelName = getSessionItem('vlm_model_name'); const vlmBaseModel = getSessionItem('vlm_base_model'); @@ -501,6 +513,7 @@ export class PageControls { removeSessionItem('vlm_model_id'); removeSessionItem('vlm_model_name'); removeSessionItem('vlm_base_model'); + removeSessionItem('vlm_page_type'); // Full page reload to restore initial state (mirrors the "set" action) window.location.reload(); diff --git a/static/js/components/shared/ModelVersionsTab.js b/static/js/components/shared/ModelVersionsTab.js index 6c8b1881..aebdb3cc 100644 --- a/static/js/components/shared/ModelVersionsTab.js +++ b/static/js/components/shared/ModelVersionsTab.js @@ -1031,9 +1031,10 @@ export function initVersionsTab({ displayMode === DISPLAY_FILTER_MODES.SAME_BASE && Boolean(baseModelInfo.normalized); - // Write filter params to sessionStorage + // Write filter params to sessionStorage (page-scoped) setSessionItem('vlm_model_id', String(modelId)); setSessionItem('vlm_model_name', modelName || String(modelId)); + setSessionItem('vlm_page_type', modelType); if (isFilteringActive) { // Use raw (non-normalized) base model for exact backend matching setSessionItem('vlm_base_model', baseModelInfo.raw);