Fix Xbox shell focus and library filter navigation - #6
Open
CyberoniOntoni wants to merge 6 commits into
Open
Conversation
This was referenced Jun 20, 2026
…rm#93) Centralize gamepad helpers in GamepadInput and route shell shortcuts through NavigationManager at the CoreWindow level. Map video transport controls for A/X/sticks/D-pad/LB/RB and add back navigation for WebVideo. Polish: fix GamepadA stealing focus from transport controls, unify menu callbacks through RelayCommands, remove redundant Escape handler, and consolidate menu-open API.
Add a root CONTRIBUTING.md and a pull request template covering: single-purpose PRs; the 0-warning build as the only validation gate (there are no automated tests); manual testing of UI/playback/controller changes with the tested platform declared (real Xbox preferred, Windows acceptable); and PR descriptions with screenshots or recordings for UI changes. The guidelines are self-contained so contributors aren't routed to the AI-focused .github/copilot-instructions.md.
Page ViewModels started their data loads as fire-and-forget async work with no cancellation (HomeViewModel.Initialize and ItemDetailsViewModel.HandleParameters were async void; LibraryViewModel fired `_ = InitializeAsync()` and `_ = RefreshItemsAsync()` from every sort/filter change). A superseded load's post-await continuation could overwrite newer view-model state - for example, rapidly toggling library filters could leave the grid showing the results of an earlier selection. Introduce a small shared CancellableLoad helper that owns a CancellationTokenSource, cancels any prior in-flight load when a new one starts, and swallows the superseded OperationCanceledException. Each affected ViewModel routes its load entry points through it and threads the cancellation token into every Kiota GetAsync call, so a superseded request is cancelled at the HTTP layer. Terminal state commits are guarded with ThrowIfCancellationRequested so an already-completed request cannot write stale state, and IsLoading is only cleared by the surviving load.
Load only the selected external subtitle via IRequestAdapter for Jellyfin-hosted tracks and CreateFromUri for third-party URLs. Route subtitle presentation by DeliveryMethod, cache bitrate per session, and ensure the device profile is initialized before playback info requests.
Target Xbox OS 22000+ in the app manifest, use JellyBox.exe entry point for Native AOT packages, and add a sideload-only win-x64 publish profile for Release builds.
CyberoniOntoni
force-pushed
the
feature/xbox-shell-focus
branch
2 times, most recently
from
June 23, 2026 10:49
c1f7bd0 to
5a9c293
Compare
CyberoniOntoni
force-pushed
the
feature/xbox-shell-focus
branch
3 times, most recently
from
June 23, 2026 12:27
54e2f39 to
9d055d4
Compare
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.
Summary
Fixes Xbox focus behavior in the app shell and library filter toolbar.
ShellFocusCoordinator— search is not auto-focused on page navigationFocusState.UnfocusedAPI usage that crashed on Xbox (0xc000027b)XYFocusbindings to code-behind for console stability~137 lines — stacks on the collection navigation PR.
Merge order
Merge after the collection navigation PR.
Test plan