Repository navigation
feat: introduce the initial One client - #6
Draft
ReenigneArcher wants to merge 16 commits into
Draft
ReenigneArcher wants to merge 16 commits into
ReenigneArcher wants to merge 16 commits into
Conversation
Initial project setup for One, a universal game-streaming client for Sunshine. Adds: - CMake build system with presets for core and Qt client - Qt-free C++20 core library with capability-driven UI mode selection - Shared Qt Quick client with desktop, touch, and television responsive modes - Android TV detection via UiModeManager; tvOS compile-time path - Xbox UWP client placeholder - Core unit tests - Architecture and platform documentation - GPL-3.0-only license - Upstream revision tracking (moonlight-common-c, moonlight-qt, moonlight-android, moonlight-ios, moonlight-xbox)
- Pin moonlight-common-c as a recursive git submodule under core/protocol/vendor - Add One-owned C++ boundary (StreamConfiguration) wrapping Limelight's STREAM_CONFIGURATION - Add HostCatalog and Host models to core with merge/find/pairing-state APIs - Add PairingSession state machine to core - Add Qt HostListModel backed by HostCatalog, exposed to QML as ComputerModel - Wire up ComputersPage: host list view, empty-state toggle, and Add Computer dialog - Add tests for all new units (host_model, pairing_session, stream_configuration, qt host_list_model) - Add ONE_PROTOCOL_USE_MBEDTLS CMake option; update README and architecture docs
Introduce qmdnsengine-backed `_nvstream._tcp` discovery, persistent client identity, `/serverinfo` queries, and the GameStream pairing flow in the Qt client. The host list model and computers page now surface pairing state and status, while CMake and docs are updated for the new Qt/OpenSSL integration, static dependency preference, and added Qt tests.
- Authenticated `/applist` browsing with ApplicationListClient and ApplicationListModel - Exact `/launch` and `/resume` request building (buildLaunchQuery, parseLaunchResponse, LaunchClient) - GamesPage QML with grid layout; ComputersPage now emits gamesRequested via openHost - StreamLaunchParameters extracted from StreamConfiguration with per-session random AES key - StreamingSession boundary over moonlight-common-c with VideoRenderer/AudioRenderer/ConnectionListener interfaces - host_settings helpers extracted from host_list_model; server state/currentgame parsing added to ServerInfo - One::Protocol linked into Qt client; ApplicationModel context property wired in main.cpp
This change adds the initial desktop media path: FFmpeg H.264 decoding, SDL/Opus audio output, a streaming controller, and a QML stream page. It also introduces cancel handling for launch requests, wires the new backend into the Qt app, and documents the desktop streaming prerequisites and platform status.
Implement end-to-end desktop input for the Qt stream path. This adds a Qt key mapper (including Windows scan-code normalization), input capture/release handling in `StreamVideoOutput`, and wires active sessions so keyboard/mouse events, scrolling, and text can be sent through new `StreamingSession` input APIs. The UI now hides navigation while streaming, shows capture guidance, and documents the Ctrl+Alt+Shift+Z release shortcut. Adds focused protocol and desktop input tests and updates architecture/platform docs to reflect the new input pipeline.
Introduces desktop gamepad support in the Qt client with SDL3: controller discovery, hot-plug arrival/departure, per-frame state updates, and launch-time active controller masks. Extends the protocol session API for controller events, migrates desktop media usage from SDL2 to SDL3 (including audio stream handling), and updates UI/docs/tests to reflect the new controller path and dependency requirements.
This change wires host-driven controller rumble callbacks through the protocol layer into the Qt desktop adapter. Standard and trigger rumble are exposed via SDL3 capability checks, queued onto the UI thread, and stopped on session teardown with zero-intensity feedback. The README and architecture docs were updated to reflect the newly supported feedback features.
Extend the streaming protocol with controller touch, motion, and battery types plus send APIs, native mappings, and host motion-state callbacks. Wire the Qt desktop gamepad path to report touchpad contacts, battery updates, and host-requested accelerometer/gyro telemetry (including gyro unit conversion), add teardown cleanup for telemetry state, and update docs/tests to cover the new behavior.
Adds protocol callbacks and Qt desktop plumbing for RGB LED updates and DualSense adaptive trigger effects. The session layer now exposes controller LEDs and trigger effects to listeners, and the SDL3 desktop adapter translates them into capability-gated LED and PS5 trigger packets with teardown cleanup.
ReenigneArcher
force-pushed
the
codex/sunshinestream-migration
branch
from
November 11, 2026 01:51
9aa66a3 to
06fe3ae
Compare
ReenigneArcher
marked this pull request as draft
November 11, 2026 01:53
|
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.



Description
Introduce the initial One client implementation with a portable C++20 core and shared Qt Quick shell for desktop, touch, and television interfaces.
Screenshot
Issues Fixed or Closed
Roadmap Issues
Testing
git diff --checkon the repository metadata changes.Type of Change
Checklist
AI Usage
See our AI usage policy.