2sxc 21.02
2sxc v21.02.00 (2026-02-18)
General Enhancements
- 🩸 Oqtane: Multi-Tenant support still being enhanced (previous release had some upgrade bugs.)
- 📖 Improve docs - especially the Contribute to Code section
💲 OData (Major Updates)
- 💲 OData: Introduce
$casingquery option to control casing of returned JSON properties ($casing=camel) - 💲 OData: Make sure that OData parameters on a query only apply to the primary
Defaultstream. - 💲 OData: Introduce ability to specify other parameters by stream, so that
$selectapplies to theDefaultstream, butBooks$selectapplies to theBooksstream. (BETA, may still change) - 💲 OData: Reorg code structure (internal)
🌪️ Data Sources and Visual Query (Major Updates)
- 🌪️ Create generic
SysDataDataSource to provide quick access to all kinds of data to the UI. - 🌪️ Introduce Confidentiality model for data sources, so that
SysDatadoesn't leak data to the UI which the user shouldn't see. - 🌪️ Create query
System.SysDatato provide access toSysDatain queries and REST APIs. - 🌪️ Introduce
*(internal) wildcard Visual Query connections to pass all streams from one DataSource to another without having to specify them all. This is especially useful forSysDatawhich can have many streams. - 🌪️ ✏️ Improve VisualQuery UI to properly support
*wildcard connections, and to show them in the UI with a different style to indicate that they are dynamic. - 🌪️ ✏️ Improve VisualQuery UI to show tabs by stream name, making it easier to see the results
🧑🏼💻 Code generator / Copilot (Major Updates)
- 🧑🏼💻 Improve log to indicate which CodeGenerator created the changes
- 🧑🏼💻 🌪️ Create DataSources for use with
SysDatato provideCodeGeneratorsandEditions - 🧑🏼💻 ✏️ Enhance code-generation configurations to specify
Edition - 🧑🏼💻 ✏️ Enhance code-generation configuration to specify "generate all" vs. "generate specific content-types"
- 🧑🏼💻 ✏️ Enhance UI to manage code-generation configurations
💃🏼 Models
- Introduce
TryGetMetadata<T>to get metadata of a content-type, which is especially useful for code-generation scenarios where you want to check if a content-type exists and get its metadata without throwing an exception. - Improve Model lookup to support interfaces which can define which class/record to use
- Introduce the
INoteModelto access Notes Metadata on items/pages/modules etc.
Minor
(none)
Bugfixes
- 🐞 Fix UI to configure Pickers - problem was with the Attributes DataSource.
- 🐞 Fix Polymorphism in Admin UI (Views), broken in v21.01
Internal and Code Hygiene
- 🧑🏼💻 EAV-UI: Introduce a generic
SysDataservice to easily work with SysData endpoints - 🌪️ Move various classes related to DataSource Queries to a better namespace
- 🌪️ Visual Query: Refactor models, simplify
- 🌪️ Improve internal DataSource construction, to use our new standardized
Setup(options)mechanism - 🔌 API: Move Polymorphism info to use Datasources instead of APIs
- 🔌 API: Move RecycleBin to use DataSources instead of APIs
Experimental / WIP
- Introduce
IDataProcessorto customize how data gets stored / loaded - Introduce
DataStorageDecoratorto specify how ContentTypes get processed- Introduce a max-items limit to prevent accidental creation of too many items (for some content types, only 1 is allowed)
- 🌪️ Create DataSource to show all possible DataProcessors
- Allow configuring a preferred DataProcessor for a content-type, so that it gets used automatically when working with that content-type in the UI
- Implement DataProcessing for
pre-loadandpre-save - Create a DataProcessor which restricts any editing on certain content-types to host-users only and test in on permissions.