Closed general

Tauri emit bus to the main webview can die silently: page healthy, CDP fine, toasts/banners/ui-commands all lost

John Lauer · 1mo ago ·closed by John Lauer

Found on the Azure winvm (Hydrogen 1.0.145, build 5050c5cb) after ~2h of automated UI driving, 2026-08-31 ~15:50.

Symptoms, all verified live:

  • POST /ui/invoke returns 'No result within timeout' for every registered action (39 registered; GET /ui/actions is fine)
  • POST /ui/toast returns 200 and NO toast appears in the DOM
  • The page is fully alive throughout: CDP Runtime.evaluate answers, document.readyState complete, the shell rendered, window.TAURI_INTERNALS present, control API healthy
  • hd-control logs '[ui] invoke ...' for each request, so the Rust side emits; the frontend listener never fires
  • The same process had a working bus 10 minutes earlier (invokes returned ok:true at 15:46); nothing restarted in between

Impact: the app LOOKS fine while every Rust-to-frontend event surface is dead: toasts, setup banners, settings-jump, ui commands, screenshot flash. No error anywhere.

Proposed fix (self-heal, so the unknown trigger stops mattering): a bus heartbeat. hd-control emits 'hd-bus-ping' with a nonce every ~60s; the (app) layout echoes it to POST /ui/_bus-pong. When pongs go silent for ~3 min while the CDP page target still answers, log loudly and recover by reloading the main webview OVER CDP (Page.reload works even when emit is dead, proven today).

1 Reply

John Lauer · 1mo ago

Closing, John's call: no heartbeat loops, they are duct tape over an unknown cause. Seen once on winvm after two hours of automated driving and never reproduced. Reopen with a repro if it happens again.

Log in to reply.