Repository navigation
Releases
v0.3.6
Kaeri 0.3.6
- Casting plays streams whose segments are named as images
Casting plays streams whose segments are named as images
Casting no longer fails on streams whose video segments are named as images. The TV gets each segment under the type its bytes show, so it plays instead of being refused.
A TV wrongly remembered as unable to play a video, with a message such as "can't play this video (H.264)", is asked again after the update. A refusal after a stream sent bytes no TV can read no longer blames a video format.
Fixes #25
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.6-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.6-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.6-android-tv-arm64.apk or kaeri-0.3.6-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.6-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.6-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.6-windows-x64-setup.exe, or kaeri-0.3.6-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.6-linux-x86_64.AppImage, or kaeri-0.3.6-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.6-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.6-macos.dmg.sha256 (or sha256sum -c on Linux).
What's Changed
Full Changelog: v0.3.5...v0.3.6
v0.3.5
Kaeri 0.3.5
- Hover cards open after a scroll, and Windows gets faster trailers and every Search filter
Hover cards open after a scroll, and Windows gets faster trailers and every Search filter
Hover cards open more predictably on every desktop. The card for a cover you scroll onto now opens once the page stops, as it does when you point at it. On Windows the wait also counts from when the pointer arrives and allows a little drift.
On Windows, a hover card's trailer starts playing about three times sooner. Search has every filter the Mac has: Status in the filter row, a Filters panel (the Filters button or Ctrl+Shift+F) with genres and tags to include or leave out, years, length, score, origin, where to watch and your list, and a chip for each filter you set. The Trending rail no longer shows a scrollbar, and covers and Home's cards have room around their hover highlight.
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.5-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.5-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.5-android-tv-arm64.apk or kaeri-0.3.5-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.5-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.5-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.5-windows-x64-setup.exe, or kaeri-0.3.5-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.5-linux-x86_64.AppImage, or kaeri-0.3.5-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.5-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.5-macos.dmg.sha256 (or sha256sum -c on Linux).
What's Changed
- Hover cards open after a scroll, and Windows gets faster trailers and every Search filter by @bitknox in #22
Full Changelog: v0.3.4...v0.3.5
v0.3.4
Kaeri 0.3.4
- Watch together picks what you play, keeps you in the room and joins a room that started; Windows volume slider shows the real level
- Smoother Windows app, dialogs you can't get stuck in, and Watch together fixes
- Subtitle settings save again, fewer match questions, smooth wheel scrolling on Windows, and Watch together and sync fixes
Watch 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.
Smoother Windows app, dialogs you can't get stuck in, and Watch together fixes
The Windows app feels much smoother. Scrolling Home glides over the shelves as it does between them, pages and settings change in place instead of redrawing, and Back returns you to where you were. Pages left alone no longer redraw while sync and downloads run, and covers fade in as they arrive. The app's own colours now reach every control and dialog.
On Windows, no dialog can trap you any more: every dialog closes with Escape, the keyboard stays inside the dialog that is up, and the cloud sync sign-in no longer leaves you with only a greyed-out Cancel. Buttons that waited silently now show progress, and the title bar shows running jobs and sync, with a Messages list (Ctrl+Shift+L). Settings opens at once, starts with a General pane, can be searched with Ctrl+F, and shows sync conflicts to review. The player redraws far less, fades in, and its controls no longer shift.
Watch together works across devices on a real server: joining by code or link finds the episode, the room moves on to the next episode together, and rejoining under the same name works. Invite links and Rejoin show the room first and wait for Join. On every app, removing a device from sync no longer leaves it showing a key error, download progress moves while episodes download, and Trending over a month loads again.
Subtitle settings save again, fewer match questions, smooth wheel scrolling on Windows, and Watch together and sync fixes
Watch together opens each episode at the start on every device, and waits for everyone's Ready before it plays. Removing a device from sync now cuts it off: the others get a new key and a new recovery key, and a removed device can set sync up again under a new identity.
Automatic source choice no longer stops to ask which match is right when another source matches the title for sure; it asks only when none does. Subtitle settings save again when the outline or background is set to none.
On Windows, the mouse wheel glides each page smoothly (Smooth scrolling in Settings, on by default), full screen sits at the right end of the player's bottom bar, and rows in the source and match pickers respond to clicks again. The app also looks and moves more consistently. Covers, titles, headings, links and buttons share one set of sizes, buttons over art and video lighten instead of turning solid, and Kaeri's own motion follows the same springs as the Mac. Settings panes open at once, Enter on Search searches in place, the mini player gives the window back maximised or full screen as it was, empty pages sit in the middle, and a narrow window stacks Home's spotlight.
On Android, Rejoin keeps your name in the room, and the WebDAV form no longer mentions Nextcloud.
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.4-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.4-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.4-android-tv-arm64.apk or kaeri-0.3.4-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.4-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.4-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.4-windows-x64-setup.exe, or kaeri-0.3.4-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.4-linux-x86_64.AppImage, or kaeri-0.3.4-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.4-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.4-macos.dmg.sha256 (or sha256sum -c on Linux).
What's Changed
v0.3.3
Smoother Windows app, dialogs you can't get stuck in, and Watch together fixes
The Windows app feels much smoother. Scrolling Home glides over the shelves as it does between them, pages and settings change in place instead of redrawing, and Back returns you to where you were. Pages left alone no longer redraw while sync and downloads run, and covers fade in as they arrive. The app's own colours now reach every control and dialog.
On Windows, no dialog can trap you any more: every dialog closes with Escape, the keyboard stays inside the dialog that is up, and the cloud sync sign-in no longer leaves you with only a greyed-out Cancel. Buttons that waited silently now show progress, and the title bar shows running jobs and sync, with a Messages list (Ctrl+Shift+L). Settings opens at once, starts with a General pane, can be searched with Ctrl+F, and shows sync conflicts to review. The player redraws far less, fades in, and its controls no longer shift.
Watch together works across devices on a real server: joining by code or link finds the episode, the room moves on to the next episode together, and rejoining under the same name works. Invite links and Rejoin show the room first and wait for Join. On every app, removing a device from sync no longer leaves it showing a key error, download progress moves while episodes download, and Trending over a month loads again.
Train
Version 0.3.3, a patch release: nothing breaks plugins, config, data or the store protocol. The engine changes are fixes that every app picks up; everything else is in desktop/windows.
First wave (already on this PR at the last review):
fix/win-pages,fix/win-browse,fix/win-shell,fix/win-player: pages update in place, the Home wheel reaches the page's scroller, cached pages keep their place on Back, shell dialogs show progress, and player bar, scrub, volume and party routing fixes.fix/engine-live: download progress is published as bytes arrive, and monthly trending asks each title'strends(sort: DATE_DESC, perPage: 31).- Own commits: hover previews wait for the wheel to rest, Settings is cached, Kaeri.Drive tooling and a testing-only
KAERI_PROFILE_ROOT.
Second wave, merged in this order:
polish/player2: the player redraws only what changed, once per UI turn; fades for the player, alerts, Play on TV and reactions; clocks keep their width; invite links, codes and Rejoin look into the room before Join; Ready hidden when it cannot lead anywhere.polish/dialogs: the "locked inside a dialog" report. The cloud sync wait had only a disabled Cancel and ignored Escape, and WinUI left the keyboard on the page under the dialog's shade. Dialogs now refocus when they open or the window returns, the app can force any dialog closed (so the close and leave-party questions always get through), stale queued dialogs are dropped, player dialogs go through the one-at-a-time helper, and dialogs leave the mini player first.polish/shell2: Devices, About, Accounts, the update panel and the sidebar account item change in place; Settings cards keep one width; title bar status and jobs flyout, Messages, sync conflicts, General pane, download folder Browse and Open, settings search.polish/visual: the palette is merged after Fluent's in App.xaml, so it wins (commit 026a22b moves every control's colour and reverts alone); dialogs get the palette; StateHost crossfades from placeholders to empty or failed states;ArtFadefor covers; secondary links in silk.polish/browse2: grids keep their cells; Home cards, spotlight and This week change only the words that changed; the calendar reuses its cells; Library tabs keep their width; Search updates as you type and loads past 30; seasons switch in place; the hover card grows in place; grid covers open a hover card again.polish/multi, engine fixes found with two and three clients:kaeri-party: a joiner on a real server never learned the episode, because the fake server sent the room in a different order from a real one (the fake now matches); a plain Syncplay member on the room's episode showed as playing another file; rejoining under the same name.kaeri-engineparty: moving on to the next episode on the public server stuck paused or skipped an episode.kaeri-sync: a removed device showed a key error forever.- New tests:
kaeri-ffi/tests/together.rs(two devices through FFI engines on the fake server; the public-server run and the peer for another app are#[ignore]),sync_two.rs, and a plugin store update reaching a member. Fixture engines on Windows listen on 127.0.0.1 for pairing.
Merges: Dialogs.cs conflicted between the dialogs branch's forced close and refocus and the visual branch's dialog palette; both kept. Kaeri.Drive/Program.cs scenario lists combined. HomeWeek.cs: the in-place View all link with the silk link style.
Train fixes:
- The starting screen tests joined the "Strings" test collection; they reset the shared string resolver and failed a Home heading test about once in five runs.
- The Windows lobby said "Everyone is ready" whenever the room played, even at 1 of 2 ready. It now uses the Mac's start line.
- The calendar stayed blank on a real profile: cells kept from the last drawing were taken out of their old column through
Parent, which is null once that column is off the page, so adding them again failed. Each cell's column is now kept beside it. The fixture never drew a week twice, so only the profile copy showed it. kaeri-ffi's stats test failed once on macOS CI: before the picture starts, the session asks the player forcache-speedalone once a second, and on a slow runner that came before the test's first time report. The test now looks for the panel's own figures.- Kaeri.Drive opens Settings' Playback pane before the Auto-play switch; the pages check had been comparing nothing with nothing.
Measured on Windows 11, 240 Hz, fixture scene (Kaeri.Drive):
| Check | Result |
|---|---|
| Pages left alone 15 s (Home, Library, Seasonal, Calendar, Search, title) | 0 frames changed, every element kept |
| Sidebar, tabs and filters | first change 47 to 190 ms, one burst each |
| Spotlight Details | 113 ms (one run of two gave 404 ms) |
| Poster and Back on Home, Library, Seasonal | one burst each, place kept |
| Typing a search | two bursts, by design |
| Player with controls up, 15 s | missed frames 87 to 10, p95 5.8 to 4.4 ms |
| Downloads and Settings pages checks | all pass |
| Escape on 12 rehearsed dialog states | all close; on the old build the sync wait, recovery key and invite sheet stayed open |
Two clients: Watch together (link, code, lobby, Ready, pause, seek, resume both ways, chat, reactions, closing and reopening the player) works on the fake server and on the public server, including with the Windows app driven through UI Automation against a second engine. Sync of watched, unwatched, list status, a shared setting and a change on both devices works.
Checked locally:
- Rust:
cargo fmt,cargo check --workspace --all-targets --locked, clippy on kaeri-engine, kaeri-party, kaeri-sync and kaeri-ffi. - Rust tests, per crate: kaeri-party 70, kaeri-sync 100, kaeri-engine lib 607 and plugin_stores 5, kaeri-ffi lib 62, together 4 and sync_two 3 (the first wave's runs of kaeri-meta, kaeri-testkit, kaeri, kaeri-tui, kaeri-model and kaeri-store stand; those crates did not change since).
- Strings: the i18n check.
- C#: the C# tests (9 engine, 303 app).
- Driver: feel, wheel, idle and pages on the fixture; feel-real and scroll-real on a copy of the maintainer's profile (every page kept all its elements while left alone; first visits to Seasonal, Calendar and Library change twice as covers and the week arrive; scrolling misses 0 to 7% of frames at 240 Hz).
Not checked locally:
- The Mac and Android builds. The engine fixes reach them; their own code is unchanged.
- The Windows TV, cast and Devices screens with a second client; the end of an episode and the in-player party screens were checked in code only.
- A removed device's sync on a real cloud folder.
🤖 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.3-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.3-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 ...
v0.3.2
Watch 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), fre...
v0.3.1
Kaeri 0.3.1
- Torrent sources turn on reliably, episode lists refresh on open, older devices keep syncing
Torrent sources turn on reliably, episode lists refresh on open, older devices keep syncing
Torrent sources can be turned on again when your settings already have a providers section, and a source that is held back now says that torrent playback is off. A title's episode list refreshes when you open its page if the last listing is more than five minutes old. Devices on an older version now skip sync changes they don't know yet instead of failing the whole batch.
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.1-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.1-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.1-android-tv-arm64.apk or kaeri-0.3.1-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.1-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.1-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.1-windows-x64-setup.exe, or kaeri-0.3.1-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.1-linux-x86_64.AppImage, or kaeri-0.3.1-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.1-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.1-macos.dmg.sha256 (or sha256sum -c on Linux).
What's Changed
- Torrent sources turn on reliably, episode lists refresh on open, older devices keep syncing by @bitknox in #13
Full Changelog: v0.3.0...v0.3.1
v0.3.0
Kaeri 0.3.0
- Library no longer waits behind background syncs
- Kaeri 0.2.2
- Sync between devices, watch party chat and skip times found from the audio
Library no longer waits behind background syncs
The Library screen could stay loading for minutes while the app's AniList sync waited its turn in the background. It now loads right away.
Kaeri 0.2.2
Windows fixes
The Windows app no longer crashes on its second launch, and the starting screen shows as soon as Play is pressed. Pages show placeholders while they load, Search sits in the sidebar as on the Mac, the Calendar draws like the Mac's, and Home fills wide windows. Dates, numbers and WinUI's own words follow the app's language, and trailer previews hide their controls again.
Train
- Version: 0.2.2 (patch), committed as "Release 0.2.2".
- Branch: train/2026-11-03 from main, with fix/windows-start-and-width merged (it carries fix/windows-skeletons, fix/windows-calendar and fix/windows-spoilers).
- Outside desktop/windows: kaeri-ffi and kaeri-mpv-host ask mpv for the swapchain off the app's UI thread (
swapchain_of), plus i18n/en/platform-windows-browse.ftl. - Checked: built and validated on a Windows PC. Mac-side local checks were skipped at the maintainer's call; CI covers the rest.
- All 35 commits are signed and verified.
🤖 Generated with Claude Code
Sync between devices, watch party chat and skip times found from the audio
Your devices can now share where you stopped, your history and your settings. Pair them on the same network, or sync through a cloud folder you already use. A recovery key lets a new device read the history back.
Watch together has a chat. Send a line or a reaction during the episode, or hide chat in Settings if you'd rather not see it.
Kaeri can find an episode's opening and ending from the audio, by comparing it with the episodes before it. You confirm or undo what it found, and the audio prints it compares stay on the device.
Episode lists show each episode's synopsis, in the title page and in the player's Episodes panel.
Browsing has a few extras: a period for Trending, Surprise me, dub counts on the cards, and Go to episode for long series.
The player's starting screen now says what it is doing while it finds the episode, and offers a way out when a start takes long.
On Android, opening a title from the results shown while typing a search no longer crashes.
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.0-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.0-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.0-android-tv-arm64.apk or kaeri-0.3.0-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.0-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.0-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.0-windows-x64-setup.exe, or kaeri-0.3.0-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.0-linux-x86_64.AppImage, or kaeri-0.3.0-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.0-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.0-macos.dmg.sha256 (or sha256sum -c on Linux).
What's Changed
- Name the latest stable release on the download page by @bitknox in #6
- Library no longer waits behind background syncs by @bitknox in #7
- Kaeri 0.2.2 by @bitknox in #9
- Sync between devices, watch party chat and skip times found from the audio by @bitknox in #11
Full Changelog: v0.2.0...v0.3.0
v0.2.2
Kaeri 0.2.2
Windows fixes
The Windows app no longer crashes on its second launch, and the starting screen shows as soon as Play is pressed. Pages show placeholders while they load, Search sits in the sidebar as on the Mac, the Calendar draws like the Mac's, and Home fills wide windows. Dates, numbers and WinUI's own words follow the app's language, and trailer previews hide their controls again.
Train
- Version: 0.2.2 (patch), committed as "Release 0.2.2".
- Branch: train/2026-11-03 from main, with fix/windows-start-and-width merged (it carries fix/windows-skeletons, fix/windows-calendar and fix/windows-spoilers).
- Outside desktop/windows: kaeri-ffi and kaeri-mpv-host ask mpv for the swapchain off the app's UI thread (
swapchain_of), plus i18n/en/platform-windows-browse.ftl. - Checked: built and validated on a Windows PC. Mac-side local checks were skipped at the maintainer's call; CI covers the rest.
- All 35 commits are signed and verified.
🤖 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.2.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.2.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.2.2-android-tv-arm64.apk or kaeri-0.2.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.2.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.2.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.2.2-windows-x64-setup.exe, or kaeri-0.2.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.2.2-linux-x86_64.AppImage, or kaeri-0.2.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.2.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.2.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-dev-g703e59b0e-40117195812.
- 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.2.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.2.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
Full Changelog: v0.2.1...v0.2.2
v0.2.1
Library no longer waits behind background syncs
The Library screen could stay loading for minutes while the app's AniList sync waited its turn in the background. It now loads right away.
Train
- Version: 0.2.1 (patch), committed as "Release 0.2.1".
- Branch: train/0.2.1 from main, with fix/library-lock merged and nothing else.
- Conflicts: none.
- Checked locally under the HOME guard:
cargo check --workspace --all-targets --locked,cargo test -p kaeri-track(includes the new library_waits test),cargo test -p kaeri-engine --lib, clippy with-D warningsfor kaeri-track and kaeri-engine,cargo fmt --all -- --check. The branch's own run also passedtools/check-boundaries.sh. - Built locally: the Mac Release app (signing off,
adhoc-sign.shverifies) and the Android app-flavour R8 release APKs for the phone and the TV (arm64, armv7). - Not checked: the fix was not reproduced on a real library database, no device runs were made, and the rest of the workspace's tests, the Windows and Linux builds and iOS were not run.
🤖 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.2.1-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.2.1-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.2.1-android-tv-arm64.apk or kaeri-0.2.1-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.2.1-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.2.1-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.2.1-windows-x64-setup.exe, or kaeri-0.2.1-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.2.1-linux-x86_64.AppImage, or kaeri-0.2.1-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.2.1-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.2.1-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-dev-g703e59b0e-40117195812.
- 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.2.1-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.2.1-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
- Name the latest stable release on the download page by @bitknox in #6
- Library no longer waits behind background syncs by @bitknox in #7
Full Changelog: v0.2.0...v0.2.1
v0.2.0
Kaeri 0.2.0
- Kaeri 0.2.0
Kaeri 0.2.0
Switching seasons and opening a title page move smoothly again, on Apple devices and on Android, and a season's header shows at once. In the Mac player the scroll wheel no longer moves menus, and volume changes at once. The calendar no longer shows an episode twice. On the Mac, Kaeri asks for keychain access once per launch. It starts faster, asking only for Home first and the rest in the background. On the Mac, a title page's cover stays drawn after a second click. The filter chips on phones have a calmer look, and the player's loading line stays in place. Torrents get an optional proxy setting. Some streams that failed to start now play. Subtitles listed inside a stream's own playlist no longer stop early, and a dropped connection to a stream's host is tried again.
This update stores Mac sign-ins in a new way and rewrites the torrent settings. If you go back to 0.1.1 afterwards, it loses your keychain sign-ins, and with torrents on it can't read your config.
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.2.0-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.2.0-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.2.0-android-tv-arm64.apk or kaeri-0.2.0-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.2.0-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.2.0-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.2.0-windows-x64-setup.exe, or kaeri-0.2.0-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.2.0-linux-x86_64.AppImage, or kaeri-0.2.0-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.2.0-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.2.0-macos.dmg.sha256 (or sha256sum -c on Linux).
What's Changed
- Website: light by default, daytime strip and light footer, calmer light bands by @bitknox in #5
- Kaeri 0.2.0 by @bitknox in #4
Full Changelog: v0.1.1...v0.2.0