+7
−0
Loading
Private feeds (paid memberships): optional HTTP Basic credentials per subscription, entered in the add-by-URL flow or in the podcast settings. Stored in the Keychain only (never in the database or logs) and applied to all three network paths: feed refresh (FeedFetcher gains a credentials parameter), episode downloads (Authorization header via a provider closure on DownloadController), and streamed playback (AVURLAsset header options behind a new setStreamingHeaders engine hook). Credentials are removed on unsubscribe. Per-podcast volume: a 20-100% factor in the podcast settings (schema migration v9), multiplied into the app volume by the playback controller, to tame podcasts mixed louder than the rest. Co-Authored-By: Claude (RCA)