CI Report:
https://ci-tests.linuxserver.io/linuxserver/kometa/v2.4.4-ls102/index.html
LinuxServer Changes:
Full Changelog: v2.4.2-ls101...v2.4.4-ls102
Remote Changes:
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.