Repository navigation
Add spatial audio and improve Wine and Steam management - #3
Merged
enginefuture merged 6 commits intoOct 10, 2026
Merged
Conversation
Provide retained audio clock and stream volume services, preserve managed runtime identity on import, and expose optional spatial diagnostics. Add packaged runtime audits and integration probes, publish the services build as 11.0.9-services.1, and record Split Fiction acceptance with 7.1.4 output. Validation: scripts/check.sh; packaged services runtime audit (48 Mach-O modules); opt-in runtime import and bottle initialization integration test.
Show selected and running runtime versions, save an explicit game engine choice, and move unused versions to Trash without removing bottles or games. Block switching while Wine runs and protect the selected or running version from deletion. Validate selection fallback, external and symlink directory boundaries, and running-runtime deletion protection. Allow a separate development app output directory.
Debounce searches and ignore superseded responses, distinguish no results from failures, and retry missing game metadata with bounded backoff. Move filesystem scans and metadata cache I/O off the UI actor, separate download and full account scan cadence, and preserve in-memory metadata. Clarify library empty states and replace unsupported compatibility and cloud-sync claims with accurate labels. Validation: scripts/check.sh, five refresh policy tests, real local Steam cache read-only check, Release app packaging and signature verification.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem and behavior
Wine's existing macOS path does not provide the base Windows spatial object audio pipeline needed by games such as Split Fiction. This change ports the spatial audio implementation into the project's hash-locked Wine 11 patch stack, with CoreAudio rendering PCM objects using their positions, gains, and the native output layout.
The initial implementation returned unallocated dynamic object slots from
BeginUpdatingAudioObjects. After Split Fiction allocated all 31 objects, this became zero and the game repeatedly recreated its spatial stream, causing severe stutter/freezes. Returning the per-pass rendering capacity restored normal gameplay in the same-scene A/B test.Changes
Add Window menu shortcuts for native minimize (Command-M), zoom/restore (Control-Command-M), and full-screen toggle (Control-Command-F), retaining the standard Command-W close action.
Improve Home, Store and Library presentation: adaptive toolbars, two-line titles with full-name tooltips, width-bounded artwork and content, and deduplicated carousels with visible item counts and page controls. Store sections expose all returned entries.
Improve Steam search and library reliability: debounce queries, reject stale responses, distinguish empty/error states, retry missing metadata with bounded backoff, and move throttled library/cache I/O off the UI actor. Clarify ownership actions and remove unverified compatibility/cloud-sync badges.
Add base spatial object streams, CoreAudio object transport/rendering, native output layout handling, and endpoint invalidation tests.
Supply retained
IAudioClock,IAudioClock2, andIAudioStreamVolumeservices, plus base stream availability queries.Add persistent Wine version selection and selected/running labels. Protect running and selected versions from removal, and move unused app-managed versions to Trash while preserving games and bottles. Switching is blocked until Wine processes exit.
Preserve the managed runtime identity and prerelease version during local import; add an optional per-game spatial diagnostics switch.
Build the experimental runtime as
11.0.9-services.1, record actual build provenance, audit packaged dependencies/architectures/patch hashes, and add isolated runtime import and graphics smoke probes.Document upstream attribution, the Windows API comparison, the freeze investigation, and game acceptance evidence.
Validation
scripts/check.sh: patch checks, Swift tests, Release app/CLI builds, Steam wrapper and Windows fixture compilation passed. Opt-in external integration tests are skipped by default.Packaged
11.0.9-services.1audit: 48 Mach-O modules, no errors.Opt-in packaged runtime import and bottle initialization test passed in an isolated prefix, including paths with Chinese characters and spaces.
Recorded Wine spatial tests: 3,090 checks per PE architecture, zero failures/skips and two existing todos each.
User confirmed Split Fiction in the previously failing scene on 7.1.4 output (12 channels, 48 kHz): smooth picture, controls and sound normal.
Wine version management: four focused tests passed for explicit selection/fallback, external directory protection, escaping symlinks, and running-runtime deletion protection; the complete check script and development app signing verification passed.
Steam refresh changes: five policy tests passed; real local Steam cache read-only verification found 20 account games. The complete check script and updated Release app packaging/signature verification passed.
Display changes: Release app build and development signing passed; native app checks confirmed Home stays within the window, library long titles wrap, duplicate Store entries are removed, and carousel navigation disables at the end. Minimum-width toolbar fallback is implemented but still needs manual verification.
Window shortcuts: Release app build and signing verification passed; native UI checks confirmed close/termination, minimize, zoom/restore, and full-screen entry/exit.
Scope and remaining validation
The default downloadable runtime remains
11.0.2; this PR adds the experimental build and does not publish a replacement release. HRTF/metadata streams are not implemented. Windows reference volume-channel mapping, physical speaker direction, device hotplug/sleep recovery, and long-duration testing remain outstanding. The game acceptance is a short same-scene test and does not establish use of every service interface.The spatial port retains attribution to the Switchyard Wine implementation. Integration, fixes, services, tests and documentation were prepared with Codex assistance.