#38 built and bundled the native host into the Windows and both Linux
installers (adding a Linux ARM64 installer). Only the Windows installer
gets it now; the Linux and macOS installer jobs are as on main.
x264 is GPL and Windows encodes with Media Foundation, so the shipped
bundle leaves it out. desktop/build.py --with-x264 adds it for the
native CI jobs' headless protocol tests, which no longer upload their
bundles. The release job tests the packaged app's own bundle with its
bundled Python and checks x264 isn't in it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#38 swapped the Mac agent's Swift RateController for a binding to
desktop/controller.c. That is a change to a shipped, headset-verified
feature that this Windows-only PR can't test on a Mac, so the Mac agent,
its build script and the staleness check go back to main. The C port
stays for the Windows host and is still checked against the frozen trace
of the Swift original.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- The 10 s watchdog no longer ends idle sessions. PipeWire and WGC deliver
frames only on damage; fail only when a frame entered the encoder and never
came out, or the pipeline never produced its initial frame.
- Controller.state/call/update are inert after close(), so a /status poll
racing Stop cannot dereference the freed native controller.
- Malformed viewer fields drop the event instead of ending the session.
- PATH/LD_LIBRARY_PATH prepends add no empty (current directory) entry.
- portal.c: document fd ownership. pipewiresrc dups the fd it is given
(gstpipewirecore.c, F_DUPFD_CLOEXEC), so the portal closing its own fd is
correct; clear it after close.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>