Skip to content

Commit f2895fd

Browse files
authored
fix: restore chat visibility after model manager (#1467)
* fix: restore chat visibility after model manager Keep chat hidden while the model manager owns main UI visibility, then replay pending React chat opens once the hidden state clears. Also hide legacy and React chat overlays under the model-manager hidden body state. * ci: require non-empty frontend model artifact Update the frontend build verifier to reject missing or empty yui-origin model config artifacts so desktop packaging fails with a clear error before bundling invalid assets.
1 parent ecce0b9 commit f2895fd

3 files changed

Lines changed: 34 additions & 2 deletions

File tree

scripts/verify_frontend_build.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ set -euo pipefail
44

55
REQUIRED_MODEL_FILE="static/yui-origin/yui-origin.model3.json"
66

7-
if [ ! -f "$REQUIRED_MODEL_FILE" ]; then
8-
echo "ERROR: missing $REQUIRED_MODEL_FILE after build_frontend.sh" >&2
7+
if [ ! -s "$REQUIRED_MODEL_FILE" ]; then
8+
echo "ERROR: missing or empty $REQUIRED_MODEL_FILE after build_frontend.sh" >&2
99
exit 1
1010
fi

static/app-interpage.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@
5959
'body.neko-main-ui-hidden-by-model-manager #live2d-canvas,',
6060
'body.neko-main-ui-hidden-by-model-manager #vrm-canvas,',
6161
'body.neko-main-ui-hidden-by-model-manager #mmd-canvas,',
62+
'body.neko-main-ui-hidden-by-model-manager #chat-container,',
63+
'body.neko-main-ui-hidden-by-model-manager #react-chat-window-overlay,',
6264
'body.neko-main-ui-hidden-by-model-manager #live2d-floating-buttons,',
6365
'body.neko-main-ui-hidden-by-model-manager #vrm-floating-buttons,',
6466
'body.neko-main-ui-hidden-by-model-manager #mmd-floating-buttons,',

static/app-react-chat-window.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2153,13 +2153,34 @@
21532153
});
21542154
}
21552155

2156+
function isMainUIHiddenByModelManager() {
2157+
try {
2158+
if (typeof window.isMainUIHiddenByModelManager === 'function') {
2159+
return window.isMainUIHiddenByModelManager();
2160+
}
2161+
} catch (_) {}
2162+
return !!(document.body && document.body.classList.contains('neko-main-ui-hidden-by-model-manager'));
2163+
}
2164+
2165+
var pendingOpenAfterModelManagerHidden = false;
2166+
21562167
function openWindow() {
2168+
if (!isElectronChatWindow() && isMainUIHiddenByModelManager()) {
2169+
pendingOpenAfterModelManagerHidden = true;
2170+
return;
2171+
}
2172+
pendingOpenAfterModelManagerHidden = false;
2173+
21572174
var overlay = getOverlay();
21582175
if (!overlay) return;
21592176

21602177
prewarmUserDisplayName();
21612178
ensureBundleLoaded()
21622179
.then(function () {
2180+
if (!isElectronChatWindow() && isMainUIHiddenByModelManager()) {
2181+
pendingOpenAfterModelManagerHidden = true;
2182+
return;
2183+
}
21632184
if (!mountWindow()) {
21642185
showToast(getI18nText('chat.reactWindowMountFailed', '聊天框挂载失败'), 3000);
21652186
return;
@@ -2208,6 +2229,7 @@
22082229
function closeWindow() {
22092230
var overlay = getOverlay();
22102231
if (!overlay) return;
2232+
pendingOpenAfterModelManagerHidden = false;
22112233
// Closing the overlay should also abort any in-flight GalGame fetch
22122234
// (parity with setGalgameModeEnabled(false) / setMessages /
22132235
// clearMessages). Without this, a request that lands after close
@@ -2249,6 +2271,14 @@
22492271
});
22502272
}
22512273

2274+
window.addEventListener('neko:main-ui-hidden-by-model-manager-changed', function(event) {
2275+
if (isElectronChatWindow()) return;
2276+
var hidden = !!(event && event.detail && event.detail.hidden);
2277+
if (hidden || !pendingOpenAfterModelManagerHidden) return;
2278+
pendingOpenAfterModelManagerHidden = false;
2279+
openWindow();
2280+
});
2281+
22522282
var CLICK_THRESHOLD = 5; // px – 移动距离低于此值视为点击
22532283

22542284
function startDrag(clientX, clientY) {

0 commit comments

Comments
 (0)