Repository navigation
v0.3.2
Pre-releaseWatch together picks what you play, keeps you in the room and joins a room that started; Windows volume slider shows the real level
In a watch party, press Play on any episode, from Home, Search, Seasonal or your library, to watch it with the room. The title picker is gone, and Start party opens a room straight away.
Closing the player keeps you in the room, and Open player takes you back to where the room is. When someone else starts the room while you are in its lobby, your player opens and joins them.
On Windows, the volume slider shows the level the player starts at, so a remembered low volume can be turned up again.
Train
Version 0.3.2, a patch release: nothing breaks plugins, config, data or the store protocol. One FFI record field is added (FfiPlayerState.volume, with uniffi(default)).
Branches, merged in this order with no conflicts:
fix/windows-volume: the Windows player's slider took its level only from the engine'sPlaybackVolume, which reports changes and not the level a session opens at. The mpv host'sPlayerStatenow carries mpv'svolume, and the Windows slider follows it. New host test for the starting level.fix/party-flow:- Engine: closing the player keeps the member in the room, and only the terminal leaves. The party client sends
PartyEvent::RoomPlayswith or without a player, and a member in the lobby when the room plays joins in (PartyStartedkindRejoin). In the apps,Command::Playduring a party is the room's (party::play_in_room): another episode is picked asChangeEpisodewould pick it, and the room's own episode with the player closed opens it again.docs/party-protocol.mdsays so. New tests: a client test forRoomPlays, and engine tests for a room someone else starts and for a play in a party. - Strings:
party-bar-pickandparty-form-pick-laterare new, andtogether-start-lineis reworded (stale in tr and vi until redone). - Windows: Open player shows while the room plays (it showed before the room started, and did nothing when the room's file was unmatched). Start party opens a room with no pick, and the title dialog is removed. Pick what to watch goes Home, and a play in a party shows the lobby. The party bar says Play picks. There are testing scenes for a room another member starts (
party-follow,party-follow-ready,party-follow-plain) and for reopening (party-reopen). - Apple and Android: the start and lobby title sheets give way to browsing.
TogetherPick.servertakes an optional pick on Apple, and Android has a newstartParty(server, room, name). The Mac, with no party bar, shows the Play hint once as a notice. The Android TV app keeps its own picker.
- Engine: closing the player keeps the member in the room, and only the terminal leaves. The party client sends
Checked on Windows 11 x64:
- Rust:
cargo check --workspace --all-targets --locked, kaeri-engine lib tests (607), kaeri-party (69), the kaeri-mpv-host libmpv tests, clippy on kaeri-engine, kaeri-party, kaeri-mpv-host and kaeri-ffi (Windows features), fmt, and the i18n check. - C#: the C# tests (9 engine, 280 app).
- In the testing app, against the fake party server:
- A room another member starts opens the player without Ready.
- Closing the player keeps the party, and Open player rejoins.
- Start party shows the new form line.
- Volume compared between the old and the custom libmpv on stereo and 5.1 tones: the same level.
Not checked locally:
- The Apple and Android changes were not compiled here (no toolchains on this machine). CI is their first build, and they need a try on a Mac, an iPhone and Android before auto-merge.
crates/kaeri-engine/tests/binge.rsneeds a Unix socket and was not run.- Linux was not checked.
🤖 Generated with Claude Code
Terminal
The installers are the .pkg on macOS, setup.exe on Windows and the .deb on Debian and
Ubuntu. Each one puts kaeri on your PATH and adds a launcher, so you can type it or click
it. The launcher opens your terminal, because Kaeri runs in one.
On any other Linux distribution, use the AppImage: chmod +x it and run it from a terminal.
Nothing is installed. Every Linux build needs glibc 2.28 or newer.
The .tar.gz and .zip archives hold only the binary, for putting on your PATH yourself.
Once it is installed, kaeri --update takes each new release.
These builds are not code-signed. macOS stops the .pkg the first time it opens: choose Done,
then Open Anyway in System Settings › Privacy & Security. Windows SmartScreen warns about the
installer: choose More info, then Run anyway.
mpv and ffmpeg are not bundled. Kaeri drives mpv for playback and runs ffmpeg to mux
subtitles into a finished download, so install both first; see the
requirements.
Check a download against its .sha256 before running it.
Every package carries the licences of what it is built from in a third-party folder, the Rust
crates' among them, and kaeri-0.3.2-rust-licences.txt has those for all four builds.
Kaeri doesn't host any shows. You add your own sources. See https://kaeri.app/legal/.
Apps
Kaeri for Android phones and TVs, the Mac, iPhone, iPad, Windows and Linux, on the same engine as the terminal app. Like
it, the apps host no content and supply no sources. You add the sources you are entitled to use.
Android
kaeri-0.3.2-android-arm64.apk, for Android 15 or later on a 64-bit ARM phone or tablet.
Open the APK on the device. Android asks once whether the app you opened it from, your browser or
file manager, may install apps: allow it, then choose Install. The APK is signed with Kaeri's
release key, so each release installs over the one before and keeps your data. It is not on
Google Play, and Play Protect may offer to scan it. Once it is installed, the app updates itself
when you choose Update in its notice or in Settings › About. The first time, Android asks you to
allow it for Kaeri too.
Android TV
kaeri-0.3.2-android-tv-arm64.apk or kaeri-0.3.2-android-tv-armv7.apk, for
Android TV and Google TV on Android 11 or later. Most TV boxes, including the Chromecast with
Google TV, run a 32-bit system and take the armv7 file; the Nvidia Shield and newer boxes take the
arm64 file. If the install says the app is not compatible, try the other file.
Install it with a sideloading app on the TV, or with adb install and the file's name
from a computer on the same network. It is signed with the same release key as the phone app and
installs beside it. It is not on Google Play. Pair it with your phone from the TV's first screen.
Mac
kaeri-0.3.2-macos.dmg, for macOS 26 or later on a Mac with Apple silicon.
Open the disk image and drag Kaeri to Applications. The app isn't signed with an Apple
developer account, and it is not notarized, so macOS stops it the first time it opens:
- Open Kaeri, and choose Done when macOS says it cannot verify it.
- In System Settings › Privacy & Security, under Security, choose Open Anyway beside the message
about Kaeri, and confirm with your password or Touch ID.
That is once for each version you download. Right-click › Open no longer skips the check since
macOS 15. From a terminal, xattr -dr com.apple.quarantine /Applications/Kaeri.app does the
same. Once it is installed, the app updates itself when you choose Update in its notice or in
Settings › Integrations, and macOS does not ask again.
After an update macOS may ask again whether Kaeri can use what it keeps in your keychain.
Choose Always Allow.
iPhone and iPad
kaeri-0.3.2-ios-unsigned.ipa, for iOS or iPadOS 26 or later.
The .ipa is not signed for any device. Install it with AltStore or
SideStore, which sign it with your own Apple ID as they install it. Add
Kaeri's source to either, and they offer each new release:
https://github.com/bitknox/kaeri/releases/latest/download/sidestore.json. They
use two of your Apple ID's App IDs, one for the app and one for its widgets, and an App Group the
two share. With a free Apple ID that signature lasts 7 days: AltStore or SideStore has to refresh
the app within that time, or it will not open until they do. Your data stays either way.
Windows
kaeri-0.3.2-windows-x64-setup.exe, or kaeri-0.3.2-windows-arm64-setup.exe for
Windows on Arm, for Windows 10 version 2004 or later.
Run the installer. It installs for your account only, with no administrator prompt, adds Kaeri
to the Start menu and to Settings › Apps, where you can uninstall it, and lets the app open
kaeri:// links. The installer is not code-signed, so SmartScreen stops it the first time:
choose More info, then Run anyway. A new release installs over the one before and keeps your
library and settings.
Linux
kaeri-0.3.2-linux-x86_64.AppImage, or kaeri-0.3.2-linux-aarch64.AppImage on
64-bit ARM, for systems with glibc 2.41 or newer: Debian 13, Ubuntu 25.04, Fedora 42 and later. It
carries GTK 4, libadwaita and the player.
Make it executable with chmod +x kaeri-0.3.2-linux-x86_64.AppImage and open it. The first
run registers it for kaeri:// links. The app updates itself: it downloads each new version,
checks it, and puts it in place of the AppImage when you choose Restart to Update in its notice or
in Settings. AppImageUpdate, AppImageLauncher and Gear Lever can update it in place too, from the
release's .zsync file. Without FUSE, run it with --appimage-extract-and-run.
Checking a download
Each file has a .sha256 beside it. With both in one folder, run
shasum -a 256 -c kaeri-0.3.2-macos.dmg.sha256 (or sha256sum -c on Linux).
Third-party
The apps play video with libmpv and FFmpeg, which kaeri builds as LGPL, without their GPL
parts, and ships as dynamic libraries of their own:
- Android phone and TV, built from source with NDK 30.0.16248370: abis arm64-v8a armeabi-v7a api 30 page-size 16384 vulkan 0, mbedtls 3.6.7, dav1d 1.5.3, libxml2 2.15.4, ffmpeg n9.0.2 (LGPL version 3 or later), freetype 2.15.0, fontconfig 2.18.3, fribidi 1.0.17, harfbuzz 14.6.0, unibreak 8.0, libass 0.17.5, mpv v0.41.0, libplacebo v7.360.1 (cee9b07).
- Mac, iPhone and iPad: mpv v0.41.0 and libass 0.17.5, built from source with
kaeri's patches, over MPVKit 1.1.0-n9.0.2's LGPL builds of FFmpeg n9.0.2 and the
libraries beneath it. - Windows: mpv's own LGPL build of libmpv, v0.41.0-kaeri-9f2ab280214a.
- Linux: mpv v0.41.0 and FFmpeg n9.0.2 (LGPL version 2.1 or later), built from source, with
Debian 13's GTK 4, libadwaita and the libraries beneath them, whose sources are Debian's.
kaeri-0.3.2-apps-sources.tar is the source they were built from, every archive by its
SHA-256, with the scripts that built them and kaeri's patches. kaeri-0.3.2-apps-third-party.zip has every licence
and notice: the libraries', the engine's Rust crates', and the engine's upscaling shaders', one of
which, the AniSD model, is CC BY-NC 4.0, for non-commercial use only.
What's Changed
- Watch together picks what you play, keeps you in the room and joins a room that started; Windows volume slider shows the real level by @bitknox in #14
Full Changelog: v0.3.1...v0.3.2