fix: avoid isolated volume setter reabstraction in Swift 6.3.3
This commit is contained in:
@@ -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<Value>` 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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
- [ ] 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.
|
||||
Reference in New Issue
Block a user