jellyfin / jellyfin-uwp

UWP Client for Jellyfin
https://jellyfin.org
GNU General Public License v2.0
65 stars 30 forks source link

WebView Package Broken Due to Type Error in Update 10.9.9 #48

Open Killerherts opened 3 months ago

Killerherts commented 3 months ago

In the recent update 10.9.9, the webview package is encountering a type error, which has caused it to become non-functional. Attempt #47 aims to address this by transitioning to WebView2. However, similar to an earlier attempt this year, WebView2 does not support navigator.gamepad. As a result, Jellyfin's controls class will need a complete rewrite to include gamepad support.

Options Moving Forward:

  1. Programmatic Focus Solution:

    • Implementing programmatic focus for gamepad support has been a requested feature for several years. While this approach would offer a more robust solution, it is also likely to involve a more complex development process. Due to current health issues, I might not be able to dedicate the time needed to address this solution immediately.
  2. Mouse Overlay Solution:

    • As a temporary workaround, we could re-enable a mouse overlay, similar to the solution used with WebView1 three years ago. This approach may be easier and quicker to implement in the short term.

Current Status: I am currently dealing with health issues and may not have the time to fully address this issue at the moment. @TimGels has provided a starting point for us but lacks access to the console or gamepad functionality necessary for a complete solution. Any additional support or collaboration would be greatly appreciated.

Next Steps:

Temp Workaround

Mr20yearsintech commented 3 months ago

rolling server back to 10.9.8 workaround works, Xbox Jellyfin app works

Killerherts commented 1 month ago

I have made a new attempt at this and gotten all the way to working with the cursor, but many of my videos crash when you attempt to play them. We may be at a dead end with this project and need to move to a native client for Xbox. the branch I am working on is webView2-rewrite if anyone wants to take a look

dfederm commented 1 month ago

@Killerherts I know you were working on a native app on the side, can you share details about that?

I'm not very familiar with developing Xbox apps, or really UI apps at all tbh, but I am wanting to contribute to that effort. In particular if there are specific tasks that need doing, I can try to jump in to help.

Killerherts commented 1 month ago

@Killerherts I know you were working on a native app on the side, can you share details about that?

I'm not very familiar with developing Xbox apps, or really UI apps at all tbh, but I am wanting to contribute to that effort. In particular if there are specific tasks that need doing, I can try to jump in to help.

The app I worked on years ago is in a private repo that I do not own. I'm open to working on a new app; primarily, you'd just need to be familiar with C# and the Jellyfin API. If we can set up a base project, adding controller support should be relatively easy.

I just simply do not have time to work on it right now as I'm hoping by dec Jan I'll have more time to get to it. I do worry about ongoing maintenance for the project a webwrapper was essentially zero maintenance. Low quality exp but no one has to do anything

Let me know your thoughts Id love more activity on the project

dfederm commented 1 month ago

I also worry about ongoing maintenance, but sounds like the web wrapper is hitting blockers and might not be viable?

Xbox is my primary (basically only) way of using Jellyfin, so I selfishly have some motivation to help with this since currently I'm stuck on 10.9.8 indefinitely. I'm also hesitant to go out and buy a couple Roku sticks just for this when I have perfectly good Xboxes I already use 😁.

I am a professional C# developer, but as mentioned I'm not very familiar with UI apps. I'm also not very familiar with the Jellyfin API, but I'm less worried about being able to figure that part out as I have good familiarity with web APIs (and I contributed https://github.com/jellyfin/jellyfin-sdk-csharp/pull/42 a while back).

I'll see if I can get my development environment set up for Xbox and kick the tires a bit.

On the process front, I think you've been active (or at least more active than others) in this repo, but possibly don't have contributor permissions? Any thoughts on a good place to collaborate and iterate quickly?

Killerherts commented 1 month ago

I am open to your preference here is a branch we can work from if you like. https://github.com/Killerherts/jellyfin-uwp/tree/NativeRewrite

Or let me know your preference.

For the most part when I have been doing uwp I can just program on desktop env until I need to test controller functionality or playback. I'm on matrix and discord as well

dfederm commented 1 month ago

Sent you an invite on Discord, assuming your GH username is the same (mine is), so we can discuss there.

dfederm commented 3 weeks ago

@anthonylavado I'm making some progress in my fork (https://github.com/dfederm/jellyfin-uwp/tree/native-rewrite) and although it's certainly not close to ready for prime time, I'm wanting to check what your opinion is for how we move forward.

Because of the state of the current app (broken on the latest server version), my hope is that the new app can launch before all features are implemented. I'm thinking basic movie and TV show playback is enough.

So one option is that the new app replaces the old app and becomes the new official app for Xbox. I don't mind being made the permanent maintainer of the app, but obviously that requires buy-in from the Jellyfin dev team. This would be my preference, although I would understand any hesitation about trusting some rando guy with the responsibility of representing Jellyfin.

Another option is that I make my fork into its own separate app and effectively work independently as a 3rd party. This would provide me freedom, although may lead to user confusion with the official app being effectively broken and some 3rd party unofficial app being the only working one.

Or maybe there's some completely different 3rd option I'm not thinking of. I don't have any context for how you traditionally interact with 3rd part app developers.

Let me know your thoughts or if you'd rather a higher bandwidth discussion over Discord or whatever.

Thanks!

MisterMcDuck commented 3 weeks ago

@anthonylavado I'm making some progress in my fork (https://github.com/dfederm/jellyfin-uwp/tree/native-rewrite) and although it's certainly not close to ready for prime time, I'm wanting to check what your opinion is for how we move forward.

Because of the state of the current app (broken on the latest server version), my hope is that the new app can launch before all features are implemented. I'm thinking basic movie and TV show playback is enough.

So one option is that the new app replaces the old app and becomes the new official app for Xbox. I don't mind being made the permanent maintainer of the app, but obviously that requires buy-in from the Jellyfin dev team. This would be my preference, although I would understand any hesitation about trusting some rando guy with the responsibility of representing Jellyfin.

Another option is that I make my fork into its own separate app and effectively work independently as a 3rd party. This would provide me freedom, although may lead to user confusion with the official app being effectively broken and some 3rd party unofficial app being the only working one.

Or maybe there's some completely different 3rd option I'm not thinking of. I don't have any context for how you traditionally interact with 3rd part app developers.

Let me know your thoughts or if you'd rather a higher bandwidth discussion over Discord or whatever.

Thanks!

This may be a silly question, but is there any way to emulate Xbox or debug the app, without an Xbox? I'm also a professional C# developer, and while I run my own Kodi setup, I have 4 family members that only use Xbox.

Killerherts commented 3 weeks ago

Most features for the UWP app will work on both Xbox and PC. The only console-specific elements that need testing on the console are the controller functionalities, which can also exist as a separate control set.

The best course of action would be to continue working on getting the project running on PC, begin with a simple cursor overlay for the console, and then work on key-up events for the controller.

I am happy to test builds on console, my house move will be completed on the 5th and will have more time to dedicate to the project.

@dfederm Typically it's been faster to work on a fork branch with someone else then contribute back to the jellyfin org branch when we are ready. I know Ms requires some hurdles to actually get published and that has slowed us down in the past. I'm not sure if they add contributors but I have also never asked.

But I would be open to whatever Anthony/jellyfin org wants to do. Id like to be able to use their assets and stuff on this it though to keep on lockstep.

dfederm commented 3 weeks ago

@MisterMcDuck As Killerherts says, UWP works on desktop as well, which is great for testing. I actually haven't even bothered testing my work on a real Xbox yet because of this (although perhaps I should to ensure I don't completely go down the wrong path). I don't think UWP should replace the actual desktop app if that's what you're getting at though as UWP is essentially dead, except for Xbox I guess, and the current Windows desktop app works great so there's no strong need to unify.

Let me know if you're wanting to contribute too and I'll invite you to the fork. We can also chat on Discord if you want, my username is the same as my GitHub one.

@Killerherts Yep, agreed that we just keep working in a fork for now. I'm just proactively starting the discussion about launching sooner rather than later as I don't know what the Jellyfin devs' schedules are like or how much discussion is required. Especially since my preference (and yours it appears) is to replace the official app with a native one, then getting a jump on that discussion seems prudent.

MisterMcDuck commented 2 weeks ago

I spent a bit of time trying to get the project up and running to do some testing, etc, but ran into this issue (VS 2022, latest SDK installed):

Image

Image

I did a bit of googling and didn't see much. Any ideas?

Killerherts commented 2 weeks ago
    private bool _isInteractable;
    private string _errorMessage;
    private bool _showErrorMessage;
    private string _serverUrl;

I had to add backing field to those vars

Killerherts commented 2 weeks ago

@MisterMcDuck https://discord.gg/q5G9aG6GqC here is a discord server for faster communication on this.

dfederm commented 2 weeks ago

I spent a bit of time trying to get the project up and running to do some testing, etc, but ran into this issue (VS 2022, latest SDK installed):

Image

Image

I did a bit of googling and didn't see much. Any ideas?

Woops yup, I guess the field keyword is only available in preview. Explicitly defined backing fields is the way to go.

dfederm commented 20 hours ago

@anthonylavado I'm making some progress in my fork (https://github.com/dfederm/jellyfin-uwp/tree/native-rewrite) and although it's certainly not close to ready for prime time, I'm wanting to check what your opinion is for how we move forward.

Because of the state of the current app (broken on the latest server version), my hope is that the new app can launch before all features are implemented. I'm thinking basic movie and TV show playback is enough.

So one option is that the new app replaces the old app and becomes the new official app for Xbox. I don't mind being made the permanent maintainer of the app, but obviously that requires buy-in from the Jellyfin dev team. This would be my preference, although I would understand any hesitation about trusting some rando guy with the responsibility of representing Jellyfin.

Another option is that I make my fork into its own separate app and effectively work independently as a 3rd party. This would provide me freedom, although may lead to user confusion with the official app being effectively broken and some 3rd party unofficial app being the only working one.

Or maybe there's some completely different 3rd option I'm not thinking of. I don't have any context for how you traditionally interact with 3rd part app developers.

Let me know your thoughts or if you'd rather a higher bandwidth discussion over Discord or whatever.

Thanks!

Paging @anthonylavado. I believe I'm making a whole bunch of progress so hoping to get this part settled sooner rather than later.