v0.45.0
4 November 2026
A field definition is now a Field everywhere, and the Clockwork addon is trimmed and no longer defines clock().
Added
Field::list($entries)builds[name => Field]from a template's field entries, andField::templateFields()andFieldValue::templateFields()return the sub-fields a field declares.- The Clockwork viewer's request filter includes
PUT.
Changed
TemplateFields::fieldDefs()is nowField::list(), andPageView::fieldDefs()is nowPageView::templateFields(). Both returnFieldobjects instead of arrays.App::resolveField()takes a?Fieldin place of the[type, label, options, render]array. Passnullfor an undeclared key.- A field with no
labelis labelled with its title-cased name on every path (published_atreadsPublished At). Setlabelto keep the raw name. - The Clockwork addon no longer registers the global
clock()helper and uses its instance directly. - Clockwork's request log drops the fields Clockwork already shows in its own Request and Session tabs.
- The Clockwork viewer's logic moved from its template into the controller, and the unused global controller is removed.