Outcome
Define one supported SDL3 platform layer for Linux and Windows that can serve the connected client without leaking platform details into session or rendering crates.
Scope
- Window creation/lifecycle, DPI/display changes, fullscreen/windowed modes, focus/minimize/suspend, clipboard, cursors, text input/IME, file dialogs where needed, and clean shutdown.
- Keyboard, mouse, controller/gamepad, touch where supported, hotplug, remapping, repeat, chords, and focus routing into semantic actions.
- SDL3 audio device ownership, format conversion/mixing policy, hotplug/loss, category volume/mute, and resource-provider input.
- Native dependency acquisition/pinning, static/dynamic packaging choice, Vulkan/D3D12 prerequisites, and supported fallback/error behavior.
- Deterministic headless substitutes for platform services used in tests.
- Accessibility hooks and input-device-independent focus/navigation expectations.
Acceptance criteria
- A harness repeatedly creates/destroys windows, resizes, changes DPI/fullscreen, hotplugs input/audio, and exits without leaks or stale callbacks.
- Logical coordinates and scale are unambiguous between SDL events, UI, and renderer.
- Input tests prove keyboard/controller parity for semantic actions and text fields.
- Device failures produce actionable UI/state transitions rather than panic or hidden fallback.
- Supported target/driver matrix is documented and enforced in CI/release checks.
Dependencies
Coordinates with renderer’s SDL3/wgpu surface bridge, but owns no GPU rendering. Product control behavior remains in the transferred controls issue.
Outcome
Define one supported SDL3 platform layer for Linux and Windows that can serve the connected client without leaking platform details into session or rendering crates.
Scope
Acceptance criteria
Dependencies
Coordinates with
renderer’s SDL3/wgpu surface bridge, but owns no GPU rendering. Product control behavior remains in the transferred controls issue.