Skip to content

Releases: JenteJan/Chudder

Chudder 0.12.0

Choose a tag to compare

@github-actions github-actions released this 18 Sep 14:30

Browsing, rebuilt. The side bar is always there, Search is a tab, every tab
remembers the pages you opened from it, and the library got filters, a letter
strip and cards that look like one family. Most screens also arrive noticeably
sooner.

Getting around

  • One side bar over every page, on the phone as on the desktop, and Search is
    an entry in it rather than a screen you leave to reach.
  • Every tab keeps its own pages. Going to Search and back leaves the film you
    were reading exactly where it was.
  • A lower bottom bar with square entries, and a side bar a remote can reach.
  • One item menu everywhere: the same sheet with the same buttons, from a
    poster, a row or a detail page, with the state buttons that belong to it.
  • Settings is a tab, and on a wide window it opens with a page already beside
    the list.

The library

  • Filters sit under their chips in one panel that works the same on every
    device, with a letter strip down the side.
  • Genre leads the filter row; sort choices are listed by how often they are
    actually wanted.
  • Film, show and collection libraries start with all three types shown.
  • A genre chip on a detail page opens the grid already filtered by it.
  • Random pages through one shuffled order instead of reshuffling under you.

Home and details

  • A rotating banner that reads like a page rather than a caption, and fits the
    window it is in.
  • Continue watching everywhere, on wide cards that preview.
  • Detail pages gained scores and links, a quieter header, and one menu holding
    the state buttons. Titles fit two lines and the buttons wrap.
  • One card shape for every row: titles that read along, faces in circles.

Player

  • The show's episodes open in a panel over the video, so picking the next one
    does not mean leaving what you are watching.
  • The picture flies between the floating window and the full player instead of
    cutting.
  • A remote walks the scrubber with a preview, and OK takes it there.

On a television

  • One selection mark, and one you can see from the sofa.
  • A remote gets out of the filter panel, rests on search fields instead of in
    the caret, and filters Settings as it types.
  • The selection stays on the card you opened, and a row that fills again does
    not lose your place.

Speed

Around forty changes aimed at how soon you can see something, not how soon the
app stops working:

  • Posters, backdrops and wide art are asked for at the size they are drawn,
    logos as WebP inside a bound rather than PNG at full size.
  • Artwork decodes from memory and shows on the frame it is decoded, with idle
    artwork connections kept in a pool of their own.
  • The dashboard asks for its rows alongside the library list rather than
    behind it, and for last time's libraries before the list is back.
  • Pressing play no longer waits for mpv's track list, and asks for playback
    info before the full item when it already has the sources.

Windows

  • The window is opaque again. Parts of it could show the desktop through them:
    a mask escaping its layer, on a window that had asked to be transparent for
    no reason. Both ends are fixed.
  • The Visual C++ runtime now ships beside the executable, so a PC without the
    redistributable installed starts the app instead of dying on a missing DLL.
  • Double-click the title bar to maximise.

Connectivity

  • The server answering is what decides you are online, in both directions.
    Windows reports no network at all on some machines, and the app no longer
    takes its word over a probe that just reached the server - which could leave
    it offline, and the dashboard rebuilding itself out of downloads, against a
    server that was answering every request.

Installing

  • Windows: run the Setup exe. It is not code-signed, so SmartScreen will
    say "Windows protected your PC" - click More info -> Run anyway. It
    installs per user, no admin needed.
  • macOS: open the dmg and drag Chudder to Applications. The app is not
    notarized; on first launch, right-click it and choose Open.
  • Android: the arm64 APK fits nearly every phone and TV box; the AAB is
    for stores. If a build from a nightly or preview is installed, uninstall it
    first.
  • iOS: the ipa is unsigned and needs sideloading with AltStore, Sideloadly
    or a developer account.
  • Linux: an AppImage, a Flatpak bundle, and a plain zip.
  • Web: a zip to serve from any web server, and a container image at
    ghcr.io/jentejan/chudder (a rootless variant as chudder-rootless).

Full changelog: v0.11.1...v0.12.0

Chudder 0.11.1

Choose a tag to compare

@github-actions github-actions released this 09 Sep 18:42

The first full release of Chudder, with builds for Android, Windows, macOS, iOS, Linux and the web. Chudder is an opinionated fork of Fladder, the Flutter Jellyfin client, and everything below is what the fork adds on top of it.

