Skip to content

Add generic PC Switch Control protocol - #468

Merged
enaboapps merged 6 commits into
mainfrom
feat/switch-control-protocol-466
Jul 27, 2026
Merged

Add generic PC Switch Control protocol#468
enaboapps merged 6 commits into
mainfrom
feat/switch-control-protocol-466

Conversation

@enaboapps

Copy link
Copy Markdown
Contributor

Summary

  • add the five PC Switch Control protocol commands and capability advertising
  • route authenticated generic and legacy Grid traffic through a single session owner
  • preserve no-ack realtime edges, acknowledged snapshots, sequencing, and cleanup
  • block conflicting desktop commands while forwarding and show the active profile

Closes #466

Dependency

Stacked on #467. Merge #467 first, then retarget this PR to main.

Test plan

  • dotnet restore src/SwitchifyPc.sln
  • dotnet build src/SwitchifyPc.sln -c Release --no-restore
  • dotnet test src/SwitchifyPc.sln -c Release --no-build (486 unit, 1 integration)
  • Disposable-device compatibility matrix

- Add validated atomic profile persistence with immutable built-in Grid 3 and keyboard profiles
- Add mapped desktop and Grid output sessions with state reconciliation and deterministic cleanup
- Add an accessible eight-slot profile manager and focused engine tests

🤖 Auto-generated
- Canonicalize stored key and shortcut tokens for Windows input
- Retain failed provider cleanup state for deterministic retries
- Make binding values discoverable and focus invalid switch rows
- Add regression coverage for cleanup and normalization failures

🤖 Auto-generated
- Add authenticated profile catalog, session, edge, synchronization, and stop commands
- Route generic and legacy Grid sessions through one device-owned session manager
- Advertise no-ack switch edges and reject conflicting desktop input while forwarding
- Surface the active switch profile and cover validation and authenticated routing

🤖 Auto-generated
- Canonicalize stored key and shortcut tokens for Windows input
- Retain failed output cleanup state for deterministic retries
- Make binding values discoverable and focus invalid switch rows
- Add regression coverage for cleanup and normalization failures

🤖 Auto-generated
@enaboapps
enaboapps force-pushed the feat/switch-control-protocol-466 branch from a5e1937 to 9e39a6b Compare July 27, 2026 15:01
@enaboapps

Copy link
Copy Markdown
Contributor Author

Independent review follow-up is complete with no remaining findings. Failed session stops retain ownership and cleanup state for retry, while the protocol/session changes remain stacked on the updated profile/output PR. Verification: Release build passes with 0 warnings; 490 unit tests and 1 integration test pass.

@enaboapps
enaboapps changed the base branch from feat/switch-control-profiles-465 to main July 27, 2026 17:54
…rotocol-466

# Conflicts:
#	src/SwitchifyPc.App/App.xaml.cs
#	src/SwitchifyPc.App/SwitchControlProfileWindow.xaml
#	src/SwitchifyPc.Core/SwitchControl/SwitchControlSessionManager.cs
#	src/SwitchifyPc.Tests/SwitchControlSessionManagerTests.cs
@enaboapps
enaboapps merged commit 9917e1e into main Jul 27, 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.

Add generic PC Switch Control protocol

2 participants