jellyfin / jellyfin-webos

WebOS Client for Jellyfin
https://jellyfin.org
Mozilla Public License 2.0
638 stars 65 forks source link

Publish to Store for 10.8 #69

Closed anthonylavado closed 2 years ago

anthonylavado commented 2 years ago

This is to track submitting the app to the LG webOS Store.

Main Test Plan


Issues to Resolve


Issues to Look At


Final Notes


Overall Notes Server minimum resume duration needs to be lowered from the default 300s to something like 120s, since most demo clips are approximately 5 minutes long. Since the minimum resume watch time is 5% progress, this means that an average 5 min clip will be resumable after 15s watch time.

webOS 6 and 10.8.0-alpha5 Testing appears to be good so far. Tested against sample TV show and Movie content, both responded to start playback, resume, and start from beginning.

A possible UI issue in some cases where the hover state still isn't correct on the play button when going back from actively watching something. It corrects itself if you move the cursor left or right, or if you leave the item and re-enter it. Earlier issue of both buttons being highlighted blue is gone (resolved in jellyfin-web). Need to open an issue on the web repo for this to be fixed in 10.8. Example: image

Play/Resume Button Issue

As mentioned above, I've created a corresponding issue in the web repository, and there is a draft PR to fix it. See: https://github.com/jellyfin/jellyfin-web/issues/3320 https://github.com/jellyfin/jellyfin-web/pull/3340

URL Validation at Server Entry

Testing completed, I am satisfied that this will work going forward. See: https://github.com/jellyfin/jellyfin-webos/pull/72

webOS 5 and 10.8.0-alpha5 Testing completed. All functions appear to be working, and I was able to resume content with no issues on the private test server. The visual issue from Jellyfin-web still remains, but that is unrelated to the app. It will appear to be fixed when the web interface is updated.

webOS 5 and 10.8.0-alpha5 Partial testing completed. Music played and stopped with no issue. Videos seem to playback and resume without issue. I just want to do another pass of this on webOS 4 before I "sign off" on it.

I should stress that the demo server has had specific setting adjustments to ensure that resume happens, which included shortening the minimum time to consider something resumable. All content has been encodes to ensure playback is as smooth as possible with no need to transcode.

Play/Resume Button Issue Resolved The relevant PR in Jellyfin-web has been approved and merged. This will be part of the next build of Jellyfin. When I next update our private demo server, this will then appear correctly for LG's tests. I'll see if there's any way I can selectively patch it in the meanwhile.

While I'll still need to do another pass on webOS 4, this gives me confidence that we'll be able to submit soon. Other issues as they come up (and as mentioned above) will likely not require a specific webOS client update, and can be resolved on the server side. The only exception would be a "reset connection" option, but that is also cleared by removing the app and re-installing it again.

sander1095 commented 2 years ago

Perhaps this can only be answered after refining, but..

I have an LG C9, what can I do (and other people with the same or other tv's/web OS versions) to help with testing :)?

I can of course just load it onto my TV and use it, report bugs, but perhaps part of the refinement would be to make an excel document or something with a list with all features that should be tested and the testing results on each web os version?

anthonylavado commented 2 years ago

@sander1095 Thanks for the offer! At this point, it's just making sure that playback (start and resume) works with our demo content. If that passes here, then LG should in theory have everything else satisfied from the test results they gave us before.

It's a bit funny because the app itself is a special wrapper for the web interface loaded off the server. Once this gets out to LG, we'll almost never have to update it, since updates to the Jellyfin server would bring the enhancements needed.

So far it's been going well. I'll let you know if I need anything extra though. The heavier testing work would probably be when we go to try and support older TVs.

samcon commented 2 years ago

Hey, I'm have an LG C8 (I think it's Webos 4.5?), running jellyfin-webos version 1.0.1 with nightly jellyfin server and resume doesn't work. The issue where the resume and restart button were both "selected" seems resolved, but pressing the resume button actually restarts. When using a desktop browser resume does work as expected. I'd be happy to assist in any way I can.

sander1095 commented 2 years ago

@anthonylavado

Do you have a link to the demo content?

Also, would it be an idea to make a special tag for bugs specific for this "push to store" goal and create a new issue for @samcon 's report? Not sure how you guys wanna handle this!

anthonylavado commented 2 years ago

@Sander1095 There is a tag that I've used here, release critical. That can be used.

The demo content is the same as on the public demo server, just on a private install. Sadly the demo server is not running 10.8 at the moment, but our private one at least will be updated soon.

The gist of the demo content is that it's deliberately easy to play. All media is H264 with either stereo AAC or MP3 audio, and in an MP4 container. Nothing should require transcoding, and all clips are about 5-10 minutes in length. While this may seem "rigged", it's because we just need the app to pass - everything else is fixed by independent server updates.

