- Add QR generation of the currently playing URL (macOS window / iOS sheet)
- Encode channel metadata (name/type/group/logo) in the QR payload as
compact JSON; fall back to a plain URL when the payload is too long
for a reliably scannable QR
- Scanning saves the entry into the local library with its channel
metadata and starts playback; legacy plain-URL QR codes still work
- Add iOS QR scanner sheet (AVCaptureMetadataOutput) so scanning is no
longer macOS-only; both scanners share handleScannedCode
- Add optional channel name / group fields to the Add URL dialog and
thread group/logo through addURL/addItem into the library
- Restore session (queue + position) on launch and save on quit for
macOS, not just iOS
- Bundle app icons: generate AppIcon.icns from the macOS iconset when
missing, and compile Assets.xcassets into the iOS app
- build-ios.sh: 设置正确 Team ID (LR8YT5M53U), 添加 GENERATE_INFOPLIST_FILE
- MiniPlayerApp.swift: Bundle.module → Bundle.main (非SPM), @main 条件编译
- 签名: Apple Development + Personal Team provisioning profile
- 产物: MiniPlayer.ipa (584K)