Skip to content

Support multiple simultaneous KVM connections on iPad#36

Merged
thirteen37 merged 1 commit into
mainfrom
thirteen37/ipad-multiple-connections
Jun 25, 2026
Merged

Support multiple simultaneous KVM connections on iPad#36
thirteen37 merged 1 commit into
mainfrom
thirteen37/ipad-multiple-connections

Conversation

@thirteen37

Copy link
Copy Markdown
Owner

Brings the macOS multi-window model to iPad: a Connections scene plus a value-parameterized Viewer WindowGroup keyed on Device.ID, so two devices can run side-by-side under Stage Manager (UIApplicationSupportsMultipleScenes). A backgrounded viewer pauses its stream (disconnect) and auto-resumes (reconnect) on return, driven by the pure, unit-tested ScenePhasePausePolicy; .inactive is deliberately ignored so genuinely side-by-side windows keep streaming, and only sessions we paused are auto-resumed. No KVMCore changes were needed — the networking/session/video layers were already per-connection concurrency-safe. Also fixes a pre-existing compile error in PhysicalKeyboardObserver (nonisolated(unsafe)) so the iPad target builds under Swift 6.3's stricter nonisolated-deinit rule, and updates CLAUDE.md to document the new multi-window behavior.

Verified: KVMCore 166, iPad 14 (incl. 5 new policy tests), macOS 8 — all passing.

Mirror the macOS multi-window model on iPad: a Connections scene plus a
value-parameterized Viewer WindowGroup keyed on Device.ID, so devices run
side-by-side under Stage Manager. A backgrounded viewer pauses its stream
(disconnect) and auto-resumes (reconnect) on return, driven by the pure,
unit-tested ScenePhasePausePolicy; .inactive is ignored so true side-by-side
windows keep streaming. Also fix PhysicalKeyboardObserver to compile under
Swift 6.3's stricter nonisolated-deinit rule.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@thirteen37 thirteen37 merged commit 6bf45de into main Jun 25, 2026
1 check 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