Library Doctor changelog

Every published version, newest first. The builds of our Jellyfin plugins and their complete source code are public (GPL-3.0); the plugin needs a license to run. Subscriptions and trials always get the latest version, lifetime licenses get updates within their update window.

0.1.8

Latest

Fixed: the "License" link on the main page did not open the License page in Emby 4.10; the page now has the common MediaLab header (icon, title, the license status badge opening the License page, and a banner when the license is not active).

Fixed (licensing): the license key field is always visible, so a new key can be activated even while the saved license still shows as active; a refused key no longer replaces the saved key and the page shows why; when the last check fails (for example a deleted or revoked license), the page and the log show a warning with the date until which the saved license keeps working; activation, manual checks and release are written to the log.

  • Fixed (duplicates): robust identification — metadata IDs (IMDb/TMDb/TVDb) decide, and different IDs are never a duplicate; a file the server matched to the wrong film, caught by the year in the file name, is no longer flagged (e.g. War 2007 vs Lord of War 2005); without IDs the normalized title must be equal and the year the same (never "title contained in another title"); episodes by series, season and episode.
  • Security: quarantine moves only exact companions (same-name subtitles, nfo, images), never follows symbolic links, never leaves the library folders and never deletes anything; a damaged quarantine list is kept (backup copy) instead of being overwritten; state is never written to /tmp.
  • Security (licensing): logs sent to medialab.works or exported no longer contain tokens, passwords or keys (lines are selected by the plugin's logger and secrets are masked); unencrypted license-server replies are refused; update and rollback install only packages with a verified MediaLab signature (and a size limit); the log export no longer puts the token in the URL; the License page escapes text in attributes correctly.
  • Also includes the privacy changes: the payment QR code on the License page is generated locally, the payment link is no longer sent to a third-party QR service.
  • The file check no longer reports healthy files as "truncated": instead of decoding the keyframes of the last 3 seconds (which many normal encodes do not have), it reads the timestamps of the last video packets and compares them with the video track's duration (a longer audio track no longer counts). Checked on 400 real files: no false positives; truncated MKV/MP4 files are still found.
  • The quarantine is always recoverable: the entry is recorded before moving, and if a file cannot be moved (e.g. because of permissions), the files already moved are put back; restore also works for interrupted moves.
  • The page shows the error when moving to quarantine, restoring or grouping fails.
  • Verified: after a rescan, Jellyfin no longer shows the moved version and does not import the .medialab-de-sters folder; after a restore, the version reappears.

0.1.0

Superseded, not distributed

Listed for the record only: not available for download or as an update.

  • First build: duplicates with a quality comparison, unmatched movies, broken files, space report and a quarantine. Replaced by 0.1.1 before publishing, because the quarantine could not always be restored.