forked from unom/punktfunk
punktfunk negotiates HDR correctly (the stream is BT.2020 PQ 10-bit) but never told the client to switch its display into HDR picture mode, so HDR streams stayed in SDR on the TV. Sunshine sends an async control-stream message (IDX_HDR_MODE, type 0x010e, carrying SS_HDR_METADATA) shortly after the stream starts; Moonlight only flips the TV into HDR on that cue. We sent exactly one host→client control message (rumble 0x010B) and never this one. (aurora-tv PR #53 worked around it client-side by inferring HDR from the negotiated format; this fixes it host-side so stock Moonlight clients switch too.) Once the control stream is live and the session negotiated HDR, send a one-shot 0x010e message (enable + 26-byte SS_HDR_METADATA from generic HDR10 defaults), latched per connection and re-armed on Disconnect. The rumble sequence counter is unified into a single monotonic `host_seq` shared by both message types — the GCM nonce derives from `seq`, so a separate per-type counter would reuse (key, nonce) pairs in the host direction. The BT.2020 PQ VUI already rides the bitstream (the encoder derives it from the P010 capture format), so this is purely the missing "switch now" signal; no encoder change needed. Wire layout locked by unit tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>