fix(desktop): recover stalled video and preserve native usability - #64
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 remain responsive while video stopped, and covered windows accumulated unsubmitted GPU staging allocations. Acquire a usable surface before upload, retain partially read IPC framing in one owned reader, and admit bounded media work before capture. Three owned permits cover capture/queue/write/unacknowledged work; recovery keyframes complete before successors. Live native bitrate updates retain codec references, skipped codec frames preserve sequence, admission waits do not penalize quality, and unchanged elevated RTT no longer repeatedly drives a clean path to the bitrate floor. Remove scheduled 240-frame IDRs while preserving startup, geometry and explicit resync.
Use the ordinary window level, one generated icon across the app/Dock/native window/launcher, and a native startup chooser defaulting to Full HD. Appended DesktopV3/DesktopProfile variants carry explicit height without renumbering old tags. Explicit macOS Ctrl+V transfers bounded UTF-8 text before input; X11 owns CLIPBOARD and ICCCM INCR. Reassembly separates idle and total deadlines. View-only sessions refuse publication. Existing wire tags remain stable; new profile/clipboard functionality requires coordinated installations.
Concurrent same-credential managed connects join the owning dial without canceling it when a waiter disappears. Readiness publishes after the owner reply; credential conflicts and verified name resolution remain enforced. Pinned ticket hints survive reconnects, and names freeze to the authenticated identity.
Rotating private logs and atomic live snapshots expose UI/encoded/decoded/presented age, occlusion, queues, actual GPU uploads and recovery causes. Receiver timeouts retain sequence/partial byte counts; sender health distinguishes queued and transport-acknowledged frames. Media/clipboard contents remain excluded.
Validation: regressions retain failures before priority/retry/framing/rate/IDR/dial fixes. Mac all-feature workspace passed 770 tests (2 ignored) on the manager increment; the final viewer hint increment has full CLI tests and strict clippy. Linux all-feature workspace passed 772 tests (11 ignored) using the actual pinned compiler; dedicated Xvfb separately passed native clipboard Unicode/INCR plus 6 input/display checks. Both OS CI, native artifact lanes, CodeQL and supply-chain checks are current-head evidence. Installed two-device native screen/input/text-paste and recovery observations are recorded privately. The public scoped report distinguishes intermediate failed latency/soak outcomes and remaining physical/hardware/mixed-network qualification; no milestone closure is claimed.