Skip to content

Releases: XeonFX/MediaDownloader

v1.0.7

Choose a tag to compare

@github-actions github-actions released this 03 Aug 13:36

What's new

AI agents and scripts can now drive the app. Turn on Agent access in Settings and connect an MCP client — Claude Code, Claude Desktop, or anything that speaks MCP — to search, start and manage downloads, and set up series rules by asking for them in plain language. The same operations are available as a REST API for scripts. Settings stay read-only: nothing an agent does can change your SMTP password or Telegram token.

  • Connect an MCP client with one command, shown ready to copy on the Settings page:
    claude mcp add --transport http mediadownloader http://localhost:47820/mcp
  • 14 tools covering search, downloads (start / pause / resume / remove), and series rules. Removing a download keeps its files unless you explicitly ask for them to be erased
  • REST lives under /api, with an OpenAPI description at /openapi/v1.json
  • The resolved address and token are written to endpoint.json in the app data folder — readable only by you — because the port moves when something else is already using it

Access is closed by default and stays that way unless you open it. Agent access is off until you switch it on. Once on, requests from this computer need no token, and everything else is refused. Access from other devices is a separate switch, requires HTTPS and a bearer token, and is limited to the agent endpoints only — the app's own pages, settings and files stay invisible to anything off-machine. Requests coming from a web page are always rejected, so a site you happen to be visiting can't quietly queue downloads on your machine.

Because an agent decides what to do after reading torrent titles and descriptions written by strangers, three limits apply to it specifically:

  • Downloads can only be saved inside your download folder, so a booby-trapped torrent can't write files somewhere sensitive. Change the download folder in Settings if you want them elsewhere
  • Searching is rate limited, since every search queries every enabled source and hammering them gets the app blocked. Your own searching in the app is never affected
  • Asking an agent to change one setting on a series rule changes only that setting — it can no longer silently reset the season, starting episode, or check interval, or switch a paused rule back on and re-download everything from episode 1

Fixes and smaller changes

  • Fixed a crash on Windows when an agent supplied an unusual save-folder path — it now returns a clear error instead of failing outright (this is the reason 1.0.6 is superseded; Windows users should install this release)
  • On Windows, app data now lives in your user profile (%LOCALAPPDATA%\MediaDownloader) instead of beside the program. Existing databases and saved passwords are moved across automatically on first run
  • Searches now report how many results were found in total, so a shortened list can't be mistaken for a source that failed
  • Malformed API requests return a clear explanation of what was wrong instead of a raw error page

Downloads

  • macOS (Apple Silicon): MediaDownloader-1.0.7-osx-arm64.zip
  • macOS (Intel): MediaDownloader-1.0.7-osx-x64.zip
  • Windows (x64): MediaDownloader-1.0.7-win-x64.zip
  • Windows (ARM64): MediaDownloader-1.0.7-win-arm64.zip

SHA256SUMS.txt lists the checksum of each zip; the in-app updater verifies it automatically.

macOS: unzip and move MediaDownloader.app to Applications (or anywhere), then open it. If Gatekeeper complains about an unsigned app, right-click → Open.

Windows: unzip anywhere and run MediaDownloader.exe, then open the dashboard URL it prints.

Full Changelog: v1.0.6...v1.0.7

v1.0.6

Choose a tag to compare

@github-actions github-actions released this 03 Aug 13:22

Superseded by v1.0.7. This
release has a Windows-only bug: an unusual save-folder path sent to the new agent API crashes the
request instead of being rejected cleanly. macOS and Linux are unaffected, but everyone should
install 1.0.7 instead — it is this release plus that fix.

What's new

