v0.24.0

29 October 2026

SQLite 3.46 is the minimum, the registry and collections use STRICT tables, and the CLI checks database integrity and drops dead field columns.

Added

  • Db::version(), Db::supported() and Db::MIN_VERSION. phlat health:check stops with an error when the linked SQLite is older than 3.46.
  • phlat health:check runs PRAGMA quick_check on every SQLite database and reports a failure as an issue.
  • Registry::undeclaredColumns(), Registry::pruneColumns() and FieldIndex::prune(). phlat registry:check lists the field columns no view or role declares any more, and --heal drops them. phlat collection:reindex drops the columns of fields the collection no longer declares.
  • phlat db:vacuum merges each full-text index before it vacuums, which purges the text of deleted documents.

Changed

  • SQLite 3.46 or later is required, the version Debian stable ships. The README states it.
  • The registry, meta, variants, field_items and collection items tables are STRICT, and the f_ field columns are typed ANY. The registry file is rebuilt on the first request (schema 22). Each collection database migrates and reindexes on its first read (schema 4), and v0.23.0 cannot read it afterward.
  • The collection migration from schemas 1 and 2 converts dates with unixepoch().

Removed

  • phlat db:optimize. It was an alias of db:vacuum: run phlat db:vacuum.

Bug fix releases