v0.34.0

Latest release

1 November 2026

The API reference is now read from the code, and more page methods take a find query.

Added

  • /docs/api is a reference built by reflection from the Toolkit and every class tagged @api, through the new Phlat\Reference class. The admin docs use it too.
  • $page->files('type=image,sort=filename,limit=4') filters and sorts a page's files with the find query, over filename, name, extension, type, mime, size, modified and their metadata fields.
  • Query::filter($items, $query, $value) runs a find query over items already in memory.
  • parents(), next(), prev() take a query, and closest($query) returns the nearest page matching it, walking up from the page itself.
  • PageCollection::delete() deletes every page in the collection in one operation and returns how many went. Several pages make one History entry.
  • Registry::atomic($fn) runs a bulk change as one transaction, and Collection::deleteParents($uuids) removes the items of many pages at once.
  • Str::suggest($input, $options) returns the closest option. An unknown fieldtype or registry field now ends its error with "Did you mean ...?".
  • Arr::every(), Arr::some() and Srv::caller().

Changed

  • next() and prev() take the query first: next(true) becomes next(includeHidden: true).
  • $app->emit() throws outside phlat/. Site code and addons emit with $page->emit() or $app->addon($alias)->emit().
  • Page::delete() goes through PageCollection::delete(), and Record::assertUnlocked() is public.