From 10a032732835a83a14664232bb1445657b666e64 Mon Sep 17 00:00:00 2001 From: Dariusz L Date: Tue, 28 Jul 2026 19:03:08 +0200 Subject: [PATCH] feat: preserve Missing Models browser geometry during cached refresh --- tests/test_downloads_tab_workflow_route.mjs | 25 +++++++++++++++++++ web/resolver/views/missing_browser_methods.js | 6 ++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/tests/test_downloads_tab_workflow_route.mjs b/tests/test_downloads_tab_workflow_route.mjs index 0cd83c2..98be796 100644 --- a/tests/test_downloads_tab_workflow_route.mjs +++ b/tests/test_downloads_tab_workflow_route.mjs @@ -1933,6 +1933,31 @@ test('content-preserving Missing Models refresh patches the browser instead of c ); }); +test('cached Missing Models refresh preserves browser geometry after linking a local match', () => { + const refreshMissingModelsBrowserFromCache = eval( + `(${extractMethod(missingBrowserMethodsSource, 'refreshMissingModelsBrowserFromCache')})` + ); + const contentElement = {}; + const cachedAnalysisData = { missing_models: [{ filename: 'model.safetensors' }] }; + let renderCall = null; + const dialog = { + activeTab: 'missing', + contentElement, + cachedAnalysisData, + displayMissingModels(...args) { + renderCall = args; + }, + }; + + refreshMissingModelsBrowserFromCache.call(dialog); + + assert.deepEqual(renderCall, [ + contentElement, + cachedAnalysisData, + { preserveBrowser: true }, + ]); +}); + test('node widget changes request a content-preserving Missing Models refresh', async () => { const log = { debug() {} }; const refreshForActiveWorkflowChange = eval( diff --git a/web/resolver/views/missing_browser_methods.js b/web/resolver/views/missing_browser_methods.js index f957ef4..576daac 100644 --- a/web/resolver/views/missing_browser_methods.js +++ b/web/resolver/views/missing_browser_methods.js @@ -594,7 +594,11 @@ export const missingBrowserMethods = { refreshMissingModelsBrowserFromCache() { if (this.activeTab !== 'missing' || !this.contentElement || !this.cachedAnalysisData) return; - this.displayMissingModels(this.contentElement, this.cachedAnalysisData); + this.displayMissingModels( + this.contentElement, + this.cachedAnalysisData, + { preserveBrowser: true } + ); }, getMissingListScrollSnapshot(container) {