Repository navigation
Karasu 1.32.0
The first Stable release since 1.0.0, and everything the Nightly gained in the
four weeks between: a new way to act on any title (long press, right-click,
pull to sync), a floating now-playing window, an Android app that updates
itself and keeps Jellyfin tracking alive with the screen off, Jellyfin servers
found by name, a cache that makes a restart cost almost no requests, .deb
and .rpm packages beside the AppImage, a contrast setting and the second
version of Karasu's look across the app and the website.
Two things change around the app rather than in it. Karasu is now licensed
under AGPL-3.0-or-later; releases up to 1.30.x stay under MIT. And the
project has moved to github.com/Suzora/Karasu and
suzora.github.io/Karasu. The old repository address forwards, so an
installed 1.0.0 still finds this update; the old website address does not.
On Android, 1.0.0 cannot update itself: install this APK once by hand
(your data stays, the signing key is the same). From here on the app fetches
its own updates.
Added
- Long-press a title on a touch screen, or right-click it with a mouse, for everything that can be done with it; the right-click menu finds entries as you type and stays on screen at any edge.
- Pull a screen down on the phone to sync; Android drops the separate sync row, and the list header no longer shows a reload button there.
- Swiping up from the phone's bottom bar opens the command palette, which opens on what you used lately beside the main shortcuts.
- The now-playing card is a small floating window over every screen, expanded or compact, with the cover, season and episode, the episode's name and the AniList details; its update, skip and fix-match buttons sit in its header, and on desktop it can be dragged anywhere and resized, and remembers both.
- Android downloads a new version by itself over Wi-Fi and installs it from About, the bell, or once at start; the update channel can be chosen there too.
- On Android, Jellyfin tracking can keep running with the screen off — a switch under Detection → Jellyfin starts a quiet permanent notification that stops Android from freezing the app, a button excludes Karasu from battery optimisation (which also keeps the notification check on schedule), and the tracking settings are no longer greyed out there.
- Settings → Detection → Jellyfin can find the servers on your network by name, and signing in checks the address is a Jellyfin server before your password is sent.
- Jellyfin settings take an optional external address for when the server is not reachable at the first one — Karasu switches over by itself, checks it is the same server before sending anything, and Test connection says which address answered.
- The bell has a titlebar glance at the newest three, a notifications page with a filter for Karasu's own and AniList's, and a sheet of its own on the phone.
- A formatting toolbar in every place you write on AniList — activities, replies, threads, comments, reviews and your bio — with shortcuts for bold, italic, strikethrough and spoiler.
- An "Interface size" setting under Appearance zooms the whole window (75–200 %), for 4K displays and TVs across the room; Ctrl+plus, Ctrl+minus and Ctrl+0 change it like in a browser, and the size sticks.
- A contrast setting under Appearance: System, Standard or High, where High lifts text, the accent and every border to at least 7:1 in both themes.
- Appearance can follow the system's accent colour on Windows, GNOME/KDE and Android 12+, with your own colour kept for when you switch back.
- The calendar has three views (week grid, tiles, agenda) and never scrolls sideways; "My shows" keeps the episodes that already aired, dimmed; a Density setting under Appearance sizes the calendar, the local library and the digests.
- A third, text-only list view beside the gallery and thumbnails, and all three views on the phone, laid out for its width.
- On the phone, swipe left or right on the anime and manga lists to move between the status tabs.
- Setting a title to Completed fills in the final episode or chapter (and the volume count for manga) wherever the status changes.
- Adding a title from its page uses your default status in one press, the chevron or a resting mouse offers the others, and a status colour too faint for the current theme is flagged in Appearance.
- On Android, a long press and an armed pull-to-sync give a short haptic tick, and a title can be shared to another app from its menu or its page.
- Linux releases ship a .deb and an .rpm beside the AppImage; the AppImage remains the one that updates itself.
- The window opens where and how large it was last closed.
- The sync panel and the diagnostics report show AniList requests per source since the app started.
- Detail, seasonal, franchise and similar pages are cached on disk with a per-page lifetime, so reopening one after a restart usually costs no request.
Changed
- A calmer, sharper look across the app and the website: neutral hairlines, tighter corners, headings and labels in the Karasu typeface, and sheets and dialogs that arrive on a soft spring.
- Menus, sheets and panels share one row style with 44 px touch targets on the phone, every dialog shares one frame with its buttons in reach on short windows, and every search field, form field and choice looks and clears the same way.
- Chips and counts share one look: outlined labels and one badge shape; the status button, the +1 buttons, main buttons and chosen chips carry their colour as a tint instead of a solid fill.
- Every control shows the same focus ring when reached by keyboard, controls sink slightly while pressed, and small buttons are easier to tap on a touch screen.
- View switches slide to the chosen option and follow the arrow keys; statistics sections use the list's tab strip; expandable sections open and close with a short animation instead of jumping, and quick loads no longer flash a skeleton.
- Bottom sheets on the phone can be swiped away and sit above the bottom bar; receipts can be flicked away, stay put while hovered or focused, and give an Undo seven seconds.
- The anime and manga list header is rebuilt: single-row status tabs in their status colours, and one toolbar with search, sort, filter and preset panels, removable filter chips, and a More menu on the phone.
- The detail page edits your entry from the status button and shows how everyone else scored the title; on the phone it puts every fact below the cover.
- The overview shows your figures under the banner, one row of what you are watching and reading, and this week beside airing soon; its four figures take less height and stay centred on the phone.
- Banners on title pages, profiles and the season hero are shown whole with a blurred fill instead of cropped, blend into their surroundings, and take less room on the phone; the season hero is swiped instead of stepped with arrows, and it counts aired episodes for a running show.
- The calendar steps weeks from a bar of its own and shows a quiet stretch of days as one line; on a phone that bar holds only the arrows and the range.
- Settings has one Account pane for Karasu and AniList, groups Appearance into three cards with previews of each theme, and lists on a phone what each pane holds; on a phone, settings with a field or a menu stack the control under its description, and the Jellyfin card starts with the connection.
- On a phone, a profile shows the whole name with Follow across the width, the forum's categories are one menu instead of rows of chips, and the formatting bar keeps to one row with a More menu for the rest.
- The collapsed sidebar names its icons in tooltips, and its avatar is round again.
- Settings switches keep a readable thumb on pale accents and show their edge in high contrast.
- Your list is read from the local copy for fifteen minutes after a fetch and refreshed quietly in the background after that; "Sync now" still fetches at once.
- Karasu waits for the next episode's airing time instead of polling AniList every twenty minutes for new episodes.
- The Wrapped page is built from the list Karasu already holds, and saving from a title's page no longer reloads it.
- Every sync surface shares one lock, so a sync started elsewhere shows as running.
- The Android battery hint says which vendor setting keeps tracking alive with the screen off (nubia/ZTE: "Runs in background" → "Allowed").
- The Linux AppImage runs natively on Wayland in a Wayland session, like the .deb and the .rpm; GDK_BACKEND=x11 runs it through XWayland as before.
Fixed
- With Karasu on both the PC and the phone watching the same Jellyfin account, an episode reaches AniList once — the desktop goes first, the phone waits three minutes and checks, and every instance asks AniList for the current progress before it writes.
- Find servers reaches the Jellyfin server on a PC with a virtual network switch (Hyper-V, VirtualBox).
- The Linux AppImage no longer opens a black window or crashes shortly after opening on Fedora 44, Ubuntu 26.04 and other systems with Mesa 26, and it starts under firejail --appimage and anywhere else it is mounted as root.
- Karasu exits cleanly when Windows ends the session instead of logging a crash.
- Pinning an activity no longer signs you out; a refusal shows AniList's reason, and the pin control is only offered on accounts that can pin.
- Spoilers that wrap several paragraphs, lists or images hide as one block, and comment previews no longer reveal spoiler text.
- Images in bios and forum posts that showed as a link now render — linked badges,
tags, URLs with parentheses, and hosts that mislabel the file — and each is fetched once.
- Bios and posts render as anilist.co does where they did not — a favicon-style ICO image loads inline, every HTML entity a browser knows is decoded, a heading written as #Title without the space is a heading, ~~~centred~~~ text inside a heading keeps its spoiler,
draws a rule, and a one-line centred row starting with a dash is no longer a bulleted list. - A link with a target Karasu refuses (javascript:, data:, AniList's layout blob) shows in the accent colour like on anilist.co, instead of as plain text.
- New-episode and sequel checks keep working through an AniList outage that refuses anonymous requests, by signing them with your account while you are signed in.
- Restarting Karasu right after it spent its AniList budget no longer fires a burst of requests into the limit, and the twice-daily sequel check spreads its requests out.
- A release name that carries the episode's title after its number parses the number, and Jellyfin's episode name reaches the now-playing card.
- The now-playing ring no longer restarts on a card mounted mid-session.
- An AniList profile link that carries the user's id, as the Statistics header's does, opens the profile in-app instead of "No such user".
- Reading notifications one by one clears the bell's badge, "Mark all read" is always available, notification links need one back press, and opening the bell over the notifications page no longer reloads it or clears its unread marks.
- A pull-to-sync gesture arms when two touch events arrive in the same frame, one left mid-way by a navigation no longer leaves its hint on the next screen, and a long press no longer selects the action sheet's title.
- A pinch on Android no longer zooms the whole screen; the interface size under Appearance is the one zoom.
- F5, Ctrl+F and Ctrl+P no longer reach the browser engine under the app on desktop; copying works the same on Linux as on Windows.
- The command palette's result groups are announced as groups, and its input has a name.
- The sidebar collapses to icons on a short window instead of pushing its lower entries out of view, and collapsing it from the keyboard keeps the focus on the toggle.
- Panning the franchise view on Android no longer triggers a sync, the view opens centred on the title it was opened from, it no longer scrolls sideways on a phone, and its legend names every status.
- A saved preset remembers the custom list it was filtered to.
- Episode, chapter, volume and rewatch fields no longer keep a 0 you cannot delete, and an emptied field saves as 0.
- Text in the phone's More sheet, the bell, the filter menus and the calendar uses its intended colour instead of inheriting the one above it.
- The status editor and the list's panels stay inside a short window instead of running off its bottom.
- High contrast marks the focused text field, and Escape in a dialog's search empties it before closing anything.
- The floating detection window is readable in the light theme again, and the shell's banners animate in and out.
- Grid covers show the keyboard focus ring again, keep the complete button when it fits, never clip a quick action — in the lists, search and the season pages — and the selection box no longer draws a second focus ring; the list view's score header is no longer cut off in German.
- The score label over the chosen bar, the overview's banner, the score badges, the 18+ badge, the complete button and the reveal label stay readable in the light theme and in high contrast, and the tag field shows keyboard focus.
- In high contrast and Windows' contrast themes the chosen status and chip stand out by more than colour, and a tapped +1 no longer stays highlighted on a phone.
- The overview no longer jumps while it loads, keeps airing soon full width on a quiet week, and shows the keyboard ring on its panel rows.
- The search page no longer starts its second row of chips with a stray divider.
- A second press on the calendar's next-week arrow no longer jumps back to this week, and the week grid no longer flickers near its width threshold.
- Settings cards are announced one level below their group, the phone's pane list names what the Android account and advanced panes really hold, and the chosen theme stays marked in Windows high contrast.
- On a phone no settings control runs past its card, buttons keep their label on one line, and the log, media-session and manual-token sections fold open smoothly and tell a screen reader whether they are open.
- The Jellyfin card no longer keeps an old error on screen after a later action succeeds, and on a narrow phone the "desktop only" label no longer covers a card's title.
- A profile's tabs show that more lie past the edge and take the arrow keys, and on a phone the formatting More menu returns the focus where it came from and closes when the window widens.
- Statistics shows every status in full beside the ring, the series-length labels are no longer cut off, "1 episode" reads in the singular, and on a narrow phone the page no longer scrolls sideways.
- Character and staff pages show roles and genders in your language, and the local library's title matches the other pages.
- The Android widgets' title shows Karasu's accent and their footer is readable against the widget.
- The colour picker's hex field and the log's level column are monospace again, and the About wordmark has its wide spacing back.
- Adding a title from its page keeps keyboard focus, closing the status choice before an add lands keeps it on the button, a hover-opened status choice no longer opens on its own after another panel closes, and a status colour picked to match an old default survives a restart.
- Settings describe the editor's instant save, the Detection pane and the density setting as they now behave.
Removed
- The franchise graph no longer folds its branches.
Windows -- the .exe installer. It is unsigned, so SmartScreen may
warn on first run. Verify the download against SHA256SUMS.txt if you want to
confirm it wasn't tampered with in transit.
Linux -- the .AppImage, x86_64, is the one the in-app updater replaces:
chmod +x it and run it; it works on Ubuntu 22.04+, Debian 12+, Fedora and
Arch, and carries its own WebKitGTK. The .deb and .rpm install through
the package manager instead (and update with the next release, not in-app); they
use the system's webkit2gtk-4.1 and pull it in as a dependency. For a tray icon you also need a StatusNotifier host; on
GNOME that means the AppIndicator extension. Without one Karasu still runs and
closing the window quits instead of hiding.
Android -- the .apk, sideloaded. Take the _arm64 one; _universal
is the fallback for anything that refuses it (old 32-bit phones, emulators)
and comes with tagged releases only -- a nightly ships arm64 alone.
Both are signed with the project key, so installing over a previous release
keeps your data. From 1.11 the app updates itself here too: it downloads the
APK for your device over Wi-Fi, checks it, and opens the installer when you tap.
Karasu's built-in updater (About page, or automatic daily checks) verifies
updates against its own signing key regardless -- see latest.json for the
update manifest.
VirusTotal scan: src-tauri\target\release\bundle\nsis\Karasu_1.32.0.763_x64-setup.exe=https://www.virustotal.com/gui/file-analysis/NmE1MzExNWYzMjZjZTE5ZjdhNDc4NTAwNWQ1ZTcyZmM6MTc5MTA1Mzc4MA==/detection