<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Jellyfin Blog</title>
        <link>https://jellyfin.org/posts</link>
        <description>Jellyfin Blog</description>
        <lastBuildDate>Sat, 30 Nov 2024 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[Jellyfin for Android TV 0.18]]></title>
            <link>https://jellyfin.org/posts/androidtv-v0.18.0</link>
            <guid>https://jellyfin.org/posts/androidtv-v0.18.0</guid>
            <pubDate>Sat, 30 Nov 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Version 0.18 of our Jellyfin for Android TV app is ready! Exciting features like lyrics and media segments are now available, along with]]></description>
            <content:encoded><![CDATA[<p>Version 0.18 of our Jellyfin for Android TV app is ready! Exciting features like lyrics and media segments are now available, along with
significant improvements to subtitles and more.</p>
<!-- -->
<p>This release marks another milestone in our journey to delivering the best media app on Android TV. Jellyfin 10.10 or newer is required. A
complete list of changes, including their respective pull requests, can be found on
<a href="https://github.com/jellyfin/jellyfin-androidtv/releases/tag/v0.18.0" target="_blank" rel="noopener noreferrer">GitHub</a>. I've listed a subset of all changes below.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="skipping-intros-outros-and-more-with-media-segments">Skipping intros, outros and more with media segments<a href="https://jellyfin.org/posts/androidtv-v0.18.0#skipping-intros-outros-and-more-with-media-segments" class="hash-link" aria-label="Direct link to Skipping intros, outros and more with media segments" title="Direct link to Skipping intros, outros and more with media segments">​</a></h3>
<p>Media segments are a new feature added in Jellyfin 10.10. A segment provides metadata for specific parts of a video or audio file. This can
be used to mark an intro in your episode or the credits of a movie. The Android TV app can now use those segments to skip parts. By default,
the app will ask to skip intros and outros, but you can fine-tune this to your liking within the app preferences. All media segment types
are supported: intro, outro, preview, recap and commercial with three actions to choose from:</p>
<ul>
<li>
<p><strong>Skip</strong><br>
<!-- -->Immediately skips the playback forward to the end of the segment, or the next episode</p>
</li>
<li>
<p><strong>Ask to skip</strong><br>
<!-- -->Shows a popup that the segment can be skipped by pressing the OK button on your remote and disappears after 8 seconds or when pressing the
back button.</p>
<p><img decoding="async" loading="lazy" alt="Ask to skip button shown during video playback" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG8AAAA8CAYAAABo3+Q5AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAA8QSURBVHja7VxHbxzJFaZh2Lvrv+CD4YNvPvgX+GDD8M32ZZ1W0rDZwzyMYk4jJpFiHpEUgxhEkQorStRagUkUSVE0tKKV4yoBhtfeP7ECyvVqpnuquyu8anIXOnCAh5npru6ufl+9WK8qI0PwWV29+RGlzyjNU/o3pW8pkX363ujbFN/nUzh8lIH50IZ/pvT1PgM/KAI8/qIC7YeUhvYZ9UHTMOAkAi8F3DrXeJ3Mzp4lXd39JB5vIY1NSWpKkfufnWtm1MQda+KugXPxI63Ja1Pnmrh7Of/5a73Xe5/nXh8XHI8H2yf752tP+8P6FE+3cfrovI/02fE0L4RtUt/xeKv03UT3aqLt29uPkfHxSXL9+jLD4caNDQ+AIlXJwHIazp05Tw5X1JCDh7I8dCji/Radc37zJGvjv4foOf52omOq47p7m1wna6867r2PpeQhTzm5heTEyDhZXl7zS+BfeefkawdhoPGTUySSGVV2KvBimTb6ZdKdtwMvggUNB6qcUX4gMODpBoMKbOhLmrK4b/2zW1o7/OD9j9LHGSlvxhXP+fnLxI7mCl/aZOSpGOIej5hLi+d5mbawf7J+q7SHl8lmQJsNAivU4Ojq7vMDeCgj5Y6yAysrN6mqrNaqDSxzVepUN3Ix9xOBIjonGljy+1oaCVIPahFYemAtLXigQpeWVnnwFjJS8QQ7cP78RbQo60aejLFC8FwJslz161fDOsnC2EIViBgtEsbmYfiEUcFAiePDPHj/yeAD8JHRk1ImaW2eT43JXhjjyGBe1AV5F2pzN2Sq6nUDAvPM4pJyHrz3GbweHUgMyUdLChjsg1RSJwMPC0hYkDDaYa+AU3m2YQdRhPKHx8sDXv/AoFj9RLxqDGujdPYonARYRh6qzp6FVXmmQLNvpF+gIil4A4lhuZqM4EYT5mWTUqYC33I9UZ0DoBsU6d9pNz3MoDEFDxMqKU0Op+l4koIHBhGjl6Wut0S1qjoTAI0jld0LaIZIUP2aeMG6Y7oBgnFgMIOcV5EiG79r8HabeQiqOUvr2puEKBgv0h8jhrVpJpKHyQzpPGOtzfOPaJWzgrFl8B9GkpWVTaLZuR6y7RyWzcGEGQcNYz2s+gsLlipuw8azugSE/z2V4IVxKlSgZVpRkp9fSIqKipUUixWRLAqk0otEhDCYQFwnmSYhkuj6A5xTZZKo0JkpLXgYL05l85xjlpUtBa20tJRUVFQKzxUWxkh2Tp6b9wyQIIcqiv30gFkhc5Rq9SeTPBMpVAEp9zZTkqeTOtXIAPWYk5svlbCamjpy6dIlcvv2bdLV1S1pV0IKCmJMakNlRyTZGd0MSRgP0lVxTM3ZXq8W2Q+TPqHUpsk0C88wlYosKysnK6urDLitrS32PTQ87AImApEHEMPo3XiDunhQHXzbSgnFDj5dOKSI84bQ8ZOICXn5BVLgqqqqaOJ7hQE2OTVFWlvb6CzGDbK5ucl+84B51Ci1hQ6A2HSYiY3BBvmmGSV/CBNmHtEozpOBh+k42CmVQ1JaWkYuXLhARsfG3WOtbe302Dyprq5RXgsARgTTPyYMz87JJ/UNcfrMDtLW3klnrZvpfUsC9xpIDJJ3796R7e1/au8L3nNzSxuppqaAt6N6m4jP7hiBh8kT+n/DS4hUnlgVFkvtnOpYTm6eJkdqCTIqSXXeeayHfPXVK/L27VsGDBD8fvXqFbPz/Lvw4OkGRCLV9smTp1TrxELN7osdKUt6L3ycJ7MhfCqH/lapSz1AOIrFiukgiaLKMfg2w8MjDCSgzz+/QCc1e8mxrh5amzNHnj17xkCcmJxy2ycMwCsrryS3t7fJpYXLbACbJNB1qnTPwAs+0HYBBHX2XQPnXJ+bV4CeWGXOU0GRCxCA5h+QdfVN5M2bN+x8dU29FLwwKS6RE4N1pFTlJWjwlPUiqZvmIQLw3QOXDuTdzIMkpuOporKaSdy9e/elTFqmThSANTNzmv0fUIAHjhNIf6Zlc1mjaMAjhv/OMWjT0tpOevsGSBGdj4v48q5Yh8VY8jARPzDU61VWk8rKKikAWeW15Lcto+TX7VPk09qj0nYlJaXUqWgKHHcZpchNOlR+uIrZOpC+7JwCIXNqqMSBVILk+cHj7584PkRev35NXrx4QeqpxMK5+JEW1vbBw4euQ2XTlB/8v3fvHpmYmKT28IlrZ0HK126uM40QJv5UOywKtSkCFXKSPHjgNS4uLZFr164x5vsZ/2lNO/nJ9BOSMffWpV91z5NYcVAyOzo6WFhx/PigR3rBa8QG7tB2Z+dfjHHrGxuknNqoiE9i/dek1ea2ayJa244yCX7+/DmprWtw24rAy7IpeA8esuNwzQK1h/0Dx8nk5DS5f/8BO3737g5rFyZ/igoVMEVIIAUOsysqqmh9YTKOm5qeDoBhl1WTH8289AAH9IPZN+RP9V2B9nV19WR9fZ3cunWL9PT0ucchCaAKhP0vHYuVkkePHjOmvXz5kmzS+/X1JzwOBk8wgHm1CQABCCB1EBbw10CBrgNeMrviBQ9Aj3AJ5lhRKesDnOvo7DLO0WrSY0PIDLjlAQ9iuIWFBQbctAA4oD829ASAc+hnQ2vCa1paWpnEbFBqaoqzY5A2C5RnZKpHb0npYVpEfI48ffrUVWGgSi9f/oJKUqPn3XiHBcACaQOHpqe3PzDj4kjeQwDPUZvRJHigIkWDfmJiil1z9uy5UMkALXiiMgg/eCy+S4FXXn6YrK2tMfAGB4eEQPyhsU8K3k9PbAqvqaC2E+4LqbQ2GtALwZPkMkU2G6QApG5jY5OB59ihzmPdAbX55Zd3GSjwG0rPRWpWbPPyGHgwUER9aWhoYoNh9cba3oOHnTVOTvekg/OGhkam5iDdlXDtVJoiFQ1S8H53ZDjQHpyepaVlNiDGaFamOGUXmdoUFCopVXxAJdksuzI7d9a1TTW1DR61ydPDR4+EQfiRZrnaBPBEtrmmtp68pgNm89aWUdn/LsGzAtKXdFjSDG9vP8rylYuLi0yV+gH5TcsI+fHMCw9wPx9cIYXFQeems7NTqIZhxgJTp+J4m5AS4707/1wjSDULFU7PetQm0PT0DOXLDfZ7fv4Sxw9L67Dw4PEZE1DTzOtcu4mTNjx4g6gFJHwQ6g8V6usbpHN1QAcq4+SXvZfJLxJL5PfxQWUuFDzOQKhhZ/vAk88AgE0D5o6MjElH9+zcGdbm4sUFT6gADopTKwl2D45BuMA/2wtelgc8cExEGquvf8AdDLpAXdRn49ymKoOQX1C4JwE4NkhHZfNT1EaT0GBf7ty5w6TMfx14nBDAM7t2ctIXKqSD9EbqLAGYYCcBTEdt8+CJvE3wLnmeQaXAzs4OO9fd0x+qOkFegERL/8SqKCjGzo0hw/DdAeaN//JS6TH1Io50f6PZ+cxbBWYBgJDlADUKqqutvYPGo9ddb9FhdEISpJ+muVDHkQE17A/S0wClwYMQBfKoVdV1pKExTtfbLaae94ja7iJ0SIbKbfIz6SbTLgWhpa/EKI3G17iYzLN98Y8rTHL8jsgbKpWPHz+mtrHSva8/w8IvR9uiNhjOwTSWCDxebUImZmtr2zOT4cxAFFEbbzL3iCpA8sd5urVtzn9g6t4np8VSF5jyQfQzk6o5cF4gMD41M0vO0JgPZhtACp2MjXMNSCDkIutSKTD+HEgcxH4AGjhruXmFrG1TvDkgeeCwQBt4xkmqkufmzrE0XFFxmXmpIWomnYvzsEW3zjcwVwUOuPqDg4PUCel0wamtraNMPMHiRBV4MTabbqMnOKV22pMPtQwKgyyUSmPgRdPgHTRYFoDJcaJmFQ4p8n/yijKbzXjLwAOgwPUHGhhIMDCdOK67u0cphU4qS6pOjFflWiiVpVqSLAORl7ywy6u972Thq8cwS5NkHYdYBzIgMhCam1tYfAP5SgjoWRx36pQbgIukz47mKKUBs9R5r0a9at2G0x87mivNsODmSuWLUtRrFQZPoGeqZS8e0cysN9OsxPJyUuJGR8ek6hKkGCQOk4HYdXl6RF/PqYvH0t53Ni20WmVTP074YFL6rnu2cq2Cqo6Cr1EUzfTyKgkkJiZRo2DjYNZA5pzk5hYoMijBFT8Ok4Kq0ZKGPfxmBiZr0l3eSMrRnakyZ0OG4H1so/J3fOnfwJBRtZNeOm0GIlRBYwJwSH05wbRqjbduuRYbUMjSBU+biH4DgrRNUq+3M1XdqNXAEaTDousIvoDUUadREqX2ALxSSC47BCWDsrk1dam6ZbRzhH5JlyUvbRet2NWsmfc4OZzzERZc/FoFg1VBSfVqoxZuYEedvAzOMtpQB5ujVb2bKEzQLfmW7QWjWz2EcQxRZRCy5K9qbZ1U1UXk6k10D5PtLvA7D8kkxsdQpRqzQuUjTXZv0mk8NHiYERp4AKIDYdeia7M9hnbOLxkHNGrN73CYTOV4B48VajsS1HyeyPvCFrnKyibM6h1DDpwQq1w975hphww3LKONFVBr1E1rWBLchgLmAO3NcmCs66wK1rFOStjdj3bV/0yzLT+8Azy4lYe7ic7wiXHFqLfQkqf1HCPhXx5jS1ReodgpyeLW1uHLQEIBqUnlqUKF/ILiwCY67vZVkPkWeXn+HKbp7gom8Y9JCOLEW7KBJpUkSdUybkGpJXDG7KANNQxPMGr2WFevZ/dbAO+ic2BxcYUUFJYYqQ5MUhi7NydWsjwMjOx+XxXs7n1hdj7COzeWNuF99epiYOO4g7wePUM3Sc0UBOlmqsLCS46krBDHPJNpHZP1cjbatQ/rH+D4kn4/2A13ecWzaWomgPcxpf/yWxT39iUUMZmms4Z7nGBXvKrizrBbZmCDd0y/sOoXvzVXmoewjuLatSUeuG8ofeLsdvs370ac63St+CgzkGFGGjZINcm6iHdKUgwIw818TFbc8rlN02XgJiodppegpP7qVQrcDbqF9Jq71/Rn/n2mR/g9ppObp67RZcgTtHK5ht4IcpA5CMpm36CjoTzCfx6OOSS6nh23vfdSkew+srYw081fw/fF/617huz9/Pf1ns9N/rZlfKOzMUVlrLrsypXrqR2I190tpOn/MdnW/KP7299/0DQm3JqfA/HvKZ26z6wPh74JqEoFgJ9QioA7mtr5/f0+A79Xep/iO/A/03VOfJ//AzpR2wDsToszAAAAAElFTkSuQmCC" width="111" height="60" class="img_ev3q"></p>
</li>
<li>
<p><strong>Do nothing</strong><br>
<!-- -->The segment will be ignored, with no skips or popups.</p>
</li>
</ul>
<p>More actions and functionality related to media segments is already in the works for future releases, like a "mute" action that temporarily
silences audio.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="revamped-subtitles">Revamped subtitles<a href="https://jellyfin.org/posts/androidtv-v0.18.0#revamped-subtitles" class="hash-link" aria-label="Direct link to Revamped subtitles" title="Direct link to Revamped subtitles">​</a></h3>
<p>This release completely redesigns the way subtitles are loaded and shown on screen, resolving a large number of issues reported over the
past few years.</p>
<p>Previously the app did not support embedded subtitles and forced the server to extract them from video files first. This is a resource-heavy
process and often causes subtitles to not show up or with a big delay. A workaround for this was to use the "Subtitle Extract" plugin that
will do this extraction ahead of time, this was cumbersome and is now no longer necessary.</p>
<p>Together with these loading changes, the app now reliably supports Presentation Graphic Stream (PGS) subtitles and positioning tags in the
SubRip Subtitle Format (SRT), a much requested feature!</p>
<p>To make these changes happen, the preferences for subtitles have also slightly changed. It is now possible to choose your own background and
outline colors.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="sing-along-with-lyrics">Sing along with lyrics<a href="https://jellyfin.org/posts/androidtv-v0.18.0#sing-along-with-lyrics" class="hash-link" aria-label="Direct link to Sing along with lyrics" title="Direct link to Sing along with lyrics">​</a></h3>
<p>Not only did video playback improve, playing music has gotten some upgrades as well! The most exciting change here is support for lyrics.
Whenever your song has lyrics available (added by a plugin or on your file system), they will be shown in the app. This works especially
well when combined with our screensaver, which will show lyrics fullscreen.</p>
<p><img decoding="async" loading="lazy" alt="Screensaver showing lyrics for the playing song" src="https://jellyfin.org/assets/images/lyrics-d54f89bb591bfe3fbcd6fcb116fc48b2.png" width="1920" height="1080" class="img_ev3q"></p>
<p>Currently, 2 types of lyrics are supported: timed lyrics, which will highlight the current line of the vocal track, and untimed lyrics,
which will automatically scroll based on the track duration.</p>
<p>In addition to the lyric changes, some bugs have been fixed where a music queue would never disappear when the last track ends and some text
elements did not update properly.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="other-changes">Other changes<a href="https://jellyfin.org/posts/androidtv-v0.18.0#other-changes" class="hash-link" aria-label="Direct link to Other changes" title="Direct link to Other changes">​</a></h3>
<p>In addition to the previously mentioned changes there's a lot more to enjoy. The video player will no longer randomly show its controls and
they stay hidden when the video is loading for a smoother experience. An issue where sorting libraries by "last played" did not work for TV
shows was fixed. And finally, a lot of improvements under the hood were made to make the app faster, easier to maintain, and more stable
than ever.</p>
<p>There are as also two new experimental options for playback. The first one is related to decoding audio codecs, while normally the app will
automatically fall back to using a different decoding approach using FFmpeg, this might not always work. You can now enable the "Prefer
FFmpeg for audio playback" preference to force the fallback approach.</p>
<p>The second experimental option adds support for previews when scrubbing, once "Enable trickplay in video player" is checked you'll see image
previews above the progress bar while scrubbing through your videos! There are some issues and annoyances with the current implementation
which will be resolved before this feature will be enabled by default and marked non-experimental. Make sure the Trickplay feature is
enabled on your libraries for the previews to show up.</p>
<p><img decoding="async" loading="lazy" alt="Video scrubbing previews in the video player" src="https://jellyfin.org/assets/images/trickplay-85d6d97879f3446a61dce356d28bd7c0.png" width="1280" height="155" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="contributors">Contributors<a href="https://jellyfin.org/posts/androidtv-v0.18.0#contributors" class="hash-link" aria-label="Direct link to Contributors" title="Direct link to Contributors">​</a></h2>
<p>Jellyfin is completely developed by volunteers, and couldn't be made without their great skills and dedication. Consider donating if you
appreciate their work. A big shout-out to all contributors that made this release possible:</p>
<p><strong>Jellyfin Team</strong></p>
<ul>
<li><a href="https://github.com/nielsvanvelzen" target="_blank" rel="noopener noreferrer">@nielsvanvelzen</a> - Donate via <a href="https://github.com/sponsors/nielsvanvelzen" target="_blank" rel="noopener noreferrer">GitHub sponsors</a></li>
</ul>
<p><strong>Other contributors</strong></p>
<ul>
<li><a href="https://github.com/MichaelRUSF" target="_blank" rel="noopener noreferrer">@MichaelRUSF</a></li>
<li><a href="https://github.com/JagerSprinkles" target="_blank" rel="noopener noreferrer">@JagerSprinkles</a></li>
<li><a href="https://github.com/pascalwei" target="_blank" rel="noopener noreferrer">@pascalwei</a></li>
<li><a href="https://github.com/kabel2" target="_blank" rel="noopener noreferrer">@kabel2</a></li>
<li><a href="https://github.com/starsep" target="_blank" rel="noopener noreferrer">@starsep</a></li>
<li><a href="https://github.com/rickysixx" target="_blank" rel="noopener noreferrer">@rickysixx</a></li>
<li><a href="https://github.com/ericleb010" target="_blank" rel="noopener noreferrer">@ericleb010</a></li>
<li><a href="https://github.com/reacocard" target="_blank" rel="noopener noreferrer">@reacocard</a></li>
</ul>
<p>And finally a big thank you to everyone who contributed translations, reported bugs, provided feedback and participated in beta testing!</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="helping-out">Helping out<a href="https://jellyfin.org/posts/androidtv-v0.18.0#helping-out" class="hash-link" aria-label="Direct link to Helping out" title="Direct link to Helping out">​</a></h3>
<p>If you have experience with Android TV development or with Kotlin and are interested in contributing yourself, feel free to dive into the
<a href="https://github.com/jellyfin/jellyfin-androidtv" target="_blank" rel="noopener noreferrer">source code</a> and open a pull request. Alternatively, you can help with translating the app
into your own language on our <a href="https://translate.jellyfin.org/engage/jellyfin-android/" target="_blank" rel="noopener noreferrer">Weblate</a> instance.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="downloads">Downloads<a href="https://jellyfin.org/posts/androidtv-v0.18.0#downloads" class="hash-link" aria-label="Direct link to Downloads" title="Direct link to Downloads">​</a></h2>
<p>Update your app now to check out all these changes! The app stores will auto-update your Jellyfin app if you're already using the app. For
new users, you can find the app on the app store of your platform.</p>
<a class="margin-right--md" href="https://play.google.com/store/apps/details?id=org.jellyfin.androidtv"><img width="153" alt="Jellyfin for Android TV on Google Play" src="https://jellyfin.org/images/store-icons/google-play.png"></a>
<a class="margin-right--md" href="https://www.amazon.com/gp/product/B07TX7Z725"><img width="153" alt="Jellyfin for Fire TV at Amazon App Store" src="https://jellyfin.org/images/store-icons/amazon.png"></a>
<a href="https://f-droid.org/en/packages/org.jellyfin.androidtv/"><img width="153" alt="Jellyfin for Android TV on F-Droid" src="https://jellyfin.org/images/store-icons/fdroid.png"></a>
<p>Direct downloads are available for sideloading at <a href="https://repo.jellyfin.org/releases/client/androidtv/" target="_blank" rel="noopener noreferrer">repo.jellyfin.org</a>
or in the <a href="https://github.com/jellyfin/jellyfin-androidtv/releases/latest" target="_blank" rel="noopener noreferrer">GitHub release assets</a>.</p>
<p>You can also join our <a href="https://play.google.com/apps/testing/org.jellyfin.androidtv" target="_blank" rel="noopener noreferrer">beta program on Google Play</a> and help test new versions
before they're released to the public. <a href="https://jellyfin.org/posts/android-betas">Read more</a> about our beta program.</p>]]></content:encoded>
            <category>release</category>
            <category>android-tv</category>
        </item>
        <item>
            <title><![CDATA[Warning for Unstable - EFCore refactoring is coming]]></title>
            <link>https://jellyfin.org/posts/efcore-refactoring-incoming</link>
            <guid>https://jellyfin.org/posts/efcore-refactoring-incoming</guid>
            <pubDate>Sun, 03 Nov 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[If you are running unstable builds, please read this post carefully to avoid breaking your database!]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="Brace yourselves, EFCore refactoring is coming" src="https://jellyfin.org/assets/images/refactoring-4fc341e400c20851abe795701a42936e.jpeg" width="622" height="477" class="img_ev3q"></p>
<p><strong>Unstable users: we are planning to merge our pending EFCore conversion of <code>library.db</code> in the next couple of weeks. It is imperative that all unstable users understand what is going on, what the plan is, and how to mitigate issues that will inevitably arise from this.</strong> Stable (<code>10.y.z</code>) users require no action.</p>
<p>Unstable builds are currently paused for roughly 4 weeks post-release of 10.10.0, and during this time, we plan to merge these extensive database changes. There will be breakage - bugs, fixes, and database migrations - during this time. This is your fair warning to either (a) prepare yourself with <a href="https://jellyfin.org/docs/general/administration/backup-and-restore">a good backup and recovery strategy</a> and disable automatic upgrades; or (b) move off of unstable onto 10.10.0 stable until the dust settles (but, please don't, as we need your help to test!)</p>
<p>Please read on for a more detailed overview if you are interested.</p>
<p>- Joshua</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-is-efcore-and-why-are-we-migrating-to-it">What is EFCore, and why are we migrating to it?<a href="https://jellyfin.org/posts/efcore-refactoring-incoming#what-is-efcore-and-why-are-we-migrating-to-it" class="hash-link" aria-label="Direct link to What is EFCore, and why are we migrating to it?" title="Direct link to What is EFCore, and why are we migrating to it?">​</a></h2>
<p>EFCore is the C#/.NET database handling framework, which simplifies database query handling in the Jellyfin codebase.</p>
<p>Our original database code was written by Emby in a time long before .NET Core existed, when Mono ruled the world in terms of cross-platform C# compatibility. As such, it handled the database poorly: SQLite queries embedded directly in the code, and a fairly horrific schema with no migration capabilities. This has caused us a lot of problems over the years as we try to change and improve the codebase and add new features, and as such, the team began migrating to EFCore quite a while ago.</p>
<p>We were able to move many of the databases quickly, mostly due to the diligent work of <a href="https://github.com/barronpm" target="_blank" rel="noopener noreferrer">@BarronPM</a>; those have been live for several major releases now. But the Library database has remained as it was, due to its massive complexity and exceptionally poor schema. This has caused a lot of problems, for instance very slow search, problems adding new media types (or deprecating old ones), and lots of complexity inside the codebase around handling "non-standard" (i.e. not Movies/TV Shows/Music Albums) media types, resulting in bugs.</p>
<p>Now, thanks to <a href="https://github.com/JPVenson" target="_blank" rel="noopener noreferrer">@JPVenson</a>, we finally have the library database EFCore implementation ready to go. But there is a big catch.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="there-will-be-bugs">There Will Be Bugs<a href="https://jellyfin.org/posts/efcore-refactoring-incoming#there-will-be-bugs" class="hash-link" aria-label="Direct link to There Will Be Bugs" title="Direct link to There Will Be Bugs">​</a></h2>
<p>Once we merge this massive change set, there will be bugs. This is certain. And these bugs may completely trash your library database. So first and foremost, it is incredibly important that everyone running the Unstable builds understands that this is coming and how to prepare yourself.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-we-will-be-focusing-on">What we will be focusing on<a href="https://jellyfin.org/posts/efcore-refactoring-incoming#what-we-will-be-focusing-on" class="hash-link" aria-label="Direct link to What we will be focusing on" title="Direct link to What we will be focusing on">​</a></h2>
<p>Our primary goal will be to ensure that stable-to-stable migrations between 10.10.x and 10.11.x will work without a hitch, as we want and need this transition to be as seamless as possible for the majority of users running stable builds when 10.11.0 drops.</p>
<p>But to do this, we need to both test the changes in unstable, and ensure that our migrations are valid for data coming from the 10.10.x stable.</p>
<p>The downside of this is, though, that we might not be able to cleanly implement unstable-to-unstable migrations in a way that will work properly. While we will try to do this, we cannot guarantee it.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="our-timeline">Our timeline<a href="https://jellyfin.org/posts/efcore-refactoring-incoming#our-timeline" class="hash-link" aria-label="Direct link to Our timeline" title="Direct link to Our timeline">​</a></h2>
<ol>
<li>
<p>This blog post starts the process to provide the warning to all unstable users that this is coming. Note that as of posting, unstable builds are disabled due to the recent 10.10.0 release, and will remain off for a little while.</p>
</li>
<li>
<p>About 1-2 weeks after this blog post, we will merge the Library EFCore migration into our <code>master</code> branch and begin preliminary testing. If you want to help here, you will have to <a href="https://jellyfin.org/docs/general/installation/source">build Jellyfin from source</a>, and the more people who can help here the better!</p>
</li>
<li>
<p>About 2 weeks after merging, assuming everything looks generally OK, we will <strong>re-enable unstable builds for the general public</strong>. At this point, all unstable builds will apply the initial migrations on startup. That will bring us to about 4 weeks (give or take a week) from the 10.10.0 release.</p>
</li>
<li>
<p>Over the following weeks, we will take bug reports and try to correct them. This is the possible sticking point: if it's not possible for us to implement a clean set of migrations, we may decide to only focus the migration on stable-to-unstable conversions, rather than unstable-to-unstable. If this happens, you may need to restore a previous version and apply the new migrations to it.</p>
</li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-this-actually-means-for-you">What this actually means for you<a href="https://jellyfin.org/posts/efcore-refactoring-incoming#what-this-actually-means-for-you" class="hash-link" aria-label="Direct link to What this actually means for you" title="Direct link to What this actually means for you">​</a></h2>
<p>First and foremost, if this is too much for you, this is your warning for the off-ramp. Switch away from unstable <strong>now</strong> before we restore the unstable builds in a few weeks.</p>
<p>Second, <strong>ensure you have a robust backup strategy <a href="https://jellyfin.org/docs/general/administration/backup-and-restore">based on our suggested backup process</a></strong>. Take backups regularly, and, to help us test, try to also have a backup of your last stable release so you can run that through the migrations as well. Take backups <strong>before</strong> applying the next unstable build, every time.</p>
<p>Third, <strong>ensure you disable automatic upgrades</strong>. We generally recommend this anyways, but if you're still doing this, now is the time to stop.</p>
<p>Fourth, <strong>if you run into trouble, please ensure you report the bug with a title containing <code>[EFCore Library]</code></strong>. This will help us find and fix the bugs.</p>
<p>Fifth and finally, <strong>if you have a failing migration, restore an older database version first and try to re-run it</strong>. If it still fails, try your oldest (ideally, 10.9.11 or 10.10.0 stable) backup as well. If <em>that</em> one doesn't work, it's a new bug to report.</p>]]></content:encoded>
            <category>unstable</category>
            <category>warning</category>
            <category>efcore</category>
        </item>
        <item>
            <title><![CDATA[Jellyfin 10.10.0]]></title>
            <link>https://jellyfin.org/posts/jellyfin-release-10.10.0</link>
            <guid>https://jellyfin.org/posts/jellyfin-release-10.10.0</guid>
            <pubDate>Sat, 26 Oct 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[We are pleased to announce the latest stable release of Jellyfin, version 10.10.0!]]></description>
            <content:encoded><![CDATA[<p>We are pleased to announce the latest stable release of Jellyfin, version 10.10.0!</p>
<p>This major release brings several new features, improvements, and bugfixes to improve your Jellyfin experience. With our faster release cadence between 10.9.0 and 10.10.0, this release should be far less daunting, so please read on for a quick peek at what's new and some important-to-know breaking changes!</p>
<p>You may upgrade your Jellyfin instances at any time now. For those who were running Unstable builds for testing, we thank you immensely, and you may now switch back to the Stable repository and forcibly reinstall/repull the latest version. As always, <strong>ensure you <a href="https://jellyfin.org/docs/general/administration/backup-and-restore">back up your Jellyfin data and configuration directories</a> before upgrading</strong>. With a major release, it's possible you will hit a bug and want to revert, and to do so, you will need to restore from a backup.</p>
<p>Happy watching!</p>
<p>- Joshua</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="breaking-changes">Breaking Changes<a href="https://jellyfin.org/posts/jellyfin-release-10.10.0#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes">​</a></h2>
<ul>
<li>
<p>Most clients should continue to work as-is without any issues or any forced upgrades, though this may change in the future. The sole exception is Jellyfin4Kodi, which currently has issues due to point 5 below, though a fix is hopefully forthcoming shortly.</p>
</li>
<li>
<p>We have deprecated Raspberry Pi V4L2 hardware transcoding support, and are looking to deprecate 32-bit ARM support (i.e. <code>armv7</code> or <code>armhf</code>) in general for 10.10.0 and later, with a goal to remove 32-bit ARM support in 10.11.0. Older, slow ARM systems have always been tricky platforms for us: they're popular but extremely poor in performance, and this has caused a lot of people a lot of headaches. With the RPi5 entirely removing a hardware acceleration engine, and most ARM single-board computers now supporting ARM64, we are taking this action now to ensure it's widely known.  If you are running Jellyfin on old ARM hardware, now is the time to start <a href="https://jellyfin.org/docs/general/administration/hardware-selection" target="_blank" rel="noopener noreferrer">looking at an upgrade</a>. See <a href="https://github.com/jellyfin/jellyfin.org/pull/1148" target="_blank" rel="noopener noreferrer">PR #1148</a>.</p>
</li>
<li>
<p>We now use the system temporary storage engine (e.g. <code>/tmp</code> on Linux) for storing short-lived transient temporary files, to allow us to leverage temporary ramdisks and the like and avoid cluttering potentially slow storage. This may cause issues if you specifically depended on the previous behaviour. Note that this does not include transcoding temporary files. See <a href="https://github.com/jellyfin/jellyfin/pull/12226" target="_blank" rel="noopener noreferrer">PR #12226</a>.</p>
</li>
<li>
<p>The server will now refuse to start if <code>ffmpeg</code> cannot be found, is an incorrect version, or does not function properly (missing extensions, etc.). With how critical <code>ffmpeg</code> is to Jellyfin, this has become very important to avoid mis-reported issues. This can be explicitly bypassed if needed. See <a href="https://github.com/jellyfin/jellyfin/pull/12463" target="_blank" rel="noopener noreferrer">PR #12463</a>.</p>
</li>
<li>
<p>Network paths in libraries have been fully removed and will no longer work. This functionality has been deprecated for a long time, and most of it was removed in 10.9.0, but this removes the remainder. See <a href="https://github.com/jellyfin/jellyfin/pull/12446" target="_blank" rel="noopener noreferrer">PR #12446</a>. Third-party clients relying on this functionality should be able to re-implement it as required.</p>
</li>
<li>
<p>Systems with Trickplay enabled may see a relatively long migration occurring during the upgrade. If Jellyfin seems to hang starting up after upgrading, please observe the logs and wait for the migration to complete. This helps enable the functionality below.</p>
</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="cool-new-features">Cool New Features<a href="https://jellyfin.org/posts/jellyfin-release-10.10.0#cool-new-features" class="hash-link" aria-label="Direct link to Cool New Features" title="Direct link to Cool New Features">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="media-segments">Media Segments<a href="https://jellyfin.org/posts/jellyfin-release-10.10.0#media-segments" class="hash-link" aria-label="Direct link to Media Segments" title="Direct link to Media Segments">​</a></h3>
<p>The Jellyfin server now supports the management of Media Segments. This means that we store some additional information for certain time-spans on a video that clients can then use to provide additional actions. For example, when there is a Media Segment of the type intro, a client may display a button to skip that particular segment. For 10.10, we only provide the general structure to store those Media Segments, and you will still require a plugin to create them. We have created one plugin that does this, based on the Chapter names of a movie or Episode, which you can find in the Plugin catalogue, and others may be implemented in the future. The Web interface fully supports skipping segments; other client support is pending.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="trickplay">Trickplay<a href="https://jellyfin.org/posts/jellyfin-release-10.10.0#trickplay" class="hash-link" aria-label="Direct link to Trickplay" title="Direct link to Trickplay">​</a></h3>
<p>We have significantly improved extraction by implementing optional keyframe extraction, which can boost image generating time significantly (around 100x, depending on configuration) at the cost of some frame accuracy, which should be fine for most users with longer trickplay frame durations. This should mean no more multi-day Trickplay jobs! Note that this <strong>must be explicitly enabled</strong> in the Trickplay settings.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="playbacktranscoding">Playback/Transcoding<a href="https://jellyfin.org/posts/jellyfin-release-10.10.0#playbacktranscoding" class="hash-link" aria-label="Direct link to Playback/Transcoding" title="Direct link to Playback/Transcoding">​</a></h3>
<p>Many major enhancements to transcoding and playback, including support for software tonemapping of HDR10, HLG and DoVi, preliminary support for DoVi Profile 10, support for Dolby AC-4 audio, more stereo downmixing algorithms, QSV device selection, and more! Our FFmpeg is also now based off the upstream FFmpeg 7.0 release for additional features and improvements there.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="metadata">Metadata<a href="https://jellyfin.org/posts/jellyfin-release-10.10.0#metadata" class="hash-link" aria-label="Direct link to Metadata" title="Direct link to Metadata">​</a></h3>
<p>It is now possible to select which plugins can provide lyrics to your music libraries, similar to how you can select the plugins providing metadata. This will provide more variety to Lyrics support.</p>
<p>Audio tag scanning has been significantly improved, and will thus hopefully be much more reliable and consistent.</p>
<p>Home videos should also now keep their rotation metadata.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="web">Web<a href="https://jellyfin.org/posts/jellyfin-release-10.10.0#web" class="hash-link" aria-label="Direct link to Web" title="Direct link to Web">​</a></h3>
<p>We have added support for CBT and CB7 books, client-side rendering of PGS subtitles, and auto-scrolling lyrics as well as a lyrics editor interface.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="full-changelogs">Full Changelogs<a href="https://jellyfin.org/posts/jellyfin-release-10.10.0#full-changelogs" class="hash-link" aria-label="Direct link to Full Changelogs" title="Direct link to Full Changelogs">​</a></h2>
<p>Full changelogs are available on the various release pages:</p>
<ul>
<li><a href="https://github.com/jellyfin/jellyfin/releases/tag/v10.10.0" target="_blank" rel="noopener noreferrer">Server</a></li>
<li><a href="https://github.com/jellyfin/jellyfin-web/releases/tag/v10.10.0" target="_blank" rel="noopener noreferrer">Web</a></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="the-next-version">The Next Version<a href="https://jellyfin.org/posts/jellyfin-release-10.10.0#the-next-version" class="hash-link" aria-label="Direct link to The Next Version" title="Direct link to The Next Version">​</a></h2>
<p>Our faster release cadence has generally been received fairly positively within the team, though lack of structure has been a bit of a problem. So right now, we are outlining the development roadmap for 10.11.0. This may change as time goes on, but this should give everyone an idea of roughly when 10.11.0 is coming.</p>
<p>Target 10.11.z development window: November 2024 to March 2025<br>
<!-- -->Target feature freeze: second week of April 2025<br>
<!-- -->Target release date: end April 2025</p>
<p>A more detailed roadmap will be published closer to the feature freeze date.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="final-thoughts">Final Thoughts<a href="https://jellyfin.org/posts/jellyfin-release-10.10.0#final-thoughts" class="hash-link" aria-label="Direct link to Final Thoughts" title="Direct link to Final Thoughts">​</a></h2>
<p>We want to thank everyone who contributed to the 10.10.0 release; Jellyfin wouldn't be what it is without your help. We're really proud of this project we've built as a community, and hope to continue to be the go-to FLOSS media system solution for a long time to come. Happy watching!</p>]]></content:encoded>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[Release Roadmap for 10.10.0]]></title>
            <link>https://jellyfin.org/posts/release-roadmap-10.10.0</link>
            <guid>https://jellyfin.org/posts/release-roadmap-10.10.0</guid>
            <pubDate>Tue, 10 Sep 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[We are about to start the 10.10.0 release cycle; here is the roadmap. Please help us test!]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="Good heavens, look at the time!" src="https://jellyfin.org/assets/images/10.10.0-d622a4f23ccff6fc60bfa1db6314735d.jpg" width="300" height="364" class="img_ev3q"></p>
<p>We are pleased to announce that we are now beginning the process for the 10.10.0 release, with a <em>planned</em> release date of Saturday, October 26th (updated - see below), 2024! We said 6 months in our 10.9.0 release posts, and we're sticking by that! The feature freeze proper starts next week, with a soft "new PR freeze" today, so here's what you need to know about the timeline and a recap of how to help us test 10.10.0 before release. Remember, the more people who help test it out before release, the less bugs we're likely to find <em>after</em> release, so fire up those secondary servers and warn your users: 10.10.0 is coming!</p>
<p>Developers/contributors, and those users who want a bit more information, please read on!</p>
<p>- Joshua</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="the-release">The Release<a href="https://jellyfin.org/posts/release-roadmap-10.10.0#the-release" class="hash-link" aria-label="Direct link to The Release" title="Direct link to The Release">​</a></h2>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="whats-different-this-time">What's Different This Time?<a href="https://jellyfin.org/posts/release-roadmap-10.10.0#whats-different-this-time" class="hash-link" aria-label="Direct link to What's Different This Time?" title="Direct link to What's Different This Time?">​</a></h2>
<p>Not much at all! We're following the same general process as the 10.9.0 release, though with a slightly tweaked timeline and with more defined steps.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="the-release-timeline">The Release Timeline<a href="https://jellyfin.org/posts/release-roadmap-10.10.0#the-release-timeline" class="hash-link" aria-label="Direct link to The Release Timeline" title="Direct link to The Release Timeline">​</a></h3>
<ul>
<li>Monday, September 9th, 2024 (unstable <code>20240909</code>): Feature PR last-call, first beta. Any <em>new</em> feature PRs should get in right now to avoid missing the feature freeze. This is your 1 week warning! Developers/contributors <strong>please keep on top of your PR review feedback</strong> or your PR may <strong>miss the following deadlines and have to wait</strong> until 10.11.0.</li>
<li>Monday, September 16th, 2024 (unstable <code>20240916</code>): Feature freeze, second beta. Any <em>new</em> feature PRs after this point must wait until 10.11.0 (in another ~6 months). In-flight feature PRs will likely make it assuming that all feedback is resolved before the API freeze. Again <strong>developers/contributors, please keep on top of your PR review feedback</strong>. New PRs should be <strong>bugfixes only</strong> after this point. Users <strong>should be safe to begin testing in earnest</strong> with this unstable.</li>
<li>Monday, September 23rd, 2024 (unstable <code>20240923</code>): API freeze, third beta. <strong>All feature PRs should be merged by this point</strong>. If they're not, they will be moved to the 10.11.0 project and only merged to <code>master</code> once 10.10.0 is released. API is now soft-frozen so that <strong>client developers can begin confidently working on any client support changes needed for 10.10.0</strong>.</li>
<li>Monday, September 30th, 2024 (unstable <code>20240930</code>): API lock, first release candidate. <strong>Major bugfix PRs should hopefully be either be merged or well in-flight</strong> by this point. Only <strong>non-API-changing bugfixes</strong> after this point. We should have a feature overview blog post in draft state by this point.</li>
<li>Monday, October 7th, 2024 (unstable <code>20241007</code>): Final planned unstable, second release candidate. <strong>The release should basically be ready to go</strong>, and any remaining bugfix PRs <strong>should be merged before this unstable</strong>.</li>
<li>Saturday, October 12th, 2024: Release of 10.10.0!</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="possible-timeline-changes">Possible Timeline Changes<a href="https://jellyfin.org/posts/release-roadmap-10.10.0#possible-timeline-changes" class="hash-link" aria-label="Direct link to Possible Timeline Changes" title="Direct link to Possible Timeline Changes">​</a></h3>
<p>EDIT 2024-10-12: We have opted to take the <strong>two week</strong> delay due to pending changes in Web that must get in. We are currently planning for a release on October 26th.</p>
<p>Since this is a much smaller and quicker release than 10.8.0 or 10.9.0 were, hopefully this is enough time to get everything sorted and ready to go. But if we find it's <strong>not</strong>, we reserve the right to add an extra week in one or both of the following places:</p>
<ul>
<li>After the Feature freeze, if we find that there are any outstanding <strong>major</strong> bugfixes that require additional time to merge before the API freeze.</li>
<li>After the API lock, if we find that there are any outstanding <strong>non-API-breaking</strong> bugfixes that require additional time to merge before the final unstable.</li>
</ul>
<p>If neither of those happen, the release will proceed as planned; otherwise, an extra step will be added into the timeline after the given points that matches the previous stage. This might push the final unstable back to either October 14th or October 21st, and the final release to either October 19th or October 26th. If this is relevant to your interests, please keep an eye on our <a href="https://matrix.to/#/#jellyfin-announce:matrix.org" target="_blank" rel="noopener noreferrer">Announcements Matrix channel</a> for announcements.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="information-for-3rd-party-clients">Information for 3rd Party Clients<a href="https://jellyfin.org/posts/release-roadmap-10.10.0#information-for-3rd-party-clients" class="hash-link" aria-label="Direct link to Information for 3rd Party Clients" title="Direct link to Information for 3rd Party Clients">​</a></h3>
<p>After the API freeze, our API should ideally remain stable, though it's possible there might be minor changes up until the API lock step. Please feel free to begin testing compatibility and report any issues to us now, and keep an eye out on those dates for the final API specification.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="information-for-contributors">Information for Contributors<a href="https://jellyfin.org/posts/release-roadmap-10.10.0#information-for-contributors" class="hash-link" aria-label="Direct link to Information for Contributors" title="Direct link to Information for Contributors">​</a></h3>
<p>If you're contributing to Jellyfin and your feature PRs miss the deadline, <strong>please don't fret</strong>. We are committed to this shorter major release timeline going forward, so 10.11.0 is at most about 6 months away. Your feature should eventually make it in.</p>
<p>If you wish to help by submitting a bugfix, please do so as soon as you can, as we'd like to get as many fixes in and tested before the API lock as possible, to give at least 2 weeks of final testing before the release. Ensure you clearly specify that it is a bugfix, and ensure you keep your changes to an absolute minimum needed to fix the bug. <strong>Bugfix PRs will target the <code>master</code> branch until the final release</strong>, at which point they will target the <code>release-10.10.z</code> branch for upcoming point releases.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-you-can-test">How You Can Test<a href="https://jellyfin.org/posts/release-roadmap-10.10.0#how-you-can-test" class="hash-link" aria-label="Direct link to How You Can Test" title="Direct link to How You Can Test">​</a></h2>
<p>Testing this release should be very easy, identical to 10.9.0. Since our pre-releases are "just" our unstable releases here, that means that following our normal "unstable" installation process is all you need to do.</p>
<p>To find that, visit our <a href="https://jellyfin.org/downloads/server" target="_blank" rel="noopener noreferrer">main server downloads page</a>, select the platform you require along the top centre, then on the top right, select "Unstable". The instructions and links will now be for the unstable release. You can also find <a href="https://jellyfin.org/docs/general/testing/" target="_blank" rel="noopener noreferrer">additional testing documentation in the docs</a>.</p>
<p>For Docker this simply means pulling the <code>unstable</code> tag on the image. For Debian and Ubuntu repositories, this means adding <code>unstable</code> to your existing <code>jellyfin.sources</code> entry. For other platforms, please review the provided instructions as not all platforms will support unstable.</p>
<p>Next, before installing an unstable release, ensure that you <strong>back up your existing server configuration</strong>. It is <strong>not possible to downgrade in-place</strong> as there are database changes. Just making a simple copy of your configuration directories <strong>with Jellyfin stopped</strong> is sufficient, and where those can be found depends on the platform.</p>
<p>Next, if you use plugins, install the unstable plugin repository. Due to compatibility issues, we distribute plugins for unstable in a separate manifest, so this must be added manually, and on first start all incompatible plugins (i.e. all existing plugins on an upgrade) will be upgraded. To add the repository, navigate to the Administration Dashboard, Advanced, Plugins, then click the Repositories tab at the top. Click the "+" Add button, and enter "Unstable" for the name and "<a href="https://repo.jellyfin.org/files/plugin-unstable/manifest.json" target="_blank" rel="noopener noreferrer">https://repo.jellyfin.org/files/plugin-unstable/manifest.json</a>" for the Repository URL. We also recommend that you disable/remove the Stable repository at this time, as it's possible they will conflict. After the initial update you may need to manually restart your Jellyfin instance one further time to ensure all plugins are activated properly.</p>
<p>Finally, install the unstable version and run it. The upgrade should happen seamlessly in the background, and you'll be able to log in to your Jellyfin instance normally after this point. Ensure you perform a <em>hard</em> refresh in your browser, and restart all clients.</p>
<p>Once 10.10.0 is fully released, you can switch back easily by reinstalling the new stable version, and changing back to the stable plugin manifest (URL "<a href="https://repo.jellyfin.org/files/plugin/manifest.json" target="_blank" rel="noopener noreferrer">https://repo.jellyfin.org/files/plugin/manifest.json</a>"). Unstable releases will be <strong>paused for at least 2 weeks</strong> after the release to give you plenty of time to switch.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-to-report-bugs">How To Report Bugs<a href="https://jellyfin.org/posts/release-roadmap-10.10.0#how-to-report-bugs" class="hash-link" aria-label="Direct link to How To Report Bugs" title="Direct link to How To Report Bugs">​</a></h2>
<p>While running the unstable prereleases, reporting bugs is important. After all, if we don't know about bugs, we can't work to fix them!</p>
<p>First, if you encounter a bug, ensure you're running the latest unstable version, and try to reproduce it a couple times. If you can't, it's always possible it was a one-off occurrence, but if it happens again, definitely report it!</p>
<p>Bugs can be reported on <a href="https://github.com/jellyfin/jellyfin" target="_blank" rel="noopener noreferrer">our GitHub issues page</a> or <a href="https://forum.jellyfin.org/" target="_blank" rel="noopener noreferrer">on our Forums</a>.</p>
<p>You'll want to include two important pieces of information in your bug report, beyond the standard asks. First, ensure you include the "Build Version" as shown in the main dashboard page. This reports the exact unstable build you're using to help narrow down what might have caused the issue. This is doubly important if you see a new bug turn up in a future unstable build. Second, please make clear that you are running the unstable builds and not stable builds, as well as if this is an upgrade or fresh install, as that can be an important piece of information.</p>
<p>Once your bug is reported, please check back diligently to see if any additional information has been requested, and we hope to get it fixed soon.</p>
<p>Thanks, and happy watching!</p>]]></content:encoded>
            <category>release</category>
            <category>testing</category>
        </item>
        <item>
            <title><![CDATA[Android TV version 0.17]]></title>
            <link>https://jellyfin.org/posts/androidtv-v0.17.0</link>
            <guid>https://jellyfin.org/posts/androidtv-v0.17.0</guid>
            <pubDate>Sat, 03 Aug 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[The latest Android TV app release features enhanced stability, improved navigation with a new home button, and an updated screensaver with]]></description>
            <content:encoded><![CDATA[<p>The latest Android TV app release features enhanced stability, improved navigation with a new home button, and an updated screensaver with
age rating filters. Check out the full blog post to see all the new features and update now!</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="notable-changes">Notable changes<a href="https://jellyfin.org/posts/androidtv-v0.17.0#notable-changes" class="hash-link" aria-label="Direct link to Notable changes" title="Direct link to Notable changes">​</a></h2>
<p>This release comes with over 100 changes from 13 contributors. The complete list of changes, including their respective pull requests, can
be found on <a href="https://github.com/jellyfin/jellyfin-androidtv/releases/tag/v0.17.0" target="_blank" rel="noopener noreferrer">GitHub</a>. I've listed the most important/noticeable changes
below.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="navigation">Navigation<a href="https://jellyfin.org/posts/androidtv-v0.17.0#navigation" class="hash-link" aria-label="Direct link to Navigation" title="Direct link to Navigation">​</a></h3>
<p>It might seem like just one button, but it solves a significant issue. A new 'home' button in the top-right corner lets you return to the
Jellyfin home screen easily, instead of pressing the back button repeatedly. Additionally, the layout of the item details has been slightly
tweaked to fit more useful information.</p>
<p><img decoding="async" loading="lazy" alt="Screenshot of item details in the Android TV app" src="https://jellyfin.org/assets/images/item-details-9d29d22edaa4d656dca1109953b5f01e.png" width="1280" height="720" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="playback">Playback<a href="https://jellyfin.org/posts/androidtv-v0.17.0#playback" class="hash-link" aria-label="Direct link to Playback" title="Direct link to Playback">​</a></h3>
<p>The current video player was improved by adding support for more audio codecs, including WAV, Vorbis and PCM. Additionally, timeouts for
player errors were increased to give transcode and remux tasks more time to start. This improves playback for media stored on network
drives and BDMV files that require unpacking.</p>
<p>Audio normalization support was added to automatically adjust volume levels for music playback. This feature prevents sudden volume changes
between songs. To activate this feature, you'll need to enable the LUFS scan for your music library.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="screensaver">Screensaver<a href="https://jellyfin.org/posts/androidtv-v0.17.0#screensaver" class="hash-link" aria-label="Direct link to Screensaver" title="Direct link to Screensaver">​</a></h3>
<p>The screensaver now includes a feature to filter items based on their age rating. By default, only items with an age rating up to 13 will
be displayed, ensuring a family-friendly environment. Age rating options can be changed in the preferences under the customization tab.</p>
<p>Additionally, the screensaver has been enhanced to display a logo of the movie or series being shown.</p>
<p><img decoding="async" loading="lazy" alt="Screenshot of the updated screensaver design in the Android TV app" src="https://jellyfin.org/assets/images/screensaver-feead886895a59e259ddacfb07df9998.png" width="1280" height="720" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="other-changes">Other changes<a href="https://jellyfin.org/posts/androidtv-v0.17.0#other-changes" class="hash-link" aria-label="Direct link to Other changes" title="Direct link to Other changes">​</a></h3>
<p>Series and seasons now display their respective special features, which were previously available only for movies. Additionally, the search
function has been improved to include results for Live TV channels, playlists, collections, photo albums, and individual photos.</p>
<p>Invisible but noteworthy, a significant amount of work was invested in reworking the communication between the app and the server. This
has resulted in a faster and more reliable app, with improved performance and the groundwork laid for the development of exciting new
features. As a consequence of these changes, the app now requires Jellyfin 10.9 or newer and older versions are no longer supported.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="contributors">Contributors<a href="https://jellyfin.org/posts/androidtv-v0.17.0#contributors" class="hash-link" aria-label="Direct link to Contributors" title="Direct link to Contributors">​</a></h2>
<p>Jellyfin is completely developed by volunteers, and we couldn't do without their great skills and dedication. Consider donating if you
appreciate their work. A big shout-out to all contributors that made this release possible:</p>
<p><strong>Jellyfin Team</strong></p>
<ul>
<li><a href="https://github.com/nielsvanvelzen" target="_blank" rel="noopener noreferrer">@nielsvanvelzen</a> - Sponsor via <a href="https://github.com/sponsors/nielsvanvelzen" target="_blank" rel="noopener noreferrer">GitHub sponsors</a></li>
<li><a href="https://github.com/Bond-009" target="_blank" rel="noopener noreferrer">@Bond-009</a> - Sponsor via <a href="https://github.com/sponsors/Bond-009" target="_blank" rel="noopener noreferrer">GitHub sponsors</a></li>
</ul>
<p><strong>Other contributors</strong></p>
<ul>
<li><a href="https://github.com/pascalwei" target="_blank" rel="noopener noreferrer">@pascalwei</a></li>
<li><a href="https://github.com/haydenzeller" target="_blank" rel="noopener noreferrer">@haydenzeller</a></li>
<li><a href="https://github.com/DoggoOfSpeed" target="_blank" rel="noopener noreferrer">@DoggoOfSpeed</a></li>
<li><a href="https://github.com/bathompson" target="_blank" rel="noopener noreferrer">@bathompson</a></li>
<li><a href="https://github.com/VizuaaLOG" target="_blank" rel="noopener noreferrer">@VizuaaLOG</a></li>
<li><a href="https://github.com/3l0w" target="_blank" rel="noopener noreferrer">@3l0w</a></li>
<li><a href="https://github.com/mnsrulz" target="_blank" rel="noopener noreferrer">@mnsrulz</a></li>
<li><a href="https://github.com/MichaelRUSF" target="_blank" rel="noopener noreferrer">@MichaelRUSF</a></li>
<li><a href="https://github.com/efreet7" target="_blank" rel="noopener noreferrer">@efreet7</a></li>
<li><a href="https://github.com/ConnorS1110" target="_blank" rel="noopener noreferrer">@ConnorS1110</a></li>
<li><a href="https://github.com/cbeyls" target="_blank" rel="noopener noreferrer">@cbeyls</a></li>
</ul>
<p>We'd also like to thank everyone who reported bugs, provided feedback and participated in beta testing!</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="helping-out">Helping out<a href="https://jellyfin.org/posts/androidtv-v0.17.0#helping-out" class="hash-link" aria-label="Direct link to Helping out" title="Direct link to Helping out">​</a></h3>
<p>If you have experience with Android TV development or with Kotlin and are interested in contributing yourself, feel free to dive into the
<a href="https://github.com/jellyfin/jellyfin-androidtv" target="_blank" rel="noopener noreferrer">source code</a> and open a pull request.</p>
<p>Alternatively, you can help with translating the app into your language on our
<a href="https://translate.jellyfin.org/engage/jellyfin-android/" target="_blank" rel="noopener noreferrer">Weblate</a> instance.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="downloads">Downloads<a href="https://jellyfin.org/posts/androidtv-v0.17.0#downloads" class="hash-link" aria-label="Direct link to Downloads" title="Direct link to Downloads">​</a></h2>
<p>Update your app now to check out all these changes! The app stores will auto-update your Jellyfin app if you're already using the app. For
new users, you can find the app here:</p>
<a class="margin-right--md" href="https://play.google.com/store/apps/details?id=org.jellyfin.androidtv"><img width="153" alt="Jellyfin for Android TV on Google Play" src="https://jellyfin.org/images/store-icons/google-play.png"></a>
<a class="margin-right--md" href="https://www.amazon.com/gp/product/B07TX7Z725"><img width="153" alt="Jellyfin for Fire TV at Amazon App Store" src="https://jellyfin.org/images/store-icons/amazon.png"></a>
<a href="https://f-droid.org/en/packages/org.jellyfin.androidtv/"><img width="153" alt="Jellyfin for Android TV on F-Droid" src="https://jellyfin.org/images/store-icons/fdroid.png"></a>
<p>Direct downloads are available for sideloading at <a href="https://repo.jellyfin.org/releases/client/androidtv/" target="_blank" rel="noopener noreferrer">repo.jellyfin.org</a>
or in the <a href="https://github.com/jellyfin/jellyfin-androidtv/releases/tag/v0.17.0" target="_blank" rel="noopener noreferrer">GitHub release assets</a>.</p>
<p>You can also join our <a href="https://play.google.com/apps/testing/org.jellyfin.androidtv" target="_blank" rel="noopener noreferrer">beta program on Google Play</a> and help test new versions
before they're released to the public.</p>]]></content:encoded>
            <category>release</category>
            <category>android-tv</category>
        </item>
        <item>
            <title><![CDATA[Jellyfin 10.9.0]]></title>
            <link>https://jellyfin.org/posts/jellyfin-release-10.9.0</link>
            <guid>https://jellyfin.org/posts/jellyfin-release-10.9.0</guid>
            <pubDate>Sat, 11 May 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[We are pleased to announce the latest stable release of Jellyfin, version 10.9.0!]]></description>
            <content:encoded><![CDATA[<p>We are pleased to announce the latest stable release of Jellyfin, version 10.9.0!</p>
<p>This major release brings many new features, improvements, and bugfixes to improve your Jellyfin experience.</p>
<p>You may upgrade your Jellyfin instances at any time now, however please read on for a complete detailing of what's new and changed, including some very important release notes. For those who were running Unstable builds for testing, we thank you immensely, and you may now switch back to the Stable repository and forcibly reinstall/repull the latest version.</p>
<p>Happy watching!</p>
<p>- Joshua</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="key-release-notesbreaking-changes">Key Release Notes/Breaking Changes<a href="https://jellyfin.org/posts/jellyfin-release-10.9.0#key-release-notesbreaking-changes" class="hash-link" aria-label="Direct link to Key Release Notes/Breaking Changes" title="Direct link to Key Release Notes/Breaking Changes">​</a></h2>
<p>There are several key changes with 10.9.0 that administrative users should be aware of, before getting into the more specific changes.</p>
<ul>
<li>
<p>As always, <strong>ensure you back up your Jellyfin data and configuration directories before upgrading</strong>. With a major release, it's possible you will hit a bug and want to revert, and to do so, you will need to restore from a backup.</p>
</li>
<li>
<p>Ubuntu users: We have dropped support for non-LTS Ubuntu releases with 10.9.0. That is, we have not built 10.9.0 packages for any releases except 20.04 LTS, 22.04 LTS, and 24.04 LTS, and we will not publish builds for any new non-LTS releases going forward. For an explanation of why, please see <a href="https://jellyfin.org/posts/new-ci-new-repo" target="_blank" rel="noopener noreferrer">our previous blog post</a>. If you use another release, please upgrade to 24.04 LTS or switch to the Docker container.</p>
</li>
<li>
<p>Fedora/CentOS/RHEL/etc. users: We have dropped our official RPM packages and suggest switching to <a href="https://admin.rpmfusion.org/pkgdb/package/free/jellyfin/" target="_blank" rel="noopener noreferrer">the 3rd-party RPMFusion repository</a> or the Docker container. Support for RHEL-like distributions has been a major pain point for us for a very long time, and we feel that letting the community over at RPMFusion handle this is in our best interest going forward, similar to how Arch, Gentoo, etc. packages are handled. For more details, please see <a href="https://jellyfin.org/posts/new-ci-new-repo" target="_blank" rel="noopener noreferrer">our previous blog post</a>.</p>
</li>
<li>
<p>Docker users: We now offer GitHub Container Registry (GHCR) as an alternative container registry in addition to Docker Hub. You can pull images from the new registry via URIs like <code>ghcr.io/jellyfin/jellyfin:latest</code>. Don't worry, we have no plans to drop Docker Hub as a container registry, but we feel providing both gives users more choice and flexibility.</p>
</li>
<li>
<p>Docker users: If you encounter problems loading your homepage, you may need to remove the <code>DOTNET_SYSTEM_GLOBALIZATION_INVARIANT</code> environment variable from your container, as this is no longer valid in Jellyfin 10.9.0. For more details <a href="https://github.com/jellyfin/jellyfin/issues/11533" target="_blank" rel="noopener noreferrer">please see</a> <a href="https://github.com/jellyfin/jellyfin/issues/11528" target="_blank" rel="noopener noreferrer">these issues</a>.</p>
</li>
<li>
<p>Nginx reverse proxy users: If you have a block in your nginx config that begins with <code>location ~ ^/web/$ {</code> and the comment <code># location block for /web - This is purely for aesthetics [...]</code>, please remove that block as it will cause <a href="https://github.com/jellyfin/jellyfin/issues/11540" target="_blank" rel="noopener noreferrer">occasional issues with 404's and/or slow performance</a> on 10.9.z.</p>
</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="the-big-changes">The Big Changes<a href="https://jellyfin.org/posts/jellyfin-release-10.9.0#the-big-changes" class="hash-link" aria-label="Direct link to The Big Changes" title="Direct link to The Big Changes">​</a></h2>
<p>This release has been over two years in the making, so we're really glad to finally get it out to you. The long cycle does mean quite an extensive changelog however, with well over 1100 pull requests merged into our <code>master</code> branch since 10.8.0 first dropped back in 2022. This section will detail all the big changes, broken up by general function and area of the system. In addition to these big items, there are hundreds of smaller bugfixes, quality-of-life tweaks, and other minor changes that we won't touch on here, but if you want to see the full list, you can do so over on the GitHub releases for <a href="https://github.com/jellyfin/jellyfin/releases/tag/v10.9.0" target="_blank" rel="noopener noreferrer">the core server</a> and <a href="https://github.com/jellyfin/jellyfin-web/releases/tag/v10.9.0" target="_blank" rel="noopener noreferrer">the Web UI</a>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="general">General<a href="https://jellyfin.org/posts/jellyfin-release-10.9.0#general" class="hash-link" aria-label="Direct link to General" title="Direct link to General">​</a></h3>
<ul>
<li>
<p>We now support "trickplay" a.k.a. live video scrubbing. When scrubbing through a video with this enabled, you will be able to see a live preview of the video at that timestamp. Note that this requires explicit client support, which may require some time to become available depending on your client.</p>
</li>
<li>
<p>Web redirections are now handled more reliably, reducing the likelihood of hitting dead or invalid pages in the UI. Please ensure you force-refresh or clear any browser cache for your Jellyfin instance to see the full benefits.</p>
</li>
<li>
<p>DLNA support is now provided by a plugin and has been removed from the core server. This has several major benefits: first, it can be updated independently of the server to some degree; second, it will not be enabled for anyone unless they want it and explicitly install the plugin; and third, it reduces the potential of security holes around DLNA due to both previous benefits. If you wish to use (or continue to use) DLNA, please install the plugin after upgrading.</p>
</li>
<li>
<p>We now support AVIF and WEBP images for Pictures libraries.</p>
</li>
<li>
<p>Tags are now accounted for during searches, allowing one to search by tag.</p>
</li>
<li>
<p>We now support multiple simultaneous subtitle tracks (maximum of two, a primary and secondary) in the web player.</p>
</li>
<li>
<p>We've revamped the administrative dashboard UI to help improve usability and ease of finding options.</p>
</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="api--security">API &amp; Security<a href="https://jellyfin.org/posts/jellyfin-release-10.9.0#api--security" class="hash-link" aria-label="Direct link to API &amp; Security" title="Direct link to API &amp; Security">​</a></h3>
<ul>
<li>
<p>All API endpoints now return proper return codes, ensuring that API endpoint results can be reliably interpreted without additional parsing.</p>
</li>
<li>
<p>Parental ratings are significantly improved, with better enforcement, inheritable ratings, and more.</p>
</li>
<li>
<p>LiveTV and Collection permissions are now discrete and configurable per-user.</p>
</li>
<li>
<p>The EasyPassword (PIN) feature has been removed as this was a big security risk especially for administrator accounts; QuickConnect login is still supported however.</p>
</li>
<li>
<p>User permission handling has been unified and numerous bugs fixed, ensuring a more secure server from untrusted users.</p>
</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="core-server--networking">Core Server &amp; Networking<a href="https://jellyfin.org/posts/jellyfin-release-10.9.0#core-server--networking" class="hash-link" aria-label="Direct link to Core Server &amp; Networking" title="Direct link to Core Server &amp; Networking">​</a></h3>
<ul>
<li>
<p>The .NET version has been upgraded to version 8, the latest major and LTS release. This brings us many under-the-hood improvements and changes to help with our ongoing effort to streamline the codebase and improve overall performance.</p>
</li>
<li>
<p>Our minimum FFmpeg version has been bumped from 4.0 to 4.4 to take advantage of many new features. For users of our Jellyfin FFmpeg build (Docker, <code>.deb</code>/Debuntu repo, and Windows installs), you're already on a newer version with FFmpeg 6.0.1, but this minimum change would affect any other platforms.</p>
</li>
<li>
<p>The server now supports in-process restarting, and removes the old hacky <code>restart.sh</code> method. This should make things like installing plugins much more robust and ensure a consistent restart experience regardless of platform or install method.</p>
</li>
<li>
<p>Uploaded images are now subject to much more verification, helping plug several security holes in this feature.</p>
</li>
<li>
<p>The backend SQLite database now supports connection pooling, which should improve performance for database operations.</p>
</li>
<li>
<p>Support for the HappyEyeballs engine improving dual-stack IPv4/IPV6 network support.</p>
</li>
<li>
<p>Improved handling of IP binding to fully respect these settings (including DLNA and SSDP).</p>
</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="packaging">Packaging<a href="https://jellyfin.org/posts/jellyfin-release-10.9.0#packaging" class="hash-link" aria-label="Direct link to Packaging" title="Direct link to Packaging">​</a></h3>
<ul>
<li>
<p>The <code>jellyfin</code> service user is now automatically added to the <code>render</code> and <code>video</code> groups on Debian/Ubuntu systems for new installs, helping improve the onboarding for hardware acceleration.</p>
</li>
<li>
<p>Packaging is now unified with a new CI system, as outlined in <a href="https://jellyfin.org/posts/new-ci-new-repo" target="_blank" rel="noopener noreferrer">our previous blog post</a>. As a normal user you should see no change here, but this helps massively improve the build process, and if you are building your own packages please reference <a href="https://github.com/jellyfin/jellyfin-packaging" target="_blank" rel="noopener noreferrer">the new packaging repository</a> for the updated process.</p>
</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="transcoding--ffmpeg">Transcoding &amp; FFmpeg<a href="https://jellyfin.org/posts/jellyfin-release-10.9.0#transcoding--ffmpeg" class="hash-link" aria-label="Direct link to Transcoding &amp; FFmpeg" title="Direct link to Transcoding &amp; FFmpeg">​</a></h3>
<ul>
<li>
<p>The <code>--ffmpeg</code> command-line flag is now the primary method of setting FFmpeg paths, and configuration of the FFmpeg paths via <code>encoding.xml</code> is now deprecated. All official packaging will revert to defaults unless explicitly set before upgrade.</p>
</li>
<li>
<p>Several audio improvements: support for Opus, FLAC, and ALAC codecs in the HLS engine; improved support and handling for transcoding DTS and TrueHD audio streams; new codec enforcement; better bitrate calculations; new audio normalization features; and stereo downmixing algorithm selection.</p>
</li>
<li>
<p>FFmpeg segments can now be automatically deleted after the client requests them, significantly reducing the space requirements of the transcoding temporary directory. This optional feature is disabled by default and can be enabled in the transcoding settings.</p>
</li>
<li>
<p>Support for direct stream playback of DVD and Blu-ray data folders, preferred over ISOs.</p>
</li>
<li>
<p>Support for AV1 hardware and software encoding.</p>
</li>
<li>
<p>Support for RK3588 hardware acceleration via MPP.</p>
</li>
<li>
<p>Support for Vulkan-based tonemapping with AMD VA-API.</p>
</li>
<li>
<p>Support for complete hardware acceleration on Apple systems (both Apple Silicon and Intel; previously was partial).</p>
</li>
<li>
<p>Support for Dolby Vision playback remuxing.</p>
</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="scanning-library--playlist-management">Scanning, Library &amp; Playlist Management<a href="https://jellyfin.org/posts/jellyfin-release-10.9.0#scanning-library--playlist-management" class="hash-link" aria-label="Direct link to Scanning, Library &amp; Playlist Management" title="Direct link to Scanning, Library &amp; Playlist Management">​</a></h3>
<ul>
<li>
<p>Support for scanning and displaying local lyric files (embedded or external files; Internet lyric provider searching is planned for 10.10).</p>
</li>
<li>
<p>Season names are now parsed from NFO files.</p>
</li>
<li>
<p>The MusicBrainz interface has been improved to better handle music libraries.</p>
</li>
<li>
<p>Support for hearing-impaired subtitles (sdh/hi./cc).</p>
</li>
<li>
<p>The visibility of playlists can now be made private</p>
<ul>
<li>User playlists are now private by default</li>
<li>We're working on playlist sharing for a future release</li>
</ul>
</li>
<li>
<p>Invalid items will be automatically removed from playlists.</p>
</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="casting">Casting<a href="https://jellyfin.org/posts/jellyfin-release-10.9.0#casting" class="hash-link" aria-label="Direct link to Casting" title="Direct link to Casting">​</a></h3>
<ul>
<li>Better local network detection</li>
<li>Connectivity improvements</li>
<li>Ability to self-host cast receiver</li>
</ul>
<p>We're looking for contributors for our <a href="https://github.com/jellyfin/jellyfin-chromecast/" target="_blank" rel="noopener noreferrer">cast receiver</a>. This is the application that loads on a TV when using the "Google Cast" feature. Please reach out if you're interested.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="the-next-version">The Next Version<a href="https://jellyfin.org/posts/jellyfin-release-10.9.0#the-next-version" class="hash-link" aria-label="Direct link to The Next Version" title="Direct link to The Next Version">​</a></h2>
<p>With our continuous integrations improvements outlined previously, we're quite confident that this will be our last "very long" release cycle. Our plan is for the next major version (10.10.0) to be released at most 6 months from now, some time in October. We hope this increased cadence will help alleviate the problems with large releases such as a very long time-to-stable for new features, translations, etc. and help lower the number of major bugs at each major release, streamlining the upgrade process. But this needs everyone's help. Back in October 2023, we made a call for developers, and we've gotten a lot of interest, but this is not a one-and-done event. We need contributions now more than ever, especially around the web frontend to help implement our planned design changes. If this interests you, please reach out and we can help get you set up.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="final-thoughts">Final Thoughts<a href="https://jellyfin.org/posts/jellyfin-release-10.9.0#final-thoughts" class="hash-link" aria-label="Direct link to Final Thoughts" title="Direct link to Final Thoughts">​</a></h2>
<p>We want to thank everyone who contributed to the 10.9.0 release. According to GitHub over 100 people contributed across both repositories, and Jellyfin wouldn't be what it is without your help. We're really proud of this project we've built as a community, and hope to continue to be the go-to FLOSS media system solution for a long time to come. Happy watching!</p>]]></content:encoded>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[Testing 10.9.0]]></title>
            <link>https://jellyfin.org/posts/testing-10.9.0</link>
            <guid>https://jellyfin.org/posts/testing-10.9.0</guid>
            <pubDate>Wed, 27 Mar 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[We are now in feature freeze for 10.9.0; here's how to help test!]]></description>
            <content:encoded><![CDATA[<p>We are pleased to announce that we are now in our feature freeze window for the 10.9.0 release! That means that from now until the release, we'll be focusing only on merging bugfixes and other improvements, while all features will be on hold until the release is finalized.</p>
<p>That also means it's time to start testing. As outlined in our last blog post, we're doing things a bit differently this release, so this post will provide the steps one would need to take to help us test the new release.</p>
<p>If you want to help out, please read on!</p>
<p>- Joshua</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="whats-different-and-the-release-plan">What's Different and The Release Plan<a href="https://jellyfin.org/posts/testing-10.9.0#whats-different-and-the-release-plan" class="hash-link" aria-label="Direct link to What's Different and The Release Plan" title="Direct link to What's Different and The Release Plan">​</a></h2>
<p>First, a quick rundown on what's different from our previous releases. The last few major releases, we went back and forth between various versions of <code>-beta</code> and <code>-rc</code> tags, but ultimately due to the complexity of 10.8.0 nearly two years ago, we've decided to abandon that idea going forward. As nice as it is to publish pre-release tags, we feel that doing so is not worth the burden and headache during this period and after, when we already have a better solution in our weekly unstable builds.</p>
<p>So, in effect, our weekly unstable builds are now working double-duty as our beta/release candidate versions. Here's how they map over the coming weeks:</p>
<ul>
<li><code>20240325</code>: The first "beta". Feature freeze has begun.</li>
<li><code>20240401</code>: The second "beta". One week of freeze.</li>
<li><code>20240408</code>: The third "beta". Two weeks of freeze, and we hope to have most glaring bugs fixed by this point.</li>
<li><code>20240415</code>: The first "release candidate". We hope that by this point everything is in good shape for a release, with only a few lingering bugs.</li>
<li><code>20240422</code>: The second and, ideally, final "release candidate".</li>
<li><code>10.9.0</code>: The actual release, during the weekend of April 26th-28th.</li>
</ul>
<p>All of this, of course, assumes a smooth window, we we are fairly hopeful of, but any number of things could throw a wrench in this plan, so we are continuing to play things by ear and see how each week turns out.</p>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p><strong>Update (2024-05-04):</strong> Due to some critical issues, we've decided to delay the release of 10.9.0 to ensure everything is working properly on release.</p></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-you-can-test">How You Can Test<a href="https://jellyfin.org/posts/testing-10.9.0#how-you-can-test" class="hash-link" aria-label="Direct link to How You Can Test" title="Direct link to How You Can Test">​</a></h2>
<p>Testing this release should be very easy, in a way that our previous releases weren't. Since our pre-releases are "just" our unstable releases here, that means that following our normal "unstable" install process is all you need to do.</p>
<p>To find that, visit our <a href="https://jellyfin.org/downloads/server" target="_blank" rel="noopener noreferrer">main server downloads page</a>, select the platform you require along the top centre, then on the top right, select "Unstable". The instructions and links will now be for the unstable release. You can also find <a href="https://jellyfin.org/docs/general/testing/" target="_blank" rel="noopener noreferrer">additional testing documentation in the docs</a>.</p>
<p>For Docker this simply means pulling the <code>unstable</code> tag on the image. For Debian and Ubuntu repositories, this means adding <code>unstable</code> to your existing <code>jellyfin.sources</code> entry. For other platforms, please review the provided instructions as not all platforms will support unstable.</p>
<p>Next, before installing an unstable release, ensure that you <strong>back up your existing server configuration</strong>. It is not possible to downgrade as there are a significant number of database changes. Just making a simple copy of your configuration directories is sufficient, and where those can be found depends on the platform.</p>
<p>Next, if you use plugins, install the unstable plugin repository. Due to compatibility issues, we distribute plugins for unstable in a separate manifest, so this must be added manually, and on first start all incompatible plugins (i.e. all existing plugins on an upgrade) will be upgraded. To add the repository, navigate to the Administration Dashboard, Advanced, Plugins, then click the Repositories tab at the top. Click the "+" Add button, and enter "Unstable" for the name and "<a href="https://repo.jellyfin.org/files/plugin-unstable/manifest.json" target="_blank" rel="noopener noreferrer">https://repo.jellyfin.org/files/plugin-unstable/manifest.json</a>" for the Repository URL. We also recommend that you disable/remove the Stable repository at this time, as it's possible they will conflict, and under 10.9.0 the repository URL will change. After the initial update you may need to manually restart your Jellyfin instance one further time to ensure all plugins are activated properly.</p>
<p>Finally, install the unstable version and run it. The upgrade should happen seamlessly in the background, and you'll be able to log in to your Jellyfin instance normally after this point. Ensure you perform a <em>hard</em> refresh in your browser, and restart all clients.</p>
<p>Once 10.9.0 is fully released, you can switch back easily by reinstalling the new stable version, and changing back to the stable plugin manifest (URL "<a href="https://repo.jellyfin.org/files/plugin/manifest.json" target="_blank" rel="noopener noreferrer">https://repo.jellyfin.org/files/plugin/manifest.json</a>").</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-to-report-bugs">How To Report Bugs<a href="https://jellyfin.org/posts/testing-10.9.0#how-to-report-bugs" class="hash-link" aria-label="Direct link to How To Report Bugs" title="Direct link to How To Report Bugs">​</a></h2>
<p>While running the unstable prereleases, reporting bugs is important. After all, if we don't know about bugs, we can't work to fix them!</p>
<p>First, if you encounter a bug, ensure you're running the latest version, and try to reproduce it. If you can't, it's always possible it was a one-off occurrence, but if it happens again, definitely report it!</p>
<p>Bugs can be reported on <a href="https://github.com/jellyfin/jellyfin" target="_blank" rel="noopener noreferrer">our GitHub issues page</a> or <a href="https://forum.jellyfin.org/" target="_blank" rel="noopener noreferrer">on our Forums</a>.</p>
<p>You'll want to include two important pieces of information in your bug report, beyond the standard asks. First, ensure you include the "Build Version" as shown in the main dashboard page. This reports the exact unstable build you're using to help narrow down what might have caused the issue. This is doubly important if you see a new bug turn up in a future unstable build. Second, please make clear that you are running the unstable builds and not stable builds as well as if this is an upgrade or fresh install, as that can be an important piece of information.</p>
<p>Once your bug is reported, please check back diligently to see if any additional information has been requested, and we hope to get it fixed soon.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="information-for-3rd-party-clients">Information for 3rd Party Clients<a href="https://jellyfin.org/posts/testing-10.9.0#information-for-3rd-party-clients" class="hash-link" aria-label="Direct link to Information for 3rd Party Clients" title="Direct link to Information for 3rd Party Clients">​</a></h2>
<p>At this point, with our feature freeze our APIs should be stable, though do please expect bugfixes to make minor changes over the next few weeks. Please feel free to begin testing compatibility and report any issues to us.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="information-for-contributors">Information for Contributors<a href="https://jellyfin.org/posts/testing-10.9.0#information-for-contributors" class="hash-link" aria-label="Direct link to Information for Contributors" title="Direct link to Information for Contributors">​</a></h2>
<p>If you're contributing to Jellyfin and your existing feature PRs have not yet been merged, please don't fret. 10.9.0 was an abnormally long release cycle and something we do not wish to repeat, so your changes <em>will</em> get in soon for 10.10.0, which we expect to happen in about 6 months at most.</p>
<p>If you wish to help by submitting a bugfix, please do so as soon as you can, as we'd like to get as many fixes in and tested within the next ~3 weeks as possible, to give at least 2 weeks of final testing before the release. Ensure you clearly specify that it is a bugfix, and ensure you keep your changes to an absolute minimum needed to fix the bug. Bugfix PRs will target the <code>master</code> branch until the final release at which point they will target the <code>release-10.9.z</code> branch for upcoming point releases.</p>]]></content:encoded>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[New CI, New Repo, A Renewed Push for 10.9.0]]></title>
            <link>https://jellyfin.org/posts/new-ci-new-repo</link>
            <guid>https://jellyfin.org/posts/new-ci-new-repo</guid>
            <pubDate>Tue, 05 Mar 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[There's some things about our repo we need to share as we prepare for 10.9.0]]></description>
            <content:encoded><![CDATA[<p>Over the last several weeks, I've been driving a major push to revamp and improve our CI, in an effort to improve our release workflow, our velocity of releases, and the burden they have on me as the release manager. This post will detail the changes we've made, how they might affect you as a user or contributor, and how we're planning to proceed with our 10.9.0 release cycle.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="the-tldr">The TL;DR<a href="https://jellyfin.org/posts/new-ci-new-repo#the-tldr" class="hash-link" aria-label="Direct link to The TL;DR" title="Direct link to The TL;DR">​</a></h2>
<ol>
<li>
<p>We have <a href="https://repo.jellyfin.org/" target="_blank" rel="noopener noreferrer">a new repository browser UI</a> along with a new file layout, on a new master repository machine, built by new CI, that will hopefully make it nicer to look around and get right to what you need. This has now been cut over into production, but is still a bit of a work in progress, so please report any bugs you find to us! Note that quite a number of paths will have changed (anything under <code>/server</code> especially), but some will remain the same. If you get a 404 and can't find it through the browser UI, best to check in. <strong>3rd party packagers downloading files manually from us are advised to contact us if needed.</strong></p>
</li>
<li>
<p>We are dropping non-LTS Ubuntu packages, dropping our own Fedora/CentOS packages in favour of <a href="https://admin.rpmfusion.org/pkgdb/package/free/jellyfin/" target="_blank" rel="noopener noreferrer">RPMFusion builds</a>, and adding <a href="https://ghcr.io/jellyfin/jellyfin" target="_blank" rel="noopener noreferrer">GHCR as a container repository</a> for our Docker images.</p>
</li>
<li>
<p>For 10.9.0, we will not be producing explicit "beta" releases. Instead, we will test using our new Weekly Unstable builds. Once the master branch is sufficiently stable and good, we will release 10.9.0 directly from there (via our standard release branch process).</p>
</li>
<li>
<p>The 10.9.0 feature freeze (bugfix PRs only after this) will tentatively begin on <strong>Monday, March 18th</strong>. The hope is that all of the above will be ready by then so that obtaining Unstable builds for testing will be easy.</p>
</li>
<li>
<p>The 10.9.0 release itself is tentatively planned for the <strong>last weekend in April</strong>. To all <strong>3rd parties who build packages of our releases, please read until the end for an important note about this release</strong>.</p>
</li>
</ol>
<p>Read on for more details.</p>
<p>- Joshua</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="why-build-a-new-ci">Why build a new CI?<a href="https://jellyfin.org/posts/new-ci-new-repo#why-build-a-new-ci" class="hash-link" aria-label="Direct link to Why build a new CI?" title="Direct link to Why build a new CI?">​</a></h2>
<p>Our old CI was assembled way back in 2019 by a few dedicated team members (mostly @EraYan) using Azure DevOps. While it was a major improvement over my self-built pure-BASH build system that we had used for the first year or so, it still had a number of drawbacks:</p>
<ol>
<li>It was a little difficult to understand, and relied on an external system (Microsoft Azure).</li>
<li>It still relied on a very complex, convoluted, and error prone <a href="https://github.com/jellyfin/jellyfin-metapackages" target="_blank" rel="noopener noreferrer">BASH script to finalize the builds</a>, because...</li>
<li>It built the Server and Web components of Jellyfin independently, triggered independently off the different repository tag events, and then had to rely on a whole lot of shenanigans to combine the results into unified, user-friendly packages.</li>
</ol>
<p>There was also, though not a flaw with the CI system itself, the matter of Unstable builds. For a long time, they've been built on every merged PR, which was good for quickly seeing if things worked, but were effectively unusable for normal people as they changed so often. This was also something we wanted to fix.</p>
<p>At the time, GitHub Actions did not yet exist, and while we got everything to work, the CI as a whole was clunky and prone to failure. Major releases would often take me over 20 man-hours to prepare for and execute, while point releases would take at least 4-6 hours. It was a huge burden as a release manager, and also very cumbersome to fix if things broke in obscure ways, especially after the tag, because all the CI was in the code repos.</p>
<p>All this meant that our release velocity was extremely slow, as there was never a clear flow between master being tested and preparing for the next release.</p>
<p>Rather than continue incremental tweaking of this setup, about 2 years ago a project was started by @ferferga and @h1dden-da3m0n (who has since moved on) to move to GitHub Actions. While they did lay a lot of groundwork, that project ultimately stalled out and was effectively abandoned. Earlier this year, I took up the mantle to finally get this done in preparation for 10.9.0, and was able to get it working well, in a much easier to understand and hopefully much more consistent way.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="more-automation">More Automation<a href="https://jellyfin.org/posts/new-ci-new-repo#more-automation" class="hash-link" aria-label="Direct link to More Automation" title="Direct link to More Automation">​</a></h2>
<p>The next part, besides just the CI itself, is an automation bot. As mentioned, releases took a long time, but only a fraction of that was spent actually dealing with Azure. The rest was administrative work: building changelogs, ensuring repos were in sync, running <code>bump-version</code> scripts, creating release drafts, checking them 3 times and still missing something, writing a release post for our Forum, etc. All of this added up to a significant time investment that I was rarely eager to do, which in turn trashed our velocity.</p>
<p>No project should be so dependent on one person, but we were, for a very long time. Part of the goal with this CI improvement is to streamline all these aspects as well using another piece of automation, a private chatbot.</p>
<p>The goal here is for us to tell our chatbot that we're ready for a release, for it to prepare all the text automatically, and then after review, tell it that it's ready to ship. Not only does this ease the process for myself, but it can easily be performed by others. And with the more reliable CI, this will hopefully mean a "set and forget" release process that helps us massively increase velocity.</p>
<p>While the bot isn't completely finished yet, the scaffolding is all there, and we definitely expect it to be ready to go in time for the actual 10.9.0 release.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="unifying-packages">Unifying packages<a href="https://jellyfin.org/posts/new-ci-new-repo#unifying-packages" class="hash-link" aria-label="Direct link to Unifying packages" title="Direct link to Unifying packages">​</a></h2>
<p>One big drawback we mentioned of the previous CI was how it treated the server and web components of Jellyfin separately. It did this because these two components are indeed separate on the code side, in separate GitHub repositories and with different groups leading them. The problem is, that's not how Jellyfin is actually consumed by users. Users want just one package, installer, or archive to install and run out of the box. So we had to do a lot of complex shenanigans to combine the packages together.</p>
<p>No longer. With the updated CI, all our packaging is unified together, and split off into <a href="https://github.com/jellyfin/jellyfin-packaging" target="_blank" rel="noopener noreferrer">its own dedicated repository</a>. This repository handles the two code repos via submodules and a simple Python script to synchronize what version is checked out of each before a build. Then, another Python script handles the actual building, which itself is then called from GitHub actions. It is still a little convoluted, but this is unavoidable for how complex our software ultimately is to package, and the hope is that having this in Python (a robust but easy-to-understand language) will help ensure this process isn't nearly as opaque as it previously was.</p>
<p>What this means depends on the different packaging types. For Debian and Ubuntu, it means that there is now one Debian source package for the three resulting binary packages (metapackage, web, and server) and thus all 3 can be built at once using a single <code>dpkg-buildpackage</code> command. For archives, this means that both the server and web components are built in sequence and then combined into one archive at build time, rather than haphazardly later, a process that failed more times than we could count. For installers, this means that the process is now simpler and can be automated. And lastly, for Docker, it means that we now provide just a single image, <code>jellyfin/jellyfin</code>, that was built all at once and does not rely on two intermediate images, another very error-prone process.</p>
<p>Related to this, and as part of the unified builds, each version of Debian and Ubuntu now has its own distinct package, with version suffixes like <code>-deb12</code> or <code>-ubu2204</code>. This will help ensure smooth dependency handling for shared libraries like LibSSL. This should only matter if you're downloading <code>.deb</code> packages from the repo directly: ensure you download the right one for your release.</p>
<p>As a normal end user, you shouldn't see anything different because of this: you'll still install the packages the same way as always through our repositories. But for anyone building their own versions, you are now advised to use the above repository, as all non-development packaging (e.g. the <code>debian/</code> and <code>fedora/</code> folders, the <code>deployment/</code> folder, etc.) will be removed from the main repositories, leaving just a simple Dockerfile for building testing and development images quickly.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="a-new-repository-master-for-a-new-ci-system">A new repository master for a new CI system<a href="https://jellyfin.org/posts/new-ci-new-repo#a-new-repository-master-for-a-new-ci-system" class="hash-link" aria-label="Direct link to A new repository master for a new CI system" title="Direct link to A new repository master for a new CI system">​</a></h2>
<p>One thing the ground-up CI and unified packages enables is a much cleaner repository structure. Our previous structure was based around the combining requirements, full of strange quirks and nested directories to try to make that simpler. With those out of the picture, we were able to settle on a much nicer layout, and thus, a brand new master server to house them for an easier transition.</p>
<p>Part of this also includes a revamped browser page to easily facilitate getting to the files you need, descending through the tree of the new layout in a much more user-friendly way.</p>
<p>The new browser and repository master is now live as of posting at <a href="https://repo.jellyfin.org/" target="_blank" rel="noopener noreferrer">https://repo.jellyfin.org</a> for perusal, and still includes the stable release packages in the new layout for your convenience until 10.9.0 is released. So, as mentioned in the preamble, please test it out and let us know if you run into any trouble with it, any broken links, or similar issues.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="unstable-releases">Unstable Releases<a href="https://jellyfin.org/posts/new-ci-new-repo#unstable-releases" class="hash-link" aria-label="Direct link to Unstable Releases" title="Direct link to Unstable Releases">​</a></h2>
<p>As mentioned a bit above, our previous "build things on every pull request merge" was quite cumbersome to use, as things would change very rapidly, and keeping testers up-to-date was nearly impossible during fast-moving days. Way back in the early days, we had experimented with daily builds before moving to this model, but even those felt a little too quick for both our current development pace, and for users to keep adequetly up-to-date.</p>
<p>Instead, going forward we are moving to a Weekly cycle for Unstable releases. The builds will occur on Monday mornings around midnight Eastern time (UTC-5/4-with-DST), a time chosen farily arbitrarily but ensuring each week starts with a fresh Unstable build. This process is completely automated, and the resulting builds will be available soon thereafter in all our normal places.</p>
<p>We hope that this slower pace will help ensure that users running our Unstable builds have more of a chance to actually test the current state of Jellyfin and not be overwhelmed by the speed of releases, while also providing fast enough movement for people to truly test the latest and greatest features and bugfixes.</p>
<p>One final note, mentioned in more detail below, is that these Unstable Weekly builds will act as our pre-release testing for 10.9.0: there will be no tagged "beta" or "rc" releases for this cycle. This is being done to avoid the major burden we found with 10.8.0 of trying to continually backport the fixes for the upcoming stable release back into master, while also forward-porting bugfixes in the other direction when they were accidentally mis-targeted.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="cleaning-up-what-we-build">Cleaning up what we build<a href="https://jellyfin.org/posts/new-ci-new-repo#cleaning-up-what-we-build" class="hash-link" aria-label="Direct link to Cleaning up what we build" title="Direct link to Cleaning up what we build">​</a></h2>
<p>As mentioned in the TL;DR, we are making three major changes to what we build, both for the Unstable releases and the upcoming 10.9.0 release:</p>
<ol>
<li>
<p>We are dropping all non-LTS Ubuntu releases from our official APT package repository.</p>
<p>The reason is simple: it's a huge burden to keep up with Ubuntu's 6 month release schedule, just to support what are in practice minor versions with a 9 month lifespan. While we understand people might want to run Jellyfin on desktops or ensure their servers have "the latest" stuff, this just isn't tenable for us long term. So, going forward, our packages will only target the LTS releases, starting with 20.04 "Focal", and including 22.04 "Jammy" and the new 24.04 "Noble" due to release in April.</p>
<p>If you are using a non-LTS version of Ubuntu, you still have options. First, you can always upgrade to 24.04 and use that going forward. However do note that 24.04 will be the latest release that we build for until 26.04 comes out. Alternatively, if you still want to keep your system on the 6-month update path, you can migrate to our Docker images instead, and these have the added benefit of additional long-term stability even as your base OS changes.</p>
</li>
<li>
<p>We are dropping our own "official" RPM builds for Fedora and CentOS(-like) distributions in favour of RPMFusion:</p>
<p>These builds have always been a bit of a red-headed-stepchild for us. They were poorly maintained (despite some valiant efforts and community contributions), broke frequently, and this all came to a head when we started working on a combined spec.</p>
<p>Luckily, a community member (@mooninite) has already been maintaning a stable combined RPMFusion build of Jellyfin. This seemed like a perfect time to switch to that, reducing another bit of packaging burden away from us, as well as (finally) providing a "real" repository for our RPM-based users. The RPMFusion build is now the official Fedora/CentOS build listed on our <a href="https://jellyfin.org/downloads/server" target="_blank" rel="noopener noreferrer">downloads page</a> and will be going forward. We're also taking steps to get a packaged FFmpeg build provided there too, so stay tuned.</p>
<p>Unstable users on Fedora/CentOS are recommended to stick with the Docker container instead, as this both bundles FFmpeg today and helps ensure speedy upgrades.</p>
</li>
<li>
<p>We are finaly adding GHCR (ghcr.io) support for our Docker images. This will help ensure that, even if something were to happen to Docker Hub, there is another source for our Docker images. If you wish to, you can use this source immediately for Unstable builds, and for 10.9.0 when it is released.</p>
</li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="the-1090-release-cycle">The 10.9.0 release cycle<a href="https://jellyfin.org/posts/new-ci-new-repo#the-1090-release-cycle" class="hash-link" aria-label="Direct link to The 10.9.0 release cycle" title="Direct link to The 10.9.0 release cycle">​</a></h2>
<p>As we outlined <a href="https://github.com/jellyfin/jellyfin/discussions/11051" target="_blank" rel="noopener noreferrer">over in this GitHub discussion</a>, all these changes mean there will be some big changes for how we approach the 10.9.0 release cycle. To clarify things, the exact process will be as follows:</p>
<ol>
<li>
<p>Starting now, and moving forward indefinitely for all future releases, the Weekly Unstable builds will act as the "beta" versions. That is to say, if you want to help us test, or just keep up with all the latest and greatest features, use the Unstable releases. The instructions found on <a href="https://jellyfin.org/downloads/server" target="_blank" rel="noopener noreferrer">our Downloads page</a> still apply for enabling Unstable builds, as well as listing all of our supported Unstable platforms.</p>
</li>
<li>
<p>As we approach the planned release date, we will begin a feature freeze. While in the feature freeze, only bugfix PRs will be accepted. We expect this to last between 3 and 5 weeks. Currently, the tentative start is <strong>Monday, March 18th</strong>. During the freeze, the Unstable builds should be consistent and working, with only the minor fixes being merged.</p>
</li>
<li>
<p>As users, please be diligent about reporting bugs in the Unstable releases. Our Triage team has been very diligent these last few months at ensuring issues are triaged and looked at, so it is vitally important that anyone using the Unstable releases properly reports their bugs!</p>
</li>
<li>
<p>As we approach stability, i.e. after the 3-5 weeks of frozen bug-fixing, we will make the decision to cut the actual final release. I am personally hoping to get this done during the weekend of April 27-28, but that may change depending on how things go during the freeze.</p>
</li>
<li>
<p>The release will actually happen. We will cut a fresh release branch, tag the version, and - using the new CI above - perform the release. We do want to ensure that <strong>any 3rd parties who might trigger off of a Tag event</strong> on our repositories <em>please turn this off</em> for this release, as we fully expect to hit at least one or two roadblocks as we run through the process "for real". Once the dust settles, we can ensure that your releases get built, just in case we need to do anything drastic like re-tagging the release. Longer-term, we'll also come up with a better coordination process, so we'd like to ensure we work with any 3rd party maintainers to assist here - please reach out.</p>
</li>
<li>
<p>At that point, master will resume normal operation, and we will begin the stable point bugfix cycle for 10.9.0. We hope that with the improvements, 10.10.0 will not be a very long ways away after that, perhaps 3-6 months, after which this process will start anew.</p>
</li>
</ol>
<p>We are very nearly there, over 2 years in the making, so we wanted to ensure we spread the word about this plan as far and wide as possible, especially to help get more people testing the new Unstable builds for bugs as we prepare for the final release!</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="final-thoughts">Final thoughts<a href="https://jellyfin.org/posts/new-ci-new-repo#final-thoughts" class="hash-link" aria-label="Direct link to Final thoughts" title="Direct link to Final thoughts">​</a></h2>
<p>That basically concludes my thoughts right now, both on the roadmap to 10.9.0 and the improvements we're making and have already made to the release process. Happy watching!</p>]]></content:encoded>
            <category>release</category>
            <category>infrastructure</category>
        </item>
        <item>
            <title><![CDATA[Jellyfin Android 2.6]]></title>
            <link>https://jellyfin.org/posts/android-v2.6.0</link>
            <guid>https://jellyfin.org/posts/android-v2.6.0</guid>
            <pubDate>Tue, 12 Dec 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[Improvements to the Jellyfin mobile experience are here. A new update for the Jellyfin Android app is ready! Read along to learn everything]]></description>
            <content:encoded><![CDATA[<p>Improvements to the Jellyfin mobile experience are here. A new update for the Jellyfin Android app is ready! Read along to learn everything
new in this update!</p>
<p>- Niels &amp; Max</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="whats-new">What's new<a href="https://jellyfin.org/posts/android-v2.6.0#whats-new" class="hash-link" aria-label="Direct link to What's new" title="Direct link to What's new">​</a></h2>
<p>The focus of this update is maintenance. We've fixed various bugs and made sure the app works on newer Android versions. Noticeable is the
improved connection screen that now remembers your previously connected servers, making it a lot easier to switch between them.</p>
<center><img src="https://jellyfin.org/assets/images/server-selection-60beeb001ebc252ac09e92744c5200be.png" alt="Screenshot of the server selection in the Android app" style="max-height:600px"></center>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="full-release-notes">Full release notes<a href="https://jellyfin.org/posts/android-v2.6.0#full-release-notes" class="hash-link" aria-label="Direct link to Full release notes" title="Direct link to Full release notes">​</a></h3>
<p>The complete list of changes for this release, including their respective pull requests, can be found on
<a href="https://github.com/jellyfin/jellyfin-android/releases/tag/v2.6.0" target="_blank" rel="noopener noreferrer">GitHub</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="contributors">Contributors<a href="https://jellyfin.org/posts/android-v2.6.0#contributors" class="hash-link" aria-label="Direct link to Contributors" title="Direct link to Contributors">​</a></h2>
<p>Jellyfin is developed by volunteer contributors, and we couldn't do without their great skills and dedication. They don't get paid by any
organizations, so consider donating if you appreciate their work. A big shout-out to all contributors that made this release possible:</p>
<p><strong>Jellyfin Team</strong></p>
<ul>
<li><a href="https://github.com/Maxr1998" target="_blank" rel="noopener noreferrer">@Maxr1998</a> - Sponsor via <a href="https://github.com/sponsors/Maxr1998" target="_blank" rel="noopener noreferrer">GitHub sponsors</a></li>
<li><a href="https://github.com/nielsvanvelzen" target="_blank" rel="noopener noreferrer">@nielsvanvelzen</a> - Sponsor via <a href="https://github.com/sponsors/nielsvanvelzen" target="_blank" rel="noopener noreferrer">GitHub sponsors</a></li>
</ul>
<p><strong>Other contributors</strong></p>
<ul>
<li><a href="https://github.com/timm0e" target="_blank" rel="noopener noreferrer">@timm0e</a></li>
<li><a href="https://github.com/jmarcet" target="_blank" rel="noopener noreferrer">@jmarcet</a></li>
</ul>
<p>We'd also like to thank everyone who reported bugs, provided feedback and participated in beta testing! The feedback we received made this
our most stable release to date.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="helping-out">Helping out<a href="https://jellyfin.org/posts/android-v2.6.0#helping-out" class="hash-link" aria-label="Direct link to Helping out" title="Direct link to Helping out">​</a></h3>
<p>If you have some experience with Android development or with Kotlin and are interested in contributing yourself, feel free to dive into the
source code <a href="https://github.com/jellyfin/jellyfin-android" target="_blank" rel="noopener noreferrer">on GitHub</a> and open pull requests.</p>
<p>Alternatively, you can help with translating the app into your language on our
<a href="https://translate.jellyfin.org/engage/jellyfin-android/" target="_blank" rel="noopener noreferrer">Weblate</a> instance.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="downloads">Downloads<a href="https://jellyfin.org/posts/android-v2.6.0#downloads" class="hash-link" aria-label="Direct link to Downloads" title="Direct link to Downloads">​</a></h2>
<p>Update your app now to check out all these changes! The app stores will auto-update your Jellyfin app if you're already using the app. For
new users, you can find the app here:</p>
<a class="margin-right--md" href="https://play.google.com/store/apps/details?id=org.jellyfin.mobile"><img width="153" alt="Jellyfin on Google Play" src="https://jellyfin.org/images/store-icons/google-play.png"></a>
<a class="margin-right--md" href="https://www.amazon.com/gp/product/B081RFTTQ9"><img width="153" alt="Jellyfin at Amazon App Store" src="https://jellyfin.org/images/store-icons/amazon.png"></a>
<a href="https://f-droid.org/en/packages/org.jellyfin.mobile/"><img width="153" alt="Jellyfin on F-Droid" src="https://jellyfin.org/images/store-icons/fdroid.png"></a>
<p>Direct downloads are available for sideloading at <a href="https://repo.jellyfin.org/releases/client/android/" target="_blank" rel="noopener noreferrer">repo.jellyfin.org</a>
or in the <a href="https://github.com/jellyfin/jellyfin-android/releases/tag/v2.6.0" target="_blank" rel="noopener noreferrer">GitHub release assets</a>.</p>
<p>You can also join our <a href="https://play.google.com/apps/testing/org.jellyfin.mobile" target="_blank" rel="noopener noreferrer">beta program on Google Play</a> and help test new versions
before they're released to the public.</p>]]></content:encoded>
            <category>release</category>
            <category>android</category>
        </item>
        <item>
            <title><![CDATA[Roku Version 2.0.0]]></title>
            <link>https://jellyfin.org/posts/roku-200</link>
            <guid>https://jellyfin.org/posts/roku-200</guid>
            <pubDate>Mon, 11 Dec 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[I Want a Rokupotamus for Christmas]]></description>
            <content:encoded><![CDATA[<p>When we say this 2.0.0 release is a major milestone, we honestly mean it. New features and bug fixes abound, but even behind the scenes the updates continue all the way to the foundation with us updating every single file in the app to support a new programming language. You can't get more monumental than that!</p>
<p>Read more to learn about some of the exciting new features.</p>
<p>- 1hitsong</p>
<!-- -->
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-user-select-screen--auto-login">👥 User Select Screen / Auto Login<a href="https://jellyfin.org/posts/roku-200#-user-select-screen--auto-login" class="hash-link" aria-label="Direct link to 👥 User Select Screen / Auto Login" title="Direct link to 👥 User Select Screen / Auto Login">​</a></h3>
<p><img decoding="async" loading="lazy" alt="Screenshot of the user select screen in the Jellyfin Roku app" src="https://jellyfin.org/assets/images/UserSelect-f867a0917a70e484d3f525d07b2de631.gif" width="925" height="519" class="img_ev3q"></p>
<p>When launching the Jellyfin app, it now presents you with the list of public users and any private users with saved credentials for you to login as.</p>
<p>If you prefer to have the app automatically login as a specific user, simply login as them and enable the new global Remember Me setting. With this global setting enabled, the app will automatically login as this user at the start of the Jellyfin app without needing to select them or enter a password.</p>
<p><strong>Note:</strong> Users upgrading from 1.6.6 will automatically have this global setting enabled and will automatically login as the last user logged in to the 1.6.6 app.</p>
<p><img decoding="async" loading="lazy" alt="Screenshot of the new Remember Me global setting" src="https://jellyfin.org/assets/images/RememberMe-5504b50c4c5f7097ef8178dd0999d6ad.jpg" width="1920" height="1080" class="img_ev3q"></p>
<p>Additionaly the code behind the login form has been updated to remove several annoying bugs. Unlike before, access for all remembered users will continue to work even when other users log in and out. Also, the What's New popup will now appear for all users on their 1st login of a new app version.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-on-screen-display-osd">🎥 On Screen Display (OSD)<a href="https://jellyfin.org/posts/roku-200#-on-screen-display-osd" class="hash-link" aria-label="Direct link to 🎥 On Screen Display (OSD)" title="Direct link to 🎥 On Screen Display (OSD)">​</a></h3>
<p><img decoding="async" loading="lazy" alt="Screenshot of the new On Screen Display (OSD)" src="https://jellyfin.org/assets/images/OSD-a17e35ca2f898f6adcdf8f061a595c82.jpg" width="908" height="529" class="img_ev3q"></p>
<p>The new OSD provides quick access to the new chapter navigation functions, and is also the new way to access the playback info and subtitle section popups. This is only the start for the OSD. We have a lot of new and exciting functions we will be adding in the future!</p>
<p>To access the menu simply press either UP, DOWN, OK, or PAUSE while in the video player. Like we said, the menus you previously accessed by pressing UP or DOWN are now available from the OSD.</p>
<p><strong>Note:</strong> The video position bar is not currently selectable from the OSD. It is informational only for now.</p>
<p>If you want to step through the video position, simply press LEFT or RIGHT when the OSD is not on the screen, just like it's always been before. Rewind and Fast Forward also operate the same way. Simply press the button on the remote when the OSD is not shown.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-music-video-support">🎸 Music Video Support<a href="https://jellyfin.org/posts/roku-200#-music-video-support" class="hash-link" aria-label="Direct link to 🎸 Music Video Support" title="Direct link to 🎸 Music Video Support">​</a></h3>
<p><img decoding="async" loading="lazy" alt="Screenshot of Latest in Music Videos on the home view" src="https://jellyfin.org/assets/images/MusicVideos-80ce6988f1f7dc9787d9078e6deb2f5d.jpg" width="1920" height="1080" class="img_ev3q"></p>
<p>Support for Music Videos has been added. If the user has access to the Music Videos library, it will appear in the My Media section and the Latest videos will show on the home view.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="️-quickplay-support-expanded-to-entire-app">🏎️ Quickplay Support Expanded To Entire App<a href="https://jellyfin.org/posts/roku-200#%EF%B8%8F-quickplay-support-expanded-to-entire-app" class="hash-link" aria-label="Direct link to 🏎️ Quickplay Support Expanded To Entire App" title="Direct link to 🏎️ Quickplay Support Expanded To Entire App">​</a></h3>
<p>Stop wasting time and get your media playing ASAP!</p>
<p>Quickplay support is now across the entire app. Simply highlight an item and press play on your remote. The client will then queue up to 2000 items and start playing.</p>
<p>TV season? Check. Playlist? Check. Your favorite actor? Check. Your music library for a week long rager? Ya' better believe check.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-tv-show-season-extras-support">📺 TV Show Season Extras Support<a href="https://jellyfin.org/posts/roku-200#-tv-show-season-extras-support" class="hash-link" aria-label="Direct link to 📺 TV Show Season Extras Support" title="Direct link to 📺 TV Show Season Extras Support">​</a></h3>
<p><img decoding="async" loading="lazy" alt="Screenshot showing access to TV show season extras" src="https://jellyfin.org/assets/images/Extras-0c56d1f628dff1324275b8a0883f7570.gif" width="921" height="514" class="img_ev3q"></p>
<p>You can now access TV show season extras in the Jellyfin Roku app. Simply navigate to a season of a TV show and if Jellyfin has found extras, a new button labeled Extras will appear on the left side of the screen under the Shuffle button. Clicking it will toggle between viewing a list of episodes and a list of extras. Simply click on an extra to start watching.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-tv-episode-version-support">📺 TV Episode Version Support<a href="https://jellyfin.org/posts/roku-200#-tv-episode-version-support" class="hash-link" aria-label="Direct link to 📺 TV Episode Version Support" title="Direct link to 📺 TV Episode Version Support">​</a></h3>
<p><img decoding="async" loading="lazy" alt="Screenshot showing access to TV show season extras" src="https://jellyfin.org/assets/images/EpisodeVersions-7349125ba4b2c903239ea1218e0a0ad8.jpg" width="1920" height="1080" class="img_ev3q"></p>
<p>Have different versions of a TV episode? You can now select and watch the version you want. On the list of episodes, highlight the episode you want and press * on your remote. The option popup now provides not only audio options, but also version options.</p>
<p><strong>Note:</strong> If one of the Videos has different audio options, the user must select the desired video version, exit options, then press * again to see the updated audio options.</p>
<p><strong>Note:</strong> As of this writing, the only way to generate episode versions is in the Android app or using the API.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-search-honors-library-permissions">🔍 Search Honors Library Permissions<a href="https://jellyfin.org/posts/roku-200#-search-honors-library-permissions" class="hash-link" aria-label="Direct link to 🔍 Search Honors Library Permissions" title="Direct link to 🔍 Search Honors Library Permissions">​</a></h3>
<p><img decoding="async" loading="lazy" alt="Screenshot showing before and after search view" src="https://jellyfin.org/assets/images/SearchPermissions-3d87908a7405d1dc62879850bebbec36.jpg" width="620" height="692" class="img_ev3q"></p>
<p>Search in Roku now honors library access permissions. If a user doesn't have access to a library, items in that library are no longer returned in search results.</p>
<p>The screenshot above shows what search results look like if a user does not have access to the movie library.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-use-web-clients-home-section-arrangement-setting">🔢 Use Web Client's Home Section Arrangement Setting<a href="https://jellyfin.org/posts/roku-200#-use-web-clients-home-section-arrangement-setting" class="hash-link" aria-label="Direct link to 🔢 Use Web Client's Home Section Arrangement Setting" title="Direct link to 🔢 Use Web Client's Home Section Arrangement Setting">​</a></h3>
<p><img decoding="async" loading="lazy" alt="Screenshot of Latest in Music Videos on the home view" src="https://jellyfin.org/assets/images/HomeSections-82790f25d5e23e06a12f2062c132faca.jpg" width="897" height="384" class="img_ev3q"></p>
<p>A new setting has been added under User Interface &gt; General &gt; Use Web Client's Home Section Arrangement. This setting causes the order of the home sections in the Roku app to match the order of the home sections as set in the server settings.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="and-on-and-on-and-on">...and on, and on, and on<a href="https://jellyfin.org/posts/roku-200#and-on-and-on-and-on" class="hash-link" aria-label="Direct link to ...and on, and on, and on" title="Direct link to ...and on, and on, and on">​</a></h2>
<ul>
<li>Native support for the AV1 codec (no more user setting)</li>
<li>Boxsets now sorted by release date by default</li>
<li>View your music library by Album Artists</li>
<li>Custom subtitle support (required for CJK support) expanded</li>
<li>Alpha menu now wraps from bottom to top &amp; top to bottom</li>
<li>When connecting to a new server, automatically attempt connection using default protocols and ports if not specified</li>
<li>Updated loading spinner similar to the video player spinner</li>
<li>Use TV show posters (if available) instead of channel posters for the "On Now" home section</li>
<li>Device Profile has been rewritten and improved</li>
<li>Improved "Next Episode" button logic</li>
<li>Movie and music libraries now sorted A to Z by default</li>
<li>Fixed several bugs that could crash the app</li>
<li>Many (oh so many) bug fixes</li>
</ul>
<p>There are simply too many amazing things in this release to name them all! To read the full list of changes, please read the full <a href="https://github.com/jellyfin/jellyfin-roku/releases/tag/v2.0.0" target="_blank" rel="noopener noreferrer">release notes</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-contributors">👥 Contributors<a href="https://jellyfin.org/posts/roku-200#-contributors" class="hash-link" aria-label="Direct link to 👥 Contributors" title="Direct link to 👥 Contributors">​</a></h2>
<p>Jellyfin apps are developed by our great contributors and we couldn't do it without them. Everyone is a volunteer that
doesn't get paid by any organizations, so consider donating if you appreciate their work. A big shout-out to all
contributors that made this release possible:</p>
<p><strong>Jellyfin Team</strong></p>
<ul>
<li><a href="https://github.com/1hitsong" target="_blank" rel="noopener noreferrer">@1hitsong</a> - Sponsor via <a href="https://github.com/sponsors/1hitsong" target="_blank" rel="noopener noreferrer">GitHub sponsors</a></li>
<li><a href="https://github.com/cewert" target="_blank" rel="noopener noreferrer">@cewert</a> - Sponsor via <a href="https://github.com/sponsors/cewert" target="_blank" rel="noopener noreferrer">GitHub sponsors</a></li>
<li><a href="https://github.com/jimdogx" target="_blank" rel="noopener noreferrer">@jimdogx</a></li>
<li><a href="https://github.com/neilsb" target="_blank" rel="noopener noreferrer">@neilsb</a></li>
</ul>
<p><strong>Other contributors</strong></p>
<ul>
<li><a href="https://github.com/alanazar" target="_blank" rel="noopener noreferrer">@alanazar</a></li>
<li><a href="https://github.com/ApexArray" target="_blank" rel="noopener noreferrer">@ApexArray</a></li>
<li><a href="https://github.com/arturocuya" target="_blank" rel="noopener noreferrer">@arturocuya</a></li>
<li><a href="https://github.com/candry7731" target="_blank" rel="noopener noreferrer">@candry7731</a></li>
<li><a href="https://github.com/iBicha" target="_blank" rel="noopener noreferrer">@iBicha</a></li>
<li><a href="https://github.com/JarodTAerts" target="_blank" rel="noopener noreferrer">@JarodTAerts</a></li>
<li><a href="https://github.com/Klikini" target="_blank" rel="noopener noreferrer">@Klikini</a></li>
<li><a href="https://github.com/matty-r" target="_blank" rel="noopener noreferrer">@matty-r</a></li>
<li><a href="https://github.com/pau1h" target="_blank" rel="noopener noreferrer">@pau1h</a></li>
<li><a href="https://github.com/photonconvergence" target="_blank" rel="noopener noreferrer">@photonconvergence</a></li>
<li><a href="https://github.com/sevenrats" target="_blank" rel="noopener noreferrer">@sevenrats</a></li>
<li><a href="https://github.com/tharvik" target="_blank" rel="noopener noreferrer">@tharvik</a></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-downloads--changelog">💾 Downloads &amp; Changelog<a href="https://jellyfin.org/posts/roku-200#-downloads--changelog" class="hash-link" aria-label="Direct link to 💾 Downloads &amp; Changelog" title="Direct link to 💾 Downloads &amp; Changelog">​</a></h2>
<p>Requires minimum server version of 10.8.1</p>
<p>The complete list of changes for this release, including all merged pull requests, can be found on
<a href="https://github.com/jellyfin/jellyfin-roku/releases/tag/v2.0.0" target="_blank" rel="noopener noreferrer">GitHub</a>.</p>
<p>Your installed Jellyfin channel should automatically update once available or you can install Jellyfin
from the <a href="https://channelstore.roku.com/details/592369/jellyfin" target="_blank" rel="noopener noreferrer">Roku store</a>.</p>]]></content:encoded>
            <category>release</category>
            <category>roku</category>
        </item>
        <item>
            <title><![CDATA[Android TV version 0.16]]></title>
            <link>https://jellyfin.org/posts/androidtv-v0.16.0</link>
            <guid>https://jellyfin.org/posts/androidtv-v0.16.0</guid>
            <pubDate>Sun, 10 Dec 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[It has been a busy year with a lot of work on the Android TV app. After an extended beta period today is finally the day to share this work]]></description>
            <content:encoded><![CDATA[<p>It has been a busy year with a lot of work on the Android TV app. After an extended beta period today is finally the day to share this work
to the public. Read along to learn everything about improved music playback, the new screensaver and more!</p>
<p>- Niels</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="significant-changes">Significant changes<a href="https://jellyfin.org/posts/androidtv-v0.16.0#significant-changes" class="hash-link" aria-label="Direct link to Significant changes" title="Direct link to Significant changes">​</a></h2>
<p>In this post I will focus on a few of the popular and significant changes. As always, a lot more changes were made both visible and
invisible; check out the full changelog to discover the full extent of this release.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="music-playback">Music playback<a href="https://jellyfin.org/posts/androidtv-v0.16.0#music-playback" class="hash-link" aria-label="Direct link to Music playback" title="Direct link to Music playback">​</a></h3>
<p>Playing media is the key feature of Jellyfin. Up until now the Android TV app had many issues playing every possible format. The code
was also hard to work with making it challenging to fix the issues or implement new features. To counter this we decided to rewrite all
playback code completely from scratch. In this release the initial results are ready for daily use and playing music will use the new
playback code!</p>
<p>While a lot of this work is not directly noticable when using the app, some of it is. Crashes should now be uncommon, starting music is
faster and the remote control now responds more reliably. We've also added media sessions, this allows you to play/pause from other
applications on your TV or even your smartphone!</p>
<p>Improved codec detection should reduce transcoding and use direct play more often resulting in faster playback with less strain on the
Jellyfin server. We already have plans to improve this even more and add preferences to fine-tune this for your specific devices. Other
planned features include showing lyrics, enabling SyncPlay and gapless playback support.</p>
<p>Work has already started to rework video playback based on this new code so we can add all kinds of new features with ease in a shared
code base for both video and audio playback.</p>
<p><img decoding="async" loading="lazy" alt="Screenshot of the screensaver during music playback in the Android TV app" src="https://jellyfin.org/assets/images/screensaver-music-73aa0b25b0b7949c186e4280a25fc714.png" width="1920" height="1080" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="screensaver">Screensaver<a href="https://jellyfin.org/posts/androidtv-v0.16.0#screensaver" class="hash-link" aria-label="Direct link to Screensaver" title="Direct link to Screensaver">​</a></h3>
<p>The screensaver has received some nice additions. It was redesigned to be faster, with better animations and a much nicer appearance.
Alongside this redesign, new functionality was added. Music playback has been added to the screensaver, replacing the old screensaver from
the 'now playing' screen. Additionally, the screensaver is now enabled by default when the app is open, eliminating the need to enable it
system-wide.</p>
<p>And the best part: the screensaver now works when the video player is paused!</p>
<p><img decoding="async" loading="lazy" alt="Screenshot of the screensaver in the Android TV app" src="https://jellyfin.org/assets/images/screensaver-e638d28a53c0dc92704e88b3e903502a.png" width="1920" height="1080" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="search">Search<a href="https://jellyfin.org/posts/androidtv-v0.16.0#search" class="hash-link" aria-label="Direct link to Search" title="Direct link to Search">​</a></h3>
<p>The search screen was partially rewritten to improve performance. It will now cancel any pending search requests while typing and use
a different method for getting the results. With these changes, a search on a large server is now noticeably faster and no flickering
occurs anymore.</p>
<p><img decoding="async" loading="lazy" alt="Screenshot of the search view in the Android TV app" src="https://jellyfin.org/assets/images/search-4453bc9525bf0cf46d379e18209a843e.png" width="1920" height="1080" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="full-release-notes">Full release notes<a href="https://jellyfin.org/posts/androidtv-v0.16.0#full-release-notes" class="hash-link" aria-label="Direct link to Full release notes" title="Direct link to Full release notes">​</a></h3>
<p>The complete list of changes (over one hundred!) for this release, including their respective pull requests, can be found on
<a href="https://github.com/jellyfin/jellyfin-androidtv/releases/tag/v0.16.0" target="_blank" rel="noopener noreferrer">GitHub</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="contributors">Contributors<a href="https://jellyfin.org/posts/androidtv-v0.16.0#contributors" class="hash-link" aria-label="Direct link to Contributors" title="Direct link to Contributors">​</a></h2>
<p>Jellyfin is developed by volunteer contributors, and we couldn't do without their great skills and dedication. They don't get paid by any
organizations, so consider donating if you appreciate their work. A big shout-out to all contributors that made this release possible:</p>
<p><strong>Jellyfin Team</strong></p>
<ul>
<li><a href="https://github.com/nielsvanvelzen" target="_blank" rel="noopener noreferrer">@nielsvanvelzen</a> - Sponsor via <a href="https://github.com/sponsors/nielsvanvelzen" target="_blank" rel="noopener noreferrer">GitHub sponsors</a></li>
<li><a href="https://github.com/thornbill" target="_blank" rel="noopener noreferrer">@thornbill</a> - Sponsor via <a href="https://github.com/sponsors/thornbill" target="_blank" rel="noopener noreferrer">GitHub sponsors</a></li>
<li><a href="https://github.com/1337joe" target="_blank" rel="noopener noreferrer">@1337joe</a> - Sponsor via <a href="https://github.com/sponsors/1337joe" target="_blank" rel="noopener noreferrer">GitHub sponsors</a></li>
</ul>
<p><strong>Other contributors</strong></p>
<ul>
<li><a href="https://github.com/DoggoOfSpeed" target="_blank" rel="noopener noreferrer">@DoggoOfSpeed</a></li>
<li><a href="https://github.com/DavidFair" target="_blank" rel="noopener noreferrer">@DavidFair</a></li>
<li><a href="https://github.com/Clubfan22" target="_blank" rel="noopener noreferrer">@Clubfan22</a></li>
<li><a href="https://github.com/MWisBest" target="_blank" rel="noopener noreferrer">@MWisBest</a></li>
<li><a href="https://github.com/teobaranga" target="_blank" rel="noopener noreferrer">@teobaranga</a></li>
<li><a href="https://github.com/tim-vk" target="_blank" rel="noopener noreferrer">@tim-vk</a></li>
<li><a href="https://github.com/OctoNezd" target="_blank" rel="noopener noreferrer">@OctoNezd</a></li>
<li><a href="https://github.com/polson" target="_blank" rel="noopener noreferrer">@polson</a></li>
<li><a href="https://github.com/mohd-akram" target="_blank" rel="noopener noreferrer">@mohd-akram</a></li>
<li><a href="https://github.com/horizon1250" target="_blank" rel="noopener noreferrer">@horizon1250</a></li>
<li><a href="https://github.com/reacocard" target="_blank" rel="noopener noreferrer">@reacocard</a></li>
</ul>
<p>We'd also like to thank everyone who reported bugs, provided feedback and participated in beta testing! The feedback we received made this
our most stable release to date.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="helping-out">Helping out<a href="https://jellyfin.org/posts/androidtv-v0.16.0#helping-out" class="hash-link" aria-label="Direct link to Helping out" title="Direct link to Helping out">​</a></h3>
<p>If you have some experience with Android TV development or with Kotlin and are interested in contributing yourself,
feel free to dive into the source code <a href="https://github.com/jellyfin/jellyfin-androidtv" target="_blank" rel="noopener noreferrer">on GitHub</a> and open pull requests.</p>
<p>Alternatively, you can help with translating the app into your language on our
<a href="https://translate.jellyfin.org/engage/jellyfin-android/" target="_blank" rel="noopener noreferrer">Weblate</a> instance.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="downloads">Downloads<a href="https://jellyfin.org/posts/androidtv-v0.16.0#downloads" class="hash-link" aria-label="Direct link to Downloads" title="Direct link to Downloads">​</a></h2>
<p>Update your app now to check out all these changes! The app stores will auto-update your Jellyfin app if you're already using the app. For
new users, you can find the app here:</p>
<a class="margin-right--md" href="https://play.google.com/store/apps/details?id=org.jellyfin.androidtv"><img width="153" alt="Jellyfin for Android TV on Google Play" src="https://jellyfin.org/images/store-icons/google-play.png"></a>
<a class="margin-right--md" href="https://www.amazon.com/gp/product/B07TX7Z725"><img width="153" alt="Jellyfin for Fire TV at Amazon App Store" src="https://jellyfin.org/images/store-icons/amazon.png"></a>
<a href="https://f-droid.org/en/packages/org.jellyfin.androidtv/"><img width="153" alt="Jellyfin for Android TV on F-Droid" src="https://jellyfin.org/images/store-icons/fdroid.png"></a>
<p>Direct downloads are available for sideloading at <a href="https://repo.jellyfin.org/releases/client/androidtv/" target="_blank" rel="noopener noreferrer">repo.jellyfin.org</a>
or in the <a href="https://github.com/jellyfin/jellyfin-androidtv/releases/tag/v0.16.0" target="_blank" rel="noopener noreferrer">GitHub release assets</a>.</p>
<p>You can also join our <a href="https://play.google.com/apps/testing/org.jellyfin.androidtv" target="_blank" rel="noopener noreferrer">beta program on Google Play</a> and help test new versions
before they're released to the public.</p>]]></content:encoded>
            <category>release</category>
            <category>android-tv</category>
        </item>
        <item>
            <title><![CDATA[Jellyfin Security & You]]></title>
            <link>https://jellyfin.org/posts/jellyfin-security-and-you</link>
            <guid>https://jellyfin.org/posts/jellyfin-security-and-you</guid>
            <pubDate>Sun, 26 Nov 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[We have removed GUI FFmpeg configuration in 10.8.13: here's what you must know.]]></description>
            <content:encoded><![CDATA[<p>We have just released our 10.8.13 stable version. This release fixes two serious security vulnerabilities, which will be detailed in full in approximately 1-2 weeks. Please be advised to update your Jellyfin instances as soon as possible before these vulnerabilities are released publicly.</p>
<!-- -->
<p>As part of this release, we have made a change to the behaviour of the "FFmpeg path" GUI configuration option in Jellyfin. Specifically, in version 10.8.13, this functionality has been disabled, and will be fully replaced in the next major version (10.9.0). Editing this value in the GUI in 10.8.13 or later will not change it. In the short term, those wishing to make further changes to their FFmpeg binary must do so by editing the <code>encoding.xml</code> configuration file instead of using the GUI, and the server must be restarted after making the change. Note too that the <code>--ffmpeg</code> flag may or may not change this for you, depending on what version you originally installed; while you should change it to match, you may still need to update the XML file as well.</p>
<p>This feature/option stems from Emby 3.5 and the very earliest days of Jellyfin, when user configuration of a custom FFmpeg was much more common and often required, especially to provide hardware acceleration or a newer version than the host operating system provided. However, at this point, it is our belief that this is a very uncommonly-used feature, with most servers using our default <code>jellyfin-ffmpeg</code> packages, and thus we believe the impact from this change is minimal. The change also does not affect existing installs or non-default configurations of this value; those are preserved, and only future changes in the GUI are blocked.</p>
<p>Thankfully for our users, this option has always required administrator privileges to the Jellyfin instance, and thus required an abusive administrator to leverage for nefarious purposes. We are aware that this change violates Semantic versioning standards, but after having several vulnerabilities in 10.8 that either include or potentially include this endpoint as a vector, we have decided to remove it now to avoid any potential further exposure for our users while we continue to work towards 10.9.0. While we have not completely decided how this functionality will be implemented there, it will similarly require reconfiguration outside of the application and a server restart to provide safety and security.</p>
<p>Lastly, we want to remind all users that <strong>granting administrator access to a Jellyfin server is, in many ways, tantamount to granting them shell access</strong>. An administrative user has the power to do many dangerous and destructive actions, such as deleting files or overwriting configurations, even with this feature removed; plugins may also grant even more access, including full shell access should the plugin decide to. Thus it is always best to be safe and avoid handing this privilege out except when absolutely required, and <strong>only grant administrator privileges to people you trust and to accounts with strong passwords</strong>. Further, we recommend that you do not use an administrative user for day-to-day usage, especially in any client applications, just in case of future vulnerabilities in these applications.</p>]]></content:encoded>
            <category>security</category>
        </item>
        <item>
            <title><![CDATA[A Call for Developers]]></title>
            <link>https://jellyfin.org/posts/a-call-for-developers</link>
            <guid>https://jellyfin.org/posts/a-call-for-developers</guid>
            <pubDate>Sun, 01 Oct 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[Jellyfin needs your help to get better, so join us this October and beyond!]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="I want YOU to contribute to Jellyfin" src="https://jellyfin.org/assets/images/contribute-to-jellyfin-2984009804f0e7484a1142ea1d0b20b0.jpg" width="500" height="671" class="img_ev3q"></p>
<p>This year, DigitalOcean's <a href="https://hacktoberfest.com/" target="_blank" rel="noopener noreferrer">Hacktoberfest</a> is in it's 10th year. In previous years, we haven't made too much of it, but within our project, this is our most important year yet.</p>
<p>We'd like to call on you, the wider community, to help make Jellyfin better! We need contributors, fresh ideas and blood to help the project move past our current funk and into something more.</p>
<p>Will you join us?</p>
<!-- -->
<p>We keep a close eye on the buzz about Jellyfin around Reddit and the Internet more broadly; in the last couple weeks we have seen a few major Plex-related kerfufles and the comments inevitably include the following exchange:</p>
<p>Person A: Use Jellyfin instead
Person B: Jellyfin sucks, it lacks client X or feature Y
Person C: Works for me
Person D: It needs polish and more apps</p>
<p>Sometimes one of us will jump in, but I think it's high time for us to make a public request for something that's been on our minds as a team for quite a while.</p>
<p>For those who are not aware, Jellyfin is a bit unusual, even within the FLOSS world. We are <em>explicitly anti-commercial</em>. Our team is entirely composed of volunteers who contribute because they like what we're doing and can help out in whatever ways they can. This includes developers, translators, and community members who help moderate the community and assist others in troubleshooting and working through problems.</p>
<p>No one gets paid for Jellyfin work, by design. We're not backed by any company or "organization" with its own agenda. We have no "monetization plan" or anything of the sort, and actively avoid bug bounties. Jellyfin isn't a "product" in the commercial sense of the word. And while we do take donations, these <em>only</em> cover our infrastructure costs and the rare piece of developer client hardware as needed; we don't pay developers out of donations, and never will. Money is not an issue (for what we use it for), and that's not really what we need. This is a choice we've made from day 1 to avoid Jellyfin following in the footsteps of nearly every other player in this space, who start out as FLOSS, start adding user-hostile features in the name of money, and then go closed source. We want to be different. We want to be volunteer-only and work on this thing to help make media streaming available to everyone.</p>
<p>But, the team behind Jellyfin is under strain. We love what we do, and want to keep doing it. But our core contributor base is actually fairly small, at most about 30 active people, for everything - the core server, the webUI, and all of our clients. And it hasn't really grown in quite some time. Some of our developers have been with us since the early days, some joined later, but life sometimes gets in the way, and we've lost some over the years, so the number has been pretty flat for the last 3 years all together. For some parts of the project, especially individual apps, we have at most 1 or 2 people working on them, for free in their own time, because it "scratches their itch".</p>
<p>Some very-well-requested features/clients have gotten <em>no</em> traction at all, with no one coming in willing to start/help developing them. We've had to abandon some (like Chromecast for a while, though it's getting new life in the last few weeks) because of this.</p>
<p>We're aware that probably the biggest complaints about Jellyfin are about the lack of client support, and the rough edges/lack of polish. We do hear you. We do want this to improve this just as much as you do.</p>
<p>But we need people to help us do so. We need more volunteers who can help make the code better, write new code, document, and generally improve things. We need <strong>your</strong> help to push past what I call the <a href="https://www.boniface.me/problems-in-floss-3/" target="_blank" rel="noopener noreferrer">Development Bystander Problem</a>, get some new blood into the project, and especially, help to make it better!</p>
<p>So, this is our open call to the world: Jellyfin needs YOU!</p>
<p>Whether you're a developer, a writer, a UI/UX designer, a non-English-language speaker, or just an avid enthusiast willing to help out, no matter your experience level, we'd love the extra help.</p>
<p>We have <a href="https://jellyfin.org/contribute" target="_blank" rel="noopener noreferrer">some resources</a> to help you get started, and our <a href="https://jellyfin.org/contact" target="_blank" rel="noopener noreferrer">chat channels on Matrix/IRC/Discord</a> and the <a href="https://forum.jellyfin.org/" target="_blank" rel="noopener noreferrer">Forum</a> are quite active, with the team very happy to help new contributors.</p>
<p>Every little bit helps, from fixing a small bug to improving the documentation or working on a full client. We do have <a href="https://github.com/jellyfin/jellyfin-meta/blob/master/policies-and-procedures/new-team-member-nominations.md" target="_blank" rel="noopener noreferrer">a "track", so to speak</a>, for people to officially join the team as well: if this is something you want, it's absolutely possible after proving yourself with quality contributions of any kind and a willingness to participate.</p>
<p>We want to make Jellyfin better, and address our users' concerns, limitations, and bugs. We hope this post explains where we're at and helps inspire some new contributors to join the project and help us truly turn Jellyfin into the best streaming server it can be, free for everyone forever.</p>
<p>Thanks, and Happy Watching!</p>]]></content:encoded>
            <category>project</category>
        </item>
        <item>
            <title><![CDATA[The New Jellyfin Forum]]></title>
            <link>https://jellyfin.org/posts/new-forum</link>
            <guid>https://jellyfin.org/posts/new-forum</guid>
            <pubDate>Fri, 16 Jun 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[We've added a new, and hopefully improved, dedicated forum for our community]]></description>
            <content:encoded><![CDATA[<p>We are pleased to announce that we have created a new forum for the Jellyfin community:</p>
<p><a href="https://forum.jellyfin.org/" target="_blank" rel="noopener noreferrer">https://forum.jellyfin.org</a></p>
<p>You can see <a href="https://forum.jellyfin.org/welcome" target="_blank" rel="noopener noreferrer">the welcome message here</a> and <a href="https://forum.jellyfin.org/rules" target="_blank" rel="noopener noreferrer">the forum rules here</a>, or you can <a href="https://forum.jellyfin.org/register" target="_blank" rel="noopener noreferrer">jump right to registering here</a>, using either native forum registration or using an account from Discord, GitHub, Google, Reddit, StackExchange, or Twitter.</p>
<p>As part of this, we have also decided to close our Reddit community presence permanently. <a href="https://old.reddit.com/r/jellyfin/comments/14c2bfg/rjellyfin_is_now_closed_please_visit_us_at_our/" target="_blank" rel="noopener noreferrer">Please see the message there</a> for details.</p>
<p>If you just want to get registered and start posting, this is all you need. But if you're interested in our motivations, choices, and technical implementation, please read on!</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="motivations">Motivations<a href="https://jellyfin.org/posts/new-forum#motivations" class="hash-link" aria-label="Direct link to Motivations" title="Direct link to Motivations">​</a></h2>
<p>The Jellyfin project did previously have a forum, based on the Discourse forum software, but it fell into disuse for numerous reasons. For starters, very few of the active team members enjoyed participating in it,
and this was a period where we were not yet ready for the community to moderate itself. Further, many of us felt the software to be clunky to use and thus were hesitant to visit. Lastly, the result of these
two issues was that the forum effectively turned into a graveyard of help requests that went unanswered. It was due to this that we finally shut it down back in 2021 and moved exclusively to Reddit as our
"community forum".</p>
<p>However we were never truly satisfied with Reddit, nor with our other major discussion areas (Chat, GitHub), for the long-form and long-term discussions that are often required in a project of our size. So for quite
some time, we had been considering bringing a forum back to provide another avenue for discussion.</p>
<p>Then, the <a href="https://www.theverge.com/2023/6/8/23754780/reddit-api-updates-changes-news-announcements" target="_blank" rel="noopener noreferrer">recent issues surrounding Reddit as a platform</a> became very apparent. This sudden and shockingly brazen attempt
by that platform to kill its 3rd party clients, which most of the team make extensive use of, made us seriously reconsider its use as our primary social forum. As part of the site-wide protests we took the subreddit
private, and after a week with no compromise from the Reddit side, have decided to permanently close but leave visible the subreddit (i.e. make it read-only going forward).</p>
<p>As a response to all of the above, we finally decided to take the step to set up a new forum, so that we can build a place for the Jellyfin community - for development, support, and camaraderie - that is not
beholden to other platforms and their whims.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="choosing-a-forum-software">Choosing a Forum Software<a href="https://jellyfin.org/posts/new-forum#choosing-a-forum-software" class="hash-link" aria-label="Direct link to Choosing a Forum Software" title="Direct link to Choosing a Forum Software">​</a></h2>
<p>The first step of setting up a forum is, of course, to choose what software that forum will run on. After ruling out all proprietary options, we looked at several FLOSS forum tools, which basically boiled down into two
categories: "modern" forums, and "traditional" forums.</p>
<p>Modern forums include Discourse, and have some advantages like better performance. But their drawbacks include a user interface that is far more "gamified" and similar to a social network than a traditional forum, and
this is something we wanted to avoid. In particular, personally, I detested Discourse's UI and navigation, finding it very difficult to use, and this was a view shared by many on the team.</p>
<p>In contrast, traditional forums are the mainstay of the pre-"Platform" Internet. Anyone old enough to have been online in the 2000's through the mid 2010's remembers the traditional forum layout. And this is what
we feel is best for usability. While there is some dissent, we think that this option will be the ideal choice for our community coupled with a modern and responsive theme.</p>
<p>Having decided on the type of forum, we then looked at the options. The main two were phpBB, a very old mainstay, and MyBB, a newer alternative. After trying to setup phpBB and finding its themes and plugins lacking,
we went with myBB instead, and so far this has worked out well.</p>
<p>The last main aspect was theming. The theme makes the forum, from a UX and usability standpoint, and we wanted something that allowed some user customization (light and dark modes mostly), looked current, fit our
branding, and was responsive and mobile-friendly. We settled on <a href="https://community.mybb.com/mods.php?action=view&amp;pid=1037" target="_blank" rel="noopener noreferrer">a theme called Emerald</a>, which features both Light and Dark variants and a lot of
customizability to fit our brand, well worth the $25 cost. We've already made plenty of tweaks to the colours, templates, and layout, and are still fixing some bugs, but we are very happy with the results so far.</p>
<p>We've also enabled an expansive number of plugins, for instance nice URLs, custom emojis/reactions, etc., to maximize usability and consistency.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="user-layout-and-permissions">User Layout and Permissions<a href="https://jellyfin.org/posts/new-forum#user-layout-and-permissions" class="hash-link" aria-label="Direct link to User Layout and Permissions" title="Direct link to User Layout and Permissions">​</a></h2>
<p>The lack of moderator buy-in from our original forum was, as mentioned, a big pain point. So for our new forum, we've introduced an <em>expansive</em> moderation team to help ensure the forum runs smoothly.</p>
<p>There are effectively 4 categories of users:</p>
<ul>
<li>The <a href="https://jellyfin.org/docs/general/about#core-team" target="_blank" rel="noopener noreferrer">Jellyfin Leadership/Core team</a>, who will act as global moderators and administrators of the forum.</li>
<li>All other <a href="https://github.com/orgs/jellyfin/people" target="_blank" rel="noopener noreferrer">Jellyfin team members</a>, who will act as moderators across all forums.</li>
<li>A new subset, our Community Moderators, who have been chosen from among the wider community for their excellent reputation and work in helping users across various platforms, and will act as moderators across
all forums with a more limited permission set.</li>
<li>Finally, our users, will have a normal user permissions.</li>
</ul>
<p>I'll collectively refer to the first 3 groups as "Moderators" going forward in this post for simplicity.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="forum-layout">Forum Layout<a href="https://jellyfin.org/posts/new-forum#forum-layout" class="hash-link" aria-label="Direct link to Forum Layout" title="Direct link to Forum Layout">​</a></h2>
<p>The forum layout is a big thing to consider. One issue we had with Reddit as a forum is its lack of organization. While flairs help a lot, it is still a jumbled feed of numerous categories of discussion, and this
is something we definitely want to avoid with our forums.</p>
<p>The first main section is the "Announcements" category. This includes two forums: a "Forum Announcements" forum for the occasional forum announcement, rules thread, and welcome thread; and a "Release Announcements"
forum where the team will announce the releases of our various projects (server, clients, plugins, etc.). By separating these out, this allows us to create organized discussions around each release and permit
discussions while also acting as a source of "the latest news" for the community, in a way that the 2-sticky-limit of Reddit simply could not. Only Core members may post in the Forum Announcements forum, while
all Moderators can make threads in the Release Announcements forum and all users may post in those threads.</p>
<p>The next section is the "Support" category. This includes 3 parent forums as well as several subforums: a "Guides, Walkthroughs &amp; Tutorials" forum for helpful guides, from early stages all the way up to "good enough
for the official docs" as living documents; a "Themes &amp; Styles" forum for discussing styling and theming of Jellyfin (custom CSS, etc.); and a "Troubleshooting" forum for help with running Jellyfin.</p>
<p>Within "Troubleshooting", we still have not decided on a concrete forum structure, as we expect our needs here to change depending on how the community uses it. To start, we've left the main "Troubleshooting"
forum to handle all primarily-Jellyfin related troubleshooting, and have included two subforums for known-common but not-exactly-Jellyfin categories of help: "Networking &amp; Access" for help with VPNs, reverse proxies,
networking, and the like; and "Scanning &amp; Identifying" to help with issues related to media scanning, identification, etc.</p>
<p>Within each Troubleshooting forum is a stickied "Frequently Asked Questions" thread to act as a living document and list of common questions that are brought up and their solutions.</p>
<p>The next section is the "Development" category. This includes quite a number of forums dedicated to the development of Jellyfin, mostly of use to developers, including a large number of Client subforums. For end users,
the main forum of interest is "Feature Requests", which is a forum for discussing the feature requests present on <a href="https://features.jellyfin.org/" target="_blank" rel="noopener noreferrer">our Fider instance</a> in a long-form way not really suited to Fider itself.</p>
<p>The final section is the "Off Topic" category. In here you can find, at least to start, 3 forums: "General Discussion" for all manner of off-topic discussions (but keep it SFW as per our rules!); "Self-hosting &amp; Homelabs"
for discussions about your self-hosted services, homelabs, etc.; and "Media" for discussing your favourite media (but not where to get it, again as per our rules!). We may add more depending on the community's needs
and desires as time goes on, but we feel this is a good start.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="speeding-it-up">Speeding it up!<a href="https://jellyfin.org/posts/new-forum#speeding-it-up" class="hash-link" aria-label="Direct link to Speeding it up!" title="Direct link to Speeding it up!">​</a></h2>
<p>One thing we wanted to be sure of is that these forums could handle the load of our large community effectively. While we are somewhat limited in our ability to scale the core database and PHP backend, we were able
to leverage <a href="https://jellyfin.org/posts/mirrorbits-cdn" target="_blank" rel="noopener noreferrer">our content delivery network</a> for distributing the static assets, such as CSS, Javascript, and images, via more local servers across the globe. While that post
has not been updated since it was made, we currently have <a href="https://static.jellyfin.org/forum/images/favicon.ico?mirrorlist" target="_blank" rel="noopener noreferrer">a total of 9 mirror servers spread across 4 continents, one for each DigitalOcean datacenter</a>,
which will hopefully ensure speedy delivery of assets to everyone.</p>
<p>As the load picks up, we'll continue to evaluate our options, but we hope this will be sufficient enough for the first wave. But if the forums are down please don't fret, we'll get them fixed as soon as we can!</p>]]></content:encoded>
            <category>infrastructure</category>
        </item>
        <item>
            <title><![CDATA[Jellyfin Android 2.5.0]]></title>
            <link>https://jellyfin.org/posts/android-v2.5.0</link>
            <guid>https://jellyfin.org/posts/android-v2.5.0</guid>
            <pubDate>Sun, 14 May 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[Bitrate selection, player improvements and quality-of-life tweaks]]></description>
            <content:encoded><![CDATA[<p>It has been a long while since the last update, but after an extended beta testing period
with plenty of bug reports (thanks, by the way!) and subsequent fixes,
we're excited to finally announce a new major update to the Jellyfin app for Android.</p>
<p>Version 2.5.0 again focuses on improvements to the integrated player, and brings various new features,
many bug fixes and a lot of technical maintenance and rewrites.</p>
<p>Read on to learn more!</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="integrated-player-improvements">Integrated Player Improvements<a href="https://jellyfin.org/posts/android-v2.5.0#integrated-player-improvements" class="hash-link" aria-label="Direct link to Integrated Player Improvements" title="Direct link to Integrated Player Improvements">​</a></h2>
<p>In this release, we finally introduce the highly requested bitrate selection
so that you can transcode to lower resolutions to save your precious mobile data while on the go.
The audio and subtitle track selection was reworked and improved multiple times and should be a lot more robust now.
Thanks to everyone who reported bugs! The complicated nature of various playback methods,
inconsistencies between the server and ExoPlayer and misconceptions about their inner workings
caused countless edge cases that could only be discovered through a lot of trial and error.<br>
<!-- -->The player interface itself now has a back button to close the player and
a new playback option was added to pick between hardware and software decoding,
if the default hardware decoder causes issues for the currently played video.</p>
<p>In the client settings (which you should make sure to check out) we added the option to pick the initial orientation for video playback and
now allow choosing whether you want video with SSA subtitles to be transcoded (for full styling support) or not (to direct play with limited styling).<br>
<!-- -->There's also a link to the operating system's subtitle customization settings, which the integrated player uses to style your subtitles.
Note that the subtitle settings in the Jellyfin settings only apply to the web player due to technical reasons.<br>
<!-- -->Talking subtitles, the player now supports the PGSSUB codec without transcoding.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="other-tweaks">Other Tweaks<a href="https://jellyfin.org/posts/android-v2.5.0#other-tweaks" class="hash-link" aria-label="Direct link to Other Tweaks" title="Direct link to Other Tweaks">​</a></h2>
<p>Thanks to <a href="https://github.com/susonthapa" target="_blank" rel="noopener noreferrer">@susonthapa</a>, the app now shows a splash screen with the Jellyfin logo on start,
instead of the previous, boring gray screen where you didn't see whether the app was actually doing anything.<br>
<!-- -->While the app is connecting, there's now a cancel button so that you can quickly jump to the connect screen
to select a different server if the current one isn't available at the moment.
The connect screen itself was reworked and rewritten for a slightly cleaner design and easier maintenance.<br>
<!-- -->We also added a monochrome icon so that Jellyfin will look great on your home screen on supported launchers on Android 13 and above.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="full-release-notes">Full Release Notes<a href="https://jellyfin.org/posts/android-v2.5.0#full-release-notes" class="hash-link" aria-label="Direct link to Full Release Notes" title="Direct link to Full Release Notes">​</a></h2>
<p>The complete list of changes for this release with all merged pull requests can be found on <a href="https://github.com/jellyfin/jellyfin-android/releases/tag/v2.5.0" target="_blank" rel="noopener noreferrer">GitHub</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="contributors">Contributors<a href="https://jellyfin.org/posts/android-v2.5.0#contributors" class="hash-link" aria-label="Direct link to Contributors" title="Direct link to Contributors">​</a></h2>
<p>Jellyfin is developed by volunteer contributors, and we couldn't do without their great skills and dedication.
They don't get paid by any organizations, so consider donating if you appreciate their work.<br>
<!-- -->A big shout-out to all contributors that made this release possible:</p>
<p><strong>Jellyfin Team</strong></p>
<ul>
<li><a href="https://github.com/Maxr1998" target="_blank" rel="noopener noreferrer">@Maxr1998</a> - Sponsor via <a href="https://github.com/sponsors/Maxr1998" target="_blank" rel="noopener noreferrer">GitHub sponsors</a></li>
<li><a href="https://github.com/nielsvanvelzen" target="_blank" rel="noopener noreferrer">@nielsvanvelzen</a> - Sponsor via <a href="https://github.com/sponsors/nielsvanvelzen" target="_blank" rel="noopener noreferrer">GitHub sponsors</a></li>
</ul>
<p><strong>Other contributors</strong></p>
<ul>
<li><a href="https://github.com/susonthapa" target="_blank" rel="noopener noreferrer">@susonthapa</a></li>
<li><a href="https://github.com/mingyech" target="_blank" rel="noopener noreferrer">@mingyech</a></li>
<li><a href="https://github.com/colonelpopcorn" target="_blank" rel="noopener noreferrer">@colonelpopcorn</a></li>
<li><a href="https://github.com/Irishsmurf" target="_blank" rel="noopener noreferrer">@Irishsmurf</a></li>
<li><a href="https://github.com/eglia" target="_blank" rel="noopener noreferrer">@eglia</a></li>
<li><a href="https://github.com/nalsai" target="_blank" rel="noopener noreferrer">@nalsai</a></li>
</ul>
<p>We'd also like to thank everyone who reported bugs, provided feedback and participated in beta testing!</p>
<p>If you have some experience with Android development and are interested in contributing yourself,
feel free to dive into the source code <a href="https://github.com/jellyfin/jellyfin-android" target="_blank" rel="noopener noreferrer">on GitHub</a> and open pull requests.</p>
<p>Alternatively, you can help with translating the app into your language on our <a href="https://translate.jellyfin.org/projects/jellyfin-android/jellyfin-android/" target="_blank" rel="noopener noreferrer">Weblate</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="download-now">Download Now<a href="https://jellyfin.org/posts/android-v2.5.0#download-now" class="hash-link" aria-label="Direct link to Download Now" title="Direct link to Download Now">​</a></h2>
<a class="margin-right--md" href="https://play.google.com/store/apps/details?id=org.jellyfin.mobile"><img width="153" alt="Jellyfin on Google Play" src="https://jellyfin.org/images/store-icons/google-play.png"></a>
<a class="margin-right--md" href="https://www.amazon.com/gp/product/B081RFTTQ9"><img width="153" alt="Jellyfin on Amazon App Store" src="https://jellyfin.org/images/store-icons/amazon.png"></a>
<a href="https://f-droid.org/en/packages/org.jellyfin.mobile/"><img width="153" alt="Jellyfin on F-Droid" src="https://jellyfin.org/images/store-icons/fdroid.png"></a>
<p>Direct downloads are available for sideloading at <a href="https://repo.jellyfin.org/releases/client/android/" target="_blank" rel="noopener noreferrer">repo.jellyfin.org</a>
or in the <a href="https://github.com/jellyfin/jellyfin-android/releases/tag/v2.5.0" target="_blank" rel="noopener noreferrer">GitHub release assets</a>.
You can also join our <a href="https://play.google.com/apps/testing/org.jellyfin.mobile" target="_blank" rel="noopener noreferrer">beta program on Google Play</a> and help test new versions before they're released to the public.</p>]]></content:encoded>
            <category>release</category>
            <category>android</category>
        </item>
        <item>
            <title><![CDATA[Roku Version 1.6.4]]></title>
            <link>https://jellyfin.org/posts/roku-164</link>
            <guid>https://jellyfin.org/posts/roku-164</guid>
            <pubDate>Wed, 05 Apr 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[A new Jellyfin for Roku emerges from the shadows]]></description>
            <content:encoded><![CDATA[<p>We are excited to announce the release of Jellyfin 1.6.4 for Roku! With so many new featues and bug fixes, you'll wonder how we crammed it all into one release. Keep reading to learn more.</p>
<p>- 1hitsong</p>
<!-- -->
<p>Requires minimum server version of 10.8.1</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-bug-fixes">🐛 Bug Fixes<a href="https://jellyfin.org/posts/roku-164#-bug-fixes" class="hash-link" aria-label="Direct link to 🐛 Bug Fixes" title="Direct link to 🐛 Bug Fixes">​</a></h3>
<ul>
<li>Fix distorted TV episode posters. Add client-side progress bar and played indicator</li>
<li>Fix option menu focus if opened while library still loading</li>
<li>Only show next episode popup if web client setting is turned on</li>
<li>Fix default view setting for movie genres</li>
<li>Graceful episode playback failure</li>
<li>Fix multiple client crashes identified by crashlogs</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="️-new-settings">⚙️ New Settings<a href="https://jellyfin.org/posts/roku-164#%EF%B8%8F-new-settings" class="hash-link" aria-label="Direct link to ⚙️ New Settings" title="Direct link to ⚙️ New Settings">​</a></h3>
<ul>
<li>User defined maximum video bitrate</li>
<li>Disable unwatched episode count</li>
<li>Next episode button time</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-new-features">🆕 New Features<a href="https://jellyfin.org/posts/roku-164#-new-features" class="hash-link" aria-label="Direct link to 🆕 New Features" title="Direct link to 🆕 New Features">​</a></h3>
<ul>
<li>TV series &amp; season shuffle</li>
<li>Phase 1 CJK subtitle support <strong>(External files only)</strong></li>
<li>Phase 1 playlist support <strong>(Does not currently support CJK subtitles)</strong></li>
<li>The options button now closes the user settings menu</li>
<li>New persondetails view</li>
<li>Genres, parental ratings, and years as movie filters</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-additional-updates">⭐ Additional Updates<a href="https://jellyfin.org/posts/roku-164#-additional-updates" class="hash-link" aria-label="Direct link to ⭐ Additional Updates" title="Direct link to ⭐ Additional Updates">​</a></h3>
<ul>
<li>Improve settings menu, implement title hover and hide in griditem and musicartistgriditem</li>
<li>Improve quality of album art on now playing view</li>
<li>Make home view load faster</li>
<li>Updated "OnNow" home row to default to channel images if program images are not availible</li>
<li>Update CI ubuntu version and node version</li>
<li>Install &amp; configure unit test suite</li>
<li>Add user policy to check if canDelete</li>
<li>Loading spinner, Progress Dialog and movie details button animate</li>
<li>Make title scrolling consistent in extras slider</li>
<li>Add settings guidelines to devguide.md</li>
<li>Add workflow to validate XML translation files</li>
<li>Add json and markdown to lint workflow + add automation workflow</li>
<li>Create global audio player</li>
<li>Fix typo: trancoding -&gt; transcoding</li>
<li>Fix en_US translation file</li>
<li>Make CI throw error for duplicate translation entries</li>
<li>Add a production build workflow</li>
<li>Show "Actor" when an actor has no role</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-contributors">👥 Contributors<a href="https://jellyfin.org/posts/roku-164#-contributors" class="hash-link" aria-label="Direct link to 👥 Contributors" title="Direct link to 👥 Contributors">​</a></h2>
<p>Jellyfin apps are developed by our great contributors and we couldn't do it without them. Everyone is a volunteer that
doesn't get paid by any organizations, so consider donating if you appreciate their work. A big shout-out to all
contributors that made this release possible:</p>
<ul>
<li><a href="https://github.com/RussianCow" target="_blank" rel="noopener noreferrer">@RussianCow</a></li>
<li><a href="https://github.com/1hitsong" target="_blank" rel="noopener noreferrer">@1hitsong</a></li>
<li><a href="https://github.com/cewert" target="_blank" rel="noopener noreferrer">@cewert</a></li>
<li><a href="https://github.com/jimdogx" target="_blank" rel="noopener noreferrer">@jimdogx</a></li>
<li><a href="https://github.com/jkim2492" target="_blank" rel="noopener noreferrer">@jkim2492</a></li>
<li><a href="https://github.com/sevenrats" target="_blank" rel="noopener noreferrer">@sevenrats</a></li>
<li><a href="https://github.com/candry7731" target="_blank" rel="noopener noreferrer">@candry7731</a></li>
<li><a href="https://github.com/ApexArray" target="_blank" rel="noopener noreferrer">@ApexArray</a></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-downloads--changelog">💾 Downloads &amp; Changelog<a href="https://jellyfin.org/posts/roku-164#-downloads--changelog" class="hash-link" aria-label="Direct link to 💾 Downloads &amp; Changelog" title="Direct link to 💾 Downloads &amp; Changelog">​</a></h2>
<p>The complete list of changes for this release, including all merged pull requests, can be found on
<a href="https://github.com/jellyfin/jellyfin-roku/releases/tag/v1.6.4" target="_blank" rel="noopener noreferrer">GitHub</a>.</p>
<p>Your installed Jellyfin channel should automatically update once available or you can install Jellyfin
from the <a href="https://channelstore.roku.com/details/592369/jellyfin" target="_blank" rel="noopener noreferrer">Roku store</a>.</p>]]></content:encoded>
            <category>release</category>
            <category>roku</category>
        </item>
        <item>
            <title><![CDATA[A major milestone in the development of Jellyfin Vue]]></title>
            <link>https://jellyfin.org/posts/vue-vue3</link>
            <guid>https://jellyfin.org/posts/vue-vue3</guid>
            <pubDate>Tue, 04 Apr 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[Jellyfin Vue is now powered by Vue 3]]></description>
            <content:encoded><![CDATA[<p>280 commits, +28000 lines added, +43000 lines removed since November 2022: The results of the biggest refactor we ever tackled
and an ecosystem upgrade we've been looking forward since we started working on this client on 2020.</p>
<ul>
<li>Fernando</li>
</ul>
<!-- -->
<p><em>Don't know what Jellyfin Vue is? Skip to <strong>What's Jellyfin Vue?</strong> section. What's below is a rather technical explanation</em></p>
<p>When we started working on this client, we used Nuxt and Vue 2, even when Vue 3 was right around the corner.
Nuxt has been an amazing tool to scaffold our project, and get started into the Vue ecosystem.
It even allowed us to play with SSR. However, it forced a really rigid structure on us, besides
<a href="https://github.com/jellyfin/jellyfin-vue/discussions/1620" target="_blank" rel="noopener noreferrer">SSR turned out to be a burden</a>.
We had even to use some hacks to avoid killing playback while transitioning between pages.</p>
<p>As part of our Vue 3 migration, we switched to an standard Vue 3 project structure
(Vue 3, Vite, TypeScript and, in the future, Vitest), which allowed us to remove many of the hacks
and legacy code we used to overcome Vue and Nuxt 2 limitations. Beside that, Vue 3
only supports ES6-compatible browsers. We also use <a href="https://github.com/jellyfin/jellyfin-vue/blob/master/frontend/src/main.ts#L2" target="_blank" rel="noopener noreferrer">some syntax</a>
that's only compatible with ES2022. All of this means that, as part of this upgrade, <strong>we also deprecated all legacy support for outdated browsers</strong>.
That include the majority of TVs. <strong>Chrome/Edge/Firefox/Safari, both in desktop and mobile platforms are still fully compatible</strong>.
If the web browser of your device still gets updates, it'll likely have no issues running Jellyfin Vue.</p>
<p>Although the affected userbase will probably be small, I'm sorry for those who might be affected by this decision but,
given our limited resources, looking forward is our only way to go if we want to provide the best alternative web client for Jellyfin.
You can still run the pre-Vue3 version (go to <em>Downloads &amp; changelogs</em> to know more), although it will not receive any support from us.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="a-note-on-privacy-">A note on privacy 🕵🏻<a href="https://jellyfin.org/posts/vue-vue3#a-note-on-privacy-" class="hash-link" aria-label="Direct link to A note on privacy 🕵🏻" title="Direct link to A note on privacy 🕵🏻">​</a></h3>
<p><a href="https://github.com/jellyfin/jellyfin-vue#privacy-disclaimer-" target="_blank" rel="noopener noreferrer">I wrote an small disclaimer explaining how Jellyfin Vue (and Jellyfin Web) works</a>,
since I saw a lot of misconceptions about how our hosted instance works and how connections from Jellyfin apps to the Jellyfin server works.</p>
<p>Please, give it a read!</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-contributors">👥 Contributors<a href="https://jellyfin.org/posts/vue-vue3#-contributors" class="hash-link" aria-label="Direct link to 👥 Contributors" title="Direct link to 👥 Contributors">​</a></h2>
<p>Jellyfin apps are developed by our great contributors and we couldn't do it without them. Everyone is a volunteer that
doesn't get paid by any organizations, so consider donating if you appreciate their work. A big shout-out to all
contributors that made this possible:</p>
<p><strong>Jellyfin Team</strong></p>
<ul>
<li><a href="https://github.com/ferferga" target="_blank" rel="noopener noreferrer">@ferferga</a> - Sponsor via <a href="https://github.com/sponsors/ferferga" target="_blank" rel="noopener noreferrer">GitHub sponsors</a></li>
<li><a href="https://github.com/ThibaultNocchi" target="_blank" rel="noopener noreferrer">@ThibaultNocchi</a></li>
</ul>
<p><strong>Other contributors</strong></p>
<ul>
<li><a href="https://github.com/Janbong" target="_blank" rel="noopener noreferrer">@Janbong</a></li>
<li><a href="https://github.com/aweebs" target="_blank" rel="noopener noreferrer">@aweebs</a></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-downloads--changelog">💾 Downloads &amp; Changelog<a href="https://jellyfin.org/posts/vue-vue3#-downloads--changelog" class="hash-link" aria-label="Direct link to 💾 Downloads &amp; Changelog" title="Direct link to 💾 Downloads &amp; Changelog">​</a></h2>
<p>As part of this upgrade, we created 3 releases:</p>
<ul>
<li><a href="https://github.com/jellyfin/jellyfin-vue/releases/tag/0.2.0" target="_blank" rel="noopener noreferrer">v0.2.0</a>: This is the last release powered by Vue 2.</li>
<li><a href="https://github.com/jellyfin/jellyfin-vue/releases/tag/0.3.0" target="_blank" rel="noopener noreferrer">v0.3.0</a>: This is the first release powered by Vue 3. This was tagged right after we merged the branch we've been working on these past months.</li>
<li><a href="https://github.com/jellyfin/jellyfin-vue/releases/tag/0.3.1" target="_blank" rel="noopener noreferrer">v0.3.1</a>: Same as v0.3.0, but after all the pending dependency updates have been merged.</li>
</ul>
<hr>
<h1>What's Jellyfin Vue?</h1>
<p>Jellyfin Vue is an alternative web client some of us started working on in 2020. Jellyfin Web had a lot of maintenability
problems, so we thought it might be a good idea to start a new client with modern web development technologies in its stack
and use it as a playground for testing some cool features that might not make the cut (or would've been impossible to make)
in Jellyfin Web.</p>
<p><img decoding="async" loading="lazy" alt="Screenshot of Jellyfin Vue homepage on demo server" src="https://jellyfin.org/assets/images/vue-homepage-02657ae085bc7fbbfdf40c4d7cddd4df.png" width="1920" height="966" class="img_ev3q"></p>
<img-comparison-slider class="margin-bottom--md rendered" tabindex="0"><img slot="before" src="https://jellyfin.org/assets/images/music_full-46da3b027048025880475fc8b7998eea.png"><img slot="after" src="https://jellyfin.org/assets/images/music_mini-a1f4556172a436660a9045963812afc4.png"></img-comparison-slider>
<p><img decoding="async" loading="lazy" alt="Screenshot of Jellyfin Vue video playback" src="https://jellyfin.org/assets/images/video-d5b5313eaaad8b0845d7ea0688e7d7ca.png" width="1920" height="999" class="img_ev3q"></p>
<p>Head over <a href="https://github.com/jellyfin/jellyfin-vue" target="_blank" rel="noopener noreferrer">our GitHub repo</a> to know more about it and see how you can use it!</p>
<hr>
<h1>What's next?</h1>
<p>We <a href="https://github.com/jellyfin/jellyfin-vue/discussions/1679" target="_blank" rel="noopener noreferrer">have a roadmap</a> with what we want bring up next:
a media-type driven design, where your media feels at home every time. The current approach of most Jellyfin clients
is to be too generic in order to be suitable for all media types possible, but when you're listening to music you
don't feel you're in a music player (like Spotify) or in Netflix when watching TV Shows and Movies</p>
<p>There's also an <a href="https://github.com/jellyfin/jellyfin-vue/projects/4" target="_blank" rel="noopener noreferrer">approximate schedule</a> to better sort
our priorities.</p>]]></content:encoded>
            <category>release</category>
            <category>vue</category>
        </item>
        <item>
            <title><![CDATA[Roku Version 1.6.3]]></title>
            <link>https://jellyfin.org/posts/roku-163</link>
            <guid>https://jellyfin.org/posts/roku-163</guid>
            <pubDate>Fri, 13 Jan 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[This was supposed to be a minor release!]]></description>
            <content:encoded><![CDATA[<p>We are excited to announce the release of Jellyfin 1.6.3 for Roku! The primary goal of this release is resolving bugs &amp; issues,
but we still managed to add some new items too. Keep reading to learn more.</p>
<p>- 1hitsong</p>
<!-- -->
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-bug-fixes">🐛 Bug Fixes<a href="https://jellyfin.org/posts/roku-163#-bug-fixes" class="hash-link" aria-label="Direct link to 🐛 Bug Fixes" title="Direct link to 🐛 Bug Fixes">​</a></h3>
<ul>
<li>Fix TV season list crash when showing 27+ episodes</li>
<li>Fix crash when viewing in progress recording</li>
<li>Fix crash when options button pressed, but options are not available</li>
<li>Fix crash when invalid deep link arguments are passed</li>
<li>Show unwatched episode count on TV images</li>
<li>Fix TV episode cursor focus issues</li>
<li>Fix movie detail view lost cursor focus bug when going back from resume dialog</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="️-new-settings">⚙️ New Settings<a href="https://jellyfin.org/posts/roku-163#%EF%B8%8F-new-settings" class="hash-link" aria-label="Direct link to ⚙️ New Settings" title="Direct link to ⚙️ New Settings">​</a></h3>
<ul>
<li>Go straight to episode listing (if only 1 season available)</li>
<li>Disable community rating for episodes of TV shows</li>
<li>Movie grid title display options</li>
<li>Hide subtitles that might transcode</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-new-features">🆕 New Features<a href="https://jellyfin.org/posts/roku-163#-new-features" class="hash-link" aria-label="Direct link to 🆕 New Features" title="Direct link to 🆕 New Features">​</a></h3>
<ul>
<li>Added music grid view</li>
<li>Updated TV library genre view</li>
<li>Create "What's New" popup that tells users what's changed the first time they run a new version</li>
<li>Toggle video playback when OK button is pressed</li>
<li>Create movie grid view and new default setting</li>
<li>Add resumable filter to movies</li>
<li>Add played/unplayed status filter to movies &amp; series</li>
<li>Add artist presentation view &amp; genre view to music library</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-additional-updates">⭐ Additional Updates<a href="https://jellyfin.org/posts/roku-163#-additional-updates" class="hash-link" aria-label="Direct link to ⭐ Additional Updates" title="Direct link to ⭐ Additional Updates">​</a></h3>
<ul>
<li>Set maximum bitrates values based on Roku guidelines</li>
<li>Reorganize Roku settings</li>
<li>Draw homepage continue watching percent complete bar instead of using image API</li>
<li>Add new questions to GitHub bug template</li>
<li>Create queue manager and use for music (step 1 for playlist support 🤘)</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-contributors">👥 Contributors<a href="https://jellyfin.org/posts/roku-163#-contributors" class="hash-link" aria-label="Direct link to 👥 Contributors" title="Direct link to 👥 Contributors">​</a></h2>
<p>Jellyfin apps are developed by our great contributors and we couldn't do it without them. Everyone is a volunteer that
doesn't get paid by any organizations, so consider donating if you appreciate their work. A big shout-out to all
contributors that made this release possible:</p>
<ul>
<li><a href="https://github.com/jimdogx" target="_blank" rel="noopener noreferrer">@jimdogx</a></li>
<li><a href="https://github.com/dezchai" target="_blank" rel="noopener noreferrer">@dezchai</a></li>
<li><a href="https://github.com/1hitsong" target="_blank" rel="noopener noreferrer">@1hitsong</a></li>
<li><a href="https://github.com/ApexArray" target="_blank" rel="noopener noreferrer">@ApexArray</a></li>
<li><a href="https://github.com/sevenrats" target="_blank" rel="noopener noreferrer">@sevenrats</a></li>
<li><a href="https://github.com/neilsb" target="_blank" rel="noopener noreferrer">@neilsb</a></li>
<li><a href="https://github.com/DJSweder" target="_blank" rel="noopener noreferrer">@DJSweder</a></li>
<li><a href="https://github.com/andibing" target="_blank" rel="noopener noreferrer">@andibing</a></li>
<li><a href="https://github.com/DaveSenn" target="_blank" rel="noopener noreferrer">@DaveSenn</a></li>
<li><a href="https://github.com/Jac-Apex-Team" target="_blank" rel="noopener noreferrer">@Jac-Apex-Team</a></li>
<li><a href="https://github.com/Muehli25" target="_blank" rel="noopener noreferrer">@Muehli25</a></li>
<li><a href="https://github.com/DesertCookie" target="_blank" rel="noopener noreferrer">@DesertCookie</a></li>
<li><a href="https://github.com/wippy00" target="_blank" rel="noopener noreferrer">@wippy00</a></li>
<li><a href="https://github.com/blaugrau3001" target="_blank" rel="noopener noreferrer">@blaugrau3001</a></li>
<li><a href="https://github.com/criscrafter" target="_blank" rel="noopener noreferrer">@criscrafter</a></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-downloads--changelog">💾 Downloads &amp; Changelog<a href="https://jellyfin.org/posts/roku-163#-downloads--changelog" class="hash-link" aria-label="Direct link to 💾 Downloads &amp; Changelog" title="Direct link to 💾 Downloads &amp; Changelog">​</a></h2>
<p>The complete list of changes for this release, including all merged pull requests, can be found on
<a href="https://github.com/jellyfin/jellyfin-roku/releases/tag/v1.6.3" target="_blank" rel="noopener noreferrer">GitHub</a>.</p>
<p>Your installed Jellyfin channel should automatically update once available or you can install Jellyfin
from the <a href="https://channelstore.roku.com/details/592369/jellyfin" target="_blank" rel="noopener noreferrer">Roku store</a>.</p>]]></content:encoded>
            <category>release</category>
            <category>roku</category>
        </item>
        <item>
            <title><![CDATA[Swiftfin on the App Store]]></title>
            <link>https://jellyfin.org/posts/2022/12/29/swiftfin</link>
            <guid>https://jellyfin.org/posts/2022/12/29/swiftfin</guid>
            <pubDate>Thu, 29 Dec 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[As of today, Swiftfin, our native iOS/iPadOS/tvOS app is now on the Apple App Store. While this is still a work in progress, you can download it today and enjoy your media (including **Live TV!**) on the big (or small) screen.]]></description>
            <content:encoded><![CDATA[<p>As of today, Swiftfin, our native iOS/iPadOS/tvOS app is now on the Apple App Store. While this is still a work in progress, you can download it today and enjoy your media (<em>including <strong>Live TV!</strong></em>) on the big (or small) screen.</p>
<p>- Anthony</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-is-swiftfin">What is Swiftfin?<a href="https://jellyfin.org/posts/2022/12/29/swiftfin#what-is-swiftfin" class="hash-link" aria-label="Direct link to What is Swiftfin?" title="Direct link to What is Swiftfin?">​</a></h2>
<p>If you haven't seen it or tried it yet, <a href="https://github.com/jellyfin/Swiftfin" target="_blank" rel="noopener noreferrer">Swiftfin</a> is a Jellyfin video player app for Apple devices that has been written from the ground up using modern technologies like Swift UI, and VLCKit. Originally started as a summer project in 2021 by contributor Aiden (<a href="https://github.com/acvigue" target="_blank" rel="noopener noreferrer">@acvigue</a>), development has been carried on by other members of the team, most notably Ethan (<a href="https://github.com/LePips" target="_blank" rel="noopener noreferrer">@LePips</a>).</p>
<p>It runs on all modern iOS, iPadOS, and tvOS devices, with a current minimum of iOS/iPadOS/tvOS 15.0 or later.</p>
<p>We've decided to release it on the App Store instead of continuing with TestFlight, as the beta program filled up (that's over 9,000 users!), and people still wanted to try it.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="swiftfin-and-jellyfin-mobile">Swiftfin and Jellyfin Mobile<a href="https://jellyfin.org/posts/2022/12/29/swiftfin#swiftfin-and-jellyfin-mobile" class="hash-link" aria-label="Direct link to Swiftfin and Jellyfin Mobile" title="Direct link to Swiftfin and Jellyfin Mobile">​</a></h3>
<p>What's important to note is that while Swiftin does run on an iPhone and iPad, it's not currently a full replacement for <a href="https://apps.apple.com/us/app/jellyfin-mobile/id1480192618?mt=8" target="_blank" rel="noopener noreferrer">Jellyfin Mobile</a> (or using the web browser). Jellyfin Mobile still contains access to the full web interface, allowing you to manage the server and use the standard interface. Right now, Swiftfin is also <strong>video only</strong>, so it does not handle Audiobooks, Photos, or Music. You'll want to keep using Jellyfin Mobile for those, or your other preferred <a href="https://jellyfin.org/downloads/clients/" target="_blank" rel="noopener noreferrer">client of choice</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="still-in-beta">Still in Beta<a href="https://jellyfin.org/posts/2022/12/29/swiftfin#still-in-beta" class="hash-link" aria-label="Direct link to Still in Beta" title="Direct link to Still in Beta">​</a></h2>
<p>Though the app is publicly available now, it's <strong>still in beta</strong>. There's a lot of things to fix, and many are still underway. We appreciate your patience with this - starting from the ground up has been a long and difficult road for the contributors that work on the app. If you or someone you know has an interest in Swift or Swift UI, we'd welcome you to come by and <a href="https://jellyfin.org/contact" target="_blank" rel="noopener noreferrer">chat with us</a> on how you can help with development.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="live-tv-support-on-apple-tv">Live TV Support on Apple TV!<a href="https://jellyfin.org/posts/2022/12/29/swiftfin#live-tv-support-on-apple-tv" class="hash-link" aria-label="Direct link to Live TV Support on Apple TV!" title="Direct link to Live TV Support on Apple TV!">​</a></h3>
<p>Now the one that a lot of people have been waiting for. With Swiftfin on an Apple TV, it's possible to watch your Jellyfin Live TV sources on the big screen. This feature is <strong>in Alpha</strong>, so it may not reliably work in some cases (or at all). It's something we're working on.</p>
<p>To enable this, do the following:</p>
<ol>
<li>In the top menu bar, go to the "Settings" (⚙️) icon.</li>
<li>Scroll down to and choose "Experimental".</li>
<li>Scroll down to and enable "Live TV (Alpha)".</li>
</ol>
<p>After you've enabled it, you can access it through the "Media" section of the App. There should be a new Library named "LiveTV".</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="contributors">Contributors<a href="https://jellyfin.org/posts/2022/12/29/swiftfin#contributors" class="hash-link" aria-label="Direct link to Contributors" title="Direct link to Contributors">​</a></h2>
<p>Jellyfin apps are developed by our great contributors and we couldn't do it without them. Everyone is a volunteer that
doesn't get paid by any organizations, so consider donating if you appreciate their work. A big shout-out to all
contributors that made this release possible over the past year and a half:</p>
<p><strong>Jellyfin Team</strong></p>
<ul>
<li><a href="https://github.com/LePips" target="_blank" rel="noopener noreferrer">@LePips</a></li>
<li><a href="https://github.com/acvigue" target="_blank" rel="noopener noreferrer">@acvigue</a></li>
<li><a href="https://github.com/PangMo5" target="_blank" rel="noopener noreferrer">@PangMo5</a></li>
</ul>
<p><strong>Other contributors</strong></p>
<ul>
<li><a href="https://github.com/jhays" target="_blank" rel="noopener noreferrer">@jhays</a></li>
<li><a href="https://github.com/stevebyatt10" target="_blank" rel="noopener noreferrer">@stevebayatt10</a></li>
<li><a href="https://github.com/daullmer" target="_blank" rel="noopener noreferrer">@daullmer</a></li>
</ul>
<p>and many others contributing fixes or translations. You can see the whole list on <a href="https://github.com/jellyfin/Swiftfin/graphs/contributors" target="_blank" rel="noopener noreferrer">GitHub</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="downloads">Downloads<a href="https://jellyfin.org/posts/2022/12/29/swiftfin#downloads" class="hash-link" aria-label="Direct link to Downloads" title="Direct link to Downloads">​</a></h2>
<a style="padding-left:20px" href="https://apps.apple.com/ca/app/swiftfin/id1604098728"><img width="153" alt="Download on the App Store" src="https://jellyfin.org/images/store-icons/app-store.svg"></a>]]></content:encoded>
            <category>release</category>
            <category>apple</category>
            <category>ios</category>
            <category>apple-tv</category>
        </item>
        <item>
            <title><![CDATA[Android TV 0.15]]></title>
            <link>https://jellyfin.org/posts/2022/12/24/android-tv-15</link>
            <guid>https://jellyfin.org/posts/2022/12/24/android-tv-15</guid>
            <pubDate>Sat, 24 Dec 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[I'm excited to announce the third and final release of 2022 for the Android TV app. While this release mostly includes]]></description>
            <content:encoded><![CDATA[<p>I'm excited to announce the third and final release of 2022 for the Android TV app. While this release mostly includes
internal changes, there are still a few new features to highlight. Keep reading to learn more about what's new.</p>
<p>- Niels</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="highlights">Highlights<a href="https://jellyfin.org/posts/2022/12/24/android-tv-15#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights">​</a></h2>
<p>While you may not notice them directly, we have made numerous improvements to the underlying technology of the app in
this release. These changes make the app more stable and easier to maintain. Some of these changes are being
implemented in preparation for future updates, while others involve restructuring or updating older code. The app will
crash less frequently as a result of these changes. Some other notable changes in this release include:</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="new-picture-viewer">New picture viewer<a href="https://jellyfin.org/posts/2022/12/24/android-tv-15#new-picture-viewer" class="hash-link" aria-label="Direct link to New picture viewer" title="Direct link to New picture viewer">​</a></h3>
<p><img decoding="async" loading="lazy" alt="Screenshot of the new picture viewer" src="https://jellyfin.org/assets/images/pictureviewer-1b154849718bdc3624f3d0d06ad8a26a.png" width="1324" height="745" class="img_ev3q"></p>
<p>Jellyfin is a media server that not only supports audio and video, but also pictures. In this release, we have improved
the picture viewer by adding on-screen controls. Previously, there were no controls displayed on the screen, which
caused confusion for many users. The new controls make it easier to navigate between pictures and start/stop a slideshow.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="player-changes">Player changes<a href="https://jellyfin.org/posts/2022/12/24/android-tv-15#player-changes" class="hash-link" aria-label="Direct link to Player changes" title="Direct link to Player changes">​</a></h3>
<p>We have added a few new features to the video player in this release. There is now a "previous" button that allows you
to quickly go back to a previous episode or playlist item. Additionally, there is a new "quality" button that allows
you to adjust the maximum bitrate during playback. Finally, there is a new option called "audio night mode" which
normalizes the sound in a video. This option is turned off by default.</p>
<p>We have also enhanced the subtitle customization feature in this release to give you even more control over the
appearance of your subtitles. In addition to being able to adjust the size and enabling a background, you can now also
change the stroking width, position, and text color. This allows you to fine-tune the appearance of the subtitles to
better match your preferences.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="rtl-support">RTL support<a href="https://jellyfin.org/posts/2022/12/24/android-tv-15#rtl-support" class="hash-link" aria-label="Direct link to RTL support" title="Direct link to RTL support">​</a></h3>
<img-comparison-slider class="margin-bottom--md rendered" tabindex="0"><img slot="before" src="https://jellyfin.org/assets/images/rtlbefore-c2fd834a8245c27eccf5c404a868e57d.png"><img slot="after" src="https://jellyfin.org/assets/images/rtlafter-1529b18f05f3051458c0aa560b12512a.png"></img-comparison-slider>
<p>Previously the app could be difficult to understand or display incorrectly. By adding right-to-left (RTL) support, the
app now displays UI elements in the correct direction, making it more accessible and user-friendly. The app
automatically switches based on the used language.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="contributors">Contributors<a href="https://jellyfin.org/posts/2022/12/24/android-tv-15#contributors" class="hash-link" aria-label="Direct link to Contributors" title="Direct link to Contributors">​</a></h2>
<p>Jellyfin apps are developed by our great contributors and we couldn't do it without them. Everyone is a volunteer that
doesn't get paid by any organizations, so consider donating if you appreciate their work. A big shout-out to all
contributors that made this release possible:</p>
<p><strong>Jellyfin Team</strong></p>
<ul>
<li><a href="https://github.com/nielsvanvelzen" target="_blank" rel="noopener noreferrer">@nielsvanvelzen</a> - Sponsor via <a href="https://github.com/sponsors/nielsvanvelzen" target="_blank" rel="noopener noreferrer">GitHub sponsors</a></li>
<li><a href="https://github.com/mueslimak3r" target="_blank" rel="noopener noreferrer">@mueslimak3r</a> - Sponsor via <a href="https://github.com/sponsors/mueslimak3r" target="_blank" rel="noopener noreferrer">GitHub sponsors</a></li>
</ul>
<p><strong>Other contributors</strong></p>
<ul>
<li><a href="https://github.com/teobaranga" target="_blank" rel="noopener noreferrer">@teobaranga</a></li>
<li><a href="https://github.com/hadicharara" target="_blank" rel="noopener noreferrer">@hadicharara</a></li>
<li><a href="https://github.com/robertduplock" target="_blank" rel="noopener noreferrer">@robertduplock</a></li>
<li><a href="https://github.com/sparky3387" target="_blank" rel="noopener noreferrer">@sparky3387</a></li>
<li><a href="https://github.com/zkhcohen" target="_blank" rel="noopener noreferrer">@zkhcohen</a></li>
<li><a href="https://github.com/kevgrig" target="_blank" rel="noopener noreferrer">@kevgrig</a></li>
<li><a href="https://github.com/Andy2244" target="_blank" rel="noopener noreferrer">@Andy2244</a></li>
<li><a href="https://github.com/sunrisela" target="_blank" rel="noopener noreferrer">@sunrisela</a></li>
<li><a href="https://github.com/DenizenB" target="_blank" rel="noopener noreferrer">@DenizenB</a></li>
<li><a href="https://github.com/The-Randalorian" target="_blank" rel="noopener noreferrer">@The-Randalorian</a></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="downloads--changelog">Downloads &amp; changelog<a href="https://jellyfin.org/posts/2022/12/24/android-tv-15#downloads--changelog" class="hash-link" aria-label="Direct link to Downloads &amp; changelog" title="Direct link to Downloads &amp; changelog">​</a></h2>
<p>The complete list of changes for this release, including all merged pull requests, can be found on
<a href="https://github.com/jellyfin/jellyfin-androidtv/releases/tag/v0.15.0" target="_blank" rel="noopener noreferrer">GitHub</a>.</p>
<a class="margin-right--md" href="https://play.google.com/store/apps/details?id=org.jellyfin.androidtv"><img width="200" alt="Jellyfin for Android TV on Google Play" src="https://jellyfin.org/images/store-icons/google-play.png"></a>
<a href="https://www.amazon.com/gp/product/B07TX7Z725"><img width="200" alt="Jellyfin for Fire TV at Amazon App Store" src="https://jellyfin.org/images/store-icons/amazon.png"></a>
<p>Direct downloads are available for sideloading at <a href="https://repo.jellyfin.org/releases/client/androidtv/" target="_blank" rel="noopener noreferrer">repo.jellyfin.org</a>
or in the <a href="https://github.com/jellyfin/jellyfin-androidtv/releases/tag/v0.15.0" target="_blank" rel="noopener noreferrer">GitHub release assets</a>.
You can also join our <a href="https://play.google.com/apps/testing/org.jellyfin.androidtv" target="_blank" rel="noopener noreferrer">beta program on Google Play</a> and
help test new versions before they're released to the public.</p>]]></content:encoded>
            <category>release</category>
            <category>android-tv</category>
        </item>
    </channel>
</rss>