anthonylavado commented 2 years ago

I've updated the list above. So far so good for webOS 6 and 10.8.0-alpha5. On to the next item.

anthonylavado commented 2 years ago

I've revised the list of tasks in the first comment to include more detail about what's needed to bring this the rest of the way through.

Testing against webOS 5.x was successful, so that confirms at least webOS 5 and 6 for now. I have installed additional emulators for webOS 1 - 4, but testing for anything below 4 may be limited for the time being. We'd like to get the app out on the official store as soon as possible, and it has proven difficult to support older browsers in some cases (see the LG release list to see just how far back the browser version goes).

sakej commented 2 years ago

Hi guys. I have webOS 4.40-9 tv, can help with test if you need it and tell me what to do (new to git) :)

Fyb3roptik commented 2 years ago

I want to do a PR to fix the whole server address remember edge case. I'll have more info tomorrow on a possible solution

stoically commented 2 years ago

Sorry for hijacking this thread: Is there a way to prevent webOS from uninstalling the manually installed dev version after a while?

besendorf commented 2 years ago

Sorry for hijacking this thread: Is there a way to prevent webOS from uninstalling the manually installed dev version after a while?

https://rootmy.tv/

Fyb3roptik commented 2 years ago

@anthonylavado I tested this in the Webos 4.0.0 Emulator and it works great! I also did not see that issue where if you have connect automatically checked, then it wont let you change the server address. Anything else we need to verify before we deploy?

thanasis00 commented 2 years ago

Hello, I am interested in using Jellyfin as my main media player. I just bought a new LG OLED tv but I am not at the point of rooting it or sideloading jellyfin yet, so I found this issue about publishing it to the LG store. I am interested in contributing to move this issue forward, and I will try to setup a dev environment. Are there any new updates on the current open issues? As @Fyb3roptik mentioned, is that issue already resolved?

dab2020 commented 2 years ago

Sorry for hijacking this thread: Is there a way to prevent webOS from uninstalling the manually installed dev version after a while?

https://rootmy.tv/

Actually you no longer have the root the tv for this and nor do you have to install the Developer SDK just to install the app. I made a guide here This install method is permanent and works pretty well.

brmdbr commented 2 years ago

@dab2020 What is the url is should call regularly to make sure the install is permanent? the link in the guide is broken.

sander1095 commented 2 years ago

@brmdbr Take a look at this for more instructions: https://github.com/webosbrew/dev-manager-desktop . It contains intstructions on how you can set it up with IFTTT.

I tried it with IFTTT but it stopped working. I am pretty sure it was my fault, though. IFTTT is likely a lot easier to set up, but I like doing things myself. In any case, I use this script to make a cronjob run it every 4 hours. Your TV doesn't need to be on, as far as I know. :) If the TV is off, it will just use the cached sessiontoken. IDK if the session token changes.

#!/usr/bin/env bash

set -Eeuo pipefail

echo "----------`date`----------"

echo "Requesting SessionToken"

sessionToken=$( ssh -i /home/pi/.ssh/tv_webos -o ConnectTimeout=10 -o StrictHostKeyChecking=no -p 9922 prisoner@192.168.2.11 cat /var/luna/preferences/devmode_enabled ) || true

if [ -z "${sessionToken}" ]; then
  echo "Connection to TV failed. We will use the cached version saved in /home/pi/Projects/webosdevmode/webos_devmode_token_tv.txt instead"
  sessionToken=$(cat /home/pi/Projects/webosdevmode/webos_devmode_token_tv.txt)
else
  echo "Call succesful: $sessionToken"
  echo "saving session token in temporary file (/home/pi/Projects/webosdevmode/webos_devmode_token_tv.txt)"
  echo ${sessionToken} > /home/pi/Projects/webosdevmode/webos_devmode_token_tv.txt
fi

if [ -z "${sessionToken}" ]; then
  echo "Unable to get token" >&2
  exit 1
fi

echo "Requesting LG servers to extend DevMode on the TV using sessionToken: ${sessionToken}.."

checkSession=$(curl -k --max-time 30 "https://developer.lge.com/secure/ResetDevModeSession.dev?sessionToken=${sessionToken}")

echo $checkSession

exit 0
stoically commented 2 years ago

Personally all I have is a cron entry doing a curl on the URL, like so

$ cat /etc/cron.hourly/lg 
#!/bin/bash

curl -v https://developer.lge.com/secure/ResetDevModeSession.dev?sessionToken=the_token

Works for me. Obtained the session token from the dev-manager-desktop once.

sander1095 commented 2 years ago

@stoically that is super interesting and way easier than mine!

Does the session token never change? Would anyone know more about this?

What does a session mean in this context? The entire lifetime of the devmode of the tv being activated? I am a bit puzzled about why it would never expire or change.

