Skip to content

Commit f6310d1

Browse files
committed
remove tray restart fallback and add bridge trace logs
1 parent 0e6996b commit f6310d1

1 file changed

Lines changed: 60 additions & 16 deletions

File tree

src-tauri/src/main.rs

Lines changed: 60 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1147,6 +1147,20 @@ fn desktop_bridge_stop_backend(app_handle: AppHandle) -> BackendBridgeResult {
11471147
}
11481148
}
11491149

1150+
#[tauri::command]
1151+
fn desktop_bridge_log(message: String) {
1152+
let trimmed = message.trim();
1153+
if trimmed.is_empty() {
1154+
return;
1155+
}
1156+
let message = if trimmed.len() > 320 {
1157+
format!("{}...", &trimmed[..320])
1158+
} else {
1159+
trimmed.to_string()
1160+
};
1161+
append_desktop_log(&format!("desktop-bridge {message}"));
1162+
}
1163+
11501164
fn main() {
11511165
append_desktop_log("desktop process starting");
11521166
append_desktop_log(&format!(
@@ -1160,7 +1174,8 @@ fn main() {
11601174
desktop_bridge_get_backend_state,
11611175
desktop_bridge_set_auth_token,
11621176
desktop_bridge_restart_backend,
1163-
desktop_bridge_stop_backend
1177+
desktop_bridge_stop_backend,
1178+
desktop_bridge_log
11641179
])
11651180
.on_window_event(|window, event| {
11661181
if window.label() != "main" {
@@ -1424,22 +1439,14 @@ fn emit_tray_restart_backend_event(app_handle: &AppHandle) {
14241439
return;
14251440
};
14261441
let token = TRAY_RESTART_SIGNAL_TOKEN.fetch_add(1, Ordering::Relaxed) + 1;
1442+
append_desktop_log(&format!("tray restart signal dispatch: token={token}"));
14271443

14281444
if let Err(error) = window.emit(TRAY_RESTART_BACKEND_EVENT, token) {
14291445
append_desktop_log(&format!(
14301446
"failed to emit tray restart backend event: {error}"
14311447
));
1432-
}
1433-
1434-
// Compatibility fallback when the JS Tauri event listener API is unavailable.
1435-
// The same token is used so JS can deduplicate if both paths are delivered.
1436-
let fallback_script = format!(
1437-
"if (typeof window !== 'undefined' && typeof window.__astrbotDesktopEmitTrayRestart === 'function') {{ window.__astrbotDesktopEmitTrayRestart({token}); }}"
1438-
);
1439-
if let Err(error) = window.eval(&fallback_script) {
1440-
append_desktop_log(&format!(
1441-
"failed to eval tray restart backend fallback emit: {error}"
1442-
));
1448+
} else {
1449+
append_desktop_log(&format!("tray restart signal emitted: token={token}"));
14431450
}
14441451
}
14451452

@@ -1660,6 +1667,7 @@ const DESKTOP_BRIDGE_BOOTSTRAP_SCRIPT_TEMPLATE: &str = r#"
16601667
SET_AUTH_TOKEN: 'desktop_bridge_set_auth_token',
16611668
RESTART_BACKEND: 'desktop_bridge_restart_backend',
16621669
STOP_BACKEND: 'desktop_bridge_stop_backend',
1670+
LOG: 'desktop_bridge_log',
16631671
});
16641672
const TRAY_RESTART_BACKEND_EVENT = '__ASTRBOT_TRAY_RESTART_BACKEND_EVENT__';
16651673
@@ -1671,6 +1679,18 @@ const DESKTOP_BRIDGE_BOOTSTRAP_SCRIPT_TEMPLATE: &str = r#"
16711679
}
16721680
};
16731681
1682+
const bridgeLog = (stage, detail = '') => {
1683+
const stageText = String(stage || '').trim();
1684+
if (!stageText) return;
1685+
const detailText = String(detail || '').trim();
1686+
const message = detailText
1687+
? `tray-restart ${stageText} ${detailText}`
1688+
: `tray-restart ${stageText}`;
1689+
try {
1690+
void invoke(BRIDGE_COMMANDS.LOG, { message });
1691+
} catch {}
1692+
};
1693+
16741694
const trayRestartState =
16751695
window.__astrbotDesktopTrayRestartState ||
16761696
(window.__astrbotDesktopTrayRestartState = {
@@ -1692,50 +1712,74 @@ const DESKTOP_BRIDGE_BOOTSTRAP_SCRIPT_TEMPLATE: &str = r#"
16921712
const emitTrayRestart = (token = null) => {
16931713
const numericToken = Number(token);
16941714
if (Number.isFinite(numericToken) && numericToken > 0) {
1695-
if (numericToken <= trayRestartState.lastToken) return;
1715+
if (numericToken <= trayRestartState.lastToken) {
1716+
bridgeLog('drop-duplicate', `token=${numericToken} last=${trayRestartState.lastToken}`);
1717+
return;
1718+
}
16961719
trayRestartState.lastToken = numericToken;
16971720
} else {
16981721
trayRestartState.lastToken += 1;
16991722
}
17001723
17011724
if (trayRestartState.handlers.size === 0) {
17021725
trayRestartState.pending = Number(trayRestartState.pending || 0) + 1;
1726+
bridgeLog(
1727+
'queue',
1728+
`token=${trayRestartState.lastToken} pending=${trayRestartState.pending}`
1729+
);
17031730
return;
17041731
}
1732+
bridgeLog(
1733+
'dispatch',
1734+
`token=${trayRestartState.lastToken} handlers=${trayRestartState.handlers.size}`
1735+
);
17051736
for (const handler of trayRestartState.handlers) {
17061737
try {
17071738
handler();
1708-
} catch {}
1739+
} catch (error) {
1740+
bridgeLog('handler-error', String(error));
1741+
}
17091742
}
17101743
};
1711-
window.__astrbotDesktopEmitTrayRestart = (token) => emitTrayRestart(token);
17121744
17131745
const onTrayRestartBackend = (callback) => {
17141746
if (typeof callback !== 'function') return () => {};
17151747
const handler = () => callback();
17161748
trayRestartState.handlers.add(handler);
1749+
bridgeLog('handler-add', `count=${trayRestartState.handlers.size}`);
17171750
while (trayRestartState.pending > 0) {
17181751
trayRestartState.pending -= 1;
1752+
bridgeLog(
1753+
'drain-pending',
1754+
`token=${trayRestartState.lastToken} remaining=${trayRestartState.pending}`
1755+
);
17191756
handler();
17201757
}
1721-
return () => trayRestartState.handlers.delete(handler);
1758+
return () => {
1759+
trayRestartState.handlers.delete(handler);
1760+
bridgeLog('handler-remove', `count=${trayRestartState.handlers.size}`);
1761+
};
17221762
};
17231763
17241764
const listenToTrayRestartBackendEvent = async () => {
17251765
const listen = tauriEvent?.listen;
17261766
if (typeof listen !== 'function') {
1767+
bridgeLog('listen-api-unavailable');
17271768
console.warn('Tray restart backend event listen API is unavailable');
17281769
return;
17291770
}
17301771
if (typeof trayRestartState.unlistenTrayRestartBackendEvent === 'function') return;
17311772
try {
17321773
const unlisten = await listen(TRAY_RESTART_BACKEND_EVENT, (event) => {
1774+
bridgeLog('event-received', `payload=${String(event?.payload ?? 'null')}`);
17331775
emitTrayRestart(event?.payload);
17341776
});
17351777
if (typeof unlisten === 'function') {
17361778
trayRestartState.unlistenTrayRestartBackendEvent = unlisten;
1779+
bridgeLog('listen-registered');
17371780
}
17381781
} catch (error) {
1782+
bridgeLog('listen-failed', String(error));
17391783
console.warn('Failed to listen for tray restart backend event', error);
17401784
}
17411785
};

0 commit comments

Comments
 (0)