MyGo 云音乐
Go와 MyGo로 만든 서드파티 네이버 클라우드 뮤직 데스크톱 클라이언트
A better Sonos grouping mechanism for use with Spotify
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Sconeos is a native Swift 6 spatial audio controller for Sonos households and Spotify on macOS and iOS.
Sconeos is structured as a single Swift Package (SconeKit) with strict module boundaries.
SconeDomain defines pure value types for speakers (SpeakerModel, BondedSatellite, BatteryTelemetry), 21-step discrete volumes (DiscreteVolume), spatial room placement (FloorplanNode, FloorLevel), and grouping presets.SonosProtocolBoundary handles SSDP and mDNS speaker discovery, UPnP SOAP topology and transport commands, and device battery/surround telemetry.SpotifyBridge manages PKCE OAuth 2.0 authentication in Keychain, fetches track metadata and queues from the Spotify Web API, and resolves Spotify URIs for direct Sonos UPnP handoff.SconeStore coordinates household discovery, optimistic command execution, floorplan persistence, and preset state on @MainActor.SconeUI provides the shared SwiftUI interface across macOS and iOS, including FloorplanMapView, SpeakerSilhouetteView, SconeBrandEmblem, GroupDetailView, NowPlayingDock, and SconeSettingsView.SconeosApp is the executable entry point and wires Sparkle 2 auto-updates on macOS.Sconeos builds with DylKit, Dylan's shared app framework. DylApp.toml configures the app, and the ./run shim runs DylKit's devkit and release-kit tools. Setup, building, tests, background launches, screenshots and the iOS Simulator are in DylKit's apple-dev-loop skill. Releasing is in apple-release. Both ship in the DylKit Cursor plugin.
release-kit bundles the app, strips build-machine rpaths, embeds Sparkle.framework, and signs everything inside-out (Installer.xpc, Downloader.xpc with its entitlements preserved, Autoupdate, Updater.app, then Sconeos.app with Sconeos.local.entitlements). Releases are signed ad-hoc with the designated requirement pinned to the bundle identifier, so Sparkle accepts each build as the same app. Untrusted self-signed certificates get killed by syspolicyd/amfid on quarantined launches.
To rotate or generate a Sparkle EdDSA keypair (storing the private key in the macOS login Keychain and writing the public key to sparkle-public-key.txt):
./scripts/generate-sparkle-key.sh
The download site in server/ is a thin @dylkit/web app that reads DylApp.toml and server/public/appcast.xml. CI for the site is the site workflow in .github/workflows/site.yml.