feat(mobile-web): merge mobile stability PRs#933
Merged
Conversation
Wraps the app content in a React error boundary that catches uncaught errors and shows a friendly fallback UI with a retry button, instead of a blank white screen.
Wraps the app content in a React error boundary that catches uncaught errors and shows a friendly fallback UI with a retry button, instead of a blank white screen. Includes componentDidCatch for diagnostics.
Adds a disconnect (log-out icon) button in the session list header. Shows a confirmation dialog before resetting all state and returning to the pairing screen, allowing users to switch to a different desktop.
Adds a disconnect button in the session list header with confirmation dialog. Clears localStorage user ID and fully resets store state to prevent auto-reconnect. Includes keyboard accessibility (Escape/Enter) and ARIA alertdialog role.
Periodically pings the relay every 15s after pairing. When the ping fails, a yellow banner with a spinner appears at the top of the screen to indicate the connection is lost.
Shows a yellow banner with spinner at the top of the screen when the relay connection drops. Uses setTimeout-based non-overlapping polling with 10s ping timeout, cancellation guard, safe-area-aware positioning, and scoped CSS animation names. ## Verification Report - TypeScript: zero errors - Vite build: success (3.53s) - Effect dependency: uses reactive `sessionMgr` state + `page` state - Ping loop: cancellation guard prevents stale state updates - CSS: `display: inline-block` on spinner, `env(safe-area-inset-top)` for notch support, scoped `reconnect-spin` keyframe - i18n: `sessions.reconnecting` key present in en-US/zh-CN/zh-TW
This was referenced May 29, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Integrates the mobile-web stability PRs:
Additional maintainer fixes included while resolving the combined merge:
I18nProviderwhile keeping it insideThemeProvider, so i18n initialization failures can still show the fallback UI.App.tsxand i18n key conflicts across feat(mobile-web): add error boundary to prevent white-screen crashes #921/feat(mobile-web): add disconnect button to switch desktops #923/feat(mobile-web): show reconnect banner when relay is unreachable #926.Verification
pnpm --dir src/mobile-web exec tsc --noEmitpnpm --dir src/mobile-web build