<!doctype html> @MariaPandora @LeonPandora Pandora Apple Silicon Wrapper Proof of Concept A native macOS proof of concept showing how Pandora's existing web experience can be wrapped in a modern Apple Silicon app shell with media keys, optional login persistence, privacy controls, and conservative playback recovery. Intent: This is not intended as a supported third-party Pandora client. It is MIT-licensed source material offered as a starting point for Pandora engineering to evaluate, fork, adapt, or discard. Status: Unofficial, unaffiliated, and not endorsed by Pandora, Sirius XM, or any related entity. Project Summary I built a proof-of-concept native Apple Silicon macOS wrapper for Pandora's web experience. The goal is to demonstrate that a modern native wrapper around the existing Pandora web app is feasible, compact, and relatively low-risk as a starting point for an official Apple Silicon desktop app. The source is MIT-licensed and intended as a handoff or kickstart for Pandora engineering, not as a product I want to support. Technical Stack Native App Language: Swift UI framework: SwiftUI Target: Apple Silicon only Minimum macOS: macOS 26 Build system: Swift Package Manager Web And Media Web runtime: WKWebView Media integration: MediaPlayer / MPRemoteCommandCenter Now Playing: MPNowPlayingInfoCenter Bridge: injected JavaScript + WKScriptMessageHandler Storage Session storage: WebKit website data stores Default mode: non-persistent session Optional mode: persistent session if Remember Login is enabled History: local UserDefaults only Release Shape Signing: hardened runtime options Sandbox: app sandbox + outbound network client entitlement Icon: original generated .icns License: MIT Current Features Native macOS SwiftUI shell around Pandora's web player. Compact single-window layout designed to fit on a side monitor. Loads Pandora's web app through WKWebView. Optional Remember Login mode. Clear Pandora Session control. Native playback controls: play/pause, skip, and replay/restart. System media key integration through macOS media command center: F7 previous/replay, F8 play/pause, F9 next/skip. Native Now Playing metadata integration when Pandora exposes track metadata. Local play history based on observed metadata. Clear Local History control. Playback watchdog that detects stalled or waiting playback, attempts conservative soft recovery, and reloads after repeated recovery failures. Detects and surfaces Pandora's "Are you still listening?" prompt without bypassing or auto-answering it. Pandora Web UI Still Handles Now Playing History Collection Browse Channels Search My Station Discovery Deep Cuts Newly Released Artist Only Energy Boost Relax Security And Privacy Protections No telemetry. No analytics. No crash reporting. No auto-update mechanism. No remote configuration. No credential capture. No custom password storage. Pandora login happens only inside Pandora's own web page. Persistent login is optional. Turning off Remember Login clears Pandora session data from the app's active WebKit data store. Local play history stays local. Local play history can be cleared independently. Main-frame navigation is restricted to https://pandora.com and https://*.pandora.com. External main-frame links open in the user's default browser instead of inside the app. JavaScript bridge is injected only into the main frame. Bridge messages are accepted only from Pandora origins. Bridge payloads are size-capped before decoding. WebKit script message handling uses a weak delegate to avoid retain-cycle risk. App sandbox entitlement is enabled. Network access is limited to client/outbound networking. Build script signs with hardened runtime options. App icon is original and does not use Pandora trademarks or assets. Included Documentation MIT license. Privacy statement. Security notes. Handoff notes. Unofficial/no-affiliation disclaimer. What Is Left For Pandora Replace the proof-of-concept bundle identifier with an official Pandora-owned identifier. Replace the unofficial app name and icon with approved Pandora branding. Review the app against Pandora's internal legal, product, advertising, subscription, and rights requirements. Replace DOM-selector-based playback control with official internal APIs if available. Verify behavior across free accounts, paid accounts, ads, station modes, collection/library flows, search, login/logout, expired sessions, prompts, playback stalls, and poor network conditions. Add official QA automation. Add official crash reporting if desired. Add official telemetry only if it matches Pandora's privacy policy. Add an official auto-update mechanism if desired. Sign with Pandora's Apple Developer ID certificate. Notarize and staple the app for public macOS distribution. Decide whether to ship as a direct DMG, ZIP, Mac App Store app, or update to the existing desktop app. Review whether App Sandbox should remain enabled or whether additional entitlements are required for official distribution. Decide whether deeper native UI should be added over time for stations, search, collection, thumbs/music direction, artist info, history, and station modes. Bottom Line The hard parts left are not the wrapper itself. The remaining work is mostly official ownership: branding, QA, signing/notarization, policy review, and replacing brittle web-DOM hooks with supported internal interfaces where Pandora has them.
... View more