Repository navigation
Releases: matthw-labs/cupola
Release list
v1.0.0-beta.1
Cupola is the new name of Seekarr, and 1.0 is a different app. It covers seventeen services where Seekarr covered five: Seerr, Radarr, Sonarr, Lidarr, Readarr, Bazarr, qBittorrent, Transmission, SABnzbd, NZBGet, Prowlarr, Jellyfin, Plex, TrueNAS, Unraid, Dockge and Nginx Proxy Manager. It runs on iPhone, iPad, Android and Mac, and it talks straight to the services you run: there is no Cupola server, no account and no telemetry of ours. On Android, the code scanner is Google's and reports usage to Google (see privacy below).
This is a beta. Everything below is built, and we run it on our own stacks every day, but it has not met many other people's servers yet. Tell us where it falls short.
Coming from Seekarr? Read this first
Cupola is a new app, not an update to Seekarr 0.8.0.
- It installs beside Seekarr. The Android package changed from
labs.matthw.seekarrtocom.matthwlabs.cupola, and the Apple bundle ids changed too, so no system offers Cupola as an update. - It starts empty. Your connections stay in Seekarr. Add your services again in Cupola (same addresses, same API keys), check that each one answers, then uninstall Seekarr. Once one device is set up, Settings → Security → Set up another device copies every connection to the next one.
- Obtainium: your Seekarr entry may offer Cupola and then refuse it, because the app ID changed. Remove that entry and add this repository as a new app.
- iPhone and iPad install through TestFlight now. The unsigned
.ipais still here for sideloading, but TestFlight is the way we recommend. - The minimums went up: Android 7.0 (Seekarr ran on 6.0), iOS 17, and macOS 12 on an Apple silicon Mac (Seekarr's Mac build also ran on Intel Macs and on macOS 10.15).
- New license: Cupola is released under Apache 2.0. Seekarr 0.8.0 and everything before it stay under MIT, as
NOTICEexplains.
The source, the issues and the history stay in this repository.
Install
| Platform | Get it | Needs |
|---|---|---|
| iPhone, iPad | TestFlight | iOS 17 |
| iPhone, iPad (sideload) | cupola-1.0.0-beta.1.ipa below, unsigned: install it with AltStore, SideStore or Sideloadly |
iOS 17 |
| Android | cupola-1.0.0-beta.1.apk below, or Obtainium with this repository's URL |
Android 7.0 |
| Mac | cupola-1.0.0-beta.1.dmg below: signed with a Developer ID and notarized, so it opens like any other app |
macOS 12, Apple silicon |
| Windows | cupola-1.0.0-beta.1-windows-x64.zip below: unzip it and run cupola.exe |
64-bit Windows |
| Linux | cupola-1.0.0-beta.1-linux-x64.tar.gz below: untar it and run cupola |
x64, GTK 3 and libsecret |
- TestFlight asks you to install Apple's TestFlight app, then installs Cupola and brings each new build on its own. The public link has 500 places: if it says the beta is full, try again after the next release. The same link works on a Mac, if you would rather get updates that way than from the
.dmg. - Sideloading the
.ipa: you sign it yourself with your sideloading tool. With a free Apple ID the install lasts 7 days and has to be refreshed, and the widgets may stay empty, because they share data through an App Group that a re-signed copy may not get. - Android: one APK covers every device. You may need to allow installs from unknown sources for your browser or file manager.
- Windows and Linux builds are made by GitHub Actions and are not signed, so SmartScreen asks once. We have not run them ourselves: a report either way helps.
What is new since 0.8.0
Seekarr 0.8.0 had five services and four tabs. Almost every screen in Cupola is new, so here it is by area: each line opens.
Home: what arrived, what comes out next, what you were halfway through and what needs you, on one page
- Home is the first tab. Its title is the day, and the line under it says how many of your services are answering. Tap that line for the Stack.
- It is made of modules. By default: Needs you, Featured (what to resume, the newest arrival, what comes out today), Continue watching (Jellyfin or Plex), Coming up, Arrived (the last seven days), Downloads, Requests (approve or decline in the row), Now playing and Set up next.
- Three more wait in Edit Home: Stack health, Storage (TrueNAS pools and the Unraid array, with any disk in trouble) and a Discover shelf.
- Edit Home, from the foot of Home or Settings → Home: drag a module or use the arrows, switch one off, or reset the layout. Screen readers get Move up and Move down.
- A stuck download on Home carries its remedy in the row: look for peers again, try another download, keep waiting.
- At a cold start Home draws what it last knew, marked "As of 20:53 · checking now", then refreshes. Downloads and Now playing stay live while you look.
- Set up next names what you have not connected yet and offers the servers your Seerr or Prowlarr already know, filled in.
- Wide windows lay the modules out in two columns.
Discover and the title page: find something to watch, see where it stands on your server, act on it
- Discover replaces the Search tab. One field searches Seerr, Radarr, Sonarr, Jellyfin and Plex together and folds each title into one row that says where it is: on your server, in Radarr, requested. People get their own section. A source that is slow or down says so, instead of looking like "no results".
- Every way in: Trending (today or this week), Genres, Networks, Studios, People, Decades, Moods and Languages. Each opens a catalog you can switch between movies and series, order by popular, top rated or newest, and narrow by decade, rating or runtime. Hide what I have leaves out what is already on your server.
- Shelves: The best you're missing, Trending this week, Coming soon, Because you watched (from your Jellyfin or Plex history) and Complete the collection.
- A calendar of everything your Radarr, Sonarr, Lidarr and Readarr date in the next 30 days, across all your connections, with premieres and finales marked, and a month grid on wide windows.
- Person pages (biography, work grouped by role, how much of it is on your server) and collection pages (each movie and where it stands; request or add the missing ones).
- A poster's corner says what Seerr holds: Available, Requested, Downloading 42%. Long press or right click a poster to request it, add it, open it in Radarr or Sonarr, or copy its TMDB link.
- One page per title, the same from every way in, replacing 0.8's separate Seerr and library pages. Scores from TMDB, IMDb, Rotten Tomatoes and Metacritic (never from a handful of votes), 4K, HDR and Dolby Vision marks, where to watch, release dates, cast, More like this, a watchlist button, and one row per connection that holds the title or could.
- One lead button that fits the title: Play or Resume on Jellyfin or Plex (on a phone, pick Swiftfin, Streamyfin or Fladder), Request, Add to Radarr or Sonarr, Trailer. A copy that needs attention gets its own panel: try another download, remove the download, finish the import, search again.
- Requesting: Standard or 4K, the seasons you want, your remaining quota, and a plain reason when a request cannot go through. Operators choose the server, profile and root folder, and can add straight to Radarr or Sonarr instead of going through Seerr (Settings → Seerr → Adding a title).
- Series: episodes by season with each one's state, Search the N missing per season, the next airing, an episode sheet (play, file and quality, choose a release, monitoring, subtitles) and a graph of TMDB votes per episode.
- Manage (operators): files and quality, history, subtitles from Bazarr, automatic search for a series or a season, search releases, and remove with a clear say over the files and whether the title can come back.
Activity: what went wrong in plain words, and one list for every download
- Activity is four views (All, Downloads, Requests, History) under a header such as "4 moving · 40.4 MB/s · 1 stuck".
- Needs you gathers what the stack cannot fix by itself. Each card says what happened in the app's words, keeps the service's own message one tap away, and leads with the remedy:
- a download with nothing arriving for 30 minutes: look for peers again, try another download, remove it, or keep waiting (it stays out of the counts for 24 hours unless it moves, with Undo);
- a failed download, or a Usenet job stopped by a password, a damaged file or a full disk;
- downloads the arr will not import: Review sorts each one's files into clear matches and the ones that need you;
- a failed import (Fix opens manual import), a disk reporting errors (scrub the pool, with live progress), TrueNAS and Unraid alerts;
- a refused key or gateway, an arr health check at error level, a failing indexer (Test), a certificate about to expire (Renew);
- requests waiting for approval, in blue and counted apart from faults.
- One list of downloads from qBittorrent, Transmission, SABnzbd, NZBGet and the arrs, each joined to the title it belongs to: moving first, stuck next, with its route ("Radarr → qBittorrent") and who asked for it.
- A page per download: progress, pace ("ready around 21:10"), a live speed trace, the steps from grabbed to on Jellyfin or Plex, Stop, Resume and Remove.
- Requests: waiting ones first, with Approve and Decline. Approve lets you choose the server, profile and root folder.
- History: the last seven days of imports and failures, by day. The blocklist is one page for every arr, and entries can now be removed from it.
- The per-service Queue, Wanted and History that 0.8 kept in Activity are now tabs of each service.
<...
seekarr-v.0.8.0
v0.8.0
📅 Released June 20, 2026
🎉 New Services
qBittorrent
Full qBittorrent support lands in Seekarr — the headline feature of this release.
- 🧲 Torrent management: list, detail view, and full lifecycle control (start/pause/delete/edit)
- 🧱 New domain models:
Torrent,TorrentFile,TorrentTracker,TorrentProperties,TransferInfowith dedicated parsers - ⚡ Torrent actions: start/pause, delete with confirmation dialog, edit dialogs, action & selection bars
- ➕ Add torrent button with manual import support
- 🔖 Filters: new three-pill popup for Categories, Tags, and Trackers
↕️ Sorting: new sort options for the torrent list- 🔎 In-list search: filter and sort rows polished with design tokens
- 🌐 WebUI v2 client: form-based login, cookies,
Referer/Originheaders
🔜 COMING SOON: Bazaarr
Manual Import
- 🛠️ Lenient
ManualImportendpoint for unparseable files, with a fix sheet to correct failed imports
✨ UX & UI Improvements
- 🖥️ Phone-like macOS window: compact new window style on macOS
- ♻️ In-app reset: reset settings directly from the Settings screen
- 🚀 Onboarding: flow fixes and screen improvements
- 📸 Screenshot refresh: entirely renewed README gallery (light/dark shots for activity, search, services, settings, qbit, radarr, sonarr, seerr, manual_import)
🐛 Fixes
- 🔍 Global search results now open correctly
- 🧹 qBittorrent UI and filter fixes
- 🤖 Android: fixed build error caused by
file_pickerdependency - 🍎 iOS: fixed Podfile for iOS builds
- 📝 Minor onboarding flow fixes
♻️ Refactor
- 🧩 New
runTorrentActionutility centralizes torrent action handling —torrent_detail_screen.dartsignificantly slimmed down - 🎨 Filter/sort rows migrated to design tokens (
AppSpacing)
🧪 Tests
- 📈 +2600 lines of qBittorrent tests: client, service, models, provider
- 📦 Manual import: service, models, and provider tests
- ⚙️ Settings & onboarding:
settings_service,settings_home_screen,onboarding_screentests - 🔎 Extended global search tests
- 🧰 New
FakeSecureSettingsStoretest helper for persistence tests
Full Changelog: v0.7.0...v0.8.0
seekarr-v.0.7.0
What's Changed
App Redesign
Seekarr has been completely redesigned from the ground up — new navigation
structure, refreshed visual language, and a faster, more intuitive layout
across every screen.
New: Manual Import
Full manual-import workflow for Radarr, Sonarr, and Lidarr — accessible from
any media detail screen:
- Browse your file system and select unmatched files
- Match files to movies, series episodes, or albums
- Fix mismatched imports individually or in bulk
- Real-time progress screen with per-file import results
New: Services Dashboard
The Services tab is now a full home screen for your *arr stack:
- Status grid — at-a-glance online/offline health for every configured service
- Trending — surface popular content from Seerr directly on the dashboard
- Recent Requests — latest requests submitted through Seerr
- Recently Added — newly imported movies and series
- Downloading — active download queue across all services
- Pull-to-refresh, and a friendly empty state when no services are configured yet
New: Global Search
A dedicated Search tab lets you search across Radarr, Sonarr, and Lidarr
simultaneously. Filter results by service with a single tap.
New: Onboarding Flow
First-time users are now guided through a step-by-step setup wizard to
configure their services before entering the app. Includes live connection
testing inline during setup.
New: Activity Screen
A unified Activity view consolidates download queue, history, wanted items,
and cutoff mismatches across all services in one place.
Improved: Media Detail Screens
Movies, series, and artist detail screens received a visual refresh:
- New hero summary layout with improved typography
- Cleaner actions layout with better collapse behaviour on scroll
- Detail sheets for queue/history entries redesigned
New App Icon
Seekarr has a new icon — updated across Android (with adaptive icon support),
iOS, and macOS.
Support the Project
In-app donation support added.
Dependencies
flutter_secure_storageupgraded to 10.xin_app_purchaseadded
Full Changelog: v0.6.0...v0.7.0
seekarr-v.0.6.0
What's Changed
Renamed: Jellyseerr → Seerr
The service formerly known as "Jellyseerr" is now called Seerr throughout
the app. Existing saved settings are automatically migrated — no manual
re-configuration needed.
New: Service Connection Status
The Settings screen now shows a live connection indicator next to each
configured service. A cloud icon lets you see at a glance whether the service
is reachable before navigating into it.
Improved: Action Buttons Redesign
The Request and Manage buttons on detail screens have been upgraded to
filled buttons with a subtle glow effect, giving them stronger visual
prominence on the poster header.
Improved: StatusBadge – Partial Availability
- Series and artists now display a "Partial" badge when some (but not all)
episodes/albums are available locally. - Detail-header badges use a new translucent scrim treatment for a cleaner,
less intrusive look while still conveying status.
Improved: Bundled Inter Font
Removed the google_fonts dependency. The Inter font is now bundled locally,
eliminating a network request at startup and making the app fully functional
offline from the first launch.
Fixed: Material 3 Settings Interactions
Settings list cards now respond correctly to taps with proper Material 3
ripple and pressed-state feedback.
Fixed: iOS & macOS Signing
Resolved code-signing configuration issues affecting iOS and macOS builds.