diff --git a/README.md b/README.md index 0a81e01..d854a16 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,8 @@ The first build downloads pinned dependencies. Build natively on Apple Silicon o With the macOS 27 SDK, the player uses a private `ViewState` alias for the `SwiftUI.State` property wrapper to avoid selecting the same-named macro, whose `SwiftUIMacros` plugin is absent from standalone Command Line Tools. Full Xcode or an older SDK is not required. +Apple Swift 6.3.3 has been reported to abort during optimized `TerebiApp.swift` compilation with `SmallVector unable to grow` in an actor-isolated `Double` callback thunk. The volume binding uses an explicit setter closure instead of a method reference to avoid that conversion. The workaround was checked with Swift 6.4 and the macOS 26.5 SDK, but still needs confirmation on the affected 6.3.3 toolchain. Retry `make install` with the updated source; no dependency-cache reset is needed. + The resulting `.build/terebi.app` is self-contained: copy the whole app to a compatible Mac of the same architecture. No separate FFmpeg, Python, or yt-dlp installation is needed to run it. ### Apple SDK and UI API audit diff --git a/Sources/App/TerebiApp.swift b/Sources/App/TerebiApp.swift index 19b6c59..3893969 100644 --- a/Sources/App/TerebiApp.swift +++ b/Sources/App/TerebiApp.swift @@ -2480,7 +2480,8 @@ private struct PlayerContent: View { HStack(spacing: 4) { iconButton(model.volume == 0 ? "speaker.slash.fill" : "speaker.wave.2.fill", model.volume == 0 ? "Unmute" : "Mute", action: model.toggleMute) - PlaybackSlider(value: Binding(get: { model.volume }, set: model.setVolume), + // Avoid the actor-isolated method reabstraction implicated in a Swift 6.3.3 IRGen crash. + PlaybackSlider(value: Binding(get: { model.volume }, set: { model.setVolume($0) }), range: 0...1, volume: true, enabled: model.canSetVolume, onEditingChanged: model.setControlsDragging) .frame(width: 70, height: 14) diff --git a/TODO.md b/TODO.md index 0aa6cf2..64797c8 100644 --- a/TODO.md +++ b/TODO.md @@ -20,4 +20,4 @@ - [x] check whether we're using appropriately new apple ui APIs / SDKs for the project. - we should strive to use modern and idiomatic SDKs and APIs including SwiftUI among others - audited SDK 27.0 / Swift 6.4 with the macOS 15 minimum retained; migrated Cast discovery to NWBrowser and production activation to activate(). Real Bonjour identity/name/update/order/deduplication/removal/restart and routable-endpoint checks, loopback Cast transitions, focused startup-error alerts and a cooperating-launcher production smoke for cold start/CLI reuse/document handoff/keyboard playback passed. The existing full CLI snapshot-harness timeout remains; macOS 15 runtime and physical-Cast verification remain unverified. Observation, glass and the existing native bridges were left unchanged. -- [ ] fix the readme. it's currently bloated with irrelevant implementation detail and other such nonsense. \ No newline at end of file +- [ ] fix the readme. it's currently bloated with irrelevant implementation detail and other such nonsense. it should do the job of a readme only, nothing more. \ No newline at end of file