Repository navigation
Releases: OddOmens/Plinthio
Release list
Plinthio v1.6.1
Changed
- Plinthio is now open source under the GNU Affero General Public License v3.0 (AGPL-3.0), replacing the noncommercial license. You can use, change and share it for any purpose. If you share a modified version, or run one for other people over a network, you must offer them its source code under the same license. See the License section of the README.
Fixed
- Security updates: three libraries Plinthio uses (
body-parser,multerandundici) are updated to versions with published security fixes.
New install: download docker-compose.yml and run MEDIA_DIR=/path/to/your/media docker compose up -d, then open http://<server>:8088. Full steps: Install · docs/setup.md
Update: docker compose pull && docker compose up -d — your database is backed up automatically before the new version starts.
Image: ghcr.io/oddomens/plinthio:1.6.1 (x86-64 and ARM64)
Plinthio v1.6.0
Added
- Live TV. Live channels with a programme guide, next to your library. Off until an admin turns it on in Admin → Live TV. Add ready-made public lists by country, language or category in one click (adult channels are never added), or your own M3U playlist with an XMLTV guide, including one on your home network. Watch from a channel list with what's on now and next, or a guide grid; the player has channel up/down, picture-in-picture and fullscreen. Kids accounts see only the channels you allow. Streams and logos play through your server, which only fetches the links it signed and never reaches into your network for a public list. See
docs/live-tv.md. - Choose which channels to show. Admin → Live TV → Choose what to show hides whole categories, languages, countries or stream hosts at once, with counts and search. These are rules, not deletions, so they still apply after every list reload. Region-locked channels and one third-party redirect service are hidden to start with; Always show keeps a single channel a filter would hide. Before the first public list, admins confirm once that they're responsible for what they add.
- Line-ups and channel numbers. Admins can make their own sets of channels (News, Sport, For the kids…), shown to viewers as tabs, in the order you choose, and allow a whole line-up for kids. Give any channel its own number, name or logo; channel up/down and typing a number in the player follow your numbers. These survive list reloads.
- Dead channels are found for you. A light background check (network only, nothing is played or decoded) looks at about 20 channels every 10 minutes. Channels that fail twice in a row are marked Offline and hidden from viewers until they work again. Admin → Live TV → Channel health shows how many are working.
- Favourites and more for each viewer. Star channels to get a Favourites tab and a Live now row on Home. Recent channels and a last-channel button (
L), Hide for me for channels or whole groups, search across channels and programmes, and Tonight / Tomorrow jumps in the guide. These are per account and change nothing for anyone else.
Fixed
- Security updates: two libraries Plinthio uses (
follow-redirectsandip-address) are updated to versions with published security fixes.
New install: download docker-compose.yml and run MEDIA_DIR=/path/to/your/media docker compose up -d, then open http://<server>:8088. Full steps: Install · docs/setup.md
Update: docker compose pull && docker compose up -d — your database is backed up automatically before the new version starts.
Image: ghcr.io/oddomens/plinthio:1.6.0 (x86-64 and ARM64)
Plinthio v1.5.0
Added
- Plinthio now speaks 11 languages: English, German, Spanish, French, Italian, Dutch, Polish, Brazilian Portuguese, Japanese, Korean and Simplified Chinese. Pick a language in Settings → Appearance → Language; it's saved to your account and follows you to every device. Automatic (the default) uses your browser's language. The sign-in page and the setup wizard have a language switch too, so you can choose before you have an account. Dates, numbers and sizes are written the local way, and messages from the server (errors such as a wrong password, and confirmations) are translated too, as is the error-code reference on the Docs page. Want to help with a translation? See
docs/translating.md. - Default language for the server. Admin → Appearance → Default language sets the language for everyone who hasn't chosen their own (Automatic, the default, follows each person's browser). The language picked in the setup wizard becomes the default.
- Scan at set times. Automatic scanning can now run at one or more times each day (server time zone) instead of only every so often. A time missed while the server was off is made up once when it's back.
- Movie and show details with no setup. The Docker images now come with a TMDB key built in, so posters, descriptions, cast, world ratings and missing films in a collection work on a new server straight away. Admin → Metadata shows which key is in use; paste your own to use it instead, and Use built-in key goes back. A key in
TMDB_API_KEYstill wins over the built-in one. If TMDB ever stops accepting the built-in key, the server says it needs a key, as before.
Changed
- Running without Docker now needs Node.js 22 or newer (was 20.17). The audio metadata library needs it, and Node 20 no longer gets security fixes. Docker installs already run Node 24 and aren't affected.
- The schedule and the folder watcher are now separate switches. You can watch folders without a schedule, or schedule without watching. If you turned automatic scanning off before, the watcher stays off.
- Turning automatic scanning off entirely now says so in Admin → Libraries, with a reminder to press Scan for new media.
Fixed
- Shows in season folders no longer split into one "show" per season. A file with no
S01E05in its name, such asBumble Nums/Season 02/03 - Title.mp4, was filed under a show called "Season 02". It now belongs to "Bumble Nums", and the leading number in a season folder is read as the episode number. Rescan the library to fix existing shows. - Episode numbers are no longer found inside other words. A YouTube id like
[6a6x0WQn_ic]in a filename was read as season 6, episode 0, and "Sleep 3" as an episode.
New install: download docker-compose.yml and run MEDIA_DIR=/path/to/your/media docker compose up -d, then open http://<server>:8088. Full steps: Install · docs/setup.md
Update: docker compose pull && docker compose up -d — your database is backed up automatically before the new version starts.
Image: ghcr.io/oddomens/plinthio:1.5.0 (x86-64 and ARM64)
Plinthio v1.4.2
Changed
- Sharper stills and banners for titles without a poster match. Titles that have no TMDB match use a frame from the video as their artwork. Those frames were only 480–600 px wide, so large cards and banners (Continue Watching, Recently Added, the native apps' big cards) looked soft. New frames and episode stills are 1280 px wide, and frames grabbed by earlier versions are redone on the next library scan. Covers can also be requested at 1280 px (
/api/media/cover/<id>?w=1280), and the pause screen now uses the sharper size it was always asking for.
New install: download docker-compose.yml and run MEDIA_DIR=/path/to/your/media docker compose up -d, then open http://<server>:8088. Full steps: Install · docs/setup.md
Update: docker compose pull && docker compose up -d — your database is backed up automatically before the new version starts.
Image: ghcr.io/oddomens/plinthio:1.4.2 (x86-64 and ARM64)
Plinthio v1.4.1
Fixed
- Poster metadata syncing and artwork reliability:
- Expanded the cover download allowlist to permit Google Books redirects (
lh*.googleusercontent.com), MangaDex (uploads.mangadex.org), and TMDB (image.tmdb.org,tmdb.org,themoviedb.org), preventing cover download failures on external redirects. - Normalized all remote cover downloads through
sharpto produce standardized, high-quality JPEGs while validating image buffers directly in memory. - Fixed bulk and series metadata edits so picked poster artwork can be saved and applied across all volumes and episodes in a single optimized request (
POST /metadata/apply-series). - Provisional video frame covers (
cover_source = 'frame') are now correctly recognized as missing official artwork in Admin filters and are automatically upgraded to official posters during Auto Match without requiring manual cover overwrites.
- Expanded the cover download allowlist to permit Google Books redirects (
- Granular metadata synchronization across media types:
- TV Shows & Anime: Auto-matching now syncs at the episode level. It queries TMDB season and episode data to set specific episode names, overviews, air dates, and episode still captures, rather than overwriting episode titles with the show name.
- Manga: Auto-matching preserves volume numbers and volume titles (e.g.
Series, Vol. X) while fetching authentic per-volume cover artwork from MangaDex. - Movies: Syncs movie titles, overviews, release dates, cast/crew credits, TMDB ratings, and official posters.
- Tailscale no longer goes offline when Plinthio restarts. The Tailscale add-ons now restart along with Plinthio instead of keeping a dead network connection, so your tailnet and Funnel links come back by themselves after an update or rebuild.
New install: download docker-compose.yml and run MEDIA_DIR=/path/to/your/media docker compose up -d, then open http://<server>:8088. Full steps: Install · docs/setup.md
Update: docker compose pull && docker compose up -d — your database is backed up automatically before the new version starts.
Image: ghcr.io/oddomens/plinthio:1.4.1 (x86-64 and ARM64)
Plinthio v1.4.0
Added
- A new ebook reader that gets out of the way. Tap the middle of the page to bring up the controls and tap again to hide them; tap the edges or swipe to turn pages. The chapter and your progress sit along the bottom; tap the progress to show percent, pages left in the chapter, location, or nothing.
- Highlights in five colours, with notes. Select text in an EPUB to highlight it yellow, green, blue, pink or orange, or to add a note. Tap a highlight to recolour it, edit its note, copy it or remove it. Highlights are kept with downloaded books for reading offline.
- Copy backups to a second place. Admin → Backups → Also copy backups to: browse to a folder on another drive, a NAS share or a synced cloud folder, test it (it warns if it's on the same disk as the server), and every backup is copied there, along with profile pictures, covers, the sign-in key and the HTTPS certificates. It keeps its own number of backups, shows when it last copied or why it couldn't, and retries until it can. Docker installs can mount another drive at
/backups(see the comment indocker-compose.yml). - The Notebook: a book's contents, bookmarks and highlights in one place (highlights can be filtered by colour), each a tap away from its page.
- One-tap bookmarks: the ribbon at the top right bookmarks the page you're on, and shows when a page is already bookmarked.
- More ways to read: six page colours (Auto, White, Sepia, Green, Gray, Black), the book's own font or Serif, Sans, Readable and Mono, text from 12 to 34 px, line spacing, margins, alignment, and two columns on wide screens or always one.
Changed
- Settings and Admin, rebuilt. Both are now grouped sections in a sidebar, and on a phone a list you tap into, like a phone's own settings. Admin's long Server Config page is split into Appearance, Features, Playback and Backups, alongside Overview (version, updates and totals), Libraries (now with automatic scanning), Health, Metadata (now with the TMDB key), Kids Mode (its own section, with a switch per library), Users, Activity, Network and Logs. Settings has Profile, Security, Appearance, Shelves, Hidden titles, Activity and Apps & API keys. Settings now save as you change them, with "Saved" beside them, instead of Save buttons and pop-ups; only backups and custom CSS still have Save. Each person's row in Users opens one editor for everything about the account, including role, quick +1 day/week/month access and delete. Old links (
?tab=settings,?tab=accountand so on) still land in the right place. - Automatic backups are on by default (daily, keeping the newest 7) on any server where they were never set. A server where an admin turned them off keeps them off. Backups hold everyone's bookmarks, highlights, notes and reader settings along with everything else in the database.
- Pre-upgrade backups are no longer deleted by the backup schedule. They used to count against the same "keep the newest N" limit, so a week of daily backups removed them; the newest five are now always kept.
- Signing in as someone else on the same browser clears what the previous account left on the device (downloads, queued offline progress, the manga reader's remembered series), even when that account's session had simply expired.
- Reader settings follow you, not the book or the device. Everything you set in the ebook reader applies to every book you read, on all your devices. In the manga reader, single or two-page spreads and the direction you pick for each series are now saved to your account too (they were kept on one device only; settings from before carry over).
- Switching shelves is smoother. Picking a category, filter or sort order fades the new shelf in instead of flashing a grid of placeholders first, and an empty category no longer blinks. Categories you've already opened show instantly and refresh quietly behind the scenes.
- Faster page loads. The app's files are now cached by the browser between visits (they were rechecked every time), and the title page is fetched in the background while you browse the shelf, so the first tap on a title opens it without waiting.
- Shelf filters on a phone sit in a tidy two-column grid instead of being squeezed into blank boxes, the Collections / All movies switch gets its own row, and the shelf views (A–Z, Author, Disk, Custom) share the row evenly instead of scrolling off the edge.
- No more zooming in when you tap a text box on an iPhone. The search bar, settings and admin fields, and the bookmark form were all small enough that iOS zoomed the page in on tap and left it there.
- A title's ⋯ menu on the shelf opens as a sheet from the bottom on a phone. From a card in the left column it used to open partly off the screen.
- The category bar on a phone fades at the edge when more categories are hidden off to the side, and scrolls the one you've picked into view.
- The reader's top bar on a phone has a solid background, so its buttons stay readable over a white page, and its buttons are easier to tap. Rating stars everywhere, the title page's back button, and the volume filter tabs are easier to tap too.
- A series' volumes on a phone: the All / Not Started / In Progress / Completed tabs are one filter button that opens them in a sheet, and it sits in one row with the order button and the grid/list switch, all the same size.
- Volume and chapter cards on a phone show the Read button plus a "⋯" that opens every action (mark as read, skip, bookmarks, download, rate), labelled, in a sheet from the bottom of the screen. The row of small icons used to spill out of the card. On wider screens the icons get their own row under the Read button.
Fixed
- Reading the backup settings or listing backups in Admin counted against the backup rate limit (6 per 15 minutes), so simply using the page could lock out Back up now. Only making, downloading and copying backups count now (12 per 15 minutes).
- The Docs' storage overview listed paths from an old layout (
/app/data/plinthio.db); it now shows/config. - The ebook reader's font, size and page colour choices didn't reach the book's text, and were forgotten each time a book was closed.
- Progress through a book that hadn't been opened before often showed 0% until it was reopened.
- The shelf grew endlessly while scrolling once it had more than 16 cards (most visibly Movies with "All movies" on), so you could never reach the bottom.
- The Movies, Shows and Anime shelves were headed "All Media".
- In the bookmarks window on a phone, the title box ran past the edge of the window.
- While a video was still being prepared, the skip buttons on a phone covered the "Converting for your browser…" message.
- Series cards on a phone no longer break "18/32 watched" across two lines.
New install: download docker-compose.yml and run MEDIA_DIR=/path/to/your/media docker compose up -d, then open http://<server>:8088. Full steps: Install · docs/setup.md
Update: docker compose pull && docker compose up -d — your database is backed up automatically before the new version starts.
Image: ghcr.io/oddomens/plinthio:1.4.0 (x86-64 and ARM64)
Plinthio v1.3.1
Added
- Twice the accent colours: red, orange, lime, teal, blue, purple, fuchsia and pink join the original eight, everywhere an accent is picked (setup, onboarding, Settings and Admin).
Changed
- Settings → Appearance. Your own accent colour, navigation layout, page width and pause screen now have their own tab, with the same tiles as the admin's settings and a live preview of your choices. Each shows what's in effect for you; anything the admin has locked shows the server's choice, marked "Set by your admin".
- Settings → Shelves (media categories, shelf views, and which shelf to start on) saves as you go, with no Save button. Movies, TV shows and anime can now be the shelf you start on.
- Admin → Server Config → Look & feel: each default (accent, layout, page width, pause screen) has its own "Users can change" switch, with one "Let people personalize" switch above them, in place of the separate User Personalization card.
- The live preview shows the accent colour being chosen, even when your own accent is different, and now shows page width too: the shelf is drawn on a big screen, so Contained visibly centres the page while Full width fills it. Hovering an option previews it before you pick.
Fixed
- Turning Funnel on or off now takes effect. Changing
TS_FUNNELwhile the Tailscale add-on is already running needsdocker compose up -d --force-recreate; the add-on file, the Tailscale guide and docs/remote-access.md now say so, and troubleshooting shows how to check withtailscale funnel status.
New install: download docker-compose.yml and run MEDIA_DIR=/path/to/your/media docker compose up -d, then open http://<server>:8088. Full steps: Install · docs/setup.md
Update: docker compose pull && docker compose up -d — your database is backed up automatically before the new version starts.
Image: ghcr.io/oddomens/plinthio:1.3.1 (x86-64 and ARM64)
Plinthio v1.3.0
Added
- Two-factor sign-in, optional. Anyone can turn it on in Settings → Security (it's also offered in onboarding and at the end of setup): scan a QR code with an authenticator app, confirm a code, and save ten single-use backup codes. Signing in then asks for the 6-digit code after the password. Admins can reset it for someone who lost their phone.
- Choose who can use Plinthio away from home. Admin → Network: allow access from outside the home network or not, count Tailscale devices as home, and optionally require two-factor for sign-ins from outside. Per person, in Admin → Users: whether they can use it away from home. It's checked on every request, including the reading apps, and the page shows where the device you're using is connecting from, so you can check it from a phone on mobile data.
- Tailscale, guided. The setup wizard and Admin → Network walk you through Tailscale step by step, with links to the right pages and the exact lines to paste, for private use or a public Funnel link. Admin → Network then shows when Tailscale and Funnel are working, and at which address.
- Your own look, if the admin allows it. Everyone can pick their own accent colour, navigation layout, page width and video pause screen in Settings, each with a "Server default" choice. Admins decide what people can change (Admin → Server Config → User Personalization) and set the defaults.
- A link for friends, with no domain. With the Tailscale add-on,
TS_FUNNEL=trueopens itshttps://….ts.netaddress to anyone through Tailscale Funnel: friends just open the link in a browser, with nothing to install and no router changes. Tailscale limits Funnel's bandwidth, so it suits reading and listening best. - A web address for guests. An optional
docker-compose.public.ymladd-on runs Caddy in front of Plinthio for a public address likehttps://media.yourdomain.comwith a real, automatically renewed certificate. Guests need only a browser. It can be used together with the Tailscale add-on. - Using Plinthio away from home, the guide (docs/remote-access.md): Tailscale, a web address, how to check your internet connection allows it, who can use it from where, and keeping it safe.
- Offload titles and keep their history. Short on space? Delete the files for, say, the five seasons of a show you've finished, and keep them as history: they stay on the title page, greyed, with everyone's progress and ratings, but leave the shelves, search and Continue Watching. In Admin → Health → Missing files choose Keep as history, or offload first from the title page's Keep as History and then delete the files. If the files come back, even re-downloaded under a different name, the title is restored with its history.
- Watchlists for things you don't have. A film missing from a collection has an Add to list button next to Request, and any list can hold titles found by searching, whether the server has them or not.
- Tailscale add-on for Docker. An optional
docker-compose.tailscale.ymlgives Plinthio a trustedhttps://plinthio.<your-tailnet>.ts.netaddress that works at home and away, with no certificate to install on phones (each device just needs the Tailscale app) and no router changes. It runs Tailscale next to Plinthio, so nothing needs installing on the server either. Plainhttp://<server>:8088keeps working. See docs/setup.md → HTTPS.
Changed
- The setup wizard is full screen, with bigger text and a new step, "Where will you use Plinthio?": at home only, with Tailscale, or also from the internet. New servers start home-only; servers updated from an earlier version keep working from outside as before, and Admin → Network is where to close that off.
- Only failed sign-ins count toward the sign-in limit, so a household behind one address never locks itself out, while guessing still stops after ten tries.
- Easy to tell apart: titles you had and offloaded keep their colour, dimmed, with an Offloaded badge; titles the server never had go grey with a dashed outline and Not in library.
- Lists are in the top bar, after the media types (and at the end of the sidebar), instead of the account menu.
- Lists look like the shelf: each list is a card with its first covers, and a list's titles are a poster grid with the same header and width as the rest of the app.
- Library Health groups missing files by film, series or season, each with Keep as history or Remove for good. "Remove all" never removes offloaded titles.
- Setting up HTTPS now starts with Tailscale. Docs → PWA Mobile App Setup, Docs → Remote Access & Tailscale and the setup wizard recommend Tailscale first. Plinthio's own certificate is still there as the alternative for a home network without Tailscale.
Fixed
- Mistyping your password or a code in a form no longer signs you out. Wrong answers used to look like an expired session to the app.
- The Tailscale guide in Docs told people to open
http://…:8088over Tailscale and implied it was already set up. It now has the actual steps for the server and for each device, over HTTPS.
New install: download docker-compose.yml and run MEDIA_DIR=/path/to/your/media docker compose up -d, then open http://<server>:8088. Full steps: Install · docs/setup.md
Update: docker compose pull && docker compose up -d — your database is backed up automatically before the new version starts.
Image: ghcr.io/oddomens/plinthio:1.3.0 (x86-64 and ARM64)
Plinthio v1.2.0
Added
- Built-in HTTPS. The Docker image now also serves HTTPS on port 8443, with a certificate from its own local certificate authority. Install that CA once per device (Docs → PWA Mobile App Setup has a download button and steps for iPhone, Android and desktop) and the "not secure" warning goes away, and the installed app gets offline reading, which browsers only allow over HTTPS. The certificate picks up the address your devices use by itself, and the setup wizard points new installs to it. The CA can only sign for private addresses and local names. Plain HTTP on 8088 keeps working. Bring your own certificate by putting
cert.pemandkey.pemin/config/ssl. - Sharper, lighter manga pages on phones. The reader asks for pages at the size your screen shows them, instead of full-resolution scans of several MB each: much less data and memory, and faster page turns. Zooming in swaps to the full-size original. Downloads keep full size.
- Reader settings are remembered. One- or two-page spread, and scroll mode per series, are remembered on each device; the fade or flip page turn follows you to every device.
- Faster page turns. The reader loads the next three pages ahead (and the one behind), plus the next volume's first page near the end.
- Report a problem. Admins get a link (in the account menu and on Docs → Troubleshooting) that opens a GitHub bug report with the version and browser filled in.
- Title page actions on phones sit in a labelled "⋯" menu beside the main button, instead of a row of icons you had to guess at.
Changed
- Updated libraries, including the one that sets the server's security headers. Behind a reverse proxy that serves HTTPS, browsers are now told to stick to HTTPS for a year instead of six months; with Plinthio's own HTTPS (the Docker default) that header isn't sent at all, so the plain-HTTP address keeps working.
Fixed
- The setup wizard stopped at step 5. Continue did nothing on the Household step, so a new server couldn't finish setup from the wizard.
- Swiping went the wrong way in right-to-left manga. Swiping right now turns to the next page, as tapping the left side already did.
- "Read Again" opened a finished volume or book on its last page. It now starts from the beginning.
- Downloads silently missing over http://. The Download button now explains that downloads need HTTPS and how to set it up, instead of not appearing.
- The manga reader reloading on phones in scroll mode. Scroll mode loaded every page of a volume at full size at once, which ran phones out of memory until the browser reloaded the page. Now only the pages around the one you're reading are kept in memory. A swipe past the top of the reader also no longer pull-to-refreshes the page behind it.
- The page slider and buttons in scroll mode. The slider, previous/next buttons and arrow keys now scroll to that page, the page counter follows what's on screen, reopening resumes at your page, and progress saves as you scroll instead of only when you close the reader.
- Title page on phones. The Continue button stays on one line, an unrated title no longer shows an empty server rating, and the series badge and progress line are easier to read.
New install: download docker-compose.yml and run MEDIA_DIR=/path/to/your/media docker compose up -d, then open http://<server>:8088. Full steps: Install · docs/setup.md
Update: docker compose pull && docker compose up -d — your database is backed up automatically before the new version starts.
Image: ghcr.io/oddomens/plinthio:1.2.0 (x86-64 and ARM64)
Plinthio v1.1.0
Added
- Backdrops on title pages. Movies and shows open under their TMDB backdrop with the title's logo on it. On a wide screen at full width, the poster sits over the backdrop and the details, episodes and cast line up beside it.
- Full-width pages. Pages now use the whole screen, and big displays get more posters in a row (nine across at 1920px) instead of five oversized ones. Anyone who prefers the old centred layout can pick Contained in Settings → Preferences → Page Width. It's per person, so a TV and a laptop can differ.
- Opening sequence. Admins can switch on a short Plinthio clip that plays full-screen before movies and episodes when someone presses Play, like a streaming service's intro, and the title starts the moment it ends. Replace it with your own 1–10 second MP4, or limit it to movies or shows. Off by default, always skippable, and never when resuming, before autoplayed next episodes, trailers or watch parties. Admin → Server Config → Opening Sequence.
- Live preview in Admin → Server Config. Theme, navigation layout, ratings, movie collections, watch parties, pause screen, server name and sign-in notice now sit beside a preview of the shelf, a title page, the sign-in screen and the player. It updates as you change each setting, and hovering a pause screen style previews it before you pick it. It uses your own movies' posters when the server has some.
Changed
- A new sign-in page: the logo, a welcome and the sign-in card in one centred column over soft, slowly shifting colour, with the admin's notice at the top of the card and a show-password button. It uses no online services and shows nothing from your library before someone signs in, and it stays still for anyone who has reduced motion turned on.
- A new logo, in the app, on the sign-in and setup screens, and as the icon when you install Plinthio on a phone or desktop. Android gets a properly padded version so the launcher doesn't crop it.
- Seasons as posters. A show's or anime's seasons are picked from a row of posters (each season's own art from TMDB, or the show's poster) with a check on finished seasons, instead of plain "Season 1, Season 2" buttons.
- Movie collections as posters. A collection's page shows its films as a poster grid, like the shelf, instead of an episode-style list. Hover a poster to play it straight away.
- A film always opens its own page. With the shelf on "All movies", in Continue Watching and anywhere else a single film appears, clicking Shrek 2 opens Shrek 2 rather than the Shrek collection. Its page links to the rest of the collection.
- Pause screens fill the screen. Details and Cinematic are sized to the player, so the poster, title and details are large on a TV or a big monitor instead of sitting small in one corner. Bedtime's clock scales the same way.
- Updated libraries on the server (password hashing, file types, 7z archives, settings loading) and in the app (state management, icons), plus the build and release tooling. Nothing to do when upgrading: existing passwords keep working.
.m4baudiobooks are now served with the correct audio type.
Security
- File uploads (avatars, cover art, the opening sequence) use an updated upload library that fixes several ways a crafted request could tie up or crash the server.
Fixed
- A show no longer splits in two when its files spell its name differently. Episodes from different release groups ("Farming Life in Another World" and "Farming.Life.In.Another.World") are now one show, named after its folder, with any series settings or Kids Mode entry carried over. Existing splits merge on the next scan.
- Server name and sign-in notice save as you type, like the other appearance settings, and the notice has a button to remove it. Before, they only saved with the button under Custom CSS, so clearing the notice could look done without being saved.
- The sign-in notice set in Server Branding now actually appears on the sign-in page, and the sign-in page greets people with the server's name.
New install: download docker-compose.yml and run MEDIA_DIR=/path/to/your/media docker compose up -d, then open http://<server>:8088. Full steps: Install · docs/setup.md
Update: docker compose pull && docker compose up -d — your database is backed up automatically before the new version starts.
Image: ghcr.io/oddomens/plinthio:1.1.0 (x86-64 and ARM64)