Skip to content

v1.3.21 — Runtime, migration and FTS fixes

Latest

Choose a tag to compare

@cgnl cgnl released this 09 Oct 16:18

[1.3.21] - 2026-10-09

Fixed

  • Route SQLite transaction control, including sqlite3_exec, through real PostgreSQL transactions; preserve rollback/savepoint semantics and reject aborted commits.
  • Recover PostgreSQL sessions and cached prepared statements after disconnects without requiring a Plex restart in the validated native fixture.
  • Preserve SQLite ABI numeric/NULL behavior and keep SQLite engine work on the invoking thread.
  • Keep SQLite FTS/RTree backing tables, tokenizers, collations and engine configuration off PostgreSQL.
  • Treat Plex FTS index rebuild writes as no-ops so PostgreSQL views cannot delete or duplicate source metadata; keep logical searches on PostgreSQL.
  • Prepare skipped spellfix statements without requiring missing virtual tables and clean up temporary tokenizers on SQLite.
  • Tighten migration, schema initialization and export error handling to preserve source data and avoid silently swallowing failed work.
  • Limit inherited shim settings in Plex helper processes and exclude incompatible default interpose exports.
  • Build the shim static library without accidentally linking test-harness SQLite symbols.

Added

  • Real shared-shim runtime E2E checks for transactions, constraints, types, statement reuse and reconnect; 15 requested cases pass locally.
  • Eight native Docker acceptance lanes: LinuxServer/PlexInc, amd64/arm64, PostgreSQL 15/18, with 100 restart cycles and a separate 5h50 soak.
  • Checksum-pinned Big Buck Bunny movie and The Beverly Hillbillies S01E01/S01E02 TV libraries, covering scanning, episode hierarchy, byte-range seeks, delivery hashes and full audio/video decoding.
  • Official build-matched H.264/AAC codec bootstrap with SHA256/provenance records, then offline playback samples during the soak.
  • Failure-safe PostgreSQL-to-SQLite export tooling, compatibility documentation and an evidence ledger.
  • SHA256 files alongside the Linux/macOS release bundles.

Changed

  • Publish v1.3.21 as a regular release rather than a prerelease, with validation limits recorded explicitly.
  • Update README and wiki release pointers and testing documentation.
  • Keep Docker production promotion gated on complete native evidence; binary release publication is separate from runtime certification.

Validation and known limitations

  • 1,050 Rust tests pass (two existing tests ignored), with Clippy and 15 shared-shim runtime E2E cases passing.
  • Local native PlexInc/arm64/PG18 tests pass for full movie/TV delivery and audio/video decoding, byte-range seeks, watch state, artwork, one restart and live PostgreSQL recovery.
  • The local short soak requested 10 seconds and measured 11 seconds. It is not evidence of a completed 5h50 soak or 100 restarts.
  • The full GitHub native matrix and 5h50 soak are unfinished. Some runner fixture downloads fail with HTTP 403.
  • Browser playback, server-side transcoding and the remaining imported-library/rollback/crash acceptance gates are not fully certified. See docs/release-readiness.md and docs/stability-validation-2026-10-09.md.

Compare: v1.3.20...v1.3.21

Native matrix evidence: https://github.com/cgnl/plex-postgresql/actions/runs/37956841626

CI status after publication

Both native Linux release builds and the macOS release build/package/upload workflows passed. macOS unit tests and the tagged shared-shim runtime E2E passed. Linux CI still reports one failing exception-tracker test in the focused Makefile suite and Clippy errors from the newer compiler/lints. These are unresolved; regular-release publication does not imply all checks are green.

CI details: https://github.com/cgnl/plex-postgresql/actions/runs/37958142970