Skip to content

Fix library navigation and Xbox shell focus for collection browsing#95

Closed
CyberoniOntoni wants to merge 8 commits into
dfederm:mainfrom
CyberoniOntoni:feature/library-navigation-upstream
Closed

Fix library navigation and Xbox shell focus for collection browsing#95
CyberoniOntoni wants to merge 8 commits into
dfederm:mainfrom
CyberoniOntoni:feature/library-navigation-upstream

Conversation

@CyberoniOntoni

Copy link
Copy Markdown
Contributor

Summary

Fixes library browsing from Home and side menu on Xbox, plus Xbox packaging tweaks.

Review tip: For a smaller diff, review the fork stacked PR (library only vs search base) or review commits efbeebb and 64e7b32 here.

Library navigation

  • Route Home "My Media" collection tiles through the same path as the side menu
  • Add CollectionNavigation for Movies, TV Shows, Collections (box sets), and Books
  • NavigateToItem(Guid) fetches item metadata before routing so collections are not always opened as item details

Xbox shell focus

  • Add ShellFocusCoordinator so search is not auto-focused on load
  • Fix invalid FocusState.Unfocused API usage that crashed navigation on Xbox
  • Move library filter toolbar XYFocus bindings to code-behind for console stability

Xbox packaging

  • Target Xbox OS 22000+ in manifest; use JellyBox.exe entry point for Native AOT
  • Add win-x64.pubxml publish profile for Release sideload builds

Merge order

  1. Fix build reliability and improve subtitle playback performance #88 — build/subtitle fixes
  2. Add Xbox Series X controller support and shell navigation #93 — Xbox controller
  3. Shell search PR (to follow)
  4. This PR — library navigation and Xbox focus

Replaces the library portion of closed #89.

Test plan

  • Side menu: Movies, TV Shows, Collections, Books open library views
  • Home tiles open the same library views as the side menu
  • Opening Movies from Home no longer crashes (0xc000027b)
  • Search is not focused by default; Up from home focuses search
  • Release x64 sideload build deploys to Xbox Series X

Notes

  • Music/Photos libraries still fall back to item details until explicitly mapped.

Centralize gamepad virtual-key handling in GamepadInput and route shell navigation (menu toggle, left-edge open, B/Escape back) through NavigationManager at the CoreWindow level so it works on every content page, not only when MainPage has focus.

Video playback now maps A to play/pause, X to mute, and D-pad/stick directions to volume and seeking. Login and server selection accept Gamepad A to submit. WebVideo supports B to go back.
Place a styled AutoSuggestBox at the top of MainPage with debounced Jellyfin search hints. Submitting a query or picking a suggestion navigates to search results or item details. Includes a dedicated Search page with portrait result cards and adjusted content page spacing for the new header.
Replace nested TwoWay x:Bind on search text with code-behind TextChanged handling, use ObservableCollection for suggestions with TextMemberPath, simplify the search box style, and restore full-screen navigation overlay span.
Suppress duplicate QuerySubmitted navigation after SuggestionChosen, cancel stale ItemDetails loads when navigating away, and guard against null UserData on series items.
Defer AutoSuggestBox suggestion navigation to the next UI frame, reset ItemDetails playback state between loads, use null-safe stream bindings, navigate cards by item id, and log unhandled exceptions to the debug output.
AutoSuggestBox TextMemberPath requires WinRT bindable custom properties on suggestion items. Selection text is already applied in code when a suggestion is chosen.
Route Home page collection tiles through the same navigation path as the side menu so Movies, TV Shows, Collections, and Books open the library view instead of item details. Add CollectionNavigation to map Jellyfin collection types to library parameters.

Introduce ShellFocusCoordinator so search is not focused by default and navigation no longer calls the invalid FocusState.Unfocused API on Xbox. Move library filter toolbar XYFocus bindings to code-behind for console stability.

Target Xbox in the app manifest (min OS 22000, JellyBox.exe entry for AOT) and add a win-x64 publish profile for Release sideload builds.
NavigateToItem(Guid) now fetches the item from the API and routes through the same CollectionNavigation logic as the DTO overload, so library collections are not always opened as item details.
@CyberoniOntoni

Copy link
Copy Markdown
Contributor Author

Splitting further per feedback — closing this PR in favor of three smaller stacked PRs:

PR Topic ~lines
Collection navigation CollectionNavigation, NavigateToItem routing ~96
Xbox shell focus ShellFocusCoordinator, library XYFocus, search focus ~137
Xbox packaging manifest, win-x64.pubxml ~20

Bite-sized diffs (fork stacked)

  1. Collection navigation (~96 lines)
  2. Xbox shell focus (~137 lines)
  3. Xbox packaging (~20 lines)

Merge after #94, in the order above.

@CyberoniOntoni

Copy link
Copy Markdown
Contributor Author

Superseded by #96, #97, and #98.

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