0.440 (12 Feb 2026)

12 February, 2026

This release introduces model extensions and fixes several issues with aggregate filter conditions in computed fields.

Model Extensions

You can now extend built-in models like Identity with additional fields and actions using the extend model keyword. This lets you add custom data and behaviour to built-in models without redefining them.

extend model Identity {
    fields {
        preferredName Text?
        department Text?
    }
 
    actions {
        get getIdentity(id)
        update updateIdentity(id) with (preferredName, department)
    }
 
    @permission(expression: ctx.isAuthenticated, actions: [get, update])
}

Extended fields must be optional (?) or have a @default value, since built-in model records are managed by the system. Learn more about the Identity model.

Computed Field Division Fix

Computed fields that use division now correctly cast the numerator to a numeric type, preventing integer division from silently truncating decimal results. For example, an expression like order.subtotal / order.quantity now returns the expected decimal value.

Aggregate Filter Fixes

Several fixes improve the reliability of aggregate filter conditions in computed fields:

  • Fixed incorrect table references in multi-hop aggregate filter conditions (e.g. filtering through multiple relationships)
  • Fixed boolean field handling in aggregate filter conditions on the root entity
  • Fixed entity and ID equality comparisons in aggregate filter conditions

These fixes ensure that expressions like COUNTIF(warehouse.items, warehouse.items.isActive) and multi-relationship filters work correctly.

Fixes and Improvements

For a full list of fixes and improvements, check out our GitHub releases page (opens in a new tab).

For any issues or feedback, please contact us at help@keel.so.

Thank you for using Keel!