v0.46.0

4 November 2026

Definitions are now index.json, a view is a folder with index.latte or index.json, and the Clockwork addon reports client load timings and Web Vitals.

Added

  • PageView::fieldTemplate($field, $parent) finds a view's own render of a field: {view}/{field}.field.latte, or {view}/{parent}.{field}.field.latte for a field inside a stack, blocks or repeater.
  • The Clockwork addon has a Client tab with the page's load timings and Web Vitals (LCP, CLS, FCP, TTFB, FID). Add {include '@clockwork/client.latte'} to the layout to turn it on. It renders nothing with debug off.
  • Clockwork's tabs addon setting lists which of Database, Views, I/O and Cache each recorded request keeps.

Changed

  • A definition a developer writes is index.json, not _index.json: a view's, a field's, a fieldtype's, a role's, a file type's and an addon's manifest. The underscore now means the CMS writes the file, so a page's, user's or collection item's _index.json is unchanged. Rename each definition outside pages/ and data/. phlat make:view and make:field write the new name.
  • A view is a folder in views/ with an index.latte or an index.json, and App::viewNames() lists exactly those. PageView::templateFile() no longer falls back to views/{name}.latte: move it to views/{name}/index.latte, and give a router-only view an index.json.
  • A view's field renders live in its own folder as {field}.field.latte. views/fields/{view}/ is no longer read: move {field}.latte to views/{view}/{field}.field.latte, and {parent}/{field}.latte to views/{view}/{parent}.{field}.field.latte.
  • Clockwork's Views tab is folded into the Data tab.