Skip to content

feat(client): fullscreen toggle in bottom chrome strip - #169

Merged
jonocodes merged 1 commit into
mainfrom
fix/android-pwa-install-ssl
Sep 25, 2026
Merged

jonocodes merged 1 commit into
mainfrom
fix/android-pwa-install-ssl

Conversation

@jonocodes

Copy link
Copy Markdown
Owner

Summary

Adds a fullscreen toggle button to the bottom chrome strip, allowing users to hide browser UI and maximize screen real estate on both phone and desktop.

Changes

  • New useFullscreen hook (client/src/fullscreen.ts) that tracks document fullscreen state and exposes a toggle function. Syncs state via fullscreenchange events to handle external exits (system back gesture, Esc key). Gracefully degrades on browsers/jsdom without Fullscreen API support.
  • Chrome button in App.tsx: toggle button with appropriate icons (Maximize when not fullscreen, Minimize when fullscreen) and aria labels for accessibility.
  • Comprehensive tests covering both the happy path (entering/exiting fullscreen) and graceful degradation when the API is unavailable.

Design notes

The fullscreen request must originate from a user gesture (tap/keydown) — the browser enforces this, so the hook only forwards the request. External exits automatically update UI state without additional wiring.

Hide browser chrome (phone/desktop) via the Fullscreen API: a new
icon-only chrome button toggles document fullscreen with
navigationUI: hide, tracks external exits through fullscreenchange,
and no-ops where the API is unavailable. Sidesteps the PWA-install
cert problem for LAN use until a trusted cert story lands.
@jonocodes
jonocodes merged commit ef0e44d into main Sep 25, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant