No description
Find a file
RedLintu16 64ec524ba0 CrossSound for Apple platforms
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-14 13:28:34 -07:00
Apps CrossSound for Apple platforms 2026-10-14 13:28:34 -07:00
Packages/CrossSoundKit CrossSound for Apple platforms 2026-10-14 13:28:34 -07:00
tool CrossSound for Apple platforms 2026-10-14 13:28:34 -07:00
.gitignore CrossSound for Apple platforms 2026-10-14 13:28:34 -07:00
CrossSound-watchOS.entitlements CrossSound for Apple platforms 2026-10-14 13:28:34 -07:00
Makefile CrossSound for Apple platforms 2026-10-14 13:28:34 -07:00
project.yml CrossSound for Apple platforms 2026-10-14 13:28:34 -07:00
README.md CrossSound for Apple platforms 2026-10-14 13:28:34 -07:00

CrossSound-Apple

Native SwiftUI apps for iOS and macOS — the replacement for the Flutter builds on Apple platforms. Two separate apps (each platform keeps its own shell and features) over one shared package.

Packages/CrossSoundKit/
  CrossSoundKit   API, auth, player, models (DRM stubbed) — no UI
  CrossSoundUI    red_white_ui ported to SwiftUI (tokens copied from 0.5.0)
Apps/iOS          fi.RedLintu16.CrossSound.native  (flip to fi.RedLintu16.CrossSound at cutover)
Apps/macOS        fi.RedLintu16.CrossSound.mac

CrossSound.xcodeproj is generated — never edit it, edit project.yml:

make project   # xcodegen generate
make mac       # debug build, macOS
make ios       # debug build, iOS simulator

DRM is stubbed out on this branch. The FairPlay key delegates and the offline-download engine in Kit/DRM keep their types and signatures but refuse every key request and download, and SoundCloudAPI.resolveDrmStream returns nil. Go+ tracks that SoundCloud only serves encrypted are skipped as unplayable; everything else plays as usual.

Porting map (Flutter → here)

Flutter (CrossSound-Android / -Flutter) Here Status
ios/macos FairPlay plugins (key delegates) Kit/DRM ✅ ported
fairplay method/event channels + drm_player Kit/Player/PlayerEngine ✅ ported
native_log EventChannel → Debug Console Kit/Support/CSLog ✅ ported
DrmDownloadPlugin (AVAssetDownloadTask) — (downloads removed here) ✖
services/soundcloud_api.dart (v1+PKCE / v2) Kit/API (Phase 1) ⬜
services/auth_service.dart (two tokens) Kit/Auth (Phase 1) ⬜
providers/app_state.dart (queue/shuffle/radio) Kit/Player + Kit/Queue (Phase 2) ⬜
screens/ (red_white_ui) CrossSoundUI + Apps (Phase 3) ⬜
local_api_server.dart (52124/8963) Apps/macOS (Phase 5) ⬜
StatusBarController / notifications / EQ Apps/macOS + Kit/Audio (Phase 5) ⬜
widgets, Live Activity, Dynamic Island Apps/iOS extensions (Phase 6) ⬜
remote_service.dart (Firebase RTDB) Kit/Remote via REST+SSE (Phase 7) ⬜

No downloads on this branch either: the offline-download feature (download store, database, engines, Downloads screens and every Download button, on the phone, the Mac and the watch) is removed, so everything streams.