Releases
v1.4.0
Compare
Sorry, something went wrong.
No results found
feat: adding Homescreen 2.0 Banner
feat: add classify.is_transport_failure for the crash channel, sharing the unreachable-server tables
feat: add MegakinoUnavailable so routes classify by type instead of exception class names
feat: add a comic library with reader for all common archive formats
feat: index CBZ, CBT, CB7, CBR, CBA and PDF comics grouped into series and issues
feat: read series, issue number and credits from ComicInfo.xml, fall back to the filename
feat: add a comic reader with single and double-page spreads, zoom and fit modes
feat: queue a cover for every issue, series covers first
feat: give every comic its own downscaled cover, prepared visibly in the background
feat: extract a single page from CBR/CBA instead of repacking the whole archive
feat: downscale covers to 640px WebP (1.5 MB page -> 7 KB cover)
feat: repack CBR/CBA into a cached CBZ, never touching the original file
feat: cache comic covers on disk and drop cache entries when the source is gone
feat: add optional ComicVine enrichment, off by default and rate-limited below the API cap
feat: add a series/single-issue switch to the comic shelf
feat: wire comic_auto_prepare_all so it actually converts every issue
feat: point at the automatic preparation setting from the reader
feat: prepare comic covers in the background and show that it is happening
feat: extract one cover per series after a scan instead of never starting
feat: show preparation progress in the shelf header and on each card
feat: add a comics settings section for covers, caches and diagnostics
feat: add a setting for replacing originals after conversion, off and unwired
feat: split the library into one shelf per media kind
feat: add /library hub with per-kind tiles and live counters
feat: add media_kinds column to custom_paths, configurable in settings
feat: add library sub-menu to the sidebar, planned kinds shown disabled
feat: let modules register a shelf via register_thirdparty(section="library")
feat: TMDB backdrop as the title window's header image (in Modal / Beta)
feat: changes on Start Page 2, Hover Information, module changes with TMDB, integration of OpenSubtitles (free API Key needed)
feat: add flag.integrations.mediaplayer as its own data point, separate from mediascan
feat: add telemetry/classify.py as the single place cancellations and unreachable-server errors are classified
feat: wire up the flag./detail. data points that were registered but never emitted
feat: let build_play_event emit syncplay.room_content under its own consent toggle
feat: make the devInfo feature-usage dashboard registry-driven so unwired keys are visible
feat: jellyfin specific settings added, also some fixes in other settings
feat: optional absolute episode numbering from the "[Episode NNN]" title marker (aniworld)
feat: library => read PDF and EPUB in an overlay instead of a browser tab
feat: adding more library functions and fix: one progress bar for single-file jobs, working accent hex input, no search history on load
feat: Web Player Overhaul with more options, styles, etc. Also some bug fixes
fix: some fixed in ebook library
fix: stop reporting yt-dlp hoster errors as MediaForge crashes
fix: keep network transport failures out of the telemetry crash channel
fix: answer 502 instead of 500 in /api/episodes and /api/providers when megakino.to is unavailable
fix: stop filing telemetry crash reports for megakino.to outages on the remaining two routes
fix: answer 502 instead of 500 when megakino.to returns an unusable response
fix: stop filing a telemetry crash report for every megakino.to outage
fix: handle a truncated JSON body in /api/seasons, which had no upstream branch at all
fix: for megakino => guard against list-typed API fields in parse_meta
fix: accept a JSON array in megakino.to fields documented as plain text
fix: stop one malformed megakino.to record from failing the whole /api/series response
fix: fixing language
fix: use a comics-specific translation for "Series" so German reads Reihen, not Serien
fix: accept kind="comic" for reading bookmarks (was collapsed onto epub)
fix: group comics by folder and recognise the numbering styles real libraries use
fix: treat the parent folder as the series name, filename only for number and title
fix: accept an underscore or dot before a bare issue number
fix: poll the preparation status immediately instead of 2.5s late
fix: show the preparing spinner in the single-issue view too
fix: read a trailing "- 0001" as the issue number instead of a story title
fix: read a leading number when the title carries its own dash
fix: decode percent-escaped characters in filenames (H%f6lle -> Hölle)
fix: take the year out of brackets that also name a publisher
fix: detect bsdtar when it is installed as "tar", as on Windows 10+ and macOS
fix: make the whole poster card clickable on the comic and book shelves
fix: add keyboard activation and ARIA state to poster cards
fix: prepare comic covers on shelf load, not only during a scan
fix: queue cover preparation from /api/library?kind=comic so an already scanned library gets covers at all
fix: read the group preference lazily — calling into library_core.js at parse time aborted the page module and left LIB_KIND undefined
fix: backdrop and text fix in modal
fix: home panel storage view fix for Unix and Docker
fix: home panel hidden queue rows will counts visible only
fix: assign MEDIA_STATS_ENABLED in its own settings block (was a 500 on probe-worker saves)
fix: cockpit storage/limits, mobile heading overflow, empty hover drawer, calendar release dates and series detection
fix: queue keep the home page run strip live
fix: restore the default home-feed row order and record why the personal rows lead
fix: style the shared Start Page groups in the home page modal, which does not load settings_rows.css
fix: never report user-initiated cancellations as crashes or errors
fix: keep the console silent while the devInfo server is offline or in maintenance
fix: honour a download cancel in the CLI captcha solver instead of holding the browser open
fix: reset the push-notification fan-out scope in a finally block
fix: report flag.self_update after the restart so it survives the process exit
fix: only arm the v1 API telemetry throttle when an event was actually sent
fix: some fixes in start page order
fix: repair Kindle markup, page geometry, chapters and typography
fix: change aniworld episode changer to correct season, but leave number absolute
fix: some fixes and addings
fix: some fixes in book reader
fix: settings => put Layout first on the Start Page tab and style its subheadings
fix: some fixes in module management, startpage 2 and some more
fix: Modules => make CineInfo sources a first-class module capability
fix: Web Player => a double tap must not leave fullscreen
fix: Fix a crash when uninstalling a module (also causing an lint error)
fix: some bug fixes in hanime style, seerr poster responsive, etc.
fix: fix hanime issues
fix: hanime search backend moved, and unblock its poster CDN
fix: sync the German catalogue and wrap the hardcoded strings
fix: a successful single-episode retry is no longer booked as failed
fix: harden the transcoder, the workers and numeric settings
fix: vendor hls.js instead of loading it from a CDN
fix: watchdog no longer aborts long downloads
fix: validate library paths before queueing an upscale
fix: encoding/upscaling no longer deletes the original before the move
fix: upscale and encoding queue doesnt run at the same time anymore
refactor: generalise _genres_str into a shared _text coercion helper
refactor: drop the comic_auto_covers toggle, covers are never optional
refactor: split library.js/.css into core + video + books modules
perf: parse the megakino API response once instead of decoding the body twice
perf: omit empty fields from cached issue rows
perf: swap in late covers in place instead of repainting the grid
perf: skip the ffprobe pass on book-only paths and the book pass on video-only ones
perf: drop the other kind's payload from /api/library responses
perf: cache the telemetry consent/enabled_keys read instead of hitting SQLite per event
perf: move SyncPlay session telemetry out of the room and registry locks
perf: bound the image proxy and collapse concurrent fetches
perf: pause polling in hidden tabs, add a queue badge endpoint
perf: SQLite pragmas, batched calendar writes and the missing indexes
chore: uv lock for py7zr
chore: drop the orphaned German msgid left behind by the start page rewording
chore: fix .dockerignore, drop dead folders, complete the docs
chore: add .gitattributes to fix line-ending noise
docs: describe all three classification consumers in classify.py's module docstring
docs: describe the folder-per-series layout in the README and the empty state
docs: describe the comic library in the README
docs: describe the per-media-kind libraries in the README
docs: Update Readme and pyproject.toml
docs: record that third-party modules never get a telemetry interface
docs: document what telemetry never reports in PRIVACY.md and README
docs: state the PR title and language rules in the PR template
style: theme tokens for status colours, checkbox class, missing breakpoints
test: guard the page-module/core load-order contract for all three shelves
test: cover crash-safe publishing, hanime cards and the retry plan
test: add a pytest suite and wire it into CI
build: add py7zr for .cb7 and libarchive-tools to the Docker image for .cbr
ci: change Triage for modules
ci: consolidate workflows and cut the build minutes
ci: pin third-party actions to SHAs and harden the workflows
security: keep response content out of the megakino error message, size and position only
security: bound the depth of the megakino.to text coercion against hostile nesting
security: strip userinfo credentials from URLs before they can reach a telemetry payload
security: withhold direct_link.urls and syncplay.room_content when the origin provider cannot be determined
security: proxy awareness, cross-site guard, SyncPlay guest scope
security: close the SSRF gaps in the two proxies
security: one shared, quote-safe HTML escaper for the whole frontend
security: admin-gate the integration settings and stop returning secrets
security: always verify TLS certificates, drop the first-party exemption
You can’t perform that action at this time.