Moonbase 3.0.0 Release Notes 
3.0.0 ALREADY?? What changed?
Nothing changed really. This update was bigger than I honestly thought it and it should have been marked as 3.0. Also now that all Moonfin clients are equal in terms of features, functionality, and UI, this gives me a change to have all clients and the plugin on the same release numbers and release schedule. I apologize for any confusion and annoyance.
The same release notes as 2.5.0 are below:
Moonbase 3.0.0 is the server side of the 3.0.0 Clients app for Core, Smart-TV, and Roku
Game libraries can now come from a RomM server, and each user can link their own RomM account so their saves follow them there. Sign-in PINs move to the server. Live TV catches recordings that missed part of their airing and books the next full showing, and anime markers work on Emby too. TMDB now supplies reviews, person links and details for titles outside your library. The Seerr proxy holds limited users to their parental rating, and the admin page was reorganized to match the apps' new settings layout.
The bundled web client moves up to Moonfin 2.8.0. It brings dual subtitles, the rebuilt music player and admin panel, and the new library styles. The audio track you pick also actually plays now.
Note
A lot of this release leans on TMDB. Reviews, person links, titled backdrops, descriptions on custom rows and details for titles outside your library all need a TMDB key. The Seerr proxy also checks each title's rating on TMDB now, so without any key, users with a parental limit see nothing from Seerr.
Important
The Background Backdrops admin default is now two defaults: Home Screen Backdrop and Details Screen Backdrop. Values set for the old default aren't carried over, so if you used it, set the new ones again.
Features
RomM
- Game libraries can come from RomM. On the Games tab, enter your RomM server and a RomM client token, then pick a Library for RomM games. Every Moonfin app then browses and plays that server's games through Moonbase.
- The token needs the
roms.read,platforms.readandfirmware.readscopes. - A Mixed Content library pointed at an empty folder works well, and your server's library access decides who sees it.
- Test RomM connection reports the RomM version, how many of its platforms play in Moonfin and how many games it found.
- The token needs the
- RomM only has to be reachable from your media server. Moonbase streams the ROMs and BIOS files itself, and the token never reaches the apps.
- Only playable platforms show. Moonbase lists the 28 platforms Moonfin has a core for, so systems like Saturn stay hidden. Box art comes from RomM's own cover first and libretro second. RomM's metadata wins, with LaunchBox filling the gaps. The list refreshes every 5 minutes, and if RomM goes offline, the last copy stays.
- Each user can link their own RomM account. The app shows a code to approve in RomM. After that, the user browses with their own account, and saves for RomM games sync both ways.
- Battery saves use RomM's autosave slot, the same one RomM's own player uses, so progress carries over in either direction.
- The newer copy wins. If RomM is down, the local save is used, so nothing is lost.
- Users who don't link keep browsing with the server's token, and their saves stay in Moonbase like before.
- The approval link points at the RomM address Moonbase uses, so pick an address your users' phones can open too.
- Changing the RomM server drops every link. Unlinking only forgets the token and doesn't revoke it in RomM.
Retro Games
- Battery saves for EmulatorJS. The EmulatorJS player Moonbase hosts now loads and returns battery saves, not only save states, so in-game saves follow you to your other devices.
- Box art in its real shape. The artwork manifest now carries each image's width and height. The apps use that to shape each system's grid around its box art instead of cropping everything to a portrait card. Art that's already cached is measured at startup, and nothing is downloaded again. This only applies on Jellyfin.
- Better artwork matching on Jellyfin.
- Checksums now match Genesis ROMs in the SMD format, byte-swapped N64 ROMs and ROMs with a 512-byte copier header.
- A checksum match also tries the database's own spelling of the name.
- Similar names only count when the title and edition match, so another game's art can't be offered.
- Each system's database is checked for updates at most once a week, and missing art is retried when matching changes.
Live TV
- Incomplete recordings are caught. Moonbase watches each recording's file as it's written. When the best copy covers less than the Incomplete threshold, it's tagged so the apps can mark it Incomplete. The threshold is 90% of the airing by default. A recording you stopped yourself is left alone. If Moonbase couldn't watch enough of a recording to be sure, nothing is flagged. Live TV managers can choose Keep as Complete in the apps.
- The next full showing gets recorded. With Re-record incomplete episodes and movies on, Moonbase books the earliest later airing on any channel. When two start together, it picks HD. It keeps looking for 60 days.
- Episodes match on the series, season, episode number and title.
- Movies need a matching title and description, and their years and IDs can't disagree.
- Delete incomplete copies removes an episode's Incomplete copies once it records complete. Copies kept as complete stay, and movie copies are never deleted.
- Record now, later or both. When someone records something that's already airing, the apps can ask Moonbase for a later showing of the same episode or movie on a channel that user can see. Moonbase also says whether that showing is already booked.
- A new Live TV tab holds all of this. Detect incomplete recordings is on by default, and the re-record and delete options start off.
Server PINs
- Sign-in PINs live on the server. A PIN set in a Moonfin app is now stored by Moonbase, so it follows the user to every device. The server only keeps a salted, slow hash of it.
- Wrong guesses slow down. After five wrong tries, each new one waits 30 seconds longer than the last, up to 15 minutes. The count survives a server restart, and the right PIN clears it.
- Admins can set, change or remove anyone's PIN from the new Accounts tab. Setting a new one is also how you reset a forgotten PIN.
Anime Markers
- Anime markers work on Emby. These work the same as on Jellyfin, with the same Moonfin Anime Markers Sync task:
- Filler, Mixed, Recap and canon badges
- the Subbed and Dubbed pills
- English and romaji title lookups
- Preview, Check matching and the debug log
- Shorter audio pills. Audio pill wording, under Anime Filler & Recap Markers, switches Subbed, Dubbed and Subbed/Dubbed to Sub, Dub and Sub/Dub in every app.
TMDB
These all need a TMDB key, either the server-wide one or the user's own.
- Reviews. Up to 20 TMDB user reviews per movie or series, in the app's language, with English as the fallback.
- Person links. A person's IMDb page, website, and Instagram, X, Facebook, TikTok and YouTube accounts, for the links on person pages.
- Details for titles outside your library. The overview, rating, genres, runtime, logo and trailer for a title from IMDb, TMDB or Seerr, in your server's metadata language. The apps use this for External Lists in the media bar.
- Titled backdrops. For a title your server doesn't have, Moonbase finds the TMDB backdrop with the title on it, in your server's metadata language. When there isn't one, it uses the main backdrop.
Custom Rows
- Custom rows in the app's language. MDBList, TMDB and Letterboxd rows are fetched in the language the app asks for, and cached per language. IMDb rows stay in English, since IMDb only serves English.
Admin Page
- The admin page was reorganized.
- General is now Settings Sync, which shows where each setting comes from, and Web Client.
- User defaults is split into the same sections the apps use: Account, General, Appearance, Home Screen, Libraries, Details Page, Playback and Integrations.
- Each category folds away, and settings that depend on another one stay hidden until it's on.
- New Live TV and Accounts tabs hold the recording and PIN options.
- Hide libraries for new users. Hidden libraries, under User defaults > Libraries > Library Visibility, turns off the libraries you pick in each new user's Library Visibility. Your server's own home screen hides them too. Users keep access and can show them again. To hide them for existing users, save, then use Apply Defaults on the Actions tab. Moonbase only ever adds libraries to the hidden list, so anything a user hid themselves stays hidden.
- Custom list rows for everyone. The home layout builder has a Custom Lists tab with the same form the apps use. You can add TMDB, Letterboxd and MDBList rows to every user's Home.
- Default detail page sections. Default Sections, under User defaults > Details Page, lists every section, including Reviews and Seerr's streaming services. Uncheck the ones users should start without.
- Per-row image types. Each home row can default to Poster, Thumbnail or Banner art for the Classic row type, and the choices sync to the apps.
Settings Sync and Admin Defaults
- New synced settings, each with an admin default:
- Video Library Style, Book Library Style and Music Library Style
- Keyboard Style for TV
- Peek Home Rows
- Media Preview, which is now Off, Media Preview or Trailer Preview, plus Trailer Volume and Preview Volume
- Home Screen Backdrop (Off, Full Screen, Corner or Top) and Details Screen Backdrop, plus Details Backdrop Size for phones
- Titles Under Posters and Show Libraries Individually
- Ratings for home rows and the media bar, each with its own sources and order, labels and badges, plus TMDB episode ratings on home rows
- Default Action for Continue Watching and Next Up
- Sorting for IMDb, TMDB and Seerr rows
- Prefer Text Subtitles and Prefer External Subtitles
- Cinema Mode Skip Button
- Focus Follower
- External Lists in the media bar sync too, but without an admin default.
- More choices in the admin defaults. The home layout builder has the On Now section, and card size has Grandparents. The seasonal effect picker adds Valentine's Day, Easter, Pride, Lunar New Year and Diwali.
Moonfin Web
The bundled web client picks up everything from Moonfin 2.8.0 that applies to the web. Web uses the desktop layout in a wide window and the phone layout in a narrow one, so a few of these depend on the window size.
Player and Subtitles
- Browse episodes without leaving the player. An Episodes button opens season tabs scrolled to the episode you're on. Pick one and it plays, with the rest of its season queued.
- Dual subtitles. Turn on Secondary Subtitles under Settings > Playback > Subtitles to show a second SRT or WebVTT track. It has its own delay, size, color and spacing.
- Subtitle Delay, Subtitle Size and Vertical Offset in the track picker, so you can adjust them without leaving playback. Audio Delay isn't available in the browser.
- Prefer Text Subtitles and Prefer External Subtitles change which track is picked for you. Subtitle Download Languages searches up to five languages at once.
- Click to play or pause, and double click for fullscreen. Backspace, Delete or a right-click hides the Next Up card and skip prompts first, then open panels, then the controls.
- Keyboard shortcuts. S or Enter skips an intro or credits, and Shift+N and Shift+P jump to the next and previous item. The sheet under ? or F1 lists them all.
- Docked play buttons and a light dim behind the controls. Playback Information was also rebuilt, and it explains the play method and any transcode reasons in plain words.
- A skip button for Cinema Mode pre-rolls. The X on Next Up also keeps the episode playing through the credits.
Live TV
- Record from the player, choose which episodes a series records, and see series recordings marked in the guide and the player.
- The Incomplete badge and Record now, later or both, from Moonbase's new Live TV features.
- Episode titles in the guide, a standalone On Now section for Home, and volume control with a mute button in the Live TV player.
Home
- The redesigned Classic info area, and separate ratings for Home and the media bar.
- External Lists in the media bar, sorting for IMDb, TMDB and Seerr rows, and custom rows in your language.
- Home Screen Backdrop can be Off, Full Screen, Corner or Top. Peek Home Rows lets the first row peek out under the media bar. Both need a desktop-width window.
- Trailer Preview plays the trailer your server holds for the focused card. YouTube trailers don't play as card previews on web.
- Play straight from Continue Watching and Next Up with the new Default Action. There's also a Home Rows editor split into Enabled and Disabled, a Grandparents card size and tighter spacing.
- Five new seasonal effects. Valentine's Day, Easter, Pride, Lunar New Year and Diwali.
Libraries, Music and Books
- Classic, Modern and Docked library styles, Folder View in every library, Titles Under Posters, Show Libraries Individually, multi-part movies, and Sort and Filter on playlists.
- The rebuilt music player, plus the Classic, Quick Access and Immersive music library styles.
- The Classic, Bookstore and Reading Room book library styles, book series, and comic and PDF progress that syncs with your server. The new EPUB reader isn't on web.
Details
- TMDB reviews, a trailer picker, collections with their missing titles in every style, person page links and roles, and the streaming services a Seerr title is on.
Games
- Link your RomM account, battery saves for EmulatorJS games, the redesigned game details screen, box art in its real shape, and paging through the game grid.
Sign-in, Settings and Admin
- A Quick Connect QR code, enforced access schedules with a Time's up screen, and sign-in PINs from the server.
- Settings were reorganized into Account, General, Appearance, Playback, Integrations and About, and Settings Sync follows the profile you pick. Web starts on the Desktop or Mobile profile, depending on the window width.
- The rebuilt admin panel, now on Emby 4.9 and later too, with settings search, a live Dashboard, more of the server to manage, and rebuilt Analytics.
- A new search bar, and menus show focus as a solid highlight.
Bug Fixes
Settings Sync and Admin Defaults
- Apply Defaults in merge mode reaches app users. It used to only write into each user's Global profile. Every Moonfin app keeps a full device profile on top of Global, so the defaults changed nothing for app users. Merge now also writes your defaults into each device profile a user already has, without creating new ones. Lists you never set are left alone instead of wiping the user's own.
- The SyncPlay button default works. The button only shows while SyncPlay itself is on, and SyncPlay had no default, so users still had to turn it on themselves. Enable SyncPlay is now a default on both servers, and Emby gets the Show SyncPlay Button default too.
- Seerr Discovery Rows and Block NSFW defaults stick after Save. An old Jellyseerr copy of each setting, kept from before the rename to Seerr, rode along with every save and wrote the previous value back. Those copies are gone. The
/Moonfin/Jellyseerrroutes kept for apps from before the June rename are gone too. - The home layout builder lists every row. Since You Watched, Rewatch, IMDb, TMDB and the Radarr and Sonarr rows were missing on Emby. Studios, Seasonal, Artists, Albums and Audio Playlists were missing on both servers. External Lists now has its own tab on Emby, like on Jellyfin.
- Emby's admin page has every setting. Public Server URL, Sync MDBList official lists with its item cap, and the studio logo refresh age had no fields there.
- Settings search covers every User defaults section, not just the one that's open.
Home and Custom Rows
- Custom rows have descriptions. Moonbase 2.4.0 gave IMDb, TMDB, MDBList and Letterboxd items room for an overview, genres and runtime, but only ever filled in the age rating. They're now looked up on TMDB, in your server's metadata language.
- IMDb chart cards get a real backdrop. Their backdrop used to be the poster. Moonbase now finds the TMDB backdrop for each title. Without a TMDB key, it leaves the backdrop empty.
- IMDb chart posters load much faster. Moonbase used to ask IMDb for the original images, often 1,400 pixels wide and up to 4 MB each. It now asks for 500-pixel images, about 75 KB each.
- IMDb rows keep up with the daily sync. A second 24-hour cache held them a day behind.
- Rows set to Thumb or Banner show that art. The seasonal row, the media bar and similar items only carried the backdrop, so they showed it even when the library had the real thumb or banner.
- The seasonal row shows each title once. A movie in two libraries, like a 4K and a 1080p copy, used to show twice. Suggestions could also repeat, or offer a movie you own when it only matched by IMDb ID or by name and year.
- The Radarr and Sonarr Upcoming rows use the right server.
- Moonbase used to take the first Radarr or Sonarr in Seerr's settings, which could be a 4K or non-default one. Now it picks Seerr's regular default server.
- The rows also came up empty when your media server couldn't reach Seerr's internal address for that server. Moonbase now falls back to the External URL you set in Seerr.
- It only sends the API key to that URL over HTTPS or on your local network.
Privacy
- The Seerr proxy holds limited users to their parental rating. Before, a user with a parental limit could see and request anything through Seerr. Now Discover, search, recommendations, credits and collections leave out titles above the limit, and unrated ones too. Opening, requesting or watchlisting one is refused. Users without a limit see everything as before.
Anime Markers
- Markers land on the right episode when the site numbers episodes differently. Episodes were paired with AnimeFillerList's only by number. On a show like Pokémon, the site follows a dub order that skips episodes, so every badge after the first gap landed on the wrong episode. Moonbase now pairs by air date when the numbers clearly don't line up, and uses episode titles to break ties. Shows cached before this are fetched again on the next sync, or right away with Fetch now.
Retro Games
- PlayStation cue/bin games load.
- A loose cue/bin now shows up in the library, and the .bin tracks a .cue lists are no longer offered as BIOS files.
- A zipped PlayStation disc over 512 MB no longer fails with a 413 error. A .zip is sent whole, and a cue/bin or .7z goes out as one zip with every track.
- On Jellyfin, .7z games load now. The plugin's manifest never listed the library that opens them, so Jellyfin never loaded it.
- Game Boy Color games get box art. The same core plays Game Boy and Game Boy Color, so art was only looked up in the Game Boy set. A folder named GBC, or with Game Boy Color in its name, now looks in the Game Boy Color set first.
- Box art no longer stays missing for a game whose details were looked up before its artwork. That lookup was read as no match. Old misses are retried once after the update. This only affected Jellyfin.
Moonfin Web
Playback and Subtitles
- Web plays the audio track you pick. Browsers always play a file's first audio track, so the server now remuxes when you pick another one.
- Subtitles no longer show a second language in Chrome and Edge, and they stay off when you pick Off.
- Your audio and subtitle picks stick. The details page was wiping them as it finished loading.
- A forced track no longer wins over the full one. Forced tracks in languages you don't read are skipped, and older language codes like ger and fre match deu and fra.
- The next episode no longer gets marked watched by mistake right after an auto-advance. A failed playback request also shows an error instead of nothing.
- Admins can download subtitles on Jellyfin.
Live TV
- Recordings still in progress play, and canceling a recording from Schedule works. Canceled, completed and failed timers also leave the schedule.
- The Sonarr calendar and the Today and Tomorrow labels stay on the right day, and the Live TV landing page has the navigation bar.
Home
- Home no longer lags with lots of collections, since rows load as they get close to the screen. Next Up and Continue Watching page properly, the media bar loads faster, and the backdrop blurs once instead of on every frame.
- Custom chart rows are cached per account, so a child signed in on the same browser can't see an adult's unfiltered row.
- Image Type per Row reaches every row, and Media Bar Item Count works with Settings Sync off. Dragging rows in the Home Rows editor works too.
- Hiding from Continue Watching or Next Up on Emby keeps your progress.
Libraries, Details and Navigation
- Mixed libraries list shows and movies together, and playing a collection follows its order. Missing dates no longer show as Dec 31, 0.
- New playlists are private on Jellyfin, and creating and renaming playlists works on Emby again.
- Comics and PDFs open in the web reader instead of failing with an unsupported operation error. CBR and CB7 comics still can't be opened in a browser.
- The side menu works from the keyboard, and a refused sign-in explains itself. Forgot PIN clears the PIN, and music stops when you sign out or open a trailer.
- Emby channel libraries and Home media previews play on Emby.
Seerr and Admin
- A Seerr page switches to the library title once it's available. Request tiles are the same height, and Seerr cards no longer use their poster as a backdrop.
- Saving a user's permissions keeps the rest of their policy. Access schedules, allowed tags and blocked unrated items no longer get reset.
Games
- PlayStation cue/bin, .7z and .pbp games load in EmulatorJS, and game artwork no longer flickers on focus.
Contributors
Huge thanks to everyone who contributed to this release: