github Moonfin-Client/Plugin 2.4.0
v2.4.0

2 hours ago

Moonbase 2.4.0 Release Notes github

Moonbase 2.4.0 is the server side of Moonfin 2.7.0. It builds the new seasonal Home row, which brings out the holiday movies you own, plus Seerr suggestions, at the right time of year, and it syncs the settings the new clients added: the phone bottom bar, the Friends button, detail screen sections and seasonal effect density. Custom rows now carry each title's rating and details and respect parental limits, large MDBList rows finally load, and anime markers match libraries with non-English titles. The bundled web client moves up to Moonfin 2.7.0 with friends and chat, the seasonal row, Live TV recovery, and a fix for Seerr notifications that never reached the browser.

Note

The seasonal row and the new rating checks on custom rows both lean on TMDB. If you haven't already, set a Server-wide TMDB API Key under TMDB Integration. Without one, Emby's seasonal row has no way to find holiday movies, and a user with a parental limit and no TMDB key of their own gets empty MDBList, IMDb and Letterboxd rows.

Features

Seasonal Row

  • A seasonal Home row for Moonfin clients. Holiday movies the user owns, plus popular titles they don't have yet to request through Seerr, for New Year's, Valentine's Day, Easter, Pride, Halloween, Thanksgiving, Christmas, Lunar New Year and Diwali. Clients turn it on under Integrations > External Lists > Seasonal Row, and it's off by default.
  • Each holiday has its own window. New Year's runs December 27 to January 1, Valentine's Day February 1 to 14, Easter the week before through Easter Monday, Pride all of June, Halloween all of October, and Christmas from the day after US Thanksgiving to December 26. Thanksgiving covers the six days before it, on the US or Canadian date. When two windows overlap the shorter one wins, and a holiday with fewer than six titles hands over to the next active one.
  • The country decides the local holidays. The client sends the viewer's country, and without one Moonbase uses the server's metadata country. Lunar New Year shows in China, Taiwan, Hong Kong, Macau, Singapore, Malaysia, Vietnam and South Korea, and Diwali in India, Nepal, Singapore, Malaysia and Fiji.
  • Titles are found by TMDB keyword. On Jellyfin, owned movies come from the keyword tags Jellyfin's TMDB provider already writes, so nothing extra is needed. A new Moonfin Seasonal Keywords Sync task also runs at startup and daily at 4:00 on both servers, using the server-wide TMDB key to fill in keywords and refreshing each movie every 180 days. Emby has no keyword tags, so on Emby the row depends on that task.
  • Owned movies are looked up as the user, up to forty, shuffled once a day per user so every device shows the same order. Suggestions are TMDB's popular titles for the holiday minus anything owned, up to forty, and only show when Seerr is on, the user is signed in to Seerr, and a TMDB key is available. They're cached per holiday for thirty days and shared by everyone.
  • Parental limits apply to both halves. Owned movies follow the server's own limits, suggestions are checked against the user's limit using the TMDB certification for the server's metadata country, and under a limit anything unrated is left out.
  • Admin defaults for whether the row is on, the country, and which holidays show.

Custom Rows

  • Custom row items carry their rating and details. IMDb, TMDB, MDBList and Letterboxd items now include the TMDB certification, overview, genres and runtime, so clients can show them on the card. Rows saved before this are fetched again once.
  • Rows fetched with a user's own TMDB or MDBList key are cached for that user rather than shared with everyone.

Settings Sync and Admin Defaults

  • Bottom bar style and tabs. The phone and tablet bottom bar style (Dock, Split or Strip) and up to three pinned tabs sync, with admin defaults for both. Leaving the tabs unset lets each device pick them from its navigation buttons.
  • The Friends button for the Achievement Badges plugin's friends and chat syncs, with an admin default on Jellyfin.
  • Detail screen sections a user hides sync per kind of device. Before, the server dropped them.
  • Seasonal effects. Christmas, Spring Petals, Fireflies and Halloween join the Seasonal Effects default, and a new Density default picks Light, Normal or Heavy.
  • Great-Grandparents is in the interface size options.

Moonfin Web

The bundled web client picks up everything web relevant from Moonfin 2.7.0.

