09.08.2026

Today’s release includes the following updates:

sdk

  • In the SDK data module, a Note’s body is now computed on access rather than stored in a column. Reading it is unchanged, and it still returns the same array of text and command objects, but Canvas now assembles it from more than one column, so fewer query operations can name it.
    • Breaking change: body can no longer be named through a relation. A queryset on another model that says defer("note__body"), filter(note__body=...) or similar now raises an error rather than resolving. Query Note directly instead.
    • Breaking change: values("body") and values_list("body") now raise a FieldError that points you at only("body"), because no single column holds the value they would return. Sorting on body is no longer resolved either.
    • filter(), exclude() and get() on body still work when you query Note itself, including lookups nested in a Q object, and so do only("body") and defer("body").