fix(versions): scope VLM custom filter per-page to prevent cross-page leak

Store the originating page type alongside VLM data in sessionStorage;
validate it on every page load before applying the filter or showing
the indicator. Stale data is auto-cleaned on mismatch.

This prevents the 'View all local versions' custom filter from leaking
into the checkpoints (or embeddings) page, which caused an empty grid.
This commit is contained in:
Will Miao
2026-06-21 12:02:06 +08:00
parent 7cb6b04c63
commit 26c54fd358
5 changed files with 27 additions and 4 deletions

View File

@@ -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();