Version 0.4.0
Release date: November 4, 2026
Highlights
Section titled “Highlights”- Related lists you can work in: with
Relation::editable()switches, selects and inputs work right in the list of a parent, with options per row. Edit returns to the parent. - Deleted records leave nothing behind: open tasks are cancelled, the clock of their workflow stops, and notifications no longer lead to a 404.
- Presets from a link: a task or notification opens a create form with values filled in.
- Groups with order and summary, and titles of several columns such as
{last_name}, {first_name}, with a search that finds first and last name in any order.
No breaking changes and no migrations, see Upgrading to 0.4.0.
Enhancements
Section titled “Enhancements”- Titles of several columns:
relationship(PersonModel::class, '{last_name}, {first_name}')onBelongsTo, relationshipTextColumnandSelectFilter. Options are ordered by the columns of the template, and the search of a searchable select finds every word of the term in any column, so “Erika Mustermann” and “Mustermann, Erika” both find the person. See BelongsTo. - Editable columns in related lists:
Relation::editable(). Saving needs the update permission of the related record and of the parent, and the record must belong to the parent. See Related records. SelectColumn::optionsPerRecord(): options that differ per row, also for a field with options that depend on another field. A row without options shows its value.- Edit in a related list goes back to the parent after saving or cancelling. See Related records.
- A link can preset a create form:
Field::fromQuery('person')andResource::createPath(['person' => $uuid]). See Presets from a link. - Groups of a list can have their own order and a summary in the header:
Column::groupOrder()andColumn::groupSummary(). See Grouping.
Changes
Section titled “Changes”- The search of searchable selects matches every word of the term separately (words are split at spaces and commas); before, the whole term had to be contained as one string.
Bugs Fixed
Section titled “Bugs Fixed”BelongsTo::default()with a UUID selected the wrong record without an error: MySQL reads the start of “01a1…” as the number 1. It now accepts the UUID.- Deleting a record left its open tasks and decisions in the inbox, where their link ended in a 404, and reminders and escalations kept running. All open tasks of the record are now cancelled and its clock stops; transitions stay as history. Notifications keep their text but no longer link to the record.