Skip to content

v0.1.107-preview

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 22 Jul 16:05
· 24 commits to main since this release

This preview makes Audio Relay substantially more resilient on Wi-Fi, adds
configurable UDP prioritization and HID activity feedback, and tightens device
updates, provisioning, discovery, and diagnostics.

Highlights

Deadline-aware Audio Relay recovery

  • Speaker audio now uses bounded selective replay alongside Opus FEC and packet
    loss concealment. The Client caches the latest 16 encoded frames, allowing the
    Host to request a missing frame while it can still meet the playback deadline.
  • Replay never holds newer audio behind stale data. Requests are bounded,
    duplicate work is coalesced, live audio remains higher priority, and late
    recovery automatically falls back to Opus FEC or concealment.
  • Studio now reports replay requests, requested and recovered frames, and
    failures with the existing Audio Relay telemetry.
  • Improved Client capture pacing eliminates an unnecessary busy loop and
    significantly reduces Client CPU use during Audio Relay.
  • Refined Host jitter-buffer, ALSA playback, underrun recovery, drift control,
    and stale-audio trimming. The recommended Wi-Fi defaults now use a 120 ms
    balanced buffer, Opus in-band FEC, and direct hw: ALSA endpoints where the
    selected device supports them.
  • Detailed replay and packet timing messages remain behind the audio debug
    flags, while meaningful recovery events remain available in the service log.

Network and realtime traffic

  • Added Disabled, Balanced, and Wireless PCVR UDP priority modes to
    the device Network page. Balanced is the default and marks latency-sensitive
    traffic without aggressively competing with other realtime applications.
  • Added runtime QoS diagnostics so the applied socket priority can be verified
    from device status and troubleshooting information.
  • Wi-Fi network discovery is now an explicit action instead of running during
    ordinary status refreshes. The dedicated scan button shows progress without
    moving the page or interrupting realtime traffic unnecessarily.
  • Provisioning disables Wi-Fi power saving and disruptive automatic background
    scanning on both Hosts and Clients while retaining manual Wi-Fi discovery.
  • HID and audio workers retain elevated scheduling priority, while API and
    discovery work run at normal priority.

HID responsiveness and diagnostics

  • Added an optional HID activity LED for both Host transmission and Client
    reception. It covers keyboard, mouse, joystick, and other input batches with
    negligible work in the realtime path.
  • Relative mouse and joystick state handling avoids stale queued motion while
    preserving button transitions and the latest axis state.
  • Prevented paced joystick snapshot failures from entering a tight retry and
    journal-spam loop when a downstream Client becomes unavailable.
  • Live Preview now treats stream startup as synchronization rather than counting
    pre-snapshot reports as ignored input. Its rate, ordering, and latency counters
    begin from the first complete snapshot.
  • Host communication status now reports recent send activity instead of showing
    Waiting for an otherwise active output stream.

Provisioning, Bluetooth, and Studio reliability

  • Same-role provisioning preserves existing Bluetooth bonds. Replacing a Host
    with a Client, or a Client with a Host, clearly warns that pairings from the
    previous Bluetooth role will be removed.
  • Client app updates no longer restart the GhostInput BLE HID backend when its
    helper and systemd unit are unchanged. This preserves active Windows BLE HID
    connections during ordinary updates instead of briefly removing and
    re-registering the GATT service.
  • The clean-configuration option continues to reset GhostInput routes and
    runtime settings without removing same-role Bluetooth pairings.
  • Device Routing refreshes Host device inventory while the page is open, so
    connected or removed USB and Bluetooth devices resolve without service
    restarts or a separate event-listener subsystem.
  • Improved stale device detection, provisioning progress, warning contrast,
    password clearing, and route correction behavior throughout Studio.

Upgrade notes

Update Studio and its bundled Host and Client payloads together. This release
continues to require the compact realtime protocol introduced in
v0.1.106-preview; older mixed-version peers are not supported.

Reprovisioning is not required for an existing installation. Use the normal
Update action for each Pi so it receives the current runtime, network
defaults, Audio Relay recovery, and service-management behavior.

Bluetooth bonds are preserved by same-role provisioning and app updates. A
Host/Client role replacement intentionally clears the previous role's bonds.
If a release genuinely changes the BLE HID helper or service definition, that
backend must restart to load the new version; the stored Windows bond remains
intact and should reconnect normally.

GhostInput control APIs use HTTP and realtime traffic uses UDP without
encryption. Run GhostInput on a private network you trust and do not expose its
ports directly to the internet.

Full changelog

Compare v0.1.106-preview...v0.1.107-preview