From a5864ab09caba9a3d17db2a553713389e85183bb Mon Sep 17 00:00:00 2001 From: cc1234 Date: Mon, 2 Nov 2026 18:10:47 +0000 Subject: [PATCH] Add Visage v2.10.1 - facial recognition plugin --- plugins/visage/visage.js | 11 +++++++++-- plugins/visage/visage.yml | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/plugins/visage/visage.js b/plugins/visage/visage.js index 895a11a4..2c397c8f 100644 --- a/plugins/visage/visage.js +++ b/plugins/visage/visage.js @@ -17954,7 +17954,9 @@ return React.createElement(VisageProvider, { scenario: 'images', scenarioId }, React.createElement(ThemeDetector, null), React.createElement(ImageOperationsMenuPortal, null), React.createElement(ModalRoot, null)); } function PerformerVisageWrapper({ scenarioId }) { - return React.createElement(VisageProvider, { scenario: 'performers', scenarioId }, React.createElement(ThemeDetector, null), React.createElement(PerformerActionsPortal, null), React.createElement(ModalRoot, null)); + return React.createElement(VisageProvider, { scenario: 'performers', scenarioId }, React.createElement(ThemeDetector, null), React.createElement(PerformerActionsPortal, null), + // The performer Scenes tab is a scene list too. + React.createElement(SceneBatchRoot, null), React.createElement(ModalRoot, null)); } function SceneListVisageWrapper() { return React.createElement(VisageProvider, { scenario: 'scenes' }, React.createElement(ThemeDetector, null), React.createElement(SceneBatchRoot, null), React.createElement(ModalRoot, null)); @@ -18004,13 +18006,18 @@ requestAnimationFrame(() => mountPage('images', match[1])); } }); + // Pages with a Stash scene list: the scenes page and the detail pages of + // studios, tags and groups (movies on older Stash). Their Scenes tab can be the + // default tab with no /scenes in the URL, so match the whole detail page and + // let findSceneListMenuAnchor gate on the menu in the DOM. + const SCENE_LIST_PATH = /^\/(scenes\/?$|(studios|tags|groups|movies)\/\d+)/; function mountForPath(pathname) { const match = pathname.match(/\/(images|performers)\/(\d+)/); if (match) { const scenario = match[1]; requestAnimationFrame(() => mountPage(scenario, match[2])); } - else if (/^\/scenes\/?$/.test(pathname)) { + else if (SCENE_LIST_PATH.test(pathname)) { requestAnimationFrame(() => mountPage('sceneList', '')); } else { diff --git a/plugins/visage/visage.yml b/plugins/visage/visage.yml index d05a5d7b..a66fdd29 100644 --- a/plugins/visage/visage.yml +++ b/plugins/visage/visage.yml @@ -1,6 +1,6 @@ name: Visage description: Use facial recognition to lookup performers from scene sprites -version: 2.10.0 +version: 2.10.1 url: https://discourse.stashapp.cc/t/visage/11785 ui: javascript: