{"cached":true,"count":15,"error":null,"releases":[{"author":"github-actions[bot]","body":"- feat: merge catalogue entries that share a TMDB id into one row with a pill per source\n- feat: pick which source a merged row downloads from, with a preferred-source default\n- feat: show a live match count on each status chip and disable empty ones\n- feat: add lots of missing things\n- feat: add A-Z jump rail, status filters and sorting to the Catalogue page\n- feat: rebuild the catalogue action bar so it stays out of the way on phones\n- feat: give the catalogue details modal a backdrop header like the download modal\n- feat: let third-party catalogues supply their own source colour\n- feat: add a Catalogue page with the full A-Z list of AniWorld and SerienStream [BETA]\n- feat: wire filmo.to, 9anime and aniwaves through search, home feed, auto-sync and monitoring and the hole system\n- feat: add aniwaves.ru series provider with EchoVideo hoster extractor #24\n- feat: add 9anime.or.at series provider with MegaPlay hoster #24\n- feat: add Filmo (filmo.to) movie provider and mint-based hoster resolution [Feature - Provider]: Filmo.to #27\n- feat: reactions, revocable invites, and a working service worker\n- feat: \"because you watched\" row, and shared skeleton/empty states\n- feat: scoped API keys and a generated OpenAPI document\n- feat: real dry run, plus provider contract tests\n- feat: external worker host, and enforce library scoping\n- feat: wire rules, language profiles and maintenance windows into the download path; add error explanations, bulk actions and settings profiles\n- feat: operations, audit log, groups, rules and language profiles\n- feat: schema migrations, audit log, groups and worker heartbeats\n- feat: module-registered content sources reach the search bar\n- fix: some fixes\n- fix: use a pooled requests session for TMDB instead of a new TLS handshake per call\n- fix: correct the relative import depths in catalogue_worker \u2014 bulk queue and auto-sync never ran\n- fix: treat a merged row as queued, synced or selected when any of its sources is\n- fix: load app.js on the Catalogue page so the library check has anything to check against\n- fix: make the catalogue status chips filter for a category instead of hiding it\n- fix: recompile the German catalog \u2014 a merge reinstated an older .mo missing 14 strings\n- fix: lots of fixes\n- fix: card layout, module settings fields, dynamic search, cross-language duplicate detection; feat: empty-room reaper, gap dismiss, filter dropdowns\n- fix: render the missing per-row source label in the merged catalogue list\n- fix: show the A-Z rail drag bubble (offsetParent is null while hidden)\n- fix: lock body scroll while the catalogue details modal is open\n- fix: six reported bugs across home feed, module settings, design defaults and the module modal\n- fix: fix style in search suggestions\n- fix: worker status, module deactivation, full audit trail and UI defects\n- fix: worker status, module deactivation, full audit trail and UI defects\n- fix: some modal fixes from previous feat addings\n- fix: Show third-party modules' sites in the DNS test, not just UpTime\n- fix: make live module registration immune to concurrent requests\n- refactor: drop the dead in-memory catalogue cache now that the store owns it\n- refactor: split the 6939-line db.py into a domain package\n- perf: halve the catalogue id backfill's concurrency and delay its start by 90s\n- perf: cache the per-entry library check instead of rescanning on every keystroke\n- perf: throttle the catalogue list re-render on window resize\n- chore: refresh catalogue lists once a day instead of twice, on a background timer\n- docs: document register_catalogue's color parameter and the new page controls\n- style: fix bottom of overview cards\n- test: run the bulk worker for real instead of stubbing start_job\n- test: catch relative imports that point outside the package or at nothing\n- test: cover row merging, source picking and both urls of a merged pair\n- test: guard that app.js is loaded before catalogue.js\n","name":"v1.5.0","prerelease":false,"published_at":"2026-08-09T13:11:02Z","tag":"v1.5.0","url":"https://github.com/PD-Codes/MediaForge/releases/tag/v1.5.0"},{"author":"github-actions[bot]","body":"- feat: adding image hoster allow to module function\n- fix: some bugfixes in uptime monitoring system\n- fix: stop leaking the install id from the settings page\n- style: List View Fixes\n- style: wrap the library path in the download modal instead of clipping it\n- security: fix docker resolve the HIGH findings that failed the Trivy gate\n- security: fix some issues with certificates\n","name":"v1.4.3","prerelease":false,"published_at":"2026-08-04T19:54:16Z","tag":"v1.4.3","url":"https://github.com/PD-Codes/MediaForge/releases/tag/v1.4.3"},{"author":"github-actions[bot]","body":"- feat: adding new functions to start page 2, adding more functions to jellyfin/plex connectivity (incl. an \"Your Profile\"), fix some bugs, adding Feature from #26\r\n- feat: add PyPI dependency preflight before a docker code update\r\n- feat: add POST /api/update/docker-preflight (admin only)\r\n- feat: add detail.docker_code_update telemetry data point\r\n- feat: hide the release banner when that version is already installed\r\n- feat: offer a retry button and readable reasons when comic preparation fails\r\n- feat: announce versions with a release banner and a collapsible changelog box\r\n- feat: link release posts straight to the settings updates tab\r\n- feat: show a non-dismissible home page modal for important dev infos\r\n- fix: bound every generated SQL list to a fixed size & issues on Main Menu Shortcuts\r\n- fix: mobile list rows, integration badges, drop duplicate Auto-Sync path control\r\n- fix: many style fixes, separation for Instance and profile settings and a fix for #26\r\n- fix: refuse a docker code update on a dev install even when no channel is sent\r\n- fix: reject docker code updates on the dev channel and on read-only venvs\r\n- fix: re-read the cache sizes when the library settings tab is opened\r\n- fix: distinguish an unmeasurable cache from an empty one in the settings\r\n- fix: let cached covers revalidate so clearing the cache actually takes effect\r\n- fix: rebuild comic cover URLs after preparation instead of reusing a cached 404\r\n- fix: bump the cover cache-buster even when no card was marked stale\r\n- fix: send no-store on a cover that does not exist yet, for comics and books\r\n- fix: try every available extractor instead of only the first installed one\r\n- fix: fall back to another tool when the peek cannot list a comic archive\r\n- fix: forget circumstantial comic conversion failures after a minute, not an hour\r\n- fix: let an explicit prepare request retry instead of replaying a cached failure\r\n- fix: offer the prepare button when a comic conversion failed for a retryable reason\r\n- fix: clear cover spinners when preparation finishes and only show them where a cover is missing\r\n- fix: detect a finished comic conversion instead of polling a field the API never sends\r\n- fix: restart a lost comic conversion request instead of waiting out the deadline\r\n- fix: stop flagging comics as unprepared once their converted copy exists\r\n- fix: style fix for specific checkboxes\r\n- fix: key dev info read state on the server uid instead of the reusable row id\r\n- perf: prefer the extractor that last succeeded for a format\r\n- docs: document container updates in the README\r\n- docs: document dev info post types in the wiki (EN/DE)\r\n- style: adding flags to language buttons and correct styles. Also adding language as default for new accounts\r\n- style: rework the language availability pills\r\n- style: replace update overlay ring spinner with 9-square fade loader\r\n- test: cover the release-banner suppression rules\r\n- test: cover extractor fallback, promotion and failure-cache behaviour\r\n- security: per-install device credential and signed requests\r\n- security: backup atomicity, telemetry leaks, direct-link SSRF, HLS temp dir\r\n- security: reject pre-release and non-dotted target versions for docker code updates\r\n- security: validate the target version against a strict PEP 440 regex and resolve it server-side only\r\n- security: reject non-http(s) release URLs before they reach an href\r\n","name":"v1.4.2","prerelease":false,"published_at":"2026-08-04T09:29:38Z","tag":"v1.4.2","url":"https://github.com/PD-Codes/MediaForge/releases/tag/v1.4.2"},{"author":"github-actions[bot]","body":"# This should fix some Captcha issues\r\n- feat: let _ensure_xvfb report whether a display is actually available\r\n- fix: fail with an actionable message when no X display is available instead of an unreadable TargetClosedError\r\n- fix: guard the hanime browser launch for a missing display, its xvfb call was swallowed by a bare except\r\n- fix: report a missing display as a setup problem, not a crash\r\n- fix: handle a missing display in the interactive captcha solver, which had no generic error branch\r\n- fix: verify Xvfb actually stayed alive before promising a display\r\n- security: strip the Chromium launch command from telemetry payloads, it leaked provider domains including an adult source\r\n- security: log captcha browser failures by reason code instead of the raw patchright message\r\n","name":"v1.4.1","prerelease":false,"published_at":"2026-07-31T18:55:42Z","tag":"v1.4.1","url":"https://github.com/PD-Codes/MediaForge/releases/tag/v1.4.1"},{"author":"github-actions[bot]","body":"- feat: adding Homescreen 2.0 Banner\n- feat: add classify.is_transport_failure for the crash channel, sharing the unreachable-server tables\n- feat: add MegakinoUnavailable so routes classify by type instead of exception class names\n- feat: add a comic library with reader for all common archive formats\n- feat: index CBZ, CBT, CB7, CBR, CBA and PDF comics grouped into series and issues\n- feat: read series, issue number and credits from ComicInfo.xml, fall back to the filename\n- feat: add a comic reader with single and double-page spreads, zoom and fit modes\n- feat: queue a cover for every issue, series covers first\n- feat: give every comic its own downscaled cover, prepared visibly in the background\n- feat: extract a single page from CBR/CBA instead of repacking the whole archive\n- feat: downscale covers to 640px WebP (1.5 MB page -> 7 KB cover)\n- feat: repack CBR/CBA into a cached CBZ, never touching the original file\n- feat: cache comic covers on disk and drop cache entries when the source is gone\n- feat: add optional ComicVine enrichment, off by default and rate-limited below the API cap\n- feat: add a series/single-issue switch to the comic shelf\n- feat: wire comic_auto_prepare_all so it actually converts every issue\n- feat: point at the automatic preparation setting from the reader\n- feat: prepare comic covers in the background and show that it is happening\n- feat: extract one cover per series after a scan instead of never starting\n- feat: show preparation progress in the shelf header and on each card\n- feat: add a comics settings section for covers, caches and diagnostics\n- feat: add a setting for replacing originals after conversion, off and unwired\n- feat: split the library into one shelf per media kind\n- feat: add /library hub with per-kind tiles and live counters\n- feat: add media_kinds column to custom_paths, configurable in settings\n- feat: add library sub-menu to the sidebar, planned kinds shown disabled\n- feat: let modules register a shelf via register_thirdparty(section=\"library\")\n- feat: TMDB backdrop as the title window's header image (in Modal / Beta)\n- feat: changes on Start Page 2, Hover Information, module changes with TMDB, integration of OpenSubtitles (free API Key needed)\n- feat: add flag.integrations.mediaplayer as its own data point, separate from mediascan\n- feat: add telemetry/classify.py as the single place cancellations and unreachable-server errors are classified\n- feat: wire up the flag.*/detail.* data points that were registered but never emitted\n- feat: let build_play_event emit syncplay.room_content under its own consent toggle\n- feat: make the devInfo feature-usage dashboard registry-driven so unwired keys are visible\n- feat: jellyfin specific settings added, also some fixes in other settings\n- feat: optional absolute episode numbering from the \"[Episode NNN]\" title marker (aniworld)\n- feat: library => read PDF and EPUB in an overlay instead of a browser tab\n- feat: adding more library functions and fix: one progress bar for single-file jobs, working accent hex input, no search history on load\n- feat: Web Player Overhaul with more options, styles, etc. Also some bug fixes\n- fix: some fixed in ebook library\n- fix: stop reporting yt-dlp hoster errors as MediaForge crashes\n- fix: keep network transport failures out of the telemetry crash channel\n- fix: answer 502 instead of 500 in /api/episodes and /api/providers when megakino.to is unavailable\n- fix: stop filing telemetry crash reports for megakino.to outages on the remaining two routes\n- fix: answer 502 instead of 500 when megakino.to returns an unusable response\n- fix: stop filing a telemetry crash report for every megakino.to outage\n- fix: handle a truncated JSON body in /api/seasons, which had no upstream branch at all\n- fix: for megakino => guard against list-typed API fields in parse_meta\n- fix: accept a JSON array in megakino.to fields documented as plain text\n- fix: stop one malformed megakino.to record from failing the whole /api/series response\n- fix: fixing language\n- fix: use a comics-specific translation for \"Series\" so German reads Reihen, not Serien\n- fix: accept kind=\"comic\" for reading bookmarks (was collapsed onto epub)\n- fix: group comics by folder and recognise the numbering styles real libraries use\n- fix: treat the parent folder as the series name, filename only for number and title\n- fix: accept an underscore or dot before a bare issue number\n- fix: poll the preparation status immediately instead of 2.5s late\n- fix: show the preparing spinner in the single-issue view too\n- fix: read a trailing \"- 0001\" as the issue number instead of a story title\n- fix: read a leading number when the title carries its own dash\n- fix: decode percent-escaped characters in filenames (H%f6lle -> H\u00f6lle)\n- fix: take the year out of brackets that also name a publisher\n- fix: detect bsdtar when it is installed as \"tar\", as on Windows 10+ and macOS\n- fix: make the whole poster card clickable on the comic and book shelves\n- fix: add keyboard activation and ARIA state to poster cards\n- fix: prepare comic covers on shelf load, not only during a scan\n- fix: queue cover preparation from /api/library?kind=comic so an already scanned library gets covers at all\n- fix: read the group preference lazily \u2014 calling into library_core.js at parse time aborted the page module and left LIB_KIND undefined\n- fix: backdrop and text fix in modal\n- fix: home panel storage view fix for Unix and Docker\n- fix: home panel hidden queue rows will counts visible only\n- fix: assign MEDIA_STATS_ENABLED in its own settings block (was a 500 on probe-worker saves)\n- fix: cockpit storage/limits, mobile heading overflow, empty hover drawer, calendar release dates and series detection\n- fix: queue keep the home page run strip live\n- fix: restore the default home-feed row order and record why the personal rows lead\n- fix: style the shared Start Page groups in the home page modal, which does not load settings_rows.css\n- fix: never report user-initiated cancellations as crashes or errors\n- fix: keep the console silent while the devInfo server is offline or in maintenance\n- fix: honour a download cancel in the CLI captcha solver instead of holding the browser open\n- fix: reset the push-notification fan-out scope in a finally block\n- fix: report flag.self_update after the restart so it survives the process exit\n- fix: only arm the v1 API telemetry throttle when an event was actually sent\n- fix: some fixes in start page order\n- fix: repair Kindle markup, page geometry, chapters and typography\n- fix: change aniworld episode changer to correct season, but leave number absolute\n- fix: some fixes and addings\n- fix: some fixes in book reader\n- fix: settings => put Layout first on the Start Page tab and style its subheadings\n- fix: some fixes in module management, startpage 2 and some more\n- fix: Modules => make CineInfo sources a first-class module capability\n- fix: Web Player => a double tap must not leave fullscreen\n- fix: Fix a crash when uninstalling a module (also causing an lint error)\n- fix: some bug fixes in hanime style, seerr poster responsive, etc.\n- fix: fix hanime issues\n- fix: hanime search backend moved, and unblock its poster CDN\n- fix: sync the German catalogue and wrap the hardcoded strings\n- fix: a successful single-episode retry is no longer booked as failed\n- fix: harden the transcoder, the workers and numeric settings\n- fix: vendor hls.js instead of loading it from a CDN\n- fix: watchdog no longer aborts long downloads\n- fix: validate library paths before queueing an upscale\n- fix: encoding/upscaling no longer deletes the original before the move\n- fix: upscale and encoding queue doesnt run at the same time anymore\n- refactor: generalise _genres_str into a shared _text coercion helper\n- refactor: drop the comic_auto_covers toggle, covers are never optional\n- refactor: split library.js/.css into core + video + books modules\n- perf: parse the megakino API response once instead of decoding the body twice\n- perf: omit empty fields from cached issue rows\n- perf: swap in late covers in place instead of repainting the grid\n- perf: skip the ffprobe pass on book-only paths and the book pass on video-only ones\n- perf: drop the other kind's payload from /api/library responses\n- perf: cache the telemetry consent/enabled_keys read instead of hitting SQLite per event\n- perf: move SyncPlay session telemetry out of the room and registry locks\n- perf: bound the image proxy and collapse concurrent fetches\n- perf: pause polling in hidden tabs, add a queue badge endpoint\n- perf: SQLite pragmas, batched calendar writes and the missing indexes\n- chore: uv lock for py7zr\n- chore: drop the orphaned German msgid left behind by the start page rewording\n- chore: fix .dockerignore, drop dead folders, complete the docs\n- chore: add .gitattributes to fix line-ending noise\n- docs: describe all three classification consumers in classify.py's module docstring\n- docs: describe the folder-per-series layout in the README and the empty state\n- docs: describe the comic library in the README\n- docs: describe the per-media-kind libraries in the README\n- docs: Update Readme and pyproject.toml\n- docs: record that third-party modules never get a telemetry interface\n- docs: document what telemetry never reports in PRIVACY.md and README\n- docs: state the PR title and language rules in the PR template\n- style: theme tokens for status colours, checkbox class, missing breakpoints\n- test: guard the page-module/core load-order contract for all three shelves\n- test: cover crash-safe publishing, hanime cards and the retry plan\n- test: add a pytest suite and wire it into CI\n- build: add py7zr for .cb7 and libarchive-tools to the Docker image for .cbr\n- ci: change Triage for modules\n- ci: consolidate workflows and cut the build minutes\n- ci: pin third-party actions to SHAs and harden the workflows\n- security: keep response content out of the megakino error message, size and position only\n- security: bound the depth of the megakino.to text coercion against hostile nesting\n- security: strip userinfo credentials from URLs before they can reach a telemetry payload\n- security: withhold direct_link.urls and syncplay.room_content when the origin provider cannot be determined\n- security: proxy awareness, cross-site guard, SyncPlay guest scope\n- security: close the SSRF gaps in the two proxies\n- security: one shared, quote-safe HTML escaper for the whole frontend\n- security: admin-gate the integration settings and stop returning secrets\n- security: always verify TLS certificates, drop the first-party exemption\n","name":"v1.4.0","prerelease":false,"published_at":"2026-07-31T17:45:53Z","tag":"v1.4.0","url":"https://github.com/PD-Codes/MediaForge/releases/tag/v1.4.0"},{"author":"github-actions[bot]","body":"- fix: emergency fix => upscaling and encoding error fix and bump to version 1.3.1\n- docs: Remove 'Other Cool Projects' section from README\n","name":"v1.3.1","prerelease":false,"published_at":"2026-07-27T09:28:35Z","tag":"v1.3.1","url":"https://github.com/PD-Codes/MediaForge/releases/tag/v1.3.1"},{"author":"github-actions[bot]","body":"- feat: complete overhaul of application and many fixes and changes\n- feat: download subtitles from stream too into mkv file\n- feat: new statistics page, download duplicate system (better quality download, audio merge), and some bug fixes as usual\n- feat: Dev Version is now able to install modules for the future version\n- feat: adding themes (templates) to module store and change style of favorites\n- feat: add compact view and better bulk edit for auto-sync\n- feat: adding more general system information to telemetry for better analysis\n- feat: Overhaul design of Auto-Sync Section\n- fix: remove deleted .env.example from pyinstaller spec (build issues)\n- fix: upscaling issue fix\n- fix: watcher system issues fixed (I hope)\n- fix: library scan in duplicate check\n- fix: subtitle download fixes for every extractor\n- fix: some fixes in statistics\n- fix: download duplicate better quality fix from previous commit\n- fix: .env migration to db (there was something missing)\n- fix: Mobile View: When Menu open, the main page will not be scrollable anymore\n- fix: fix download system with language maps to one central map instead of multiple ones, also adding information and buttons for developers how they can create and upload own modules/templates\n- fix: Fix in Module store after installing an package\n- fix: style change of advanced search, some bug fixes (image cache, download abort, rest of files after download abort cleanup, captcha issue after download abort)\n- fix: module store fix with unsigned modules\n- fix: some missing files in last commit\n- fix: workflow fixes\n- fix: add missing translation\n- fix: complete truncated api_autosync_batch endpoint\n- fix: module store doesnt show update\n- fix: auto-sync css issues fixed and batch selection function\n- chore: update CI workflows (scans, build checks, PR helpers) and improve PR template\n- docs: add webplate to readme\n- style: fix checkbox style of \"Default for Sites\"\n- style: Theme Module padding was not set correctly\n- style: fix media library toolbar to have an better border\n- ci: disable trivy secret scanning to prevent false positives from dependencies\n- ci: add cross-platform build checks, security scans (CodeQL, Trivy) and PR validation workflows\n","name":"v1.3.0","prerelease":false,"published_at":"2026-07-26T22:46:40Z","tag":"v1.3.0","url":"https://github.com/PD-Codes/MediaForge/releases/tag/v1.3.0"},{"author":"github-actions[bot]","body":"- feat: Add System Tray and Autostart support\n- feat: show total queue count on main sidebar item\n- feat: adding more routes for modular, included now: Provider, Mirrors, notifications, uptime integration (provider)\n- feat: new integration for Jellyfin - NFO File Provider\n- fix: change notifications from german to english\n- fix: 'NoneType' object is not callable\n- fix: change seerr modals to use default ones\n- fix: some more telemetry stuff for better debugging errors\n- fix: [Bug]: NVENC detection fails: hardware probe uses undersized test frame (128x128)\n- fix: mediaforge settings title\n- fix: add missind card for encoding in settings\n","name":"v1.2.5","prerelease":false,"published_at":"2026-07-20T21:05:22Z","tag":"v1.2.5","url":"https://github.com/PD-Codes/MediaForge/releases/tag/v1.2.5"},{"author":"github-actions[bot]","body":"- revert: 4 New providers (due performance issues)\r\n- feat: 4 New providers (WARNING NOT FULLY WORKING)\r\n- feat: adding cineinfo orchestrator to modules\r\n- feat: backup function added\r\n- feat: Library Duplicate Check\r\n- fix: uptime monitor fixes\r\n- fix: Fix Docker Environment with Playwright, that chromium isnt able to write its database because of security locks\r\n- draft fix: some fixes in new providers (not finished)\r\n- fix: some fixes and style changes\r\n- fix: secure custom paths deletion protection and prevent silent fallback\r\n- fix: fixes in styles, Seerr Modals (provider check), backup (backup without password now possible), Confirmation Modals and some more\r\n- fix: adding real issue comment and telemetry info\r\n- fix: test fix of captcha resolve\r\n- fix: fix app restart logic when app is started directly in console with pip\r\n- docs: fix image\r\n- docs: update readme\r\n- style: rework of Menu Style\r\n- style: restyled settings and integrations section\r\n- revert: removing the 4 providers due to too many bugs\r\n","name":"v1.2.4","prerelease":false,"published_at":"2026-07-17T22:49:42Z","tag":"v1.2.4","url":"https://github.com/PD-Codes/MediaForge/releases/tag/v1.2.4"},{"author":"github-actions[bot]","body":"- feat: add ALTCHA proof-of-work captcha support to solver\n- feat: add optional debug logging for captcha browser console/network errors\n- feat: send telemetry event when captcha solving times out or fails\n- feat: adding module sensitive settings and dependency installation\n- feat: change module store unverified button to an list where also not checked modules are listed (Attention)\n- fix: delay first Turnstile click to let widget settle before interacting\n- fix: only steal window focus in visible/manual captcha mode, never in background\n- fix: adding button and security routes to install module dependencies\n- fix: docker fix for xvfb cleanup\n- fix: fix some detection settings\n","name":"v1.2.3","prerelease":false,"published_at":"2026-07-14T20:27:10Z","tag":"v1.2.3","url":"https://github.com/PD-Codes/MediaForge/releases/tag/v1.2.3"},{"author":"github-actions[bot]","body":"- feat: encoding starts after every< episode instead after all\n- feat: adding \"marked as read\" in dev notes\n- fix: skip HTTPExceptions in telemetry Flask error handler, stop 404 being escalated to 500\n- fix: \"not a robot\" checkbox\n- fix: solve stacked reCAPTCHA/hCaptcha checkbox alongside Turnstile in captcha modals\n- fix: auto sync error telemetry shows raw bytes instead of real error\n- fix: autosync error when a site have issues will postpone next autosyncs for a few minutes (when they would be start within 5 minutes)\n- style: adding Module pill in Menu as indicator that this menu entry comes from an module\n","name":"v1.2.2","prerelease":false,"published_at":"2026-07-13T18:14:41Z","tag":"v1.2.2","url":"https://github.com/PD-Codes/MediaForge/releases/tag/v1.2.2"},{"author":"github-actions[bot]","body":"- fix: docker fix for new uv sync method\n","name":"v1.2.1","prerelease":false,"published_at":"2026-07-12T18:51:11Z","tag":"v1.2.1","url":"https://github.com/PD-Codes/MediaForge/releases/tag/v1.2.1"},{"author":"github-actions[bot]","body":"- feat: capture crashes from all threads and existing error logs, not just uncaught main-thread exceptions\n- feat: Provider Fallback Order, Fallback Media Provider Sites, CineInfo Ordering; fix: Direct Link from known Providers to normal modal, Module Store fixes and style changes\n- feat: add anonymous telemetry system with tiered opt-in data consent\n- feat: preparation for module store\n- feat: adding module manager versioning and mediaforge requirement\n- feat: add Dev Infos feed synced from remote server, with sidebar badge and homepage warning banners\n- feat: adding new module (media calender), adding more modular possibilities, style fixes and bug fixes included :-)\n- feat: begin of modular third party integration. begin of direct link scraper. begin of anime seasonal overview (not finished yet)\n- fix: some autosync fixes when Hoster is not available\n- fix: update missing languages\n- fix: some module update needs installed\n- fix: remove old hardcoded modules\n- fix: add admin user name to dev info note an fix time format\n- fix: load module store catalog automatically without requiring a manual refresh\n- fix: recompile corrupted German translation catalog and add missing strings\n- fix: remove obsolete Jinja2 extensions and broken Python rule from babel.cfg\n- fix: make Module Manager and Module Store pages responsive on mobile\n- fix: put fallback messages from warning to debug\n- fix: send declarative enabled_keys snapshot with every telemetry flush\n- fix: emit immediate telemetry signal on consent grant and stage change instead of waiting for restart\n- fix: solve hanime.tv stream extraction blocked by new Cloudflare Turnstile and player DOM changes\n- fix: Module Manager refresh was not working during an restriction in flask\n- fix: adding missing file for last commit\n- refactor: change module storage to mediaforge home dir\n- refactor: split app.py and style.css into seperate files. Also fixing some bugs and styles\n- chore: split feature request into category-specific issue templates\n- docs: clarify UGREEN/Synology are supported but not optimized, with install help offered\n- test: add multi-platform diagnostics suite and hardware encoder checks\n- build: add uv.lock, migrate Dockerfile to uv and bump minimum Python to 3.10\n- build: add uv.lock and bump minimum Python version to 3.10\n- ci: add docker build check for PRs and stale issue handler\n","name":"v1.2.0","prerelease":false,"published_at":"2026-07-12T17:26:47Z","tag":"v1.2.0","url":"https://github.com/PD-Codes/MediaForge/releases/tag/v1.2.0"},{"author":"github-actions[bot]","body":"- feat: adding third party tab into integrations and move CR and Fernsehserien.de\r\n- feat: adding fernsehserien.de as an third party integration\r\n- feat: add time-range selector (presets + custom) to the UpTime page\r\n- feat: bucket UpTime history bars over the selected range with a grey no-data state\r\n- feat: expand a per-bucket heartbeat detail view on click, mobile-friendly\r\n- feat: add tap-friendly heartbeat tooltip on the UpTime page showing status, time, response and error\r\n- feat: add native UpTime monitoring for source sites with background monitor, DB and API\r\n- feat: add UpTime tab in integrations with per-source tracking, interval, retention and timeout\r\n- feat: add UpTime dashboard page with live in-place updates and sidebar entry\r\n- feat: show heartbeat hover tooltips with time, status and response time on UpTime page\r\n- feat: add MegaKino and hanime to the DNS reachability check\r\n- feat: label resolved IPs with their CDN provider in the DNS check\r\n- feat: verify source sites by real content and flag ISP/CUII block pages instead of trusting the URL\r\n- feat: add native UpTime monitoring for source sites with background monitor, DB and API\r\n- feat: add UpTime tab in integrations with per-source tracking, interval, retention and timeout\r\n- feat: add UpTime dashboard page with live in-place updates and sidebar entry\r\n- feat: show heartbeat hover tooltips with time, status and response time on UpTime page\r\n- feat: add MegaKino and hanime to the DNS reachability check\r\n- feat: label resolved IPs with their CDN provider in the DNS check\r\n- feat: verify source sites by real content and flag ISP/CUII block pages instead of trusting the URL\r\n- feat: add Vidavaca extractor and make Vidara extractor domain-agnostic\r\n- feat: add new/trending section visibility toggles for hanime source\r\n- feat: add hanime.tv (18+) as a source provider, disabled by default\r\n- feat: load hanime new/trending on the start page with censored/uncensored pills\r\n- feat: resolve hanime series, episodes and streams via a signing headless browser\r\n- feat: add hanime HLS extractor with yt-dlp download\r\n- feat: gate hanime activation behind a two-step 18+ age confirmation\r\n- feat: include hanime in search, seerr and autosync search\r\n- feat: add hanime source toggle and ordering in settings\r\n- feat: add MegaKino (megakino9.com) as content provider for movies and series\r\n- feat: load MegaKino new movies, new series and popular on the start page\r\n- feat: include MegaKino in search, direct-link input and advanced search\r\n- feat: support MegaKino downloads via VOE extractor\r\n- feat: add MegaKino to Seerr search and auto-sync series search\r\n- feat: add MegaKino source toggle and ordering in settings\r\n- feat: add captcha/browser tuning options (ad-blocker, overlay remover, ad-tab guard, ua-sync, webgl spoof, manual solve, visible window, timeout) in network settings\r\n- feat: add persistent captcha browser-profile toggle and clear button in settings\r\n- feat: add app restart button (relaunch without update) in settings\r\n- feat: add configurable source order with arrow and drag-and-drop reordering on start page\r\n- feat: add per-source toggles to show/hide and reorder new and popular sections\r\n- feat: add Sources settings tab to enable/disable sources and hide disabled ones from search\r\n- feat: clarify legacy-import card and allow dismissing it (persisted server-side)\r\n- fix: forgot the caching for the third party providers..\r\n- fix: fix fernsehserien.de scraper with more ideal slug conversion\r\n- fix: several fixes\r\n- fix: some fixes\r\n- fix: docker fix for patchwright\r\n- fix: change DNS and uptime to header checks\r\n- fix: guard megakino browse against a non-list movies field so search no longer crashes\r\n- fix: keep the download-modal Anime4K upscale checkbox selection from being reset by a late settings fetch\r\n- fix: restore missing loadHanimeBrowse so the start page loads when hanime is enabled\r\n- fix: try DoH and plain transport for MegaKino and validate JSON to stop parse-error log spam\r\n- fix: show offline-source banner on the start page with DNS test and UpTime links when monitoring is on\r\n- fix: migrate existing AutoSync jobs from s.to to serienstream.to on startup\r\n- fix: route MegaKino scraper through the DoH session to bypass ISP blocks\r\n- fix: normalise MegaKino genres field to stop search crashing on list values\r\n- fix: log MegaKino network failures as warnings instead of full tracebacks\r\n- fix: switch functional request URLs from s.to to serienstream.to\r\n- fix: stop short block-page markers from falsely flagging real sites as blocked\r\n- fix: switch functional request URLs from s.to to serienstream.to\r\n- fix: resolve Vidmoly /v/ view URLs to vidmoly.net embed for extraction\r\n- fix: Emergency Change megakino vom megakino9.com(fake) to megakino.to\r\n- fix: show download progress for hanime via the standard ffmpeg pipeline\r\n- fix: silence headless chromium console output during hanime stream resolution\r\n- fix: download hanime AES-128 HLS via a single ffmpeg pass with progress\r\n- fix: stop console spam from yt-dlp delegating encrypted hanime HLS to ffmpeg\r\n- fix: label hanime download phase as Download instead of FFmpeg\r\n- fix: accept megakino and hanime in home source order validation\r\n- fix: pin blocked hosts via host-resolver-rules instead of forcing secure DoH in captcha chromium\r\n- fix: some fixes for docker users\r\n- fix: route captcha Chromium DNS through project DoH via --host-resolver-rules\r\n- fix: remove typo\r\n- fix: adding old aniworld folder for migration (docker)\r\n- fix: set project license metadata to GPL-3.0-or-later\r\n- refactor: rename S.TO source label to SerienStream across the frontend\r\n- refactor: merge debug and restart into one \"System\" card in general settings; drop restart from captcha and updates tabs\r\n- chore: add German translations for hanime and age-gate strings\r\n- chore: fill remaining German translations in settings page\r\n- chore: add German translations for captcha/browser and restart settings\r\n- docs: adding licensing history information\r\n- docs: restore verbatim GPL-3.0 LICENSE and move copyright holders to COPYRIGHT\r\n- style: fix some styles\r\n- style: adding animation to uptime menu icon\r\n- style: lay out UpTime monitors as full-width rows\r\n- style: fix issue with checkboxes in mobile mode\r\n- style: use standard chb-main checkboxes for source section toggles\r\n","name":"v1.1.0","prerelease":false,"published_at":"2026-07-06T19:35:29Z","tag":"v1.1.0","url":"https://github.com/PD-Codes/MediaForge/releases/tag/v1.1.0"},{"author":"github-actions[bot]","body":"- fix: switch release trigger, update checker and self-update from models to main branch\n","name":"v1.0.0","prerelease":false,"published_at":"2026-07-03T09:41:55Z","tag":"v1.0.0","url":"https://github.com/PD-Codes/MediaForge/releases/tag/v1.0.0"}],"repo":"PD-Codes/MediaForge"}
