mirror of
https://github.com/MarekWo/mc-webui.git
synced 2026-11-03 09:12:19 +01:00
Measured on a Galaxy S20 FE with the service running: the app process, the service and the WebView's own renderer process all stayed alive for an hour and a half, and the page still stopped after 56 minutes. Notifications were posted correctly from 11:29 to 12:25 - 45 of them, traced through the PendingIntent each one creates - and then nothing, while the server went on emitting messages at 12:28:46, 12:28:53 and 12:29:12. The server saw the client time out at 12:29:52 and no reconnection was attempted for the next 29 minutes, although socket.io retries forever by default. Delivery came back only when the activity was resumed. Ruled out with evidence rather than reasoning: Doze (the phone was charging and only reached full at 13:05), Wi-Fi (wpa_supplicant heartbeats every 10s, no drop), Samsung's Freecess freezer (it froze a dozen other apps by name that afternoon and never this one - the foreground service did its job), a killed renderer or app process (neither appears in any kill line), and socket.io giving up (reconnectionAttempts defaults to Infinity). What is left is that Chromium suspends the work of a hidden page. A foreground service buys the process; it does not make Chromium run the page inside it. That gap is not something the Stage B plan knew about. So the service now nudges the page every two minutes. evaluateJavascript is the lever: injected script does not queue behind the throttled timers the page's own setTimeout calls sit in. The script re-opens the socket if it has died, which is what mc-webui would have done a second later had its timers been running, and it reads mc-webui's own chatSocket rather than anything added for this, so it works against whichever server version the user typed in. The wake logs one line every two minutes under the McPageWake tag. That is deliberate: it is the only way to tell "the page answered" from "the page never ran the script" after the fact, which is exactly what the next measurement has to distinguish. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>