Repository navigation
Releases: M4RC02U1F4A4/YouTube-RSS
Releases · M4RC02U1F4A4/YouTube-RSS
Release list
2.2.1
Fixes
- The page no longer jumps when you mark a video as watched, open one, or come back to the tab.
Full Changelog: 2.2.0...2.2.1
2.2.0
Features
- Add a single video by pasting its YouTube link (or its id) in the Add dialog, even from a channel you don't follow. It keeps its real publish date, and shorts added this way are shown.
Full Changelog: 2.1.1...2.2.0
2.1.1
Fixes
- Marking a video as watched with the mouse no longer highlights the next video. Moving to the next video is still there when you use the keyboard (
j/k,w,Enter).
Full Changelog: 2.1.0...2.1.1
2.1.0
What's new
- With many channels the channel chips above the videos no longer take over the page: they stay within three rows, always including the channel you're filtering by, and the rest sit behind a +N more chip that shows the full list.
Full Changelog: 2.0.0...2.1.0
2.0.0
⚠️ Breaking change: one container instead of two
The React frontend and its nginx container are gone. The UI is now a single static page served by the backend, so the whole app is one image on one port:
| 1.x | 2.0 | |
|---|---|---|
| Images | ytrss-frontend + ytrss-backend |
ghcr.io/m4rc02u1f4a4/ytrss |
| Ports | 8080 (UI) + 5001 (API) | 8080 (UI and API) |
| Config | REACT_APP_API_BASE_URL pointing at the API |
nothing, UI and API share the same address |
ytrss-frontend and ytrss-backend will not receive further updates.
Upgrading from 1.x
Your data is kept: the database container and the ./docker_db volume do not change.
- Replace your
docker-compose.ymlwith the new one and copy yourG_API_KEYinto it. If you prefer to edit yours:- delete the
frontendservice and theREACT_APP_API_BASE_URLvariable; - rename the
backendservice toapp, use imageghcr.io/m4rc02u1f4a4/ytrss:latestand port8080:8080(port 5001 is no longer used); - in
updater, setAPP_URL: http://app:8080and copy the newcommand(it useswget, so it no longer installscurlat every start).
- delete the
- Apply it, removing the old frontend container:
docker compose pull docker compose up -d --remove-orphans
- If a reverse proxy sits in front, point it at port 8080 only and drop the route to 5001.
- On Kubernetes: a single Deployment and Service on port 8080. The scheduled jobs can be CronJobs instead of the
updaterpod, see the README.
What's new
- New interface: total time left to watch, a bar showing the whole queue, channel filter, videos grouped by day, "mark as watched" with undo, keyboard shortcuts (
j/k/w/Enter), a layout designed for phones and an automatic light theme. - Much lighter "All videos" page: thumbnails are smaller, load only as you scroll, and off-screen cards are not drawn. Opening it no longer downloads every thumbnail at full resolution.
- Videos open in the YouTube app on phones, and the list refreshes when you come back to the page.
- No npm dependencies left: this closes all the open Dependabot pull requests on the frontend.
Fixes
- Channel search works with any text: before,
&,/and similar characters broke it. - "Duration of videos to watch" no longer counts hidden shorts.
- Channels that hide their subscriber count can be added.
- Errors are reported: the API answers with a real HTTP error code instead of
OK, and the UI shows the message. For example, an invalid API key or a used-up daily quota is now reported as such. - Statistics no longer fail on a fresh install.
- Calls to YouTube have a timeout, so a slow response can no longer block the app.
- Updates use much less YouTube API quota: videos and channels are requested 50 at a time, and only videos up to 3 minutes long are checked for being shorts.
Behaviour changes
- Watched videos are kept for 30 days from when you watch them (before: 30 days from when they were published). Videos watched before the upgrade still follow the old rule.
- Hidden shorts are deleted after 30 days. Before, they piled up in the database forever.
- Channel logos are stored at 240 px instead of 800 px. Existing ones update at the next channel refresh.
- API changes, if you call it from scripts:
- search moved from
/search/<query>to/search?q=<query>and returns the list of results directly; - errors use HTTP status codes (400, 404, 409, 502…);
- videos no longer store a
thumbnailfield.
- search moved from
Under the hood
- Python 3.14, Flask 3.1, gunicorn 26 and pymongo 4.18, with pinned versions. The container runs as a non-root user.
flask-corswas removed: UI and API are now served from the same address, so CORS is no longer needed.- A single GitHub Actions job builds and publishes the image.
1.3.0
1.2.2
What's Changed
- Bump ejs from 3.1.9 to 3.1.10 in /frontend by @dependabot in #6
- Bump follow-redirects from 1.15.4 to 1.15.6 in /frontend by @dependabot in #7
- Bump braces from 3.0.2 to 3.0.3 in /frontend by @dependabot in #9
- Bump micromatch from 4.0.5 to 4.0.8 in /frontend by @dependabot in #11
- build(deps): bump cross-spawn from 7.0.3 to 7.0.6 in /frontend by @dependabot in #16
- build(deps): bump http-proxy-middleware from 2.0.6 to 2.0.7 in /frontend by @dependabot in #17
- build(deps): bump rollup from 2.79.1 to 2.79.2 in /frontend by @dependabot in #19
New Contributors
- @dependabot made their first contribution in #6
Full Changelog: 1.2.1...1.2.2
1.2.1
What's Changed
- Update NavBar.jsx by @AndreaF17 in #4
New Contributors
- @AndreaF17 made their first contribution in #4
Full Changelog: 1.2.0...1.2.1