Kitsune is a Libadwaita client for watching anime translated by the AniLiberty team. Browse the catalog, search for titles, and watch episodes with the built-in player.
Content (catalog, descriptions, and subtitles) is provided in Russian by the AniLiberty API.
First major release — Kitsune now signs you in to your AniLiberty account and keeps your library in sync across devices.
Account sync. Log in with credentials or OTP through a new dialog with secure system token storage. Favorites, the five built-in collections (Watching, Watched, Planned, Postponed, Abandoned) and per-episode watch positions sync bidirectionally with the server — automatically in the background, and pending changes are queued so nothing is lost offline or between restarts. If the session expires, a banner offers to sign in again.
Profile view. New profile page with parallax hero image, server avatar with initials fallback, collection stat cards with count-up animation, total titles and watched episodes counters, pending-ops indicator with retry, manual sync and logout buttons, and a one-click local data reset. The left sidebar gains a bottom-pinned auth row showing nickname and last sync time, with an animated progress indicator while a sync is running.
Smart collections. Built-in collection tags carry a cloud badge when synced. Mutex enforcement on collection swaps surfaces a toast when a release moves out of its previous collection. Auto-collection logic moves releases between Watching/Watched/Postponed/Abandoned based on watch activity and an idle scan — 30-day pause and 180-day abandon thresholds, all toggleable in preferences. "Mark all watched" and "Unmark all" episode bulk actions on the release page.
Player. Playback speed control from 0.5x to 2.5x with natural-sounding audio (contributed by @utlark). Screen rotation button for vertical content on convertible devices. Episode IDs threaded through watch position storage for cross-device timecode sync.
Brand refresh. New scalable and symbolic app icons plus a refreshed brand color palette (contributed by @gingercat). Built-in tags use emoji icons with theme-aware color tints from the GNOME HIG palette A. Bundled symbolic icons namespaced under the app ID to avoid collisions.
Adult content gating. 18+ titles ship with blurred posters and a confirmation dialog before opening the release page, with a global "don't show again" opt-out persisted in GSettings. Content rating updated accordingly.
Catalog improvements. Pull-to-refresh on mobile with tinted spinner and elevated headerbar, dedicated refresh button on desktop, viewport-sized loading that prefetches more cards as the window grows, mobile-only touchpad scroll filter to avoid accidental refreshes.
Adaptive layout. Edge-to-edge profile on mobile with a transparent header bar, bottom-sheet navigation accommodating the auth row.
UI polish. All grid cards — releases, tags, genres and franchises — glow on hover with the same animated halo as episode cards, and release cards add an Ambilight-style under-glow tinted by the poster's own colors.
Stability. The sync engine was hardened through a full audit and live testing: pending changes can no longer get stuck, server watch positions pull down correctly (with a one-time library reindex on first login), and only locally changed positions are pushed. Destructive actions — logout, unmark-all, data reset, "Keep server" merge — now ask for confirmation. An experimental macOS build with media keys and Now Playing integration joins the Linux release (contributed by Anton Palgunov).
Translations. Russian translation refreshed and completed for all new sync and profile strings.