AI agents and scripts can now drive the app. Turn on Agent access in Settings and connect an MCP client — Claude Code, Claude Desktop, or anything that speaks MCP — to search, start and manage downloads, and set up series rules by asking for them in plain language. The same operations are available as a REST API for scripts. Settings stay read-only: nothing an agent does can change your SMTP password or Telegram token.

  • Connect an MCP client with one command, shown ready to copy on the Settings page:
    claude mcp add --transport http mediadownloader http://localhost:47820/mcp
  • 14 tools covering search, downloads (start / pause / resume / remove), and series rules. Removing a download keeps its files unless you explicitly ask for them to be erased
  • REST lives under /api, with an OpenAPI description at /openapi/v1.json
  • The resolved address and token are written to endpoint.json in the app data folder — readable only by you — because the port moves when something else is already using it

Access is closed by default and stays that way unless you open it. Agent access is off until you switch it on. Once on, requests from this computer need no token, and everything else is refused. Access from other devices is a separate switch, requires HTTPS and a bearer token, and is limited to the agent endpoints only — the app's own pages, settings and files stay invisible to anything off-machine. Requests coming from a web page are always rejected, so a site you happen to be visiting can't quietly queue downloads on your machine.

Because an agent decides what to do after reading torrent titles and descriptions written by strangers, three limits apply to it specifically:

  • Downloads can only be saved inside your download folder, so a booby-trapped torrent can't write files somewhere sensitive. Change the download folder in Settings if you want them elsewhere
  • Searching is rate limited, since every search queries every enabled source and hammering them gets the app blocked. Your own searching in the app is never affected
  • Asking an agent to change one setting on a series rule changes only that setting — it can no longer silently reset the season, starting episode, or check interval, or switch a paused rule back on and re-download everything from episode 1

Smaller changes

  • On Windows, app data now lives in your user profile (%LOCALAPPDATA%\MediaDownloader) instead of beside the program. Existing databases and saved passwords are moved across automatically on first run
  • Searches now report how many results were found in total, so a shortened list can't be mistaken for a source that failed
  • Malformed API requests return a clear explanation of what was wrong instead of a raw error page

Downloads

Prefer v1.0.7 — it contains everything below plus the Windows fix.

  • macOS (Apple Silicon): MediaDownloader-1.0.6-osx-arm64.zip
  • macOS (Intel): MediaDownloader-1.0.6-osx-x64.zip
  • Windows (x64): MediaDownloader-1.0.6-win-x64.zip
  • Windows (ARM64): MediaDownloader-1.0.6-win-arm64.zip

SHA256SUMS.txt lists the checksum of each zip; the in-app updater verifies it automatically.

macOS: unzip and move MediaDownloader.app to Applications (or anywhere), then open it. If Gatekeeper complains about an unsigned app, right-click → Open.

Windows: unzip anywhere and run MediaDownloader.exe, then open the dashboard URL it prints.

Full Changelog: v1.0.5...v1.0.6

v1.0.5

Choose a tag to compare

@github-actions github-actions released this 03 Aug 08:24

What's new

  • Fixed Nyaa returning only a fraction of its results: any torrent with comments was being read as its comment count instead of its title, and then discarded as irrelevant — a search for six episodes of a show would show one
  • RARBG works again: its proxy mirrors now sit behind a Cloudflare challenge and had been silently returning nothing on every search, so the source moved to TheRARBG (the archive that succeeded RARBG). Downloads from it also start faster now, without the extra page load that used to be needed to resolve a magnet link
  • Each search source now reports its own result count above the results, in green (results), grey (nothing found) or red (source unreachable), with a tooltip explaining the numbers — so a blocked site or a broken source is visible instead of looking like "no results"
  • Searches are noticeably faster: a slow source now costs about a second and a half before an alternative is tried in parallel, rather than blocking the whole search until it times out; EZTV and Nyaa also fetch their pages simultaneously instead of one after another
  • Nyaa searches now look past the first page, so an older, low-seeded episode isn't missed
  • Fixed publication dates from 1337x and RARBG being shown a day off in some time zones
  • Series tasks no longer lose track of an episode they just queued when the search for the next one fails — previously that episode could be downloaded twice on the following check
  • App updates are now verified against a checksum published with the release before they're installed, so a corrupted or truncated download is refused instead of replacing your app
  • Searching in one browser tab no longer keeps running after you navigate away or start a new search
  • Automated tests now check every source against real, unedited pages captured from each site, and a weekly job searches the live sites to catch one changing its layout or blocking us — this release's bugs were both invisible to the previous test suite

