Skip to content

Kometa

v2.4.4 Feature

This release adds 3 notable features for engineering teams evaluating rollout.

Published 1mo Media Servers
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

kometa

Affected surfaces

breaking_upgrade deps

Summary

AI summary

Fixes Windows startup crash due to missing POSIX-only resource module.

Full changelog

Fixed

  • Fixed CI: downgrade actions/checkout from v7 to v6 across all workflows to restore PR validation for fork pull requests (still an upgrade over Kometa 2.3.1)
  • Downgrade "Skipping <name>: Item not found" log message from ERROR to WARNING in metadata file processing when a mapped item cannot be found in the Plex library.
  • Allow builder_level to work with playlists. Fixes #2267
  • Consolidate repeated asset warning messages in the warning summary into shared count buckets so the same warning is reported once instead of one row per affected folder or item.
  • Fix ModuleNotFoundError: No module named 'resource' crash on Windows at startup. The file-descriptor limit fix introduced in #3235 used the POSIX-only resource module unconditionally. Now wrapped in a try/except ImportError so the bump is applied on POSIX systems and skipped cleanly on Windows. (#3244)
  • Fix kometa.py crashing with TypeError: HEAD is a detached symbolic reference when run from a detached-HEAD checkout (release-tag checkouts, CI runners that check out by SHA, etc.). (#3232)
  • Fix cache.update_anime_map() writing the AniDB id into the AniList column on UPDATE. The original anime_map row was written correctly on INSERT but each subsequent update would clobber anilist_id with the AniDB value. (#3232)
  • Defer cache eviction until all batched Plex edits complete so genre updates (or other non-batched updates) no longer evict items before later rating and originally available date, etc writes run.
  • Remove TMDb ID 717095 from the Ice Age franchise default after TMDb no longer returns the collection.

Changed

  • Internal: add a comprehensive pytest test suite (580 tests, up from 203) covering most of modules/, plus a regression-test convention (test_issue_NNNN_*) for documented bugs. (#3232)
  • Internal: add a GitHub Actions test workflow with separate jobs for lint (black + isort + flake8), test (pytest with 20% coverage gate), regression (regression-only suite), schema (JSON Schema validation of json-schema/*.json + kitchen-sink config), imports (auto-discovered import smoke check across all 40 modules), perf (slow-test reporting via pytest --durations-min), and smoke (kometa.py --help + minimal-config dry-run). (#3232)
  • Internal: add .gitattributes to normalize line endings to LF on commit for all text sources, flag image/font/PSD files as binary so Git won't try to diff them, and add linguist-vendored/linguist-generated hints for cleaner GitHub language stats. Renormalized defaults/overlays/languages.yml which had been checked in with CRLF endings since a 2025 community PR. Also adds export-ignore entries so git archive source tarballs no longer ship tests/, .github/, or other dev-only files.
  • Internal: extend the test, imports, and smoke CI jobs to a Linux + Windows OS matrix so POSIX-only regressions (the class of bug that produced #3244) get caught before merge instead of at user launch. Adds an AST-based regression test (test_issue_3244_*) that statically pins the try/except ImportError guard around import resource in kometa.py and asserts every resource.<attr> reference at module scope sits inside an if resource is not None: block.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track Kometa

Get notified when new releases ship.

Sign up free

About Kometa

Python script to update metadata information for items in plex as well as automatically build collections and playlists. The Wiki Documentation is linked below.

All releases →

Beta — feedback welcome: [email protected]