All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Wrong SponsorBlock in the trackbar due to image caching
- Video Player HUD now focuses initially on the trackbar, instead of the pause button
- Pressing back cancels seek, hides UI, then closes the video player
- Scrubbing accelerates on long videos
- Signed-in accounts no longer get stuck sending failing requests after the login session expires
- Parser for channel video live indicator
- Home screen reduced to only the Trending sections after updating to 0.48.0
- Trending back (Gaming and Live) for Playlet backend and Invidious - to avoid a blank home screen when not logged in.
- Retry condition issue in http client
- Attempt to fix "page needs to be reloaded" edge case
- Attempt to reduce errors in post-live DVR videos
- Attempt to fix
No valid bitrateserror
- Play with ytjs option from web app, as it wasn't working anyway
- Attempt to fix
MISSING_FORMAT_FIELDerror in live videos - Attempt to fix
No valid bitrateserror
- Attempt to fix low quality videos, by downgrading tv client version
- Live streaming improvements
- Attempt to fix the "The page needs to be reloaded" error by refreshing the signature timestamp automatically
- Playlists with more than one page of videos no longer stop loading after the first ~100 videos
- Report previous-run crashes to diagnostics
- Live streams no longer fail with a 502 error on transient segment failures
- Attempt to fix low quality videos, by downgrading tv client version
- Subtitles no longer stop displaying after shrinking the video to picture-in-picture and restoring it
- Fixed a video player crash that could occur near the end of a video
- Fixed a startup crash caused by corrupted saved-profiles data in the registry
- Fixed a crash that could occur when the video player failed to start playback
- Support for 4K video
- Playlet already supported 4K videos. This adds a support check, and quality selectors in the settings, for the devices that support it.
- Not all 4k supporting devices - only with AV1 support (usually newer devices)
- Not all 4k videos are playable, only AV1 encoded videos
- SponsorBlock "Hook/Greetings" category
- Missing video durations in channel pages, when using Playlet backend
- Captions on some videos (from TV broadcasts) displaying vertically instead of horizontally
- Video player refactored into a new interface, with pause and minimize buttons. This would allow for an easier integration of other features
- Live stream videos for Playlet backend, attempt with Invidious
- Audio track names when using Invidious
- Small leak in video player
- Pressing down when video is full screen no longer minimizes the video, there's a dedicated button for it now
- Experimental support for changing playback speed from YouTube mobile app using Leanback/Lounge api
- Support for disabling AI auto-dubbed audio tracks
- Bug where large playlists (1k+ videos) only load the first page
- Bug where home screen editor is empty with a fresh install
- Updated dependencies and innertube versions
- Always use
signatureTimestampin/playercalls to prevent "reload page" errors. This affects watch history. - Attempt 2 to fix watch history and watch progress
- Attempt to fix watch history and watch progress
- Channel sort
- Error dialog doesn't close automatically when playback recovers after an error
- All audio track names are shown as "Other" in multi audio track videos
- Error handling when ytjs formats have missing urls
- Subscriptions looping instead of loading older videos
- Trending endpoints from code base
- Json parsing with invalid chars like
\u0000preventing some channels from loading
- Removed retry on trending feeds
- Small change in post-live dvr detection
- Issue where recommended videos are all "UPCOMING" paid content
- Errors related to loading the trending feeds. Trending will be removed from Playlet in a future release.
- Implemented compactRadioRenderer node
- Prioritise manually created subtitles over auto-generated ones
- Another mistake in OTF streams
- Fix in url decipher logic
- Redo OTF segment processing
- Adjust telemetry for OTF streams to debug
- Bug in processing OTF streams info
- Post live DVR video support
- Attempted OTF stream support
- Better parsing of audio track metadata
- Bug in detecting live videos in HLS streams
- Playback error when regular videos are returned with DRM protection (unless they are OTF)
- Fallback to iOS HLS for post dvr and OTF videos
- Improve channel parsing in Recommended feed
- Crash on older Roku OS version due to
roByteArray.Slicenot being available
- Support for additional nodes parsing
- Trickplay storyboards on DRM videos
- Support for DRM protected content (free with ads / purchased content)
- Only supported on Playlet backend (must be selected in settings)
- Must be logged in using a YouTube account (otherwise you would get a "Login to confirm your age" error)
- Build scripts and tools on windows
- Crash when trying to display error messages with very long text
- German translations
- A bug where title and duration of songs were missing an an album playlist
- Error when loading trending videos by retrying to load the feed
- Note: trending is removed from web and tv clients, they are being phased out.
- Crash when logging early startup warnings
- A bug when invalidating tokens
- Issue with auto-generated subtitles aligned to the left by using TTML captions
- Crash when telemetry thread turned off and then back on
- Bug: credentialTransferTokens should only be used with TV clients
- [Perf] reduce memory usage by freeing playlist videos when playlist view is closed
- Support for different languages in the search keyboard
- Initial list: English, Deutsch, Español, Français, Português and Русский
- More can be added later.
- Dash generation bug
- Track login errors and drm errors better
- Capturing diagnostic events related to playback errors to further investigate
- Capturing diagnostic events related to playback errors to further investigate
- Various fixes and improvements
- Crash due to bad type casting
- Various fixes and improvements
- Various fixes and improvements
- Rare crash when loading video feed
- Improve session data error handling
- Try fetching multiple pages in the search, in case results are filtered out (e.g. shorts)
- Regression for
Attempt to play the next video when errors occur - Better handling for lounge lost sessions
- Issue with
credentialTransferTokens which caused "Login to confirm you're not a bot" even when logged in - Adjust live video detection to reduce error rate happening on iOS client (another attempt)
- Attempt to play the next video when errors occur
- Remove manual video cache for Invidious to avoid stale streams
- Fallback to 360p when dash streams are missing
- Small fixes related to events
- Disabled event batching
- "Open In YouTube" button in web app cast dialog
- Bug in dash storyboard
- Adjust live video detection to reduce error rate happening on iOS client
- Bug when parsing headers in telemetry
- Web app fixes and dependency updates
- Bug when casting a mix from web app
- Bug in dash generation
- Bug in http server
- Playback error when playing post live dvr videos
- Various fixes and improvements
- Various telemetry issues
- Small improvements in parser
- Try force refresh visitor data when it fails
- Rate limit syslog errors
- A bug when generating dash manifest with missing stream url
- Invidious redirect fix in webapp
- Various telemetry issues
- Ignore certain nodes in parser (such as movies, since they are not supported)
- A bug where video title is missing while loading
- A bug where loading a bookmarked playlist would fail
- Error playing videos when Invidious backend is selected, always proxy, but no instance provided
- Reduce event count
- Telemetry to collect anonymous diagnostics data. Can be turned off from the settings.
- Shorts being merged with subscription videos, regardless of "Disable Shorts" preference.
- Gracefully handle STS_MISMATCH errors
- Error loading feed when device language is Australian English (
en_AU)
- A bug with playback when backend is set to "Invidious" but not instance is specified
- Attempt to fix
no valid bitratesandSign in to confirm you're not a boterrors.- Introduced a "Playlet support server" to allow handling sig/nsig decoding. These are not possible to do without a Javascript execution environment, so this was necessary.
- Live videos are not affected by this fix yet, but hopefully it reduce the amount of errors.
- Videos longer than 5 hours now work #500
- Age restricted videos should play normally if logged in using a YouTube account.
- An option to export Playlet's state from the web app for easier debugging.
- This is a zip file that contains logs, the app state, and the registry (local storage)
- Generate a PoToken per video in the web app when using ytjs
- A bug preventing the removal of bookmarked private playlists
- [perf] Reduce number of rendezvous when reading invidious instance name
- Also fixes an edge case error when device loses connectivity
- Invidious tests -
Me at the zoovideo was getting blocked - Bug where logging out from inactive profile is not properly persisted
- Memory leak in MarkVideoWatchedTask
- "Use dev video player" option from the settings
@asynctaskin favor of newer job system
- Revert "Use iOS user agent in player"
- Improve performance of video bookmarks, by avoiding
/playerendpoint and caching results - Github link to create new issue not working in web app due to url being too long
- Added instructions to use web app as a workaround to current errors
- [perf] Added a job system to control background tasks.
- Issue with deep linking not working due to session data race condition
- A bug where playlists will not load the second page when not logged in
- Session data duration: increased to 14 days, to avoid Innertube errors
- Use iOS user agent in player
- Few changes preparing for app store submission
- Added a "hint" in the error message when playing a video and login is required.
- Various performance improvements
- Channel sort options in Playlet backend (sort videos by Newest, Oldest, Popular)
- [Perf] reverted a perf fix that wasn't helping
- A bug where "Open channel" didn't show up in videos and playlists from logged user
- A way to play longer videos using the web app (Play using ytjs)
- German translations
- A bug where it says "(Failed to load)" when switching profiles
- A bug where searching in web app using iOS causes page to reload
- Session data duration: increased to 7 days, to avoid Innertube errors
- German translations
- Support for multi-accounts, such as brand accounts
- Support for manual skip in SponsorBlock
- Customize SponsorBlock categories from the settings
- Show videos watch progress in playlist view
- Missing localization in certain views
- Regression with watch progress introduced in previous release
- New settings category:
Content Feed- New setting:
Disable Shorts
- New setting:
- A regression with thumbnails not showing from previous release
- Inability to login to Invidious when selected backend is Playlet (local)
- German translation
- Settings: Added a "backend" section, and removed backend selection from Playback to avoid confusion
- [advanced users]:
playlet-web-api.ymlwas removed. It was getting outdated, and too hard to maintain to justify keeping it
- Display issue in playlist view
- Cache issue for watch history
- Video progress not showing in web app
- Video does not continuing from previous progress when opened
- Watch progress for YouTube accounts: Progress is saved as you watch. Progress bar is shown on video thumbnails (only on user feeds, such as recommendations, subscriptions, and watch history)
- Known bug: Watch progress doesn't update for all videos.
- A few issues related to Playlet backend feeds and caching
- An error when Invidious doesn't return valid video metadata
- A bug where playlists with small number of videos has duplicates
- A bug where DASH manifest was not generated correctly for proxied Invidious videos
- A bug where watch history videos repeat indefinitely
- YouTube account support. The following features are now available:
- The ability to login to one or multiple accounts
- Both YouTube accounts and Invidious accounts are supported side-by-side
- Subscriptions
- User playlists
- Watch History
- Watched videos on Playlet are added to the watch history
- Subscribe/Unsubscribe
- Recommended videos for logged in YouTube user are available in the home screen
- This feed can be enabled/disabled from the settings
- When an Invidious user is logged in, this becomes "popular" since Invidious does not support recommendations
- A bug where Session data did not refresh after 24 hours
- [advanced users]: the Playlet web server's CORS headers are no longer set to
*, for security reasons.
- Playlet backend error caused by Roku 14.5 update on Canada devices
- Small UI bug in web app nav bar
- Backend logging to improve debugging
- Small error handling bug in Playlet backend
- Portuguese (Brazil) translations (Thanks to davbrasan)
- Startup announcement dialog
- German translation (Thanks to Atalanttore)
- Playlet backend parsing issue in search results
- Bug with saving search history
- German translations (Thanks to Lacey Anaya and Bastian Veith)
- Spanish (Mexico) translations (Thanks to Jean Carton)
- Added
Visitor Datato payload in Playlet backend- Session data persists for 24 hours
- It reduces the privacy of the app, but can help with
Sign in to confirm you're not a boterrors
- Video queue view might be missing video titles and durations
- This is done to reduce the risk of rate limiting. No video titles in the queue is better than no videos playing at all.
- Only affects casting playlists from the YouTube mobile app.
- Support for channel "Courses" in Playlet backend
- Web app tech refresh
- Web app "Open in Invidious" when built-in backend is selected
- Playlist continuation showing invalid items at the end of playlists
- Skip "Creator on the Rise" that show up in trending
- They end up hijacking the feed
- Might become a setting in the future
- Ability to hide announcement messages
- [UX] Clarify that you can't login using Playlet built-in backend (Yet)
- German translation (Thanks to Lacey Anaya)
- Video duration in queue view
- Crash in player when video ID is invalid (again)
- Crash in player when video ID is invalid
- [Perf] better caching in Playlet backend
- Mixes in in Playlet backend
- Watch history now has more info (title, channel, duration)
- Support for auto-generated channels in Playlet backend
- Support for continuation/pagination in Playlet backend: search, channels and playlists load more content as you scroll
- Channels sub count in web app
- Channel drag and drop in web app
- Video thumbnail when adding to queue from lounge
- YouTube.js from web app. It is no longer needed, so this reduces app size.
- Region and locale support for Playlet backend
- Search filters support for Playlet backend
- Start up crash on older OS version (11.5)
- Regression caused watch history thumbnails to break
- Web app views when using new backend
- Built-in Playlet backend, which supports channels, playlists, and search
- This backend is experimental, and has a few missing features.
- To use it, set the Invidious instance to an empty string.
- Added a workaround for an issue where json parsing fails due to unicode characters
- Default Invidious instance
- Compression (gzip) to static web app files. Reduces app size significantly
- UI to clarify how to enable
Control by mobile appsin the web app
- Error when opening a mix
- Search suggestions to Playlet backend
- Support for age restrcited videos and private videos when cast from YouTube app (logged in)
- Note: it works when the video is explicitely cast. If it was added to queue, or added as part of a playlist, this might not work.
- Improved on issue with long videos (10+ hours) showing as 2:30 only. They now show about 5 hours.
- Hls hanging on HDR videos
- [Perf] Small optimization to json payload size in Innertube
- Default Invidious instance
- Support for better video quality selector
- Support for Trickplay thumbnails in Playlet backend. Done by parsing storyboards and injecting them into HLS manifest.
- Sort options for channel shorts
- Option to export device registry
- Bug where deleted channels cannot be removed from bookmarks
- Issue with Invidious instance caption test
- Default Invidious instance
- Spanish translations (Thanks to gallegonovato)
- Link drag and drop functionality in web app
- "Hot fix" from web app
- Reduced search cache to 5 minutes
- Spanish translations (Thanks to Kamborio)
- Support for auto-generated captions in Playlet backend
- Support for autoplay (playing next video) when Playlet backend is selected
- Live videos playback in Playlet backend
- Experimental Playlet backend to play videos using Innertube
- Partial Spanish translations (Thanks to Kamborio and gallegonovato)
- Support for casting clips from web app
- A workaround for video loading errors: uses Playlet Web app and YouTube.js to load streaming data. This workaround is limited, and might not work. It doesn't have closed captions, nor trickplay thumbnails (storyboards).
- How To use: Open the web app, click on a video, and choose "Play on <TV_NAME> (HOT FIX)".
- Support for parsing playlist urls in web app (
https://www.youtube.com/playlist?list=ID) - Back the announcement for the
This helps protect our communityerror message
- A bug where channel view infinitely tries to load a
Topicchannel
- Removed announcement
- Portuguese (Brazil) translations (Thanks to davbrasan)
- Rare crash related to NavBar
- Crash related to web server
- a bug where the web app qrcode doesn't show up
- added
uri_resolution_autosubto manifest (needed to fix 720p UI)
- An announcement for the
This helps protect our communityerror message
- Few optimizations with texture loading to improve memory usage
- A rare crash in DIAL server
- Partial Spanish translations (Thanks to gallegonovato)
- Issue with focus in the video queue view
- Sort options to channel live streams
- Video width and height to DASH manifest
- A bug where the right video will not play if selected too quickly
- A bug where a bookmarked but deleted playlist can't be removed from bookmarks
- Additional Spanish (Mexico) translations (Thanks to Jean Carton)
- Additional Spanish (Mexico) translations (Thanks to Jean Carton)
- Partial Portuguese (Brazil) translations (Thanks to Bruno Fernandes)
- Additional Spanish (Mexico) translations (Thanks to Jean Carton)
- Partial Spanish (Mexico) translations (Thanks to Jean Carton)
- An issue where pause/play would not work with picture-in-picture on certain views
- A link to #400 in error dialog
- Low memory warnings to the app logs for easier memory issue debugging
- German translations (Thanks to Lacey Anaya)
- Sliding navbar (primarily to support German as it has longer words for the menu screens)
- Some UI refactors to support the different languages (English, French, German)
- A clock to show the time
- Attempt to fix a race condition when closing player
- A dev setting to clear the cache
- A bug where bookmarked channels can be duplicated
- A bug where video cast from web app would not play if there's an error dialog on screen
- failed to create media player error, by waiting for previous video to stop before starting a new one
- Font weight to be less bold
- a bug where trending and search wouldn't work in certain countries (web app)
- A crash when lounge session is lost and fails to recover
- A bug where live videos to not start at the "edge" of the stream
- An invidious instance "fetch with CORS" test
- a bug where public Invidious instances all showed
N/Ain the health column - a bug where trending and search wouldn't work in certain countries
- Removed announcement - most public instances are now updated
- Updated announcement
- Announcement dialog to indicate outage
- Loading Playlet lib as squashfs, with fallback to the zip file. This significantly decreases load times.
- Bumped minimum OS version to 11, this is required for squashfs-zstd
- Removed announcement
- Updated announcement
- Announcement dialog to indicate outage
- [Attempt] A bug where the lounge would randomly lose the session id, making it unable to cast, and spam the same error over and over
- Dialog with timer now stops as expected if any button is pressed
- Context menu sort options for channel videos and playlists
- Localization support and French translations
- Channel releases
- Colors to be more broadcast safe
- A bug where instance testing is not immediately cancelled when the testing page is closed
- A bug in the web app where "upcoming" videos show up as "live"
- Search sort filters
- Deeplinking required for certification
- Subscriber count in the channel page
- A bug where videos that did not premiere yet would error with a playback error
- A bug where a playback error dialog is dismissed too fast before playing the next video
- Support for multiple profiles. You can now use multiple Invidious accounts.
- When a video error dialog shows, a timer with 10 seconds starts to play the next video
- A bug where the loading screen does not disappear if search results are empty.
- Empty invidious instance in preferences when default instance is being used
- Small improvement in the context menu of the Playlist view
- Videos can be paused and resumed using the
OKremote button
Device connectednotification only show once every 30 minutes per device to avoid spam- SponsorBlock category "highlight" was not visible in chapter label
- UI focus images are now with rounded corners, and with a slight glow
Device connectednotification showing repeatedly
- Support for casting from the YouTube app (also known as Lounge API, or LeanBack)
- Connect to Playlet from the YouTube mobile app or from certain browsers (such as Chrome)
- Connect to Playlet from local network, or through the TV code.
- On the cast dialog in your YouTube mobile app, you might see two listings for the same device. E.g.
Roku TVandPlaylet on Roku TV. Use thePlaylet onone to cast to Playlet, and the other one to cast to the regular YouTube TV app. - The functionality is still experiemntal, and has some limitations. To name a few:
- The queue does not perfectly sync between the mobile app and Playlet, espeically if it gets modified by the web app or in Playlet.
- Many functions (such as d-pad controls or setting the volume) are not working due to OS limitations
- Many functions (such as changing the subtitle settings) are not currently implemented
- ATTENTION: This feature is not very privacy friendly. When connected to a lounge, all network traffic (videos played, queued, etc) go through YouTube servers. For this reason, certain measures are taken:
- While Playlet broadcasts its casting capabilities to the local network, it does not connect to a lounge for the first time until:
- A device connects to Playlet (using DIAL/Connect using Wi-Fi)
- A
Link with TV codeis generated, by visiting theRemote->Link with TV codetab.
- Playlet disconnects from previous lounge sessions on start, and joins a new one instead of one continous session. In other words, restarting Playlet will disconnect your second device. This is a feature, not a bug.
- Playlet does not expose device details, and uses a randomly generated id on each start, instead of consistent device id.
- While Playlet broadcasts its casting capabilities to the local network, it does not connect to a lounge for the first time until:
- The queue no longer contains playlists. When a playlist is added to the queue, the entire playlist is loaded.
- It can take a few seconds to load large playlist before it can be added to the queue
- This is done to be more compatible more the lounge, which does not contain "Playlists in the queue" concept.
- The
Web Apptab is now calledRemote. It can be used to open the web app, or connect using Lounge (cast from YouTube) - Removed
fieldsfrom Invidious requests, as per iv-org/invidious#4276 - The
POST /api/queue/no longer returns the current queue. Instead it returns a 204.
- [Perf] improved some caching of videos in the queue
- [Attempt #2] to fix a crash caused by execution timeout when stopping a video takes too long
- Wrong hint on the "added to queue" notification when in fullscreen
- A rare crash when listing Invidious public instances
- Restoring video to full screen not working when on certain screens
- A hint on how to restore video to full screen
- Bookmarks are now added to the top of the list
- The search screen keyboard to make it easier to clear the search field
- A bug with request retry mechanism introduced in 0.19.0
- A home screen editor allowing to enable/disable feeds, and change their order.
- The editor can be accessed from the Settings screen.
HTTP/0.9 when not allowederrors by adding a retry to web requests- Issue where a bookmarked video is no longer valid (such as a video made private, or a live stream that ended)
- [Perf] App loads slightly faster (~500ms)
- A rare bug that causes the app to crash when displaying video cells
- A rare bug where a long press can cause a crash
- [Attempt] to fix a crash caused by execution timeout when stopping a video takes too long
- Unsupported subtitles (subtitles that can't be rendered will not be used)
FunnyandNewsfrom the Home screen.- These are not standard feeds (like
Trending), and are just search results forFunnyandNews. They were added in earlier Playlet versions to have more content in the Home screen. - If you like to add these two feeds to your bookmarks:
- Search for
Funny(orNews) - Set the
Sort byfilter toUpload date - Press and hold the
OKbutton while a video from the search result is selected - Choose the
Add to "Search - Funny"option
- Search for
- These are not standard feeds (like
- Medium video quality in the settings (For most videos, this is 360p)
- Invidious watch history feed
- (Regression) Issue where auto-play keeps playing the same videos in a loop
- Small search box styling bug for Safari
- A bug where the skipping of a sponsored section at the end of a video leads to an infinite loop
- A couple of bugs when listing Invidious public instances
- Xmas theme logo - can't publish it before end of year... (channel-store-blackouts-2023)
- Xmas theme logo
- Loading message
- An instance test to make sure thumbnails are reachable
- A rare error when video player is closed but does not have valid content
- A rare error that can occur with loading indicators causing a crash
- Playlet logo in web app is clickable, and launches app if not already on
- Remote control in web app
- Clickable buttons and keyboard support
- User interface for the Queue: Press and hold
Options (*)to show the queue
- Crash when video player has no content
- Execution timeout on cirlce posters
- An option to disable search history
- A rare bug that causes the app to crash when displaying video cells
- A bug where we show error dialogs that happened on screens that are already closed
- A bug where bookmarks show duplicate videos
- A bug where watch history is not always sent to Invidious
- Pagination support in web app search (load more button)
- Video links pasted into the web app triggers the dialog to cast the video
- Ability to subscribe/unsubscribe from a channel screen
- This needs additional scope for the Invidious token. You will be logged out, and need to login again. Sorry for the inconvenience.
- A notification when videos are added to the queue (can be disabled from the settings)
- A bug where casting from web included timestamp even if the "Start at" check box is unchecked
- A leak where channel screens would reload data even when closed
- A crash when fetching subscriptions
- Fetching errors by adding a retry mechanism to web requests
- Bookmarks: different items can now be bookmarked, and be found in the
Bookmarksscreen. Things that can be bookmarked:- A video
- A channel
- A playlist
- Subscriptions
- Trending
- Popular
- Playlists
- Search results
- Channel tabs (latest videos, live streams, playlists, shorts, podcasts, related channels)
- Context menu: press and hold
OKto show a context menu to:- Play/queue a video or a playlist
- Open the channel of a playlist or of a video
- Manage bookmarks
- Local DASH manifest generation
- This adds support for multi languages audio tracks
- Also adds thumbnails/preview in trick play mode
- Known issue: thumbnails might appear cropped/misaligned at the end of videos. This will be addressed in a later release.
- Search filters in web app
- Channels and Playlists can be opened on TV from web app
- Channel links can be drag and dropped into the web app
- Layout in channel view so that the upload time and view count of videos is visible
- A few things in the logger
- A bug where channels show "0 videos". Channel handle is shown instead.
- Cache format so it does less parsing work
- Removed "chapter" from SponsorBlock categories
- Support to pause/play while picture-in-picture
- (potentionally) a bug where many dialogs could cause an execution timeout
- Mutltiple rare crashes when component content is set before component initialization
- Error dialog for loading "Popular" when "Popular" is disabled
- Playlists, streams, podcasts and related channels to Channel UI
- Pagination supported
- Channels show up in web app (but no UI for channel details yet)
- Support for
Etagheader on the web server to improve performance with caching
- Another bug where the app crashes if an error happens loading channel info
- Issue with default instance (by changing default instance)
- Cropped text in a couple of buttons
- Partial content (
Rangeheader) from the web server, since we never serve very big files
- New logger: less features, and less rendezvous
- A bug where the app crashes if an error happens loading channel info
roku-logpackageropm
- A field to indicate when a playlist was last updated
- Voice search in search page
- Basic support for channels (open channel, see latest videos)
- Search filters (Upload date, type, duration, features, and sort by)
- Renamed
Unstablereleases toCanary
This version went through a major refactor, which resulted in a different arcitecture of the app to support new features, the rewrite of many pieces, as well as new features.
- The concept of a
Queue. Videos can now be queued to play one after another.- Currently the queue is funcitonal, but no proper UI to support it, such as seeing the queue, clearing it, and so on.
- UI for the
Queuewill be introduced in a future version. - Videos and playlists can be queued from the web app
- Support for Playlists
- Home screen now shows both created and saved playlists
- Playlists have their own view to scroll through their videos
- Playlist videos play one after the other
- Playlists show up in search results
- Continious scrolling of feed where supported (pagination)
- Subscriptions, Search, Playlists and Search based feeds (like
FunnyandNewsin the home screen) - Not yet supported in the web app
- Subscriptions, Search, Playlists and Search based feeds (like
- Home screen placeholder items while items are loading
- Settings screen has been rewritten with a better design
- Access to public instances
- New UI to list public instances, or to specify a custom instance
- Testing system to make sure the instance is properly setup and usable
- Playlet now tolerate certain missing configurations in Invidious (such as not configuring the domain)
- Better error handling, error dialogs, with more information on what went wrong
- Multiple Brighterscript plugins to support different functionalities of the app
- Testing framework, and some tests
- Performance imporvements
- Lazy loading where applicable
- Screens do not load until opened for the first time
- Not all feeds are loaded at once, feeds are loaded on demand while scrolling
- App profiled, some bottlenecks identified and fixed
- QR Code generation happens on background thread
- More consistent logging, and the ability to retreive a log file of current run and the previous run
- New
HttpClientfor making web requests, which supportsSendAndForgetand Cancellation, with a reducedrendezvous - Open API spec file describing available APIs in the Playlet Web Server
- Lots of refactors and rewrites in general
- The developer settings are now always visible in the web app
- The web server is now decoupled from Playlet specific logic
- When not logged in, authenticated feed (like user Subscriptions and Playlists) show a "Login to view X" message, with a QR Code that redirects to the login screen
- [Breaking change] web apis changed a bit (for example the
/api/commandendpoint is removed) refer to the Open API spec - If the Invidious auth token is missing permissions (A token aquired using a previous version of Playlet) you will be auto logged out.
roku-requestspackage. A new HttpClient has been written to fit the need of Playlet instead. Some of the reasons to do this:- It was causing a lot of
rendezvous - It has no real way to send a request without waiting for it to finish (send and forget)
- Some of the API was quirky (need to specify
parseJson: falseto ask it NOT to parse the response) - It reads the response data, headers, error codes and etc even if they are not needed
- Excessive logging without a way to toggle it, or redirect it to a file
- It was causing a lot of
- Some unused parts of the code (Like basic auth in the server, WebSockets, RegistryRouter, Kanji QR Code)
- These were unused and/or feature flagged features. Things can be restored as needed.
- The video player loading spinner when the video is minimized: this added too much hacky code with minimum value.
- Different issues caused by background tasks in the home screen
- An issue caused by manipulating the loading spinner on the video player
- An issue where the web server hangs if the payload contains unicode characters
- Support for saved playlists. By adding a playlist from a youtube channel to your Invidious profile, you can see the playlist on Playlet.
- Links to the app info in web app
- Loading indicator for search page in web app
- Feedback link through email
- Scopes and expire fields to the Invidious auth token. This is to detect when a token is close to expiry, or if we have missing permissions.
- Video duration formatting in cast dialog
- (Removed) Workaround for Invidious token expiring due to misconfigured instance
- Crash when loading the home screen #83
- Performance of home screen in web app
- SponsorBlock segments where video duration is not provided (follow up to #23)
- Focus with the settings input field
- Support playing a video from a specific time (cast from phone, drag and drop, open in Invidious)
- A crash where the saved auth token is not in a valid format
- Video duration formatting for long videos
- A bug where app would lose focus when playing the next video (0.10.0 regression)
- New web app, mirroring Playlet app
- Includes home page, search, settings and info
- Dark mode
- Also includes a dev menu
- Hidden by default, use
dev=1in the browser to show it
- Hidden by default, use
- Improved drag and drop functionality (drag and drop a link from YouTube into the web app)
- New settings page, available on TV and web app
- New preferences system
- Unified settings between TV and web app
- Web API allowing to import/export preferences (no UI for that yet)
- Added launch argument
clearPlayletLibUrls- If the dev menu is used to load a custom Playlet lib url, but the lib does not have a functionality to revert back,
curl -d '' "http://$ROKU_DEV_TARGET:8060/launch/dev?clearPlayletLibUrls=true"can be used to remove the custom lib, and revert to using default.
- If the dev menu is used to load a custom Playlet lib url, but the lib does not have a functionality to revert back,
- Issue where a dialog remains on screen when a video was cast from web app
- SponsorBlock segments are not skipped by default, except for sponsor segments
- Web app QR Code is now in its own page
- Roku OS 10.0 minimum is required
- The ability to set multiple Invidious instances. This was anticipated to use as fallback in case of failure, but it was never implemented. This is now removed to avoid confusion
- Sometimes it is necesary to check multiple instances for closed captions in case one instance is saturated. For this case, publicly hosted Invidious instances will be used. This feature is still behind a feature flag, and not on by default, because it might delay the start of videos.
- Of course, if no instance if provided, a public instance will be used by default. This behaviour did not change and it is now implicit.
- Add watched videos to Invidious watch history
- App info screen
- A dev menu selector to test newer or older versions of playlet lib
- Makes it possible to test unstable releases before they officially release
- A crash where the metadata of a video is not validated #57
- A crash where the video details in home screen are null #56
- A crash where the video details are not returned in json #63
- Revert to using DASH instead of 720p by default
- A crash where request cache fails #62
- SponsorBlock notification
- Invidious username to web app v1
- Crash in case GetLocalIpAddress() returns invalid
- Use Format Stream (720p) instead of DASH (iv-org/invidious#3666)
- A script to sync between YouTube profile and and Invidious profile
- Moved most of Playlet logic to Playlet Lib
- Support for multiple caption languages
- Issue where auto-play keeps playing the same videos in a loop
- Ability to clear search history from web app
- WebSocket server for realtime events
- SponsorBlock tracking
- Auto-generated tasks and the @asynctask annotation
- Show known video metadata while loading video details
- Caching for video details
- The License has changed from MIT to AGPL
- Now videos play the next related/recommended video once finished
- This does not take into account the videos in playlists
- Bug where app freezes if metadata fails to fetch
- Bug where SponsorBlock returning videoDuration of zero causes the app to hang
- Bug where app would lose focus when casting from web app
- Bug where DASH stream is not compatible. Play format stream as a fallback
- Showing upcoming videos correctly
- Dependency on roku-promise
- Version check in settings page
- Support for web request body parsing
- Error dialog for video load fail
- SponsorBlock sections and category info
- Loading spinner
- Picture in picture support
- Deep linking support
- Both Launch arguments and Input arguments are supported, using the "contentId" key as the YouTube video id
- Error and Exit dialogs
- Bug where playing and exiting a video too quickly would cause the video to play in the background.
- Bug where logging in causes issues if a video is already playing
- Bug where casting from web app while playing a video from the search
- Spinner for the video
- Bug where search sugggestions selected index is higher than total count
- Race condition where button group gains focus before suggestions are set in Search Page
- Play video API
- Play video by ID/URL in web app
- Metadata to Video Player
- Support for DASH and Live videos
- Log out button to web app
- Search Screen
- Very basic UI to customize/change invidious instance
- Bug where Settings page and home page are both visible, if settings page is selected, and user logs in.
- App name! new name: Playlet
- Nav bar / menu
- Web server now always on
- Settings page with QR Code
- API Refactor
- New UI
- QrCode component to take user to invidious token page
- Web server allowing the recption of the token through call back
- The web server can also be used to serve a web app, facilitating the configuration of the Roku app, as well as controlling the app itself
auth/feed, to read the subscriptions of the current user- Video information (Author, view count, release date)
- Trending categories, subscription view, and custom (hardcoded) search categories
- User Playlist support
- Added basic instructions
- Initial version
- Reads feeds from popular and trending videos using Invidious APIs
- Skips sections using SponsorBlock