Downloads

  • macOS (Apple Silicon): MediaDownloader-1.0.5-osx-arm64.zip
  • macOS (Intel): MediaDownloader-1.0.5-osx-x64.zip
  • Windows (x64): MediaDownloader-1.0.5-win-x64.zip
  • Windows (ARM64): MediaDownloader-1.0.5-win-arm64.zip

SHA256SUMS.txt lists the checksum of each zip; the in-app updater now verifies it automatically.

macOS: unzip and move MediaDownloader.app to Applications (or anywhere), then open it. If Gatekeeper complains about an unsigned app, right-click → Open.

Windows: unzip anywhere and run MediaDownloader.exe, then open the dashboard URL it prints.

Full Changelog: v1.0.4...v1.0.5

v1.0.4

Choose a tag to compare

@github-actions github-actions released this 09 Jul 16:33

What's new

  • Fixed a bug where dotnet ef design-time commands (used only during development) were mistakenly reported to Sentry as a fatal app crash
  • Fixed a rare shutdown race where a download add racing app shutdown could throw instead of completing cleanly
  • Search result de-duplication now only merges results that already have a resolved info hash, so an in-progress result can no longer be collapsed into an unrelated one
  • The Pirate Bay provider now clamps malformed seeder/leecher counts instead of risking a negative wraparound
  • Periodic download-progress saves no longer lose an entire batch of active downloads' progress just because one was deleted at the same moment — the rest still save
  • Email notifications no longer silently fail to send when the "From" address is blank and the SMTP username isn't itself a valid email address
  • Settings validation errors now say which field is invalid instead of just the message
  • Reduced duplicated code across the download engine, the 1337x/RARBG scrapers, and the UI (shared download action buttons, shared localization wiring) — smaller, easier to maintain codebase with no behavior change
  • Broader automated test coverage for search de-duplication

Downloads

  • macOS (Apple Silicon): MediaDownloader-1.0.4-osx-arm64.zip
  • macOS (Intel): MediaDownloader-1.0.4-osx-x64.zip
  • Windows (x64): MediaDownloader-1.0.4-win-x64.zip
  • Windows (ARM64): MediaDownloader-1.0.4-win-arm64.zip

macOS: unzip and move MediaDownloader.app to Applications (or anywhere), then open it. If Gatekeeper complains about an unsigned app, right-click → Open.

Windows: unzip anywhere and run MediaDownloader.exe, then open the dashboard URL it prints.

Full Changelog: v1.0.3...v1.0.4

v1.0.3

Choose a tag to compare

@github-actions github-actions released this 09 Jul 14:52

