$ account vordenken
AutoPiP is a Safari Web Extension paired with a small Cocoa host app for macOS 13.5+. In production, it automatically enters Picture-in-Picture mode for HTML5 video when the user switches tabs (visibilitychange), switches windows (blur/focus with a 100ms delay that filters internal focus changes like clicking YouTube live chat), or scrolls a YouTube video out of view (IntersectionObserver with a 10% threshold). The toolbar popup provides a global on/off toggle, per-feature switches, blacklist/whitelist site control with full-hostname or root-domain matching, and a configurable keyboard shortcut (default ⌥P) that prefers the W3C requestPictureInPicture API and falls back to webkitSetPresentationMode. The extension is Manifest V2, which is the only option Safari currently supports, and it makes no outbound network requests beyond Sparkle update checks performed by the host app. Architecturally, the product is split into three layers: the content script (content.js) owns PiP state transitions and video discovery via priority-ordered selectors (YouTube, Disney+, Twitch, generic) with a MutationObserver-invalidated cache; the popup (popup.js) persists settings in browser.storage.local and broadcasts changes to all open tabs via runtime messages; and the Swift host app provides a first-launch onboarding flow in a WKWebView, bridges update preferences through a native message handler, and wraps Sparkle 2.9.3 with an opt-in beta channel. The release pipeline is the standout feature: semver.txt is the single source of truth, feature/* branches produce immutable beta tags, main produces stable releases, and a canonical Sparkle appcast plus Homebrew cask are updated automatically via Python scripts with atomic file replacement. The repository is actively maintained (last commit September 2026, beta release v2.1.1 in progress) with a well-instrumented CI setup: dependency-free Node.js tests execute the content script, popup, and host script inside a vm sandbox with fake DOM objects; Swift unit tests cover onboarding JSON parsing; and release-pipeline tests validate appcast/cask transformations and workflow invariants. Documentation is unusually thorough (AGENTS.md, BUILD.md, PRIVACY.md, SECURITY.md). Minor weaknesses: the UI test targets contain only Xcode template boilerplate, popup.js uses unconditional console.log in a few places, and storage keys/message names are duplicated string contracts between popup.js and content.js rather than shared constants.