-
Notifications
You must be signed in to change notification settings - Fork 19
Open
Description
This issue acts as a living roadmap for planning purposes. It might not be extensive, and it does not replace the CHANGELOG
Planned for v0.42.0
- TBD
Released in v0.41.0
- Added telemetry
Released in v0.40.0
- YouTube account with associated Brand accounts that have been set as "default" #628
- SponsorBlock manual skip
- SponsorBlock default configurations
- Suggestion: Sponsor block adjustment #68
Released in v0.39.0
- Filter content in Playlet backend, with settings
- Shorts
Released in v0.38.0
- Watched progress indicator
Released in v0.37.0
Released in v0.35.0
- Search filters in Playlet backend
- Locale and region in Playlet backend
Released in v0.34.0
- Playlet backend features (Innertube)
- [UX] Clarify the difference between Playlet lib/app versions in the UI
Released in v0.33.0
- Long videos fix
- Age restricted videos (through casting)
Released in v0.32.0
- Quality selector
Released in v0.31.0
- Trickplay thumbnails when using Playlet backend
Released in v0.30.0
- Export registry
Released in v0.29.0
- Support for auto-generated captions in Playlet backend
Released in v0.28.0
- Support autoplay (play next) in Playlet backend
Released in v0.27.0
- Playlet backend for playing videos
Released in v0.26.0
- Web app hot fix
Released in v0.25.0
- Added sort options to channel live streams
Released in v0.24.0
- UI changes to support different languages
Released in v0.23.0
- Use squashfs to load playlet lib faster
Released in v0.22.0
- Localization - will add support to for localization and start with French as the second language
- Roku
- Web App
Released in v0.21.0
- Multiple profile support Multiple profiles #267
- Display logged in Invidious username Auth: Add username to token callback iv-org/invidious#3603 Add username to web app and state api #50
- Add the ability to clear the registry on start (in case of bad data causing the app to crash) (0.21.1)
Released in v0.20.0
- Cast from YouTube Cast using Youtube app (DIAL/LoungeAPI) #276
- [Spike] try to use DIAL/SSDP/Lounge API to cast from Youtube app to Playlet Cast using Youtube app (DIAL/LoungeAPI) #276
- Related projects iSponsorBlockTV youtube-lounge-api MediaServiceCore yt-cast-receiver
Released in v0.19.0
- Home layout editor Customize home screen #250
- Handle the case where a bookmarked video is deleted, making the whole bookmark group fail to load, and unable to remove bookmark Fix for bookmarked invalid videos #255
Released in v0.18.0
- Invidious watch history
Released in v0.17.1
- Add an Invidious instance test to test if thumbnails have valid paths and are reachable
Released in v0.17.0
- Web app remote control
Released in v0.16.0
- Queue UI Queue UI #199
Released in v0.15.1
- A setting to disable search history
- Fixes
Released in v0.15.0
- Search pagination in web app search pagination in web app #183
- Queue notifications Play queue notification #186
- In picture-in-picture mode, we should make the video full screen instead of showing the "exit playlet?" dialog
- Reintroduce a retry mechanism to the http client
Released in v0.14.0
- A bookmark system Bookmarks #153
- Web app support Bookmarks in web app #177
- Search filters in web app Search filters in web app #176
- Trickplay: see thumbnail as you scrub through video Inject thumbnails in DASH #15 Trickplay thumbnails #117 Trickplay thumbnails #169
Released in v0.13.1
- Add ability to trickplay (pause, play,
skip, etc) while picture in picture Pause/Resume during picture in picture #156 - Various bug fixes
Released in v0.13.0
- Channel page UI feed (videos, playlists, related channels, continuation)
- Display channels in web app
- better state caching
- Use etag headers to cache files
Released in v0.12.0
- Channel page UI
- Search filters
Released in v0.11.0
- A major rewrite/refactor of the app. Please see the CHANGELOG as well
- Support for both created playlists and saved playlists [Bug] /api/v1/auth/playlists returns no videos for saved playlists iv-org/invidious#3995
- Created playlists are "Invidious" playlists, and the ID starts with
"IV"
- Need to use
/api/v1/auth/playlists/ID
which requires additional token scope
- Created playlists are "Invidious" playlists, and the ID starts with
- Continuous feed load on paginated APIs
- TV Playlist
- Play next on playlists
- Add to queue (Web App)
- Setup unit tests
- Playlist page UI
- Logs Web API
- Invidious instance health check (check for stats api)
-
Implement a mechanism to avoid issues with misconfigured instances (missing domain or external_port)missing domain is no longer a problem, as we prepend the api paths with the instance url- Need to either detect and warn, or attempts add fix relative urls by adding the instance url
- Related issues Error playing video (need help) #78 Remember login #65 Text shown, videos blank, #42
Released in v0.10.3
- Saved playlists show up in home screen Support saved playlists #121
Released in v0.10.2
- [UX] add a search button next to the search bar in web app
- Improve SponsorBlock segments (Fix SponsorBlock zero videoDuration bug #23 follow up)
-
Handle segments when videoDuration is zero (compare with lengthSeconds from metadata) -
Compare videoDuration with lengthSeconds, reject segment if difference is bigger than a second - Should ignore videoDuration
-
- Figure out a way to share feedback without needing a Github account (email)
Released in v0.10.1
- Support casting to TV with specific timestamp Support playing a video from a specific time (cast from phone, drag a… #88
- Fix focus issue Fix a focus bug #92
Released in v0.10.0
- A new settings screen Preferences / Web App #79
- can configure many options, like autoplay, preferred video quality, invidious, sponsorblock, etc
- New Web App! Web app #80
- Shows all features from the TV app: Search, home feed, settings, and info
- Can cast to TV or redirect to invidious
- Light/Dark mode
- Add an option in main app to clear the playlet-lib url from registry, in case of softlock to an unwanted playlet-lib version Clear playlet lib arg #84
- Handle case when video is casted while a dialog is showing Close dialog when casting a video #85
Released in v0.9.0
- Mark videos watched on Invidious Mark video watched #59
- App info screen Feature/app info screen #69
Released in v0.8.0
- SponsorBlock UI notification SponsorBlock Notification #47
Released in v0.7.0
- [SPIKE] sync between Youtube and Invidious using yt-dlp Simple script to import youtube data to invidious #41
- Fix case where related videos of two videos point to each other, causing the two to play over and over in a loop
- [Spike] Use component library for automatic updates Create Component Library #43
- Component lib load settings should be a json object
- bs_const plugin should run before bsc transpile
- Fix breakpoints on playlet-lib (Create Component Library #43 regression)
- inputArgs should have alwaysNotify attribute
Released in v0.6.0
- Clear search history Suggestions #22
- [BUG] handle case where SponsorBlock returns segments with
videoDuration
equals to0
Fix SponsorBlock zero videoDuration bug #23 - WebSocket server: to enable real-time events (like currently playing video, etc) Feature/web socket #25
- Play next recommended video (part 1)
- [BUG] video W346okRR33I plays on vid.puffyan.us but fails on Playlet
- It's possible for DASH to to fail, but
formatStreams
work
- It's possible for DASH to to fail, but
- Handle
LIVEvideos that did not start yet- Video lists (such as trending) return the following fields
isUpcoming
set to truepremiereTimestamp
which is a unix timestamp for the future air date
- Video lists (such as trending) return the following fields
- SponsorBlock skip count tracking Add SponsorBlock Viewed API #31
- Invidious API definition file Add channel and playlist endpoints #29
- Specific user playlist
- Specific channel
- CI/CD Github Actions (linter/formatter) Create lint workflow #32
Released in v0.5.0
- Logo redesign
- Add favicon.ico
- Detect new versions (show currently installed and latest available)
- SponsorBlock videoId hash
- Implement CORS
- Webserver parse request body (to support POST) Web-server refactor #14
- SponsorBlock colored progressbar Sponsorblock progressbar #18
- [Bug] handle case where logging in while playing a video Refactor and fix player #19
- [Bug] handle case where casting from web app while playing a video from the search Refactor and fix player #19
- Use fields to reduce bandwidth
- Watch while you browse: picture in picture Picture in picture #20
- Launch app to specific video (deep link)
Released in v0.4.0
- Live videos
- DASH support (/api/manifest/dash/id/${videoId} [?local=true])
- Invidious Logout (invalidate token)
- Customize Invidious instance
- setting in web app
- Invidious instances API
- Search page UI
Released in v0.3.0
- Branding: new name! Playlet
- Branding: logo Playlet
- Fix project setup (linter/formatter)
- Fix tooling setup (SceneGraph inspector)
- Integrate roku-promise package
- Invidious API definition file
- Home layout default definition file
- Trending
- Popular
- User feed
- User playlists
- Webserver router middleware
- Long-running webserver
- Registry API
- More granular Invidious token scope
- App Controller (not really done, to be refactored)
- Video Player
- Side menu
- Home page
- Settings
- Login page on the web app
Roadmap (in no particular order)
- Remove long press, use Options (*) key instead
- Limit VideoQueue so it doesn't grow indefinitely. Perhaps make playing a playlist reset the queue
- Refactor content node 77ebd18
- Filter content in Playlet backend, with settings
- "Creator on the rise" in trending
- "Pay to watch" (paid videos in courses)
- The UX is not clear: There's a backend setting, but it is only for playback. This needs to become clearer; a proper "backend" setting
- [UX] Clarify that
Playlet backend
is only for video stream
- [UX] Clarify that
- Implement
NextParams
to fetch multiple videos (video id array) with one request - "Continue watching" list of videos Remembering Playback Position and Watch History #138
- Add an option to block NSFW videos (parental control)
- [UX] Clarify that
Auto (DASH)
quality can go up to 1080p - Add a selector for the content country for region specific trending videos and search results
- Make sure all selectable items are compatible with the screen reader for better accessibility
- Add the list of subscribed channels to the home screen
- Refactor different notifications (added to queue, device connected, sponsorblock) and make them size responsive
- Context menu in web app (bookmarks)
- Bookmarks web apis
- Add the ability to set playlet lib from a custom url in web app
- Support for loading Playlet Lib from a PR
- Add a setting to clear cache (cachefs)
- Add a setting to clear registry (all user data)
- Video player controls
- Playback speed
- Quality selector (video selector + audio selector)
- Caption
- Next video
- Loop button
-
Now playing
from web app- controls, seek bar
- Try to support 4k videos
- SponsorBlock: "Multiple Segments Skipped" notification
- Add support for chapters (not supported by Invidious yet)
- Implement Basic Auth Add basic auth #17
- Closed caption configuration/settings
- Comments
- SponsorBlock UI notification : Undo button
- [Spike] Add Piped API support Support for Piped? #75
- [Spike] Add ViewTube API support
- Annotation support
- Video description support
- Detect urls in description, Make them "focusable" and selectable.
- Once selected, a QR Code can be generated
- Show video related videos
- Video add to Playlist
- Add to Watch later
- Remove from playlist
- Implement roSystemLog
- [Spike] implement HDR video
- Implement remote key binding system for configurable buttons
- Import/Export of Playlet user preferences - export implemented
Graveyard
These have been abandoned, or no longer apply.
- [UX] clarify that the web app contains more settings than just casting Feature request - be able to provide own invidious URL (for self-hosted) #24
- By adding a settings page and moving qr code to it's own screen, this seems to be established.
-
/invidious/replay
API replay-
/invidious/replay/api/v1/stats
would proxy to$INSTANCE/api/v1/stats
- This is already done for authenticated calls, and will be added to needed endpoints only
-
- Music mode (no video)
- Unless there's demand for this, there's no reason for it. It makes sense on mobile to save battery, but not on a TV.
- [Spike] online service backup
- Back up current roRegistry to pastebin-like service
- Encrypt using device Id
- Simply a bad idea: settings can be imported/exported to a file. We can add web app UI for this functionality.
- [SPIKE] Web Share Target API
- Web app must be installable, which means it needs to be served over HTTPS
- Option 1: serve over HTTPS from Roku somehow
- Option 2:
serve from a hosted app (Maybe Github Pages would do)that won't work, it will hitMixed Content Security Policy
- Option 3: native mobile app? -> this remains the only logical option, still on the roadmap
- Option 4: Dockerized local web app (self-hosted)
- Have an advantage of being bundled with Invidious, and also can auto-find the TV
- Web app must be installable, which means it needs to be served over HTTPS
- [Spike] Configurable installed version (latest vs specific version)
- This is done as a developer menu
- [Spike] Fix non-Latin characters (Unicode on Roku sucks) [Spike] Rich label rendering idea #40
-
[Spike] Import https://github.com/harfbuzz/harfbuzzjs using https://github.com/MotleyCoderDev/wasm2brs - This is simply too difficult, and perhaps not worth it. If there's demand, the text rendering can be done on the web app and sent back to Playlet via web sockets, but for now, it's not on the roadmap.
-
- [SPIKE] run yt-dlp on Roku using https://github.com/MotleyCoderDev/wasm2brs
- Not much is possible with wasm2brs - a Playlet extractor might make more sense.
- [BUG] Fix launchArg video focus issue (Create Component Library #43 regression) (no longer an issue after the v0.11.0 rewrite)
- Add option to preview/watch a video on web app (using Invidious embed
${instance}/embed/${videoId}
) - Load known DASH urls before loading video details for faster load times #35
- Chrome extension to cast to Playlet
- Logs Web App UI (a button to download logs) - done
- Native mobile app for casting from Official Youtube app Poc/nativescript #118
- Log the
lastExitOrTerminationReason
value - Items deferred in Preferences / Web App #79
- Setting controls should not have "instant save" to avoid accidental changes (on the web)
- Buttons!
- Invidious -> User -> logout (and display username?)
- Reset settings? -> low priority, not for now
- Error handling of web requests
-
Embedded preview video (auto-play)- Use storyboard images as an animated thumbnail (maybe using roku-animated-poster)
- Customize SponsorBlock instance - will reconsider if people are self hosting sponsorblock instances
- setting in web app
- [Spike] Use NewLeaf backend - not a priority
- Theme support
-
Roku - Web App
-
- Adjust picture in picture position on Search Page
- Dislike count (Return YouTube Dislike integration)
- SponsorBlock UI notification: show for a maximum of 3 seconds when Video UI is not visible, to avoid showing the notification for too long on long segments. Notification should be visible when Video UI is visible
- SponsorBlock user id
- Use
expire
field (in video urls) to check if video expired- Do an http-request with "cache-only" flag
- If expired, make a request with "no-cache" flag
- [Spike] DeArrow integration
Metadata
Metadata
Assignees
Labels
No labels