What's new

  • New search source: EZTV (best-effort recent search — its API has no keyword filter, so this pages through and filters the newest torrents client-side)
  • Windows now has a system-tray icon with the same menu as the macOS menu-bar app (active downloads, dashboard shortcut, update status, quit) — previously Windows only ran as a plain web server
  • Full UI localization: the folder browser dialog (the last untranslated screen) is now covered across all 8 languages
  • Deleting a series task now asks for confirmation and tells you what happens to its downloads, instead of silently orphaning them into the Manual tab
  • Provider account passwords, the SMTP password, and the Telegram bot token are now encrypted at rest in the database (existing plaintext values are migrated automatically on next save)
  • Fixed a bug where a search's query/results could leak between different browser tabs/sessions
  • Fixed a rare race that could corrupt a download's saved progress under concurrent updates, and a related race that could occasionally add the same torrent twice
  • Rewrote HTML scraping (1337x, RARBG, Nyaa, Pirate Bay) with a real HTML parser instead of regex — fixed a real bug where one Pirate Bay mirror reported wrong sizes and misaligned seeders/leechers
  • Reduced crash-report telemetry: less activity detail is sent on error, and a tracker account username is no longer logged at all
  • Added a /health endpoint and baseline security response headers (this app only ever binds to localhost, but they're free insurance)
  • Database schema upgrades now go through proper EF Core migrations instead of hand-written patches, with a safe automatic upgrade for existing installations (verified against a real pre-upgrade database)
  • Replaced the deprecated email-sending library with a maintained one
  • Broader automated test coverage (concurrency-sensitive download/series logic, scraper parsing, encryption, schema migration) and CI now runs on every push, not just at release time

Downloads

  • macOS (Apple Silicon): MediaDownloader-1.0.3-osx-arm64.zip
  • macOS (Intel): MediaDownloader-1.0.3-osx-x64.zip
  • Windows (x64): MediaDownloader-1.0.3-win-x64.zip
  • Windows (ARM64): MediaDownloader-1.0.3-win-arm64.zip

macOS: unzip and move MediaDownloader.app to Applications (or anywhere), then open it. If Gatekeeper complains about an unsigned app, right-click → Open.

Windows: unzip anywhere and run MediaDownloader.exe, then open the dashboard URL it prints.

Full Changelog: v1.0.2...v1.0.3

v1.0.2

Choose a tag to compare

@XeonFX XeonFX released this 08 Jul 21:21

What's new

  • Multi-language UI: English, Polish, German, French, Spanish, Italian, Portuguese, Russian, switchable live in Settings
  • Torrent search providers are now auto-discovered (implement ITorrentSearchProvider and it shows up automatically in Search/Settings, no manual registration)
  • Per-provider credentials, for sources that require an account
  • Two new search sources: PTE (private tracker, requires an account) and RARBG (via the rarbggo.to proxy)
  • Resolution filter (any/480p/720p/1080p/2160p) on the Search page
  • Torrent info dialog: full metadata, magnet copy, description — fetched on demand (opening it or downloading directly), not eagerly for every search result
  • Fixed Nyaa search: the old RSS-based query silently ignored "sort by seeders" and could miss the actual highest-seeded results entirely; now scrapes the properly-sorted page
  • Fixed cross-provider result de-duplication on the Search page to keep whichever duplicate has more (fresher) seeders, instead of whichever provider happened to respond first
  • Structured logging to a rolling daily file (was console-only before, invisible once the macOS app is launched from Finder)
  • Optional Sentry crash/error telemetry
  • Windows arm64 build (previously x64 only)

Downloads

  • macOS (Apple Silicon): MediaDownloader-1.0.2-osx-arm64.zip
  • macOS (Intel): MediaDownloader-1.0.2-osx-x64.zip
  • Windows (x64): MediaDownloader-1.0.2-win-x64.zip
  • Windows (ARM64): MediaDownloader-1.0.2-win-arm64.zip

macOS: unzip and move MediaDownloader.app to Applications (or anywhere), then open it. If Gatekeeper complains about an unsigned app, right-click → Open.

Windows: unzip anywhere and run MediaDownloader.exe, then open the dashboard URL it prints.

Full Changelog: v1.0.1...v1.0.2

v1.0.1

Choose a tag to compare

@XeonFX XeonFX released this 08 Jul 13:46

First release with the built-in update mechanism.

What's new

  • macOS menu-bar app with live download speed, active-download list, and dashboard shortcut
  • Self-update: the app checks GitHub releases every 6 hours, notifies when a new version is available, and installs it from the menu-bar menu or the Settings page
  • Version display and manual "Check for updates" in Settings and the menu-bar menu
  • Windows build (plain web server — run MediaDownloader.exe and open the printed dashboard URL)

Downloads

  • macOS (Apple Silicon): MediaDownloader-1.0.1-osx-arm64.zip
  • macOS (Intel): MediaDownloader-1.0.1-osx-x64.zip
  • Windows (x64): MediaDownloader-1.0.1-win-x64.zip

macOS: unzip and move MediaDownloader.app to Applications (or anywhere), then open it. If Gatekeeper complains about an unsigned app, right-click → Open.