Installing

  • Windows: run the Setup exe. It is not code-signed, so SmartScreen will say "Windows protected your PC" - click More info -> Run anyway. It installs per user, no admin needed.
  • macOS: open the dmg and drag Chudder to Applications. The app is not notarized; on first launch, right-click it and choose Open.
  • Android: the arm64 APK fits nearly every phone and TV box; the AAB is for stores. If a build from a nightly or preview is installed, uninstall it first.
  • iOS: the ipa is unsigned and needs sideloading with AltStore, Sideloadly or a developer account.
  • Linux: an AppImage, a Flatpak bundle, and a plain zip.
  • Web: a zip to serve from any web server, and a container image at ghcr.io/jentejan/chudder (a rootless variant as chudder-rootless).

Casting

Chudder casts on every platform it runs on, through whichever protocol the device on your shelf actually speaks.

  • Chromecast: native Google Cast on Android and iOS, a pure-Dart CASTv2 sender on Windows, macOS and Linux, and the Cast Web Sender in Chromium browsers. Plays through the Jellyfin receiver where it can and a default-receiver path where it cannot.
  • AirPlay: the real system picker on iOS and macOS, with subtitle and audio track switching rather than a stream you cannot change.
  • DLNA / UPnP: direct play, with an on-demand transcode when the renderer cannot handle the subtitles, audio track or bitrate you asked for.
  • A cast starts from what you were already watching: current track, current quality, current position. The player becomes a remote control once connected, an episode that ends on the device moves on to the next, and resume picks up where the device left off.
  • It adopts a stream already running on a receiver instead of restarting it, hides audio-only renderers while casting video, and keeps progress reporting and SyncPlay working throughout. Chromecasts are also found over SSDP, so desktop discovery survives broken mDNS.
  • A "why can't I find my device?" panel in the picker, and a shareable log of every cast session.

SyncPlay

Watching the same thing at the same time as someone who is not in the room.

  • Latency-adaptive drift correction with ping reporting and a warm-up period, tuned for the internet rather than a living room.
  • A persisted per-user playback offset: if your stream is reliably a second and a half behind, you set it once.
  • Optimistic loading on next and previous episode, so changing episode does not stall the group on a spinner.
  • Joining while already watching lines up with the group instead of playing on; resume restores the session with the server; reaching the next episode steps the group's queue the way the web client does.
  • A group indicator and controls reachable from inside the player and from every screen, a group list that stays current while you browse, and sessions that survive a wobble: a phone that loses its connection for a moment rejoins by itself.
  • Leaving a group drops the syncing and leaves the film running.

On a television

The whole app works from a remote, player included.

  • The player answers the pad: the selection starts on play/pause, left and right scrub, up and down do volume.
  • Scrubbing picks up speed in proportion to the runtime, so crossing a two-hour film and nudging along a twenty-minute episode take about as long as you would expect.
  • Every dialog and sheet has a close button, because a remote has no Escape key. Back in the player stops the film instead of hiding it somewhere the pad cannot reach.
  • The next-episode card, the queue, subtitles and audio, SyncPlay and Cast are all a few presses away.

Downloads and offline

  • You choose a folder, the download goes there, and the app still knows where it is next time.
  • A downloaded episode or album plays with nothing to connect to.
  • Offline, the dashboard, favourites and the library fill up from your downloads instead of going blank, and fill in the rest when the server comes back.
  • Sizes and counts describe your copy. The quality prompt can remember your answer.
  • Offline means your server is unreachable, not that something on the network gave an odd answer. A captive portal will not persuade the app that everything is fine, and one bad response will not persuade it that everything is broken.

Player

  • Shrink the player into a small window you can drag, resize and pinch, and carry on browsing underneath it. It follows you between pages and expands from wherever you are.
  • Press play on a headset or keyboard while the next-up card is showing and the next episode starts; while a Skip Intro or Skip Credits button is showing, it skips.
  • Pressing play reaches the first frame sooner: one mpv context kept between items, the requests behind a play overlapping, and the previous item's stop report out of the way.
  • Bitmap subtitles (Blu-ray PGS, VobSub, DVB) are drawn even without libass. Subtitle search across the server's providers, tracks refreshed mid-watch, and bad external subtitles deletable from inside the player.
  • On Android, files whose hardware decoder reports decode-order timestamps play at full speed instead of half.
  • Lyrics for music. Picture-in-picture with its own controls. Transport buttons in the Windows taskbar preview; proper audio focus on Android.
  • A bottom bar that works to a budget: a narrow window drops the least useful buttons instead of overflowing, and anything dropped is one tap away in the options sheet.

Browsing

  • One page for a show, its seasons and its episodes, with a header that takes far less room and the things you can watch first. Films open the same way.
  • Studios are actual pages: a grid of what they made and what you are missing.
  • Search that forgives you: the person with four films before the one with a single credit, misspelled titles still found, and suggestions when nothing matches.
  • Collections have a real detail screen. Chapters collapse behind their heading. The filters people actually use are where they can reach them.
  • Artwork is drawn whole rather than cropped, stays cached, and flies from the poster you tapped into the page it opens. The metadata editor covers a show, its seasons and its episodes from one place, and a backdrop you would rather not look at can be dropped from the rotation without deleting it.
  • Settings search across every settings page at once.