yairp03 commented 2 years ago

Is this still alive? If so, what is the estimated publish date?

magikmw commented 2 years ago

Is this still alive? If so, what is the estimated publish date?

As I understand, we need to wait for the release of server 10.8 (currently in beta 2), since it fixes several issues that blocked the publishing before.

dab2020 commented 2 years ago

Does the session token never change? Would anyone know more about this?

@sander1095 Every time the Developer mode is enabled a session starts. It is assigned a token that identifies it to the LG developer API. When the dev mode session expires so does the token. However if you keep extending the session, theoretically, you could keep the same token forever. It is not bound to specific hardware nor is it permanent, if you turn off the developer mode and turn it back on, the Token will change.

InsaneCake commented 2 years ago

@sander1095, @dab2020 Yes, token does not change while dev mode is activated. I was struggled by finding session token itself, this comment on reddit was helpful. In my case on Manjaro i wasn't able to connect to the TV by ssh cause it uses older version and i needed to add Tv's ip to exceptions. Then you have session token, you can use anything to renew session period by sending GET request. I use JF app on TV few weeks already without troubles.

dab2020 commented 2 years ago

In my case on Manjaro i wasn't able to connect to the TV by ssh cause it uses older version and i needed to add Tv's ip to exceptions.

Wouldn't using the Dev Manger app make this a lot easier for novice users? No need to mess about with SSH. Just simply get the link to send a GET request to.

InsaneCake commented 2 years ago

Wouldn't using the Dev Manger app make this a lot easier for novice users? No need to mess about with SSH.

Well... Now i know about it, thanks)

arthurEspooner commented 2 years ago

lol

arthurEspooner commented 2 years ago

will this ever be published?

sebdanielsson commented 2 years ago

will this ever be published?

Read the response to this very question a couple of comments up instead of spamming all of us who subscribed to this issue.

Fyb3roptik commented 2 years ago

10.8 officially released! Cannot wait to see this bad boy out there

yairp03 commented 2 years ago

@Fyb3roptik What do you mean? I don't see it in the store...

Fyb3roptik commented 2 years ago

10.8 Server was released

yairp03 commented 2 years ago

@Fyb3roptik oh the server

Kivylius commented 2 years ago

Can we get status update please? and what else is left, im sure we all want to help in anyway we can and get this out after a 3 years in the making.

xzaz commented 2 years ago

They are working on the resume functionality: https://github.com/jellyfin/jellyfin-webos/issues/46 PR has been made but it's not optimal yet. 10.8 didn't fixed the issue.

Fyb3roptik commented 2 years ago

Looks like 10.8.1 fixes it! WOOT!

yairp03 commented 2 years ago

Then what's now?

dab2020 commented 2 years ago

Then what's now?

The Jellyfiin team is most likely going to submit the app for review by LG, which is a process that can take weeks or even months.

MrVoid23 commented 2 years ago

With the release of 10.8 it was said that the app had already been submitted for review(iirc).That was weeks ago,so i suppose if it was submitted,we should have an answer pretty soon.

sander1095 commented 2 years ago

Can we all stop posting these questions and other irrelevant comments? This would be better suited for the subreddit/official forum.

Every time someone asks what the state is, 66 people get notified. Every time someone is happy that a new version is released, 66 people get notified. I know this comment will also notify 66 people, but I hope it's the final time.

All this noise clutters up the issue, making it more difficult for the devs to find potential issues or other information they might need. Perhaps even slowing down the release process.

They are working on it. Be patient.

You don't need to wait for this to be released to the store officially. It's pretty simple to run jellyfin in developer mode on your TV, links have been posted in this thread. And if you need help, post it on the subreddit, people (including me) will be happy to help you out.

stoically commented 2 years ago

@sander1095 I'm sorry that I have to say this - but you just did the very thing that you want others not to do. And so am I. Also it was said before in this very issue. It can't be solved by trying to teach people, it can only be solved by changing the tools we're using. And if I could, I would mark my comment as offtopic. I'm clearly having too much time.

anthonylavado commented 2 years ago

Release available on the LG Content Store for those running webOS 6+ (models from 2021 and newer).

Closing this issue to create a new, limited one for error tracking and future fixes.

There is one small bug to fix for webOS 5.x, and then we can resubmit with that update. After, more fixes will likely follow. We'll try our best to get as far back as webOS 3.x, but I am less optimistic about webOS 2.x and 1.x. If we get to 3.x, that brings us as far back as TVs from 2016 (running Chromium 38 from 2014!). You can see what versions of the browser are included here: https://webostv.developer.lge.com/discover/specifications/web-engine/

Thanks for your patience all. I'll be posting a blog post and link on Reddit/Twitter/Chat soon.