Friends and Chat

  • Friends and chat from the Achievement Badges plugin. If your server runs the Achievement Badges plugin with friends turned on, Settings > Integrations > Achievement Badges > Friends shows who's online and what they're watching or last watched, and opens the item from there.
  • Friend requests with an Add friends search, and a card per friend with their stats and badges plus Send message, Remove and Block.
  • One to one and group chats with photos, emoji, read ticks, and editing or deleting your own messages. Groups can be renamed, have members added or removed, and have their own admins.
  • Privacy holds the plugin's settings for appearing offline, hiding what you're watching, and message notifications, and new message banners stay quiet while something is playing.
  • A Friends button in the navigation with a count of requests and unread messages. It's off by default.
  • Unlock notifications. A switch above Badges shows a banner when you earn a badge.

Seasonal Row and Effects

  • The seasonal row from Moonbase, under Settings > Integrations > External Lists > Seasonal Row. Each holiday can be unticked on its own, and the country follows your browser unless you pick one.
  • The seasonal effects were redone. They're drawn as real sprites instead of text symbols, start full instead of empty, and fireworks are actual rockets that burst. Christmas, Spring Petals, Fireflies and Halloween join Snow, Fireworks, Confetti and Falling Leaves, with a Density setting of Light, Normal or Heavy.

Remote Control

  • The remote control has a D-pad. A round pad with OK, plus Back and Home, moves around the other device's menus, and a Search button types into it.
  • Moonfin Web can be driven from a remote now. Navigation sent from the Jellyfin dashboard or another Moonfin arrives as real key presses, and a search sent from a phone opens Search with it.

Live TV Recovery

  • A stalled channel recovers on its own. A frozen picture, or a fresh tune with no picture after thirty seconds, starts up to three paced attempts, from a fresh session to having the server remux or transcode the channel. You see Reconnecting (1 of 3) while it works, and a Failed to play card with Retry if it can't.
  • Live channels can remux when Live TV Direct is off, and on-demand transcodes that run dry get the same limited retries instead of sitting on their last frame.

Libraries and Details

  • Library Order under Settings > Personalization > Libraries, saved to the user's server account so other apps follow it too.
  • Hide detail screen sections under Settings > Personalization > Details Screen > Sections, synced through Moonbase.
  • Sort & Filter got a Clear for each category and a search box on long lists.
  • View Details on playlist items, with Back returning to the playlist.

Everything Else

  • Playback languages in the setup wizard, under the themes on the last step.
  • A Great-Grandparents interface scale, a step above Grandparents.

Bug Fixes

Anime Markers

  • Anime with a non-English library title gets its markers. Matching only used the library name and the original title, which is usually Japanese and came out empty once normalized, so a Catalan library's "El detectiu Conan" or "Bola de Drac" matched nothing. Moonbase now looks up the English and romaji titles behind the series' AniList, AniDB, MyAnimeList, Kitsu, TVDB, TMDB or IMDb ids, caches them for thirty days, and tries them before the sync runs. IMDb ids are found again too, since the mapping table lists them as an array and Moonbase was reading a string.

Seerr

  • New request notifications reach every request manager. Only managers who had saved their notification preferences with new requests switched on got them, while the app showed that switch on by default, so most never heard a thing. Every Seerr session with Manage Requests, Admin, or the Seerr owner is notified once now unless they turned it off, and the person who made the request is left out.

Custom Rows

  • Large MDBList rows load on Jellyfin. A list of 450 or so items took longer to resolve than the client waited, the server cancelled the work when the client gave up, and nothing was cached, so the row never appeared. The resolution now keeps going, caches its result, and a retry joins the run already in progress.
  • TMDB TV chart rows open the right show. Popular, Top Rated, Airing Today, On the Air and trending TV carry no media type, the 2.3.0 rework checked the path for "show" instead of "tv", and so they were labeled as movies and opened whatever movie shared the TMDB id. This was Jellyfin only.

Privacy

  • Custom rows respect parental limits. IMDb, TMDB, MDBList and Letterboxd rows ignored the user's parental rating limit. The server now filters each one by the TMDB certification, and under a limit titles with no rating are left out.

Jellyfin Enhanced

  • Jellyfin Enhanced's header buttons work next to Moonfin's. Jellyfin Enhanced puts its buttons in whatever sits before the user avatar, which in 2.3.0 was the Moonfin button, so its buttons ended up inside ours and clicking the Calendar or any of the others opened Moonfin Web instead. The Moonfin button now sits in Jellyfin's own header button row.

Moonfin Web

Seerr and Moonbase

  • Seerr notifications reach the browser. The settings stream that carries them never delivered on web, since the browser's HTTP adapter waits for a response to finish and this one never does. It reads the stream as it arrives now. The stream also stopped timing out before the server's heartbeat, notifications without a page to open are shown instead of dropped, and one screen closing can't unhook the rest.
  • Seerr rows load quickly after sign-in. Sign-in waited on that same stream, which never finished on web, so every sign-in sat through an eight second timeout and a late home reload stole focus. It opens in the background now, and Moonfin skips signing in to Seerr again when Moonbase already holds the session.
  • The Seerr detail page keeps up with a request until the title is available, refreshing every fifteen seconds while it downloads and every thirty while it waits.

Playback

  • Subtitles set to Off stay off. Every external subtitle track was made visible as it loaded, so one showed anyway.
  • Auto bitrate picks a sensible bitrate. It timed a single download including connection setup, which under-read fast links, and a source above the measurement went out with no ceiling, so a transcode that happened anyway came out at the smallest size.
  • Max Resolution applies to VP9, VP8, MPEG-4 and MPEG-2, so a 4K VP9 file is transcoded down instead of direct playing past your limit.
  • The player controls hide on their own after Resume, and wide logos in the player stay a sensible size.
  • Player and detail buttons follow UI Scaling, where only the text around them grew.

Live TV

  • Stopping a channel releases it on the server. A fresh resolve, such as a transcode retry, opened the channel a second time and the stream it replaced was never closed, so the tuner or IPTV connection stayed busy. A session also closes its stream only once now, so a reconnect can't cut off another viewer sharing the channel.
  • Recording tiles open with Enter on the Recordings, Schedule and Series Recordings screens.

Home, Search and Libraries

  • Home rows and the media bar stop going blank on Firefox after scrolling away and back. A shown image was decoded a second time, which paints blank on Firefox.
  • Search shows results without waiting on People, which held the whole search for thirty seconds on some servers, and multi-server search covers every signed-in server.
  • Continue Watching is current on load when it's merged with Next Up, instead of showing finished episodes for half a minute.
  • An empty Home stays empty once every library is gone, and the first Home card you reach from the media bar or toolbar plays its preview.
  • Moonfin's Blocked Ratings cover IMDb, TMDB and MDBList rows, using the certification Moonbase now sends.
  • Custom rows load large lists, waiting forty five seconds instead of fifteen, and the check when you add one shows the real failure instead of No results returned.
  • Mixed and home video libraries sort properly, with the premiere date and rating sorts, and shows and movies interleaved by name.
  • Collections of Live TV channels show their channels, collections open on Movies with Expanded Tabs, and Classic details show a row for every collection a movie belongs to.

Details and Interface

  • Play only highlights when focused, like the buttons beside it, instead of keeping a permanent accent fill.
  • Detail rows line up, and extras rows lose the big gap under featurettes.
  • A long artist list no longer stretches the top bar music player, and classic home row titles stop drawing over the info overlay while you scroll with a mouse.
  • Animated avatars redraw half as often, and the server messages button fills the top bar on hover.

Emby

  • Next Up matches Emby's own. The 2.6.0 workaround only looked at your last hundred played episodes, so a binged show could crowd out everything else. Moonfin asks Emby 4.10 for the same Next Up list Emby's home screen uses.
  • Recently Released rows stop repeating, and parental controls apply to them.
  • All Genres and the home Genres row fill again. Emby's genre list has no item counts, so every genre looked empty.
  • Unable to connect after a server restart is gone for Emby reached from outside its network.

Admin

  • New Jellyfin libraries keep their folders, and the admin pages got proper button sizes, rounded highlights and no second back button.

Contributors

Huge thanks to everyone who contributed this release:

Don't miss a new Plugin release

NewReleases is sending notifications on new releases.