Speed

  • Startup runs its steps together, the splash no longer holds for half a second, and the first seconds go to the dashboard.
  • Every server response is decoded once instead of four times on the UI thread.
  • Pages ask for their parts together and draw what is above the fold first. Pictures load ahead of you, at the size they are drawn.
  • Browsing and selecting across thousands of items does not get heavier the further in you go.

Desktop

  • Mouse back and forward buttons, backspace, and on macOS a two-finger swipe on the trackpad, all navigate like a browser.
  • The window buttons are on every page, the title bar stays draggable under modals, and there is a hover volume control in the mini player.
  • SyncPlay and Cast live in the same corner of every overview screen, since their sessions outlive whatever screen you are on.

Also

  • Its own look: a blue accent, art-derived backgrounds, calmer defaults, and a drawn cheese wedge for an icon.
  • Ready for Jellyfin 12: credentials are sent both the old way and the new, so one build works against a 10.x server and a 12 one.
  • Ask once per show whether a favourite means the episode or the show. A ring marks where you left off in a series and the rows start there.
  • Notices arrive in one place, top centre, on every device.

Chudder stands on Fladder, and the credit for the foundation belongs there. Bug reports for Chudder go to this repository's issues, not to Fladder.

Full Changelog: v0.11.0...v0.11.1

Chudder 0.11.0 (Windows)

Choose a tag to compare

@JenteJan JenteJan released this 02 Sep 13:30

Windows installer built from main at 4d9c098 (version 0.11.0, Flutter 3.44.9).

Install: run chudder_setup.exe. The installer is not code-signed, so Windows SmartScreen will say "Windows protected your PC" - click More info -> Run anyway. It installs per user, no admin needed.

Faster

  • Startup runs its steps together instead of one after another, the splash no longer holds for half a second, and the dashboard fetches its views once and its rows in parallel rather than three times in series.
  • Every server response used to be decoded four times on the UI thread; it is decoded once.
  • Pressing play reaches the first frame sooner: the mpv context is kept between items instead of rebuilt, the requests behind a play overlap, and the previous item's stop report no longer stands in the way. Each start is timed into the diagnostics log.
  • Details pages, the library tab, library browsing, the show page, search and the Seerr pages overlap their requests and rebuild far less.
  • Pictures are decoded at the size they are drawn, cast photos are no longer fetched at full size, and the minimized player no longer rebuilds the whole page on every tick.

Player

  • A play you ask for opens the player at full screen, even with another item minimized.
  • Pressing play on the item already playing brings it back without reloading.
  • The minimized player follows you onto details pages and any other page except settings, and expands from there.
  • Escape, Backspace, the mouse back button and the system back minimize the player instead of stopping it.
  • Bitmap subtitles (Blu-ray PGS, VobSub, DVB) are drawn even without libass; a film whose only subtitle was a PGS track played with none before.
  • Subtitle search across the server's providers, with tracks refreshed mid-watch.

SyncPlay

  • Joining a group while already watching the same film lines up with the group and reports ready, instead of playing on while everyone else waits.
  • Resume restores the session with the server rather than restarting from an estimate, and a command the server re-sends on resume is executed however old it is.
  • Reaching the next episode steps the group's queue the way the web client does, so other members follow.
  • A joiner's paused player is placed within a quarter second of the group on resume; time sync keeps running while in a group; the diagnostics log keeps to SyncPlay's own messages.

Casting

  • Devices appear in the picker as they answer rather than after the whole scan, the previous scan's devices stay listed while a new scan runs, and status polling is cheaper.

Also

  • Mouse forward navigation through the pages you left.
  • The metadata editor opened from a show can switch to any season or episode; backdrops can be taken out of rotation without deleting them.
  • The project targets Flutter 3.44.

Chudder 0.11.0 preview (Windows)

Pre-release

Choose a tag to compare

@JenteJan JenteJan released this 27 Aug 21:23

Windows installer built from main at 8b34c99 (version 0.11.0).

Install: run chudder_setup.exe. The installer is not code-signed, so Windows SmartScreen will say "Windows protected your PC" - click More info -> Run anyway. It installs per user, no admin needed.

Highlights since the last preview: television/d-pad navigation reworked on the detail pages (one rule for every up and down, dialogs always have a way out), show pages open complete from every entry point, and a crash that left the whole client on a null error is fixed.