@@ -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+
11501164fn 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