PS4 Store › Apps › GMCA

GMCA changelog

v1.4.0 · Oct 24, 2026

Added

  • Audio files from Files play in the music player (#33). An audio file picked in Files opens Now Playing and the persistent mini-bar, like a Plex, Jellyfin or Emby track. The folder's audio files become the queue, in the order shown. Title, artist, album and length come from the file tags.
  • Search and Files can be reordered and hidden (#34). They move and hide like libraries. Home and the profile stay in place, and the settings screen is renamed Sidebar.

Fixed

  • Offline sidebar (#34). Offline, library tabs follow the order and visibility saved for the server, and Jellyfin and Emby show Favorites instead of Watchlist.
  • Offline details of Jellyfin and Emby downloads. A movie or show downloaded from Jellyfin or Emby now keeps its summary, poster, backdrop, cast and versions offline, plus the show, season and episodes for an episode. Downloads made before this release keep their minimal details.
  • Jellyfin and Emby versions. The Version selector reads "1080p · HEVC · 1.4 Mbps" on every backend, and Download takes the version picked in the selector, like Play.
  • Resumed Plex transcodes (#72). The OSD shows the resume time, chapter markers sit in the right place, and seeking works anywhere, before the resume point too.
  • FTP folders (#54). Folders on FTP servers without MLSD (vsftpd, busybox, most routers) open again. On those servers a non-media file such as readme.txt shows as a folder.
  • Edit and Delete in the server menu (#54) open their screen again.
  • macOS: crash at launch when the active server does not answer. Errors from the C++ standard library escaped the app's error handling.
  • Rounded icon on the sign-in screens. The icon on the connection type, sign-in and hint screens was clipped at its corners.
  • Server image paths. An image path from the server that does not start with / is refused, so the access token cannot be sent to another host.

download

v1.3.1 · Oct 24, 2026

Fixed

  • Play uses the version picked on a movie (#96). On a movie with several versions, Play started the first accessible one whatever the Version selector showed, on Plex, Jellyfin and Emby.
  • The video info screen no longer shows tokens or passwords. The Url and play method lines mask X-Plex-Token, api_key and ApiKey, and the user and password of FTP and SFTP addresses, so a screenshot of that screen can be shared. mpv still gets the full address.
  • Plex: remote playback refused with HTTP 403 (#88). Plex refuses remote playback from third-party apps when the account has neither Plex Pass nor Remote Watch Pass. A dialog now names that rule, instead of a retry into a transcode ending on "mpv -13". A download refused the same way says so in the Downloads tab.
  • Server addresses that don't resolve (#57). Adding a Jellyfin or Emby server or a remote whose host doesn't resolve names the host and asks for its IPv4 address. On Switch and Vita, a .local address is refused before the request, since neither has an mDNS resolver.
  • PS4 fixes from @amansingh909 (#91, #92, #93, #94, #95).
  • Initialized globals no longer read as zero, and two threads starting the same static no longer abort the app.
  • Network timeouts fire again: they counted CPU time, so a server that didn't answer kept the app waiting.
  • A closed connection no longer kills the app (SIGPIPE).
  • The system keyboard confirms with the console's enter button.
  • Text subtitles (SRT, VTT, SSA/ASS) are drawn.
  • The Files tab lists folders, and the USB drives mounted before GMCA starts (#97).
  • HDR video plays instead of a blue screen, and a bigger audio buffer keeps the sound from going choppy.

download

v1.3.0 · Sep 24, 2026

Added

  • Playback speed and repeat in the player settings (#68). The cogwheel menu has a Playback Speed selector, from 0.5x to 2.0x, and a Repeat selector: Off, This video, or Whole list when the player has a list (the episodes of a show, the videos of a remote folder). Both last until the player closes, and carry over from one episode to the next.
  • Maximum transcoding resolution (#67). Settings > Transcode can cap the transcode at 4K, 1440p, 1080p, 720p or 480p, for Plex, Jellyfin and Emby. "Also limit direct play" transcodes a source larger than that limit instead of playing it directly.

Fixed

  • **Emby: external subtitles, avatars, Anime libraries and album covers (#65).** Sidecar subtitles load on Emby, and on Jellyfin when the server gives no delivery URL. The profile avatar of Jellyfin and Emby users is shown after the next sign-in. Mixed-content libraries, the usual type for Anime, are listed in the sidebar. Album covers are requested resized, so Emby no longer sends the original multi-megabyte image.
  • Emby: transcoding failed with an HTTP 400 (#67). The transcode request now sends the selected media source instead of the item id.
  • Jellyfin and Emby servers could stay offline after a restart (#77). The reconnect check now calls the server API instead of the web page, which a proxy or a server setup can refuse while sign-in works.
  • Downloads: posters and queue (#73). Every queued episode shows its poster, not only the running one. Thumbnails are written through a temporary file, and interrupted downloads resume once the server is reachable instead of waiting for a new download.
  • A video no longer loops because a song was on repeat. Each video session starts with mpv's loop settings cleared.

Changed

  • Switch: 4K sources are transcoded to 1080p by default (#67). New installs and existing ones get the 1080p limit with "Also limit direct play" on. Set the limit to Auto to play 4K files directly again. Other platforms keep Auto.

download

v1.2.0 · Sep 23, 2026

Added

  • Playback errors now say why (#69). The error dialog and the fallback toasts show the first ffmpeg or stream error of the load, such as https: HTTP error 500 or stream: Failed to open. Host names, IP addresses, tokens and API keys are masked in these lines, so a screenshot of the dialog is safe to post in an issue.
  • Plex: automatic fallback to transcoding (#69). When direct play fails to open, the player retries once through the server transcoder at 8 Mbps and shows a toast. It is skipped when force direct play is on, and never used for music or Stremio.

Fixed

  • Plex: "mpv -13" playback failures (#50). On some connections, Plex Relay in particular, the server answered the stream request with an HTTP 500 while downloads worked. Direct play now streams through the download URL, and falls back to the plain part URL when a shared user has no download rights.
  • Changing subtitles or audio no longer restarts the video (#69). A reload that fails to open resumes from the position it asked for, and resumed transcodes (Plex and Jellyfin) keep reporting absolute positions to the server.
  • GMCA quit on startup when config.json was corrupted (#56). The unreadable file is now moved to config.json.bak, the defaults are restored, and a notification says the settings were reset. Settings are also saved through a temporary file and a rename, so a save cut short no longer leaves a truncated config.
  • Plex: libraries excluded from home were missing from the sidebar (#63). Libraries set to "exclude from home" or "exclude from home and search" in Plex are listed again. Libraries hidden in Settings > Libraries stay hidden.

Changed

  • macOS builds use ffmpeg 9.0.2 (#80). The CI now installs its prebuilt dependencies from this repository's ci-deps prerelease instead of the upstream Switchfin releases, whose assets kept disappearing. Switch and PS4 move to dav1d 1.5.4, Windows to curl 8.21.0.

download

v1.1.0 · Jul 17, 2026

Added

  • Stremio: external subtitles from a subtitles addon (#51). When your Stremio account has a subtitles addon installed (e.g. OpenSubtitles), its tracks now show up in the player's subtitle menu, resolved on demand at playback time. Resolution runs off the UI thread so it never delays the start of a stream, and the hook is a no-op for Plex and Jellyfin, which already expose their own subtitle tracks. A hint is shown when no subtitles addon is configured, so the empty menu is not mistaken for a bug.

Fixed

  • **PS Vita: the remaining GPU crashes ("blue light of death"), offline and in the music/overview screens.** Following 1.0.5's Stremio artwork fix, three further GPU-memory exhaustion paths on the Vita's tiny CDRAM were closed:
  • Texture memory is now bounded overall. A hard byte cap on the image cache stops the overview and music grids from stacking enough textures to fault the allocator mid-render.
  • Offline/cached artwork was still uploaded at full resolution. It is now downscaled to the display size on GXM like online artwork, fixing the crash that only reproduced offline (#60).
  • The mpv video FBO no longer requests MSAA, freeing ~6 MB of CDRAM during playback (#61).
  • The mpv GXM FBO init is now guarded, and Stremio sources the Vita decoder cannot handle are skipped instead of crashing.
  • Stremio: debrid/Torrentio config changes did not take effect (#46). The account's addon collection is now re-synced at startup, so reconfiguring Torrentio (e.g. wiring up AllDebrid or changing filters) is picked up on the next launch instead of keeping the stale addon set.
  • **Music: the artist page crashed on Switch + Jellyfin when navigating up from the header with the D-pad (#44).**
  • Music: the album screen showed an inaccurate loading skeleton that did not match the real content layout.
  • Connection: remote (WAN) reconnects were slow or failed (#36). Server candidates are now raced in parallel instead of tried one at a time, so the first reachable address wins.
  • Connection: the connection tiles now respond to a tap (touch/mouse), not only to the gamepad.
  • **Desktop: crash and misplaced widgets where no battery or wi-fi info is available (#37).** The battery widget is hidden on PC desktop, and both the battery and wireless widgets now guard their draw() against missing platform info (fixes a Linux desktop crash).
  • Offline downloads now run on a thread pool, keeping the UI responsive and cleaning up their HTTP sessions correctly.
  • Focus: a freshly built list now defaults focus to the lowest-index cell rather than whichever cell was inserted first.

Build

  • Bumped mbedTLS 3.6.5-1 → 3.6.7-1 for the Vita and Switch builds.

download

v1.0.5 · Jul 13, 2026

Fixed

  • **PS Vita: Stremio crashed the GPU ("blue light of death") both while browsing and on playback.** Two independent causes, both down to the Vita's tiny GPU memory and its 1080p-capped hardware decoder:
  • Artwork textures were unbounded. Unlike Plex/Jellyfin, Stremio serves absolute Cinemeta poster/backdrop URLs that can't be resized server-side, so a full-res 1920×1080 backdrop became a 2048×2048 GXM texture (~4 MB in DXT5); a handful exhausted GPU memory and the allocator then returned null mid-render, faulting the GPU. This is the crash reported "everywhere" and specifically when pressing ○ to leave a movie/show overview. Artwork is now downscaled to ≤1024 px per side before upload (the screen is 960×544, so this is lossless even full-screen), capping every texture and quartering the largest ones. As a client-side guard it also protects the other backends if a server ever hands back an oversized image.
  • Playback had no resolution cap. Stremio is direct-play only and sorted 4K first, so the default source fed a 4K stream to a decoder that tops out at 1080p — an instant GPU crash. On Vita, 4K sources are now dropped and the source list prefers ≤720p (the field-tested comfort zone for the Vita's limited CPU), keeping 1080p only as a manual fallback. An item left with no compatible source shows the existing "no sources" notice instead of crashing. (#216)

download

v1.0.4 · Jul 12, 2026

Fixed

  • **PS Vita: the VPK failed to install, erroring at 99% with 0x8010113D ("incorrect LiveArea asset image formats").** The rebrand re-exported the LiveArea PNGs at 16-bit per channel (pic0/bg/startup, 64-bit RGBA) and icon0 at 24-bit RGB; the Vita only accepts 8-bit images. Re-encoded all four as 8-bit indexed (palette) — the format the borealis defaults and the old pleNx VPKs already shipped, so the fix is visually identical. A configure-time guard now reads each asset's PNG header and fails the build if a LiveArea image is ever re-exported at more than 8-bit (or, for icon0/bg, with an alpha channel), so a broken VPK can't ship unnoticed again. The Switch, PS4, Android and Linux icons were unaffected (already 8-bit).
  • Now Playing queue: a grab could outlive its pane (#11 review). Pressing LEFT while a row was grabbed moved focus out to the transport with the grab still active, so the next A was eaten as a "drop" instead of playing the track; a shuffle reached from the transport could also leave the grab anchored to a stale row. LEFT/RIGHT are now swallowed while grabbed, and rebuilding the queue clears any grab first.

download

v1.0.3 · Jul 12, 2026

Added

  • Now Playing — gamepad seek and a visible, reorderable queue (#11). Scrub through the current track with the controller, and see the up-next queue right on the Now Playing screen — reorder it in place with the gamepad.

Fixed

  • **Switch HOME tile crashed on launch ("an error occurred") after installing it on a self-updated install.** 1.0.1's "stage the NRO to GMCA.nro" step used std::filesystem::copy_file, which fails on the console and left a **0-byte GMCA.nro**; the forwarder then loaded that empty file (and, because it existed, never fell back to the real NRO). Removed the in-app copy entirely — the forwarder now falls back to the self-updated pleNx.nro on its own — and hardened the forwarder to skip any candidate that isn't a valid NRO (magic check), so a leftover 0-byte GMCA.nro is ignored instead of crashing.
  • The Switch boot screen still showed the old "pleNx" logo (top-left). The forwarder's boot logo (NintendoLogo) was never rebranded during the pleNx → GMCA move; it's now blank (only the standard Nintendo Switch startup logo remains).

Changed

  • Guided pleNx → GMCA HOME-tile migration. Migrated users are prompted once on the first GMCA launch to install the GMCA HOME tile; after installing it, a message points them to remove the leftover "pleNx" tile from System Settings › Data Management (an installed tile can't be rebranded or deleted for you).

download

v0.1.15 · Jul 11, 2026

Offline downloads (#19)

  • Browse your downloads with no connection, just like online. Downloaded movies and shows now get a full local catalogue: their complete fiche (summary, genres, ratings, cast) plus poster, backdrop, logo and cast photos are cached to disk at download time, so a downloaded title renders offline exactly as it does against the server. Shows keep their season/episode structure — the season lists every episode, and episodes you did not download are greyed out and not playable.
  • A real offline mode. When the server is unreachable at launch and you have downloads, pleNx now opens straight into an offline shell — sidebar, home rows and library grids built from the local catalogue — instead of the server picker. A Retry affordance reconnects you when the server is back.
  • Offline Search looks through your local catalogue; Watchlist and Playlists show a clear "unavailable offline" state. Deleting a download prunes its catalogue entry and cached artwork (cascade).
  • The downloaded fiche is preferred even while online, so opening a downloaded title is instant and plays the local file.

Files

  • Sort folder listings (#23) — a Y "Sort" panel orders any local/remote folder by name, date or size (ascending/descending); ".." stays first and folders always sort above files.
  • Pin local folders (#24) — pin the focused folder to the Files root (X / F4) for one-tap access; pins persist in config.json. The home folder is now exposed on macOS/Linux.

Blu-ray

  • Play Blu-ray/BDMV folder backups from local storage (#18): a folder holding a BDMV/STREAM backup now offers a "Play Blu-ray" entry at the top of its listing.

Bug fixes

  • Downloads tab — the Storage card now scrolls with the list (it was a pinned header that also crashed the offline Files tab); failed downloads can be retried; the "Downloaded" button is actionable; cards show a downloaded badge; the scroll indicator sits flush with the window edge.
  • File browser — dropped an oversized loading-skeleton flash when changing folders.
  • Consistent placeholders — fiche posters (movie/series/season) and episode thumbnails without artwork now show the media icon instead of an empty rectangle, and episode cards keep their size (no collapsed focus halo).
  • Lock callbacks on the shared curl DNS cache — fixes a latent concurrent crash.
  • New i18n keys added across all 14 languages.

download

v0.1.14 · Jul 5, 2026

PS Vita

  • **The in-app updater now installs the new version directly instead of opening a broken browser page.** When an update was available, the Vita opened the GitHub release page in the system browser — a page its ageing WebKit cannot render, so it hung and the download never showed up. The Vita now self-updates in place like the Switch does: it downloads the VPK, unpacks it and installs it through the system package installer, then drops you back to the LiveArea to relaunch the updated bubble. (The VitaDB "downgrade to 0.1.4" prompt reported alongside this is a stale VitaDB store entry, not a pleNx bug; see RELEASING.md.)

download

v0.1.13 · Jul 3, 2026

Interface

  • Series and movie logos no longer smear. The transparent title logos on detail pages are drawn in "fit" mode, so the image is smaller than its box and sits letterboxed inside it. The empty area around it was still being painted with the image, which sampled outside the texture and — because edge pixels are clamped — dragged vertical streaks down from every shape. The image now fills only its own fitted area, so logos render cleanly. Affects every platform (the fix is in the shared image renderer).

download

v0.1.12 · Jul 3, 2026

Player

  • **Changing the audio or subtitle track no longer stops playback with a "playback error" on PS Vita.** In transcode mode a track change reloads the stream, but the reload happened in place and never released the hardware decoder, so it stalled and then failed. The reload now resets the player first (like episode navigation) and tears the previous transcode session down on the server instead of leaving it orphaned.
  • **Audio and subtitle tracks are now selectable during local playback from the file browser.** The player showed the track buttons but had no handler wired, so they appeared to do nothing.
  • A failed transcode now falls back to direct play once, instead of going straight to an error — a smoother recovery on constrained hardware.
  • Playback errors now show the underlying mpv reason (e.g. "unrecognized file format") instead of a bare "playback error", making bug reports actionable.

Fixes

  • PS Vita: the transcoder height is capped at 1080p, the hardware decoder's limit, so a 4K source at a high bitrate no longer produces a stream the Vita cannot decode.

download

v0.1.11 · Jul 2, 2026

Fixes

  • **PS Vita: servers reached by a hostname no longer stall with an endless "timeout reached".** libcurl was built with the synchronous name resolver, so a DNS lookup issued from a background thread could not be bounded by any timeout — the synchronous resolver can only abort a slow getaddrinfo() via SIGALRM, which libcurl arms on the main thread alone. A slow-to-resolve hostname (e.g. a duckdns address) therefore hung every request indefinitely, and raising the request-timeout setting had no effect; only a raw LAN IP, which skips name resolution, worked. curl is now built with the threaded resolver so lookups run in a worker thread the timeout can abandon, and CURLOPT_NOSIGNAL keeps libcurl off signals on its background threads.

download

v0.1.10 · Jun 15, 2026

Fixes

  • **PS Vita: movie logos no longer render sheared or with a torn vertical strip.** GPU texture compression always extracted a full 4×4 pixel block, so for images whose width or height isn't a multiple of 4 the edge blocks pulled in the next row's pixels (the visible vertical corruption) or read past the decoded image. Edge blocks are now clamped to the valid pixels, with the border replicated into the padding for a clean edge

download

v0.1.9 · Jun 15, 2026

Fixes

  • **Self-hosted servers on your LAN are reachable again when plex.direct DNS is blocked.** Server discovery only probed the plex.direct hostname, whose public DNS record points at a private IP — which routers and resolvers with DNS-rebinding protection (Fritz!Box, Pi-hole, AdGuard…) refuse to resolve. A server sitting on the same network then reported "unreachable" even though it answered directly, while the official clients connected fine. pleNx now also probes the raw IP address for private, CGNAT and VPN endpoints, bypassing plex.direct entirely — and re-discovers a working address on reconnect when the server changes IP (e.g. a new DHCP lease)

download

v0.1.8 · Jun 15, 2026

Downloads

  • The download card now shows transfer speed and ETA. While a download is running, the progress line reads 123 MB / 456 MB · 5.2 MB/s · 12:30 left; the rate is a smoothed average (EMA) so the estimate stays steady instead of jumping on every tick

Library

  • **Movie and show pages show critic and audience ratings with their official icons.** Plex's rating sources are mapped to the Rotten Tomatoes tomato (fresh/rotten), the audience popcorn (upright/spilled), and the IMDb and TMDb marks, each sized to its own aspect; a plain star is kept as a fallback when the source is unknown

Changelog

  • The changelog is now readable in the app, from Settings ▸ Changelog — the full history, scrollable
  • The update prompt shows the new version's release notes instead of just its number, so you can see what changed before updating

download

v0.1.7 · Jun 15, 2026

Sign-in

  • Selecting a server no longer looks frozen. Picking a server (or profile) during Plex sign-in blocked all input while probing the server's connections — several seconds, with nothing on screen — so the dialog just vanished and the app seemed dead. A loading overlay now sits over the pairing screen for the whole wait, with a reassurance line that fades in if it runs long
  • Account linking survives a transient network hiccup. A single timeout or TLS blip (common on Vita) no longer aborts the whole PIN flow; only an expired/consumed code is terminal, and the 2-minute deadline stays the real give-up

Player

  • Direct-access OSD. The speed control is replaced by icon buttons for audio track, subtitle track and quality. Subtitles get a live, translucent sub-delay overlay (LEFT/RIGHT) on top of the video; audio, subtitle and sub-sync leave the settings panel. Video quality is now remembered and defaults to a 4 Mbps transcode on Vita (its decoder chokes on heavy direct play), staying Auto everywhere else
  • Marking watched is now a targeted card refresh instead of reloading the whole view (heavy on the home screen): the single card updates optimistically

Fixes

  • The synopsis no longer collapses to a single line when returning from a person page — a relayout had cut the text at an intermediate width. The action row also gains a little breathing room below the title/meta block
  • The splash logo no longer shows a flat colored band along its edges — an edge-clamp artifact from letterboxing the non-square asset, fixed by re-exporting it square with a transparent margin
  • Deleting the last card in a grid no longer leaves a ghost highlight, and emptying the downloads list hands focus back to the sidebar

download

v0.1.6 · Jun 11, 2026

Fixes

  • PS Vita: transparent images no longer render as opaque black blocks. Every non-WebP image was GPU-compressed to DXT1, a format with no alpha channel, so transparent PNGs (movie clear-logos) exposed the RGB residue hidden under their transparent pixels. Images with real transparency now use DXT5 (8-bit alpha); opaque ones keep the compact DXT1

download

v0.1.5 · Jun 11, 2026

Fixes

  • Controller navigation no longer dies after closing the player. The post-playback refresh destroyed the very view the focus had just returned to, leaving the app button-deaf (only touch worked — a docked Switch was stuck). The focus now lands back on the first home row, visibly
  • **Docking the Switch mid-playback now switches the video to fullscreen 1080p** instead of leaving it small in a corner (inherited upstream regression: the mpv render target never followed the framebuffer swap)

Player

  • Focused controls now show a translucent orange background instead of the border halo — far more readable over moving video
  • The close button is a round, properly centered icon
  • Up/down wake the OSD and focus the play/pause button
  • The progress bar is focusable: left/right seek from it with accelerating steps (TV-style OSD is now the default, still toggleable)
  • Removed the always-on bottom progress bar and its settings

download

v0.1.4 · Jun 11, 2026

Fixes

  • Every truncated row now ends with a "+" card opening the full list: the home rows (Continue Watching and all server hubs, e.g. "Recently Added") and the Suggestions tabs of movie and show libraries were missing it — only the related rows of detail pages had one. The card shows whenever the server reports more content than displayed

download

v0.1.3 · Jun 11, 2026

Breaking

  • New Switch title ID for the HOME menu tile (0104201312000000): the previous ID was inherited from Switchfin-era builds, and the HOME menu kept serving its cached "Switchlex" name and icon for that title even after reinstalling and rebooting. A fresh ID starts clean. Migration: delete any old tile ("Switchlex" or a previous pleNx) from the HOME menu (tile → <kbd>+</kbd> → Manage Software → Delete), replace pleNx.nro on the SD card, then reinstall the tile from the app
  • The forwarder NPDM program_id is now generated from the single PROJECT_TITLEID source of truth instead of a hardcoded copy that could drift

Fixes

  • Branding harmonized across every derived asset: the X mark color order (cyan top, red bottom) now matches the reference logos everywhere — app icons (Switch NACP, macOS icns, Windows ico, Linux hicolor, PS4), the forwarder wordmark, the scalable icon wrapper and the website favicons / social image. The Android launcher icons and the PS4 / PS Vita system images still carried the upstream Jellyfin artwork and now ship pleNx branding (Vita assets kept 8-bit indexed as the firmware requires)

Website

  • The hero opens with the app icon presented as a homebrew-menu tile next to the wordmark, and the floating nav no longer flashes before first paint

download

v0.1.2 · Jun 11, 2026

Fixes

  • Translations completed and corrected across all 13 languages: every locale (cs, de, es, fr, ja, ko, pt, ru, tr, uk, vi, zh-Hans, zh-Hant) is now at full key parity with the English reference. Filled in missing strings (the in-app updater messages, the offline download block, and large gaps in the German, Ukrainian and Vietnamese settings screens), translated the Plex sign-in and HOME-tile hint screens that had been left in English in several locales, fixed mistranslations and typos, and replaced the stale failed hint key with the retry action used by the retry dialog. The French "current speed" overlay also regained its {} placeholder so the playback speed value is shown again.

download

v0.1.1 · Jun 11, 2026

Features

  • Working in-app self-update on Nintendo Switch: when a new release is published, pleNx offers to update itself (checked at startup and from Settings → "Check for updates"), downloads the NRO with a live progress dialog (cancelable), verifies the file size against the GitHub release asset before touching anything, then replaces itself and prompts to relaunch. On the other platforms the dialog opens the release page in the browser.

Fixes

  • The updater inherited from Switchfin always wrote the new NRO to sdmc:/switch/pleNx/pleNx.nro, while the HOME tile (forwarder) and most manual installs launch sdmc:/switch/pleNx.nro: an update could silently leave the old version running forever. The app now replaces the NRO it was actually launched from (argv[0]). ⚠️ As a consequence, updating **from 0.1.0** through the in-app dialog may appear to have no effect depending on the NRO location — 0.1.0 users with the NRO at sdmc:/switch/pleNx.nro should replace it manually once.
  • The release-asset download URL is no longer hardcoded: URL and expected size are taken from the GitHub API response
  • The startup update check now honors its intended delay instead of racing the plex.tv login requests
  • All references to the repository now use its new name thcolin/pleNx (the updater, the README, the Debian/Flatpak/AUR metadata) — the GitHub redirect from thcolin/plenx kept everything working, but the canonical name is safer long-term
  • The Arch package version is now derived from CMakeLists.txt instead of being hardcoded in the PKGBUILD (the 0.1.1 package was previously versioned 0.1.0)

download

v0.1.0 · Jun 11, 2026

First release of pleNx, a third-party native Plex
client for Nintendo Switch, macOS, Windows, Linux, Android, PS4 and PS Vita.

pleNx is a fork of Switchfin
(a Jellyfin client) fully migrated to the Plex API, with a complete UI overhaul.

Features

  • [breaking] Full migration from the Jellyfin API to the Plex API (Switchfin → pleNx): sign-in via the plex.tv PIN flow (link code), server discovery and connection selection, libraries, home hub, movies, shows, collections, search, and playback (direct play and transcode) backed by mpv
  • Complete UI overhaul with the new pleNx branding: icon-only sidebar, full-bleed detail pages (backdrop banner with title logo, inline action buttons, director-first cast row), fully scrollable season / playlist / collection views, redesigned search (fixed keyboard, history, suggestions), quick-actions side panel on any poster (<kbd>X</kbd> or long-press), guaranteed 2:3 poster ratios, structured skeletons and empty states, pill-shaped toasts, focus halo clipped to its scroll frame
  • Plex Watchlist: dedicated sidebar tab with provider-backed sorting and filters (movies/shows, on-server availability — off-server posters are dimmed), add/remove from detail pages and the quick-actions menu
  • Offline downloads: storage gauge, active/completed sections, one-tap season or whole-show download, local playback
  • Remote file servers managed from the UI: add/edit/delete WebDAV, FTP, SFTP and HTTP(S) shares with a mandatory connection test before saving
  • Genre cards illustrated with the Kometa default posters (proxied and resized by the Plex server, nothing bundled)
  • Playlists (custom posters honored, square cards), collection pages with item-count headers, "see all" card opening full hub pages, person pages, "Play again" on fully-watched shows, connection loading screen with async server probing (no more frozen first frame)
  • Available in 14 languages
  • Nintendo Switch specifics: working applet-mode warning screen with HOME tile (forwarder) installation flow, system Standard font by default (consistent accented glyph spacing), USB drives via libusbhsfs

Fixes

  • Infinite relayout loop on fractional layout widths that emptied grids, killed controller navigation and crashed the app on both desktop and Switch
  • Ghost focus on recycled or detached views: the focus memory is now validated and purged in the borealis layer (focus could previously land on invisible cells, e.g. when returning from the sidebar)
  • Empty-text yoga measurements returning NaN (seasons without a summary rendered a full-screen header and zero episodes)
  • All vertical views now use "centered" scrolling: the previous "natural" mode could trap or steal the controller focus at scroll edges
  • Borealis framework fixes shipped as a patch applied on top of the submodule (focus guards, keyboard sticky keys, click animation overshoot, concentric highlight, Switch shared-font order, notification restyle)

Build

  • Local Nintendo Switch build via Docker (scripts/build-switch.sh, devkitPro image, deko3d driver by default, builtin NSP forwarder)
  • Continuous delivery via GitHub Actions: pushing a v* tag builds all platforms (Switch NRO, macOS DMG, Windows, Linux Flatpak/Arch, Android APK, PS4 PKG, PS Vita VPK) and drafts a GitHub release with notes taken from this changelog — the borealis patch is applied in every CI job, and the in-app update checker performs a real semantic version comparison

Documentation

  • Jellyfin → Plex migration plan (PLEX_MIGRATION.md), UI redesign reference (UI_REDESIGN.md), refreshed README with feature tour and screenshots

download