v0.0.35
28 June 2026
Field content is now searchable through the registry query DSL via a new field_index table.
Added
FieldIndex(phlat/src/Data/Registry.php'sfield_indexSQLite table, schema bumped to4) : recomputes searchable rows for a page'sdata.jsoncontent on save, keyed by(uuid, key, subkey)with both a stringvalueand an optionalnumeric_value.FieldType::indexValues(): each fieldtype controls what it contributes to the index. Plain scalar types (number,datetime) index a single''subkey;list/objectflatten each item/property to its own subkey;file/relationopt out entirely ([]).Registry::find()/rows()/count(): any condition field that isn't a structural registry column (type,view,status, etc.) is now matched againstfield_indexvia an automaticLEFT JOIN, with numeric operators (<,>,<=,>=) comparingnumeric_value.sort=on a content field sorts by it too.Db::transaction(): wraps a callback in begin/commit/rollback.q(string $key): query-param convenience function, shorthand forapp()->request->query($key).
Changed
Registry::rebuild()/page indexing now also callsApp::fieldIndex()->index($page)for every scanned page.