From 65f5b2aeaae52efa60d4c7452bd63168e2c3bc5c Mon Sep 17 00:00:00 2001 From: David Federman Date: Fri, 19 Jun 2026 08:01:45 -0700 Subject: [PATCH 01/12] Upgrade Jellyfin.Sdk to 2026.6.19-unstable.202606190139 (#90) --- Directory.Packages.props | 2 +- NuGet.Config | 15 +++++++++++++++ src/JellyBox/Services/DeviceProfileManager.cs | 2 -- 3 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 NuGet.Config diff --git a/Directory.Packages.props b/Directory.Packages.props index e711718..df7ce65 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -7,7 +7,7 @@ - + diff --git a/NuGet.Config b/NuGet.Config new file mode 100644 index 0000000..78a4074 --- /dev/null +++ b/NuGet.Config @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/JellyBox/Services/DeviceProfileManager.cs b/src/JellyBox/Services/DeviceProfileManager.cs index 1750016..5bd5603 100644 --- a/src/JellyBox/Services/DeviceProfileManager.cs +++ b/src/JellyBox/Services/DeviceProfileManager.cs @@ -499,7 +499,6 @@ public async Task InitializeAsync() Protocol = TranscodingProfile_Protocol.Hls, MaxAudioChannels = audioChannelCount.ToString(), MinSegments = 1, - BreakOnNonKeyFrames = false, EnableAudioVbrEncoding = false // TODO: ??? !appSettings.disableVbrAudio() }); @@ -626,7 +625,6 @@ public async Task InitializeAsync() Protocol = TranscodingProfile_Protocol.Hls, MaxAudioChannels = audioChannelCount.ToString(), MinSegments = 1, - BreakOnNonKeyFrames = false, }); } From 31051d13b9d4d81a5333c9239ec352f8cfcca1a2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 19 Jun 2026 08:28:09 -0700 Subject: [PATCH 02/12] Update Microsoft (#86) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Directory.Packages.props | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index df7ce65..dc9bd97 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -8,12 +8,12 @@ - - - - + + + + - + From c2bac9b6bd7134da232f89cf36916d78945f21b5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 19 Jun 2026 08:28:59 -0700 Subject: [PATCH 03/12] Update dependency Nerdbank.GitVersioning to 3.10.85 (#91) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index dc9bd97..903e1d1 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -18,6 +18,6 @@ - + \ No newline at end of file From 2ab404aa062fac34b18373f210ad5cbc4234507c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 19 Jun 2026 08:29:08 -0700 Subject: [PATCH 04/12] Update actions/checkout action to v7 (#87) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c8a4df3..ad5a735 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,7 +15,7 @@ jobs: runs-on: windows-2025-vs2026 steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: fetch-depth: 0 # Git Versioning requires a non-shallow clone From b72ce671dc955381f659470dd51c5b2a8054114f Mon Sep 17 00:00:00 2001 From: David Federman Date: Fri, 19 Jun 2026 09:00:37 -0700 Subject: [PATCH 05/12] Avoid SetAppxManifestVersion for design-time builds (#92) --- src/JellyBox/JellyBox.csproj | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/JellyBox/JellyBox.csproj b/src/JellyBox/JellyBox.csproj index 1225523..244bcf2 100644 --- a/src/JellyBox/JellyBox.csproj +++ b/src/JellyBox/JellyBox.csproj @@ -41,7 +41,8 @@ + DependsOnTargets="GetBuildVersion" + Condition="'$(DesignTimeBuild)' != 'true' and '$(BuildingProject)' == 'true'"> <_OriginalAppxManifest Include="@(AppxManifest)" /> From 02acd31a040521f7719808df4620370619cd0c34 Mon Sep 17 00:00:00 2001 From: CyberoniOntoni Date: Fri, 19 Jun 2026 12:05:16 +0800 Subject: [PATCH 06/12] Add full Xbox Series X controller support and shell navigation 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. --- src/JellyBox/MainPage.xaml.cs | 85 ------------------- .../Resources/TransportControlsStyles.xaml | 8 +- src/JellyBox/Services/GamepadInput.cs | 55 ++++++++++++ src/JellyBox/Services/NavigationManager.cs | 76 ++++++++++++++++- src/JellyBox/ViewModels/MainPageViewModel.cs | 12 +++ src/JellyBox/Views/Login.xaml.cs | 6 +- src/JellyBox/Views/ServerSelection.xaml.cs | 6 +- src/JellyBox/Views/Video.xaml.cs | 80 ++++++++--------- src/JellyBox/Views/WebVideo.xaml.cs | 24 +++++- 9 files changed, 211 insertions(+), 141 deletions(-) create mode 100644 src/JellyBox/Services/GamepadInput.cs diff --git a/src/JellyBox/MainPage.xaml.cs b/src/JellyBox/MainPage.xaml.cs index ac0c745..adccc69 100644 --- a/src/JellyBox/MainPage.xaml.cs +++ b/src/JellyBox/MainPage.xaml.cs @@ -1,6 +1,5 @@ using JellyBox.ViewModels; using Microsoft.Extensions.DependencyInjection; -using Windows.System; using Windows.UI.Core; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; @@ -23,8 +22,6 @@ public MainPage() // Cache the page state so the ContentFrame's BackStack can be preserved NavigationCacheMode = NavigationCacheMode.Required; - KeyDown += OnKeyDown; - SlideInAnimation.Completed += SlideInCompleted; Loaded += (sender, e) => @@ -114,87 +111,5 @@ private void CloseNavigation(object sender, TappedRoutedEventArgs e) ViewModel.CloseNavigationCommand.Execute(null); } - /// - /// Keyboard and gamepad input handling. - /// Only handles commands and nav-menu-specific logic. - /// Directional focus movement is handled by XYFocusKeyboardNavigation in XAML. - /// - private void OnKeyDown(object sender, KeyRoutedEventArgs e) - { - // Don't intercept keys when a text input control has focus - if (FocusManager.GetFocusedElement() is TextBox or PasswordBox) - { - return; - } - - switch (e.Key) - { - // Back gesture - close navigation if open - case VirtualKey.Back: - case VirtualKey.GamepadB: - { - if (ViewModel.IsMenuOpen) - { - ViewModel.CloseNavigationCommand.Execute(null); - e.Handled = true; - } - - break; - } - - // Toggle navigation menu - case VirtualKey.GamepadMenu: - case VirtualKey.GamepadView: - case VirtualKey.M: - { - ViewModel.ToggleNavigationCommand.Execute(null); - e.Handled = true; - break; - } - - // Close navigation menu - case VirtualKey.Escape: - { - if (ViewModel.IsMenuOpen) - { - ViewModel.CloseNavigationCommand.Execute(null); - e.Handled = true; - } - - break; - } - - // Right closes nav menu when open - case VirtualKey.Right: - case VirtualKey.GamepadDPadRight: - case VirtualKey.GamepadLeftThumbstickRight: - case VirtualKey.NavigationRight: - { - if (ViewModel.IsMenuOpen) - { - ViewModel.CloseNavigationCommand.Execute(null); - e.Handled = true; - } - - break; - } - - // Left at edge opens nav menu - case VirtualKey.Left: - case VirtualKey.GamepadDPadLeft: - case VirtualKey.GamepadLeftThumbstickLeft: - case VirtualKey.NavigationLeft: - { - if (!ViewModel.IsMenuOpen && !FocusManager.TryMoveFocus(FocusNavigationDirection.Left)) - { - ViewModel.OpenNavigationCommand.Execute(null); - e.Handled = true; - } - - break; - } - } - } - internal sealed record Parameters(Action DeferredNavigationAction); } diff --git a/src/JellyBox/Resources/TransportControlsStyles.xaml b/src/JellyBox/Resources/TransportControlsStyles.xaml index 1da4b76..8712aa0 100644 --- a/src/JellyBox/Resources/TransportControlsStyles.xaml +++ b/src/JellyBox/Resources/TransportControlsStyles.xaml @@ -115,7 +115,7 @@ Style="{StaticResource TransportButtonStyle}" Label="Rewind" Command="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=RewindCommand}" - ToolTipService.ToolTip="Rewind 10 seconds (LB)" + ToolTipService.ToolTip="Rewind 10 seconds (LB / D-pad left)" XYFocusKeyboardNavigation="Enabled"> @@ -127,7 +127,7 @@ Style="{StaticResource TransportButtonStyle}" Label="Play" Command="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=PlayPauseCommand}" - ToolTipService.ToolTip="Play/Pause (Space)" + ToolTipService.ToolTip="Play/Pause (A / Menu / Space)" XYFocusKeyboardNavigation="Enabled"> @@ -139,7 +139,7 @@ Style="{StaticResource TransportButtonStyle}" Label="Fast Forward" Command="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=FastForwardCommand}" - ToolTipService.ToolTip="Fast forward 30 seconds (RB)" + ToolTipService.ToolTip="Fast forward 30 seconds (RB / D-pad right)" XYFocusKeyboardNavigation="Enabled"> @@ -172,7 +172,7 @@