Originally created by: kristofferR
Problem
Chatpane has maximize/zoom and an element-level Fullscreen API fallback, but no first-class native fullscreen action. Where a WebView's Fullscreen API is absent or incomplete, video fullscreen is simulated inside the existing decorated window.
Chatpane's Reload menu action is also page eval based, so it cannot recover a blank/error document with no working JavaScript context.
Goal
Provide native fullscreen and native recovery actions while keeping Chatpane a Messenger client rather than reintroducing browser-history shortcuts.
Scope
- Add F11 native fullscreen on Windows and Linux.
- Add the standard Full Screen item on macOS.
- Synchronize native fullscreen state with document.fullscreenElement and the standard/WebKit fullscreenchange events only where the platform WebView needs a bridge.
- Do not move or reparent React-owned media elements. Preserve the original DOM and playback state.
- Escape and external native exit must update both window and page state.
- Change Reload to a native WebView reload operation.
- Add a Messenger Home recovery action that natively navigates to the configured Messenger URL and works from an error page.
- Keep Cmd/Ctrl+[ and ] assigned to conversation navigation as decided in [#18]. Browser Back/Forward shortcuts remain out of scope.
Verification
- F11/menu fullscreen enter and exit on all platforms.
- Messenger video fullscreen, Escape, native title-bar exit, window recreation, and multiple windows.
- Reload and Home from a normal Messenger page, offline/error page, and auth/checkpoint page.
- No fullscreen-state leak after a video or window is destroyed.
Ref [#18].