This release adds 3 notable features for engineering teams evaluating rollout.
Published 1mo
Media Servers
✓ No known CVEs patched
✓ No known CVEs patched in this version
Topics
kometa
Affected surfaces
breaking_upgrade
deps
Summary
AI summaryFixes Windows startup crash due to missing POSIX-only resource module.
Full changelog
Fixed
- Fixed CI: downgrade
actions/checkoutfromv7tov6across 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 fromERRORtoWARNINGin metadata file processing when a mapped item cannot be found in the Plex library. - Allow
builder_levelto 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-onlyresourcemodule unconditionally. Now wrapped in atry/except ImportErrorso the bump is applied on POSIX systems and skipped cleanly on Windows. (#3244) - Fix
kometa.pycrashing withTypeError: HEAD is a detached symbolic referencewhen 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 originalanime_maprow was written correctly on INSERT but each subsequent update would clobberanilist_idwith 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
717095from 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 ofjson-schema/*.json+ kitchen-sink config),imports(auto-discovered import smoke check across all 40 modules),perf(slow-test reporting viapytest --durations-min), andsmoke(kometa.py --help+ minimal-config dry-run). (#3232) - Internal: add
.gitattributesto 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 addlinguist-vendored/linguist-generatedhints for cleaner GitHub language stats. Renormalizeddefaults/overlays/languages.ymlwhich had been checked in with CRLF endings since a 2025 community PR. Also addsexport-ignoreentries sogit archivesource tarballs no longer shiptests/,.github/, or other dev-only files. - Internal: extend the
test,imports, andsmokeCI 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 thetry/except ImportErrorguard aroundimport resourceinkometa.pyand asserts everyresource.<attr>reference at module scope sits inside anif 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
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.
Related context
Related tools
Beta — feedback welcome: [email protected]