You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fix sticky reconnect banner and iOS browser detection
- Resolve `reconnectSSE()` on the first event of any kind on a fresh
SSE stream, not only on `session:connected`. The server does not
always re-emit `session:connected` on a reconnect for an already-
known session, so live data was streaming through `handleSSEEvent`
while the promise never resolved and the banner stuck indefinitely.
- Make `retryNow()` perform `health()` + `reconnectSSE()` immediately
instead of going through the per-attempt `setTimeout`. The button
now triggers the work synchronously; on failure it falls back to
the scheduled exponential-backoff loop.
- Add a `visibilitychange` listener in `SSEClient` that resets the
heartbeat timer when the page returns to the foreground. iOS WebKit
coalesces fetch-stream chunks while a tab is backgrounded, which
was tripping the 35 s heartbeat for backgrounded iPhone sessions
even though the underlying TCP connection was healthy.
- Drive the reconnect-banner countdown from local state via
`setInterval`, so the user sees actual seconds tick down instead of
a frozen `1s` value.
- Replace `max-width: 100vw` with `max-width: 100%` on `html, body`.
iOS Safari computes `100vw` against the layout viewport and can
leak overflow during rubber-banding.
- Detect iOS first in `detectBrowser()` and return `'safari'` for any
iOS browser. Chrome on iOS is a WebKit skin (UA contains both
`CriOS/` and `Chrome/`), and was being routed through the Chromium
Local Network Access path with a `targetAddressSpace` option that
iOS silently ignores.
Addresses user reports on iPhone Chrome of: persistent "Connection
lost" banner during healthy streaming, unresponsive Retry Now button,
and missing Safari-specific mixed-content guidance.
Bumps eca-webview submodule for the related mobile chat-overflow and
trash-icon fixes.
🤖 Generated with [eca](https://eca.dev)
Co-Authored-By: eca-agent <git@eca.dev>
0 commit comments