Know what is actually supported

Path macOS Linux Windows
Build/test and offline render Verified Verified in native CI and smoke runs Verified in native CI and smoke runs
Headless NINJAM join Verified Verified Verified; real Winsock sys seam, not POSIX emulation
ANSI terminal spectacle Verified Verified, including silent fallback Verified; conhost VT output and clean Ctrl+C
Miniaudio playback Compiled by default Opt-in; backend dependencies apply Opt-in; compiles, device playback not in CI evidence

Windows support landed via #25. See the Windows guide for shell spellings, sound tooling, and what is not proven there.

Headless build

zig build -Doptimize=ReleaseSafe -Dlive=false

This removes production miniaudio device dependencies. It still supports offline render and NINJAM join. play and trigger refuse to pretend an output device exists.

Tests still compile a standalone null-backend audio ABI test. That is hardware-independent and does not reintroduce real-device access.

Audio-enabled build

zig build -Doptimize=ReleaseSafe -Dlive=true

macOS defaults to this with CoreAudio frameworks. Linux and Windows default to false; an enabled Linux backend can require ALSA development packages and an available device. On Windows -Dlive=true compiles through vendored miniaudio, but real-device playback is not yet covered by CI evidence. A headless VM is not a playback test.

fart uses host sound/speech commands independently of -Dlive; that flag controls kujamba's device path, not whether the terminal app finds afplay.

Cross-build without claiming execution

# From any host — e.g. macOS cross-compiling for a headless Linux server.
zig build -Dtarget=x86_64-linux-gnu -Doptimize=ReleaseSafe \
  -Dlive=false --prefix zig-out-linux

# Windows, likewise. Produces fart.exe / kujamba.exe / audit.exe
# (plus .pdb debug files) without a Windows toolchain installed.
zig build -Dtarget=x86_64-windows -Doptimize=ReleaseSafe \
  -Dlive=false --prefix zig-out-windows

Both prove compilation and linking, not a native run. The native CI legs (build-test on Linux, build-test-macos, build-test-windows) perform the separate tests and render/energy/silence smoke checks that stand as the cross-platform evidence. Cross-build outputs land under zig-out-*/, which is gitignored; a -Dlive=true cross-build still only proves compilation — device playback is a native, hardware-dependent claim.