Repository navigation
fix(desktop): recover stale control even while video progresses - #100
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A native desktop could keep receiving pictures while control replies stopped progressing, so the video-only watchdog left input apparently connected for long periods. Managed and direct native paths now track independent control progress with at most 16 exact outstanding heartbeat tuples and checked session-local sequence numbers. Matched monotonic send time is the evidence: late, duplicate, unknown and retired echoes cannot make old control current.
An ordinary eight-second control-progress budget ends only the owning desktop attempt, with existing no-replay behavior and managed-peer/unrelated-stream retention. Clipboard retains its existing 30-second absolute allowance and exact ID/size completion; repeated starts cannot extend that unconfirmed grace indefinitely. Wire, route/controller defaults, bitrate and server lifecycle are unchanged. Reopening and OS scheduling are not hard real-time guarantees.
Validation: 27 native CLI library tests passed, including a real framed pipe with continuously fresh video and no echoes that fails control at eight seconds, preserves one input without replay and drops held media; a sixty-second matched-echo pipe keeps its session. Exact tuple/order/retirement/exhaustion and clipboard grace regressions pass. An initial EOF-versus-completed-task race in the new fixture was corrected explicitly. Expanded strict workspace clippy and fmt pass. Both-platform full CI and installed acceptance are tracked separately; no complete runtime stability claim. Architecture/native contract, primary-source research and receipt updated.