Skip to content

Add spatial audio and improve Wine and Steam management - #3

Merged
enginefuture merged 6 commits into
enginefuture:mainfrom
Tianyulife:codex/spatial-audio-port
Oct 10, 2026
Merged

enginefuture merged 6 commits into
enginefuture:mainfrom
Tianyulife:codex/spatial-audio-port

Conversation

@Tianyulife

@Tianyulife Tianyulife commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

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, and IAudioStreamVolume services, 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.1 audit: 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.

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.
@Tianyulife Tianyulife changed the title Add macOS spatial object audio support and fix Split Fiction freezes Add macOS spatial audio support and Wine version management Oct 9, 2026
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.
@Tianyulife Tianyulife changed the title Add macOS spatial audio support and Wine version management Add spatial audio and improve Wine and Steam management Oct 9, 2026
@enginefuture
enginefuture merged commit ca4f9c1 into enginefuture:main Oct 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants