Skip to content

fix(desktop): prevent lag-induced key repeats and unblock video repair - #87

Merged
rldyourmnd merged 2 commits into
mainfrom
fix/interruptible-media-repair-20261003
Oct 4, 2026
Merged

rldyourmnd merged 2 commits into
mainfrom
fix/interruptible-media-repair-20261003

Conversation

@rldyourmnd

@rldyourmnd rldyourmnd commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

A delayed key release lets X11 typematic manufacture letters that the native client never requested. The viewer now forwards intentional local OS repeats, while per-key X11 leases suppress server repeat during a genuine hold and restore the original setting after the last controller releases it. Viewer and agent require a coordinated update.

Explicit video repair also now retires obsolete media writes/receipts and forces a new independent picture through a session-local epoch. Repeated repair requests coalesce while that picture is in flight; input, heartbeats and unrelated connection services remain alive.

Validation: a disposable Xvfb regression reproduced eight keypresses from one down event with a 160 ms delayed release before the fix; afterward it observes one, preserves intentional repeats and checks shared-hold/drop cleanup. All eight native X11 input cases pass. Real Iroh/Noq fixtures cover blocked independent writes, saturated admission, delayed receipts and native H.264 recovery. macOS desktop tests and strict default/desktop Clippy pass; Linux X11 Clippy passes. Both-OS CI is required. Installed-device latency/stability qualification remains open and is not inferred from loopback results.

The first Linux CI exposed a pre-existing metrics test race: server sampling ran after queueing the echo but before the UDP driver sent it. The fixture now waits for a peer-observation fence before sampling, preserving all assertions without sleeps or production transport changes. The corrected metrics fixture and strict metrics Clippy pass locally.

@rldyourmnd
rldyourmnd merged commit a4d8701 into main Oct 4, 2026
18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant