Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add webOS/Tizen support #1967

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft

Add webOS/Tizen support #1967

wants to merge 2 commits into from

Conversation

endrl
Copy link
Contributor

@endrl endrl commented Apr 16, 2023

Support for LG WebOS 5 with Jellyfin WebOS App. A play around PR with my findings. This will likely never be merged but splitted up in junks

How to test this PR?

  • Requires webos 5+ or Tizen 6+
  • build with npm build-jellyfin-web
  • WebOS: Replace the jellyfin server webinterface (keep backup or with docker just mount the directory with the files)
  • WebOS: Create the manifest.json next to index.html (See content below)
  • Tizen: Build jellyfin-tizen with the build output in dist

Details

  • Add new build command: npm build-jellyfin-web
    • Add polyfills (chrome 68) just for this command
    • Adjust vite base from / to /web/ to replace the jellyfin-web server interface
    • New env var BUILD_JELLYFIN_WEB that can be used to skip/disable the server selection handling
  • fix: missing guards for mediaSession
  • fix: base link to config.json

Issues/Questions

  • Attention: Replacing your jellyfin-web webinterface with jellyfin-vue results in a missing admin interface! Switch back if you need access to it.

  • Key navigation (up/down/left/right,enter,back ...) is not implemented, so you need a magic remote

  • Some jellyfin clients depend on /web/ files, they won't even connect to a server.

    • jellyfin-webos needs a manifest.json. Needs PWA support (or a dummy file for testing).
    • Android App: Connect is broken.
    • Other clients might be also broken. It would be interesting to know what all jellyfin client devs need from /web/ dir. I supposed they operate all on the api or as web wrapper
  • vite legacy plugin creates a wrapper around import.meta (chrome 64), native esm (chrome 61) and dynamic import (chrome 63). Which is not required, a simple babel dependency is already enough

  • jellyfin-webos

    • WebOS 4: Chrome: 53 (no wasm)
    • WebOS 5: Chrome: 68 (just babel)
    • WebOS 6: Chrome: 79 (just babel)
    • WebOS 22: Chrome: 87 (just babel)
    • WebOS 23: Chrome: 94 (just babel)
  • jellyfin-tizen. I have no Tizen TV, feedback required

    • Tizen 4: Chrome 56 (no wasm)
    • Tizen 5: Chrome 63 (requires vite legacy or import.meta polyfill)
    • Tizen 6: Chrome 76 (just babel)

Rationals

  • If polyfills shouldn't be added it might be possible to add a new /weblegacy/ dir to jellyfin server which is just used by jellyfin clients that run with older webviews.
  • Or clients should build their own version and update with every upstream change (jellyfin-tizen does that)

Happy hacking!

manifest.json dummy

{
    "name": "Jellyfin",
    "description": "The Free Software Media System",
    "lang": "en-US",
    "short_name": "Jellyfin",
    "start_url": "index.html",
    "theme_color": "#101010",
    "background_color": "#101010",
    "display": "standalone",
    "icons": [
        {
            "sizes": "72x72",
            "src": "touchicon72.png",
            "type": "image/png"
        },
        {
            "sizes": "114x114",
            "src": "touchicon114.png",
            "type": "image/png"
        },
        {
            "sizes": "144x144",
            "src": "touchicon144.png",
            "type": "image/png"
        },
        {
            "sizes": "512x512",
            "src": "touchicon512.png",
            "type": "image/png"
        }
    ]
}

@jellyfin-bot jellyfin-bot added the merge conflict Something has merge conflicts label Apr 16, 2023
@endrl endrl changed the title Add webOS support Add webOS/Tizen support Apr 17, 2023
@jellyfin-bot jellyfin-bot removed the merge conflict Something has merge conflicts label Apr 17, 2023
@jellyfin-bot
Copy link

Cloudflare Pages deployment

Latest commit f10da27
Status 🔄 Deploying...
Preview URL Not available
Type 🔀 Preview

View bot logs

@sonarcloud
Copy link

sonarcloud bot commented Apr 17, 2023

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

No Coverage information No Coverage information
0.0% 0.0% Duplication

@endrl endrl mentioned this pull request Apr 17, 2023
@endrl
Copy link
Contributor Author

endrl commented Apr 19, 2023

jellyfin-tizen bundles jellyfin-web. So for Jellyfin Tizen users just bundle the build output instead. It is not required to replace jellyfin server webinterface

@jellyfin-bot jellyfin-bot added the merge conflict Something has merge conflicts label Apr 22, 2023
@ferferga ferferga force-pushed the master branch 3 times, most recently from 5e698fd to 26d3ab7 Compare May 1, 2023 22:03
@ferferga ferferga added discussion needed This PR or issue needs discussion before going further blocked Something depends on another issue or Pull Request labels May 4, 2023
@ferferga ferferga force-pushed the master branch 2 times, most recently from bc856ac to 7336bfd Compare August 16, 2023 19:17
@ferferga ferferga force-pushed the master branch 2 times, most recently from f598745 to 00c2c75 Compare December 31, 2023 18:39
@ferferga ferferga force-pushed the master branch 5 times, most recently from 45226c0 to 57b5e96 Compare April 15, 2024 21:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
blocked Something depends on another issue or Pull Request discussion needed This PR or issue needs discussion before going further merge conflict Something has merge conflicts
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants