Skip to content

Releases: puddingstudio/MiSTerFin

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 07 Aug 13:37

MiSTerFin v1.0.0 — this release closes out the v1 scope: playback, browsing, and Jellyfin integration are all where they were meant to land.

Jellyfin dashboard integration

The Activity dashboard's session card now shows accurate transcoding info instead of always claiming direct play. Admin messages sent from Jellyfin ("Send Message") now appear as an on-screen banner — a blue bar rises from the bottom and the text scrolls right-to-left, both on the browser/menu screens and directly over live video playback. Remote pause, play, stop, next and previous track all work from the dashboard too, wired through the exact same input handling as the physical buttons.

Two new music visualizers

Now Spinning — the album cover as a spinning CD with a reactive graphic-EQ bar underneath.

Tunnel — a low-poly 3D wireframe flythrough, winding through space, that reacts to the music: speed, acceleration, direction and color all tied to the track's tempo and energy, with wall panels that light up on the beat.

Smoother, more correct playback

Fixed choppy video when a title's frame rate doesn't match the display's (e.g. NTSC-rate content on a PAL setup) — the stream is now capped to match. Fixed audio distortion on loud material and a resampling quality issue that showed up on music. Fixed a multi-second delay when exiting video playback.

Also in this release

  • Home carousel: consistent spacing between library cards regardless of name length
  • Every screen now redraws at full refresh rate (the same fix the home screen got in v0.9.9), plus motion blur on the starfield background for less choppy motion
  • Internal code hygiene

v0.9.9

Choose a tag to compare

@github-actions github-actions released this 02 Aug 17:30

Picture modes for wide titles

A new PICTURE tab in the playback SELECT menu, with three modes shown as cards: Original (the file exactly as encoded), Zoom 4:3 (crops the center of the picture to fill the screen — made for 4:3 content encoded inside a 16:9 file with baked black side bars, where it removes just the bars), and Stretch (fills the screen by stretching a wide picture vertically — nothing gets cropped). Applies instantly at the current playback position and resets to Original per title. Only offered on wide files: a genuine 4:3 picture already fills a 4:3 screen, so there's nothing to fix there.

Screenshots from any screen

Hold SELECT+START anywhere — browser, video, music, About — and MiSTerFin saves a BMP at the real on-screen aspect ratio to /media/fat/screenshots/MiSTerFin/, with a camera shutter sound and an on-screen confirmation. Every screenshot in the README was taken this way.

A living home screen

The cover mosaic behind the library carousel now crawls slowly sideways, each row in the opposite direction, perfectly smooth. Music libraries get square album-cover cells while movies and TV keep portrait posters — both exactly the right shape on PAL and NTSC. Covers are bigger (6 per row instead of 8) and noticeably more visible.

The whole browse UI at full refresh

Browsing now redraws at the display's true refresh rate (~50Hz PAL / ~60Hz NTSC), up from ~17fps — faster cover drawing, background dimming baked in once at load, a cheaper gradient pass, and removal of a redundant per-frame sleep that was eating exactly the time the optimizations freed up.

See what an update brings, before it installs

Updating from the About screen now shows the release's own notes first — a scrollable what's-new screen with the actual install behind one more confirm, so an update is never a blind "something will change".

Also in this release

  • The setup/Quick Connect error screens are clearer: "Can't connect to server" now shows the configured server URL instead of suggesting an API key/username you may not need, and A now reliably exits everywhere it's hinted
  • DEBUGLOG now also captures one-shot startup/playback diagnostics — framebuffer geometry, input devices, the relevant MiSTer.ini display settings, menu core/DDR state, the update check result, and the transcode profile per playback
  • The in-app updater now also carries the font2x/subfont2x/sfx assets, so an in-app update delivers everything the release zip does
  • Internal code hygiene — the cover-grid subsystem moved into its own module; no behavior changes

v0.9.8

Choose a tag to compare

@github-actions github-actions released this 31 Jul 11:01

Your server connection is now verified

Until now, every request to your Jellyfin server skipped TLS certificate verification — fine for the typical http:// home setup (no TLS involved at all), but an https server got none of the protection https promises. Verification is now on by default, pointed at the CA bundle that ships with the MiSTer image.

If your server is https with a self-signed certificate: after this update MiSTerFin will stop connecting until you add a line containing just INSECURE_TLS to jellyfin.conf — the app tells you exactly this on screen when it happens, so there's nothing to remember. Plain http:// servers (the common case) are unaffected, and https with a real certificate (e.g. Let's Encrypt) now simply works and is verified.

Updates you can actually see

Until now a new release was only discovered by someone who happened to open the About screen. The home carousel now shows a quiet "START:update available" hint under the title whenever a newer release exists — press START and install from About, same as always. Hidden while a download runs and gone once you're up to date. The list view stays clean.

Also in this release

  • Transport hardening — curl is invoked by absolute path, a single response is capped at 32 MB, and POST bodies use unpredictable temp-file names
  • Zaparoo native-video detection survives updates — the dual-mode menu core is now recognized by comparing file content against the installed Zaparoo copy instead of a hardcoded byte size, verified live on hardware. It also correctly stays off under the standalone interlaced menu core, where it only burned CPU on a path that core never reads
  • Internal code hygiene — cleanup and reorganization under the hood; no behavior changes, verified on real hardware
  • New docs/THIRD_PARTY.md lists every piece of third-party work the project builds on, with licences

v0.9.7

Choose a tag to compare

@github-actions github-actions released this 30 Jul 19:17

Diagnose the hard-to-reproduce bugs

The last few reports we've gotten — a stuck "Nothing here" on some big libraries, Quick Connect claiming to be disabled when it wasn't — needed someone to SSH in and reproduce them live just to figure out what was actually going on. That's a lot to ask of anyone filing a bug.

Add a line containing just DEBUGLOG to jellyfin.conf and MiSTerFin now writes /media/fat/misterfin/debug.log — one line per server request (method, endpoint, ok/fail, how long it took), truncated fresh on every launch. Off by default, and it never logs your server URL, API key, access token, or anything from a request's query string, so it's safe to attach straight to a GitHub issue. See jellyfin.conf.example for the details.

Fixes

  • "Nothing here" on large libraries — a slow request (common on a series with a lot of seasons/episodes) was being treated the same as a genuinely empty list. It now falls back to what was already loaded instead of showing an empty screen.
  • Quick Connect wrongly reporting itself disabled — a failed request (network hiccup, timeout) used to show the exact same message as the server having Quick Connect actually turned off. It now tells you to retry instead of sending you to check a setting that was already fine.
  • Background music (BGM.sh and friends) now pauses itself automatically while MiSTerFin runs, and resumes exactly where it left off on exit — no more manually stopping it first to avoid stutter.

Also in this release

  • Dev/pre-release builds no longer show up on the About screen as if they were the latest official release — they now correctly show as different, and offer to install the real one.
  • New confirmed display combo: MiSTer FPGA IO Direct (HDMI-to-VGA DAC), confirmed in RGB mode by @iwalton3 — see docs/DISPLAY_COMPATIBILITY.md.
  • MiSTer Companion now offers one-click install/update/uninstall for MiSTerFin, built on theypsilon's MultiDatabases integration.

v0.9.6

Choose a tag to compare

@github-actions github-actions released this 28 Jul 15:39

True interlaced output

v0.9.5 introduced experimental 576i/480i output via patched MiSTer core files that had to replace MiSTer and menu.rbf on the SD card — risky, and easily undone by a system update. That's gone. Interlace now runs on a standalone core (thanks again to Izzie Walton @iwalton3) that lives in its own folder and switches on with a button combo — nothing else on your MiSTer is touched, and update_all can't silently turn it off.

Video in this mode is also now genuinely tear-free, via a hardware page-flip technique: the MiSTer scaler already supports latching a new framebuffer address at vsync, so MiSTerFin repoints it directly instead of relying on any timing trick — no FPGA or core changes involved. Decode also now uses both CPU cores in this mode, giving enough headroom for the heavier full-resolution video.

MiSTerFin detects the real interlaced framebuffer automatically and adapts its UI, video letterboxing, and on-screen text accordingly — no configuration changes needed beyond the one-time MiSTer.ini setup.

Confirmed working over SCART and Component/YPbPr, in both PAL and NTSC. Full setup guide: docs/DISPLAY_COMPATIBILITY.md

v0.9.5

Choose a tag to compare

@github-actions github-actions released this 27 Jul 18:23

Sharper picture out of the box

The default transcode profile is now full standard-definition source resolution — 720x576 at 12 Mbps, up from 480x270 at 8 Mbps. It applies to PAL and NTSC alike: whatever your MiSTer outputs, the video is scaled to exactly fit it. Measured on real hardware across widescreen and 4:3 content: zero dropped frames, zero A/V drift, and most of the CPU still idle. On a constrained network (weak WiFi bridge), set 480x270@8000000 in jellyfin.conf to get the previous behavior back.

Fixes

  • Letterboxing is now aspect-exact for any transcode profile. Previously a non-default profile could fill the whole screen with no letterbox, or corrupt outright.
  • Files already stored in the exact format the server is asked for no longer play slow and glitchy: they could be passed through as-is (raw interlaced video) instead of transcoded. The server now always delivers a clean progressive encode.
  • Subtitles no longer disappear after seeking or changing the audio track (#12). The player was silently discarding the subtitle timing sent during startup; the selection now rides the player command line instead.
  • The immersive now-playing cover (Nebula / Toasty Squadron backgrounds) is now the same physical size on NTSC as on PAL.

New: interlaced CRT output (experimental)

True 576i/480i output on a CRT — smoother, broadcast-style motion instead of the scanline look. It needs patched MiSTer core files by @iwalton3 (this is system-level, not something MiSTerFin can ship itself), so it's an opt-in recipe: the full step-by-step guide, verified on SCART and Component in both PAL and NTSC, is in docs/DISPLAY_COMPATIBILITY.md.

Thanks to Izzie Walton (@iwalton3) for the interlace core work that makes the 576i/480i output possible.

v0.9.4

Choose a tag to compare

@github-actions github-actions released this 27 Jul 12:08

What's new in v0.9.4

  • Quick Connect sign-in — no API key or admin dashboard needed; approve a code from any device already signed into Jellyfin (existing API-key setups keep working).
  • Continue Watching and Next Up rows on the home screen.
  • Alternate audio track selection — switch audio streams, not just subtitles.
  • Nebula — a new audio-reactive plasma music-player background (inspired by Geiss). Nebula and Toasty now use an immersive layout: an enlarged centered cover over the effect, with the track name flashed on change.
  • International characters now display correctly in titles, descriptions and subtitles (accented Latin — é, ã, ç, ñ, ü, and so on). Non-Latin scripts (CJK, Cyrillic, ...) still fall back to "?" for now.
  • Smoother playback and menus — no more brief periodic freezes; browse cover art is cached to the SD card and prefetched, so scrolling never stalls and revisited lists load instantly.
  • Large libraries are no longer capped at ~200 items, with page-jump and hold-to-repeat scrolling.
  • Subtitle improvements — proper track names, and ASS/SSA markup cleaned up instead of shown as text.
  • Finished titles now correctly mark as watched and leave Continue Watching.
  • Hardened server communication (a security review of the request and in-app update paths).
  • Optional transcode resolution/bitrate override in jellyfin.conf for experimentation — the default is tuned and works correctly out of the box.
  • Controllers keep working after a disconnect/reconnect.

Much of this release was contributed by Izzie Walton (@iwalton3) — see the README Credits section. Thank you.

v0.9.3

Choose a tag to compare

@github-actions github-actions released this 25 Jul 22:38

What's new in v0.9.3

  • Redesigned info screen — the movie/show detail page now shows the full backdrop artwork at its real 16:9 height with a gradient fade, a bigger centered logo, and a star rating alongside the year and runtime/watched status.
  • Faster home screen — library covers are now cached to the SD card and quietly pre-loaded in the background, so switching between Movies/Shows/Music no longer regenerates artwork from scratch every time, and scales much better with large libraries.
  • Smoother startup — no more staring at a black screen while connecting to the server; a small loading indicator now shows while the app resolves your account and loads the library list.
  • Xbox-style button labels — on-screen hints (A/B/X/Y) now match Xbox controller naming, since that's what most modern controllers follow. Nintendo/SNES-style pads are the notable exception (their A/B and X/Y are swapped) — the actual buttons still work the same either way, this only affects the label text.
  • Jellyfin's Dashboard → Devices page now correctly shows the device name and MiSTerFin version.
  • Display compatibility guide now also covers a PAL 288p@100Hz combo for VGA CRT monitors.

v0.9.2

Choose a tag to compare

@github-actions github-actions released this 25 Jul 13:54
  • Fixed video corruption (comb/tearing artifacts) on NTSC displays
  • Various NTSC UI polish — margins, list size, music player cover
  • Display compatibility guide now also covers VGA CRT monitors (240p@120Hz)

v0.9.1

Choose a tag to compare

@github-actions github-actions released this 24 Jul 11:48
  • NTSC display support — UI now adapts correctly instead of looking stretched
  • New display compatibility guide for CRT/SCART/component setups having trouble getting picture