191c81e55e64e473f6950d58ea4d813035a9d9c7
Safari on iPhone and iPad has picture-in-picture but never implemented requestPictureInPicture; it exposes WebKit's older presentation-mode switch instead, and document.pictureInPictureEnabled is undefined there. Every capability check in the player and the feed was that one property, so they all answered "no" and the button was hidden outright on the platform where people most want it. The difference is confined to customPlayer: supportsPiP, pipElement, enterPiP and exitPiP speak for both APIs, and bindPiPEvents re-fires WebKit's webkitpresentationmodechanged -- which does not bubble -- as the standard enter/leave events, so the feed's delegated listeners, the pane pin and the media-key stepping work unchanged. Capability is read from the method's presence rather than webkitSupportsPresentationMode(), which answers false until a video track is loaded and would hide the button on preload="none" feed videos. There is no iPhone here, so smoke_ios_pip.py reshapes the browser to iOS's API surface -- deleting the standard entry points and installing WebKit's -- and drives the button through it. That covers what actually broke: which API the code reaches for. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QBDkEXP4htyXTCZUwMLphd
Description
A webclient for hottub
Languages
JavaScript
68.7%
Python
17.6%
CSS
11%
HTML
2.1%
Shell
0.5%