CryoRadio Receiver 0.5.6 - macOS Apple Silicon private test R3
==============================================================

Target
------
- Apple Silicon Mac: M1, M2, M3, M4 or newer.
- Normal Steam installation.
- Project Zomboid Build 42.20 and compatible future hotfixes.
- Unsigned and unnotarised private test build.

Important
---------
This build is not signed or notarised by Apple.

It has been cross-compiled on Windows. Core Audio playback, Steam launch
integration and the current Project Zomboid macOS layout must therefore be
proved on the player's Mac.

Upgrade from the earlier private test
-------------------------------------
This installer remains fresh-install-only.

If CryoRadio Receiver 0.5.5 R1 is already installed, fully quit Steam and
Project Zomboid and run the existing installed uninstaller first:

bash "$HOME/Library/Application Support/CryoHost/CryoRadio Receiver/uninstall.command"

Then install this R2 package.

Install
-------
1. Close Project Zomboid and fully quit Steam.
2. Extract the ZIP.
3. Open Terminal.
4. Type: cd
5. Add a space, drag the extracted folder into Terminal, then press Return.
6. Run:

   bash install.command

7. Start Steam normally.
8. Launch Project Zomboid normally.

The installer requires Python 3.

Lifecycle
---------
The Steam launch wrapper starts CryoRadio Receiver with Project Zomboid.

The Receiver exits when Project Zomboid closes.

There is no LaunchAgent, login item, service or permanent background process.

Audio
-----
- CRP2 Opus
- 48 kHz stereo
- 20 ms frames
- macOS Audio Queue / Core Audio output
- In-game volume, distance and stereo pan remain controlled by the Workshop
  bridge.

Patch-independent compatibility
-------------------------------
R2 no longer requires one exact whole-projectzomboid.jar byte count or
SHA-256.

The installer validates the Project Zomboid JAR as a ZIP and requires exactly
one:

zombie/radio/devices/DeviceData.class

The stock class must be exactly:

- bytes: 39676
- SHA-256:
  e1c6392c268862b74f90402b5779e1aeea3ede5acfbfd1f53d8b8dadf6dbb2d6

The CryoRadio getter remains:

- bytes: 39727
- SHA-256:
  33720dd15d4430963a46f5112e2896863b15d9462951d9be2d69bedb54c9556b

CryoRadio continues using the Mac-specific loose DeviceData.class override.
It does not rewrite projectzomboid.jar.

If Project Zomboid changes DeviceData.class itself, installation fails closed
until CryoRadio compatibility is reviewed.

Safety
------
- Verifies JAR ZIP integrity.
- Requires exactly one audited stock DeviceData.class inside the JAR.
- Does not modify projectzomboid.jar.
- Refuses an unknown existing loose DeviceData.class.
- Records the actual discovered JAR SHA-256 and byte count in installation
  state.
- Removes the loose getter only when CryoRadio owns it.
- Preserves existing Steam launch options and restores them on uninstall.
- No sudo, system service, LaunchAgent or login autostart.

Files
-----
Receiver data and logs:

~/Library/Application Support/CryoHost/CryoRadio

Installed Receiver:

~/Library/Application Support/CryoHost/CryoRadio Receiver

Project Zomboid bridge:

~/Zomboid/Lua/CryoRadio

Uninstall
---------
Fully quit Steam and Project Zomboid, then run:

bash "$HOME/Library/Application Support/CryoHost/CryoRadio Receiver/uninstall.command"

Version
-------
0.5.6-macos-arm64-pz-target-class-r3
R3 automatic-start fix
----------------------
R3 incorporates the Apple Silicon Steam-launch behaviour proven on a real Mac.

Steam supplies Project Zomboid to LaunchOptions as the macOS .app bundle.
The CryoRadio wrapper therefore launches that bundle with:

/usr/bin/open -W

instead of attempting to execute the .app directory itself.

This preserves normal macOS application launching, waits for the game session
to finish, starts CryoRadio automatically with the game, and stops the Receiver
when the game closes.

The installer also removes macOS quarantine from the verified CryoRadio
session wrapper before it is installed. This prevents Steam launch failures
with exit code 126 caused by a quarantined wrapper.