Releases: vorlie/ani-cli-rs
Release list
0.9.5
0.9.4
ani-cli-rs 0.9.4
This release fixes video player launching issues.
Fixes
- Fixed video player launching failures by adding HLS relay cache settings to mpv arguments
- Added mpv cache parameters (
--cache=yes,--cache-secs=120,--demuxer-max-bytes=512MiB,--demuxer-max-back-bytes=256MiB) for relayed streams - Enhanced player executable validation to provide better error messages when players are not found
- Improved process detachment behavior to match koto-cli's nohup behavior
- Fixed URL argument ordering to ensure the stream URL is passed as the last argument to mpv
- These changes resolve playback issues with Anikoto provider's HLS streams and relay mechanism
Debug logging improvements
The application includes comprehensive debug logging through the tracing crate to help with troubleshooting and issue reporting:
- Player launch logging with executable details, process IDs, and command arguments
- Stream resolution logging with URLs, HLS status, and provider information
- HLS relay logging with bind addresses, upstream hosts, and resource registration
- Network request logging for provider API calls and stream fetching
- Error context logging with structured metadata for better debugging
Enable debug logging with:
RUST_LOG=ani_cli_rs=debug,ani_cli=debug ani-cli-rs "anime title"For full stream resolution and relay tracing:
RUST_LOG=ani_cli_rs=trace,ani_cli=trace ani-cli-rs "anime title"Upgrade
Existing installations can update with:
ani-cli-rs updateFull Changelog: 0.9.3...0.9.4
0.9.3
0.9.2
ani-cli-rs 0.9.2
Patch release fixing unreliable subtitle timing on desktop platforms.
Fixes
-
Fixed inconsistent, rapidly changing WebVTT/SRT subtitle timing during playback and after download on Linux/desktop mpv, VLC, and Syncplay when using the
anikoto2(MegaPlay/KotoCDN) provider. (#18) -
External subtitles were being wrapped as a synthetic single-segment HLS subtitle rendition and advertised in the relayed master playlist, in addition to being passed to the player directly via
--sub-file. That synthetic rendition does not match how HLS clients expect WebVTT segments to be chunked (RFC 8216 section 3.5) and produced unreliable cue timing in some HLS demuxers. Desktop players and downloads now only receive the direct sidecar subtitle URL; the HLS rendition is no longer generated for them. -
Android/Termux playback is unaffected: it still receives subtitles through the HLS rendition, since Android players only receive a single intent URL and cannot be handed an explicit subtitle file.
What's Changed
- feat(ci): add CI workflow for automated checks and testing by @vorlie in #17
- fix(relay): stop wrapping subtitles as HLS on desktop by @vorlie in #19
Upgrade
ani-cli-rs updateTermux users should pull and rebuild:
cd ~/ani-cli-rs
git pull --ff-only
cargo build --release --locked
install -Dm755 target/release/ani-cli-rs "$PREFIX/bin/ani-cli-rs"Full Changelog: 0.9.1...0.9.2
0.9.1
0.9.0
ani-cli-rs 0.9.0
This release adds tested Android/Termux playback support, including native Android player handoff, protected HLS relaying, and external subtitle tracks.
Highlights
- Added source-build support for Android through Termux.
- Added Android
VIEWintent launching for mpv-android and VLC. - Added compatibility fallbacks through media-typed
termux-openandtermux-open-url. - Added Android playback for protected MegaPlay/KotoCDN HLS streams through the existing loopback relay.
- Added external WebVTT/SRT subtitles as standard HLS subtitle renditions.
- Added generated subtitle media playlists with duration derived from the final subtitle cue.
- Added Termux-specific help, installation instructions, usage guidance, and troubleshooting.
Android player behavior
Normal playback requests mpv-android. --vlc requests the Android VLC application when Termux's explicit activity bridge works.
Some Termux installations expose a socket-backed termux-am that cannot connect. ani-cli-rs now detects a failed launch and falls back to Android's media handler. On this fallback path, Android's selected or default application takes precedence, so --vlc becomes a preference rather than a guarantee.
For protected HLS, keep Termux running while watching. Return to Termux and press Enter only after playback finishes; pressing Enter early shuts down the local relay.
Subtitles
Separate provider subtitles are wrapped in HLS subtitle media playlists and exposed to compatible Android players. Select the track from the player's subtitle menu if it is not enabled automatically.
Device testing confirmed relayed playback and selectable external subtitles with mpv-android, VLC, Amnis, and Samsung Video Player. Compatibility can still vary between Android versions and player builds. Embedded and burned-in subtitles are unaffected.
Installation
No Android binary is published. Build from source inside Termux:
pkg update
pkg install git rust termux-tools
git clone https://github.com/vorlie/ani-cli-rs.git
cd ani-cli-rs
cargo build --release --locked
install -Dm755 target/release/ani-cli-rs "$PREFIX/bin/ani-cli-rs"Install an Android media player separately. Do not use pkg install vlc for Android handoff; that installs a terminal VLC build rather than the Android application.
ani-cli-rs "cyberpunk"
ani-cli-rs --vlc "cyberpunk"Official prebuilt releases remain available for Windows x64 and Linux x86-64. macOS and Termux remain tested source-build platforms.
Upgrade
Existing Windows and Linux installations can update with:
ani-cli-rs updateTermux users should pull and rebuild:
cd ~/ani-cli-rs
git pull --ff-only
cargo build --release --locked
install -Dm755 target/release/ani-cli-rs "$PREFIX/bin/ani-cli-rs"Full changelog: 0.8.0...0.9.0
0.8.0
ani-cli-rs 0.8.0
This release replaces the broken AllAnime/Mkissa integration with a second,
fully native Anikoto provider. ani-cli-rs now ships two independent catalogs
without requiring Python or a separately hosted relay.
Highlights
- Added Anikoto.cz as
--provider anikoto2, including native search, canonical
show selection, fractional episodes, and strict SUB, H-SUB, and DUB
availability. - Ported the complete Anikoto.cz AJAX workflow to Rust: episode lists, server
tokens, optional NekoStream mapper candidates, and server URL exchanges. - Added native MegaPlay and VidTube extraction through their player
data-id
andstream/getSourcesresponses. - Preserved provider referer, origin, user-agent, quality, and subtitle metadata
throughout playback and downloads. - Expanded HLS master playlists into selectable qualities and deduplicated
native sources. - Improved the Rust KotoCDN compatibility relay, including correct MIME
handling for bothGETandHEADrequests to PNG-wrapped MPEG-TS segments. - Added provider-prefixed
anikoto2:show IDs so scriptable commands and mixed
history entries route automatically. - Added deterministic parser and relay coverage plus an opt-in live
Anikoto.cz search-to-stream smoke test.
Provider selection
Anikoto API/MegaPlay is now the default:
ani-cli-rs "frieren"
ani-cli-rs --provider anikoto "frieren"Use Anikoto.cz as the independent alternative:
ani-cli-rs --provider anikoto2 "black torch"
ani-cli-rs -p anikoto2 search --json "black torch"The environment equivalent is:
ANI_CLI_PROVIDER=anikoto2
Provider searches remain separate, and ani-cli-rs never silently switches
catalogs during source resolution.
Breaking changes
allanimeis no longer an accepted provider.- The AllAnime/Mkissa GraphQL client, rotating crypto bootstrap, response
decryption, and URL cipher-map implementation have been removed. - The
debugandrefresh-cipher-mapcommands have been removed because they
existed exclusively for AllAnime. - Old unprefixed AllAnime show IDs and history entries can no longer resolve.
Search again with either Anikoto provider to create a new self-identifying
history entry. - Library users must migrate from
AllAnimeClienttoAnikotoClientor
AnikotoCzClient. AllAnime-specific crypto and cipher-map public types are
no longer exported.
No Python runtime dependency
The Anikoto.cz implementation is native Rust. KotoCDN playback uses a
short-lived Hyper server bound only to 127.0.0.1 on an ephemeral port. It
rewrites only registered playlist resources, validates upstream URLs, removes
confirmed PNG prefixes, and shuts down with the attached player or downloader.
The copied Python experiment remains a development reference only and is
excluded from release packages.
Documentation
docs/ANIKOTO-CZ.mddocuments the complete
Anikoto.cz search-to-play workflow.docs/ANIKOTO-KOTOCDN.mdremains the reference
for the Anikoto API, MegaPlay, and KotoCDN path.- The README, Wiki, issue forms, contributor guidance, and deterministic
showcase now describe the Anikoto-only architecture.
Upgrade
Use the built-in updater:
ani-cli-rs updateOr reinstall using the platform installation script. Official Windows and
Linux x86-64 archives should be published with matching SHA-256 checksum files.
Full changelog: 0.7.2...0.8.0
0.7.2
0.7.1
0.7.0
ani-cli-rs 0.7.0
This release adds Anikoto as an explicit second catalog while keeping AllAnime as the default for Bash ani-cli compatibility.
Highlights
- Select Anikoto with
--provider anikoto,-p anikoto, orANI_CLI_PROVIDER=anikoto. - Search the Anikoto recent catalog and AniList concurrently, merge stable identifiers, and retain adult filtering.
- Resolve native MegaPlay sources through explicit episode, embed-ID, AniList, and MAL candidates.
- Play or download MegaPlay HLS delivered by KotoCDN, including confirmed PNG-wrapped MPEG-TS segments, through a tokenized loopback relay.
- Preserve provider headers and subtitle metadata for mpv, VLC, Syncplay, yt-dlp, aria2, and FFmpeg workflows.
- Store Anikoto history in the existing tab-separated format through self-identifying
anikoto:IDs. Mixed AllAnime/Anikoto continuation routes each entry independently. - Return provider-aware catalog, mapping, rate-limit, extraction, and unavailable-source diagnostics.
AllAnime diagnostics remain available through debug and refresh-cipher-map; these commands intentionally reject an Anikoto selection. Searches are not combined, and playback never silently switches catalogs.
See docs/ANIKOTO-KOTOCDN.md for the complete contributor workflow.
Full changelog: 0.6.0...0.7.0