Releases: 2sic/2sxc
2sxc v21.05
Minor update/enhancements/bugfixes
- 🧑🏼💻 VS Code Intellisense - found way to get it to work with latest C# DevKit and improve hints/warnings dramatically
- 🐞 Edit UI: In some cases closing a dialog kept the overlay, so the page needed F5 (regression, v21.03)
- 📖 Lots of docs
- 🎓 lots of tutorials
2sxc 21.04
2sxc v21.04.00 (2026-03-04)
General Enhancements
- ⚙️ Admin: Ability to click on an entity to see it's relationships ⭐
- ✏️ Edit UI: Ability to always hide HTML button from normal users (you change the default per system/site) (sponsored)
- ✏️ Edit UI: Ability to show the HTML button for super-users in Debug mode (sponsored)
Minor
- 🧑🏼💻 Code Generator start with auto-generate on changes (WIP)
- 🧑🏼💻 VS Coding experience, work on making it compatible with latest C# in VS Code
Bugfixes
- 🐞 App Export was broken, missing some data (regression, v21.03)
- 🐞 Visual Query can't edit newly created queries
- 🐞 Copilot - was broken in v21.03
- 🪲 Minor visual query certain edge cases
- 🪲 Minor admin shared fields - definitions were not showing properly
- 🪲 Minor when in the list-sort dialog, titles from HTML looked off (drop html, ellipsis)
Internal and Code Hygiene
- Rework internal
DataBuildertoDataAssembler - 🌪️ DataSources: New internal DataSource
System.GetEntities - Internal object structure for permission-check, now uses new
IServiceWithSetup - Chore: update FAB components to latest version
- 🌪️ DataSources: Rework public Linking API, improve the IDataService with
CreateLink()andCombineLinks() - 📖 Improve docs - internal docs + start improving section C# Razor
2sxc 21.03
General Enhancements
- 🩸 Oqtane: Multi-Tenant support still being enhanced (previous release had some upgrade bugs.)
- 🗑️ Recycle bin done
- 🧑🏼💻
ITypedApinow support site-mode with page/module, for modules which are not 2sxc modules (DNN) - 💃🏼 Models: Improve naming etc. (WIP)
Minor
- 🧑🏼💻 Code Generator minor enhancements
Bugfixes
- 🐞 Fix Polymorphism in Admin UI (Views), broken in v21.01 / v21.02
Internal and Code Hygiene
- 📖 Improve docs - better indicators for WIP code
- Backend Edit/Save - make calls async
- Improve internal docs about eav-ui mechanisms
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.
2sxc 21.01 with Oqtane multi-tenant support
Enhancements
- 🩸 Oqtane: Multi-Tenant support should work now! (MAJOR)
- 🧑🏼💻 Code generator (Copilot) - now supports saved configurations and many options such as namespace, prefix/suffix etc.
- 🧑🏼💻 Internal rework of models which provide a typed API for configuration Entities
- 🧑🏼💻 Special new (BETA) API to easily convert entities to these lightweight models in the
ToSic.Eav.Modelsnamespace - 🧩 Extensions: Published 3 extensions already https://2sxc.org/en/apps/type/app-extension
- 🧩 Extensions: extensive docs for extensions https://docs.2sxc.org/extensions/app-extensions/index.html
Minor
- 🧩 Extensions now nicely support C# naming for the AppCode folder, while using kebap-case (JS-Style) in the
/extensionsfolder
Bugfixes
- ✏️ Edit UI: tooltip positioning bugfix
- 🧩 Extensions: various minor fixes
Internal and Code Hygiene
- Introduce a Runtime-Cache-Key which supports multi-tenancy for 🩸 Oqtane and is also used in AppCode caches
☢️ Dnn usesAppIdas part of the cache key, but 🩸 Oqtane usest##-z###-a#####" - Improve various C# unit-tests
- Improve internal APIs around the
Engine - Improve DI-startup XDocs, place all in similar namespaces and add docs
- Simplify differences around .net vs. .net Framework regarding download files
HttpResponseMessage - User
recordclasses for service dependencies to simplify code and make it more readable
2sxc 21.00.02 - minor bugfixes
Mainly a bugfix related to DNN 10.02.01
Bugfixes
- ☢️ Dnn: Workaround for bug in DNN 10.02.01 related to assets (js/css) because of Dnn changes in Client Dependency Management
- 🧩 Extensions: fix edit/add extensions configuration
Internal and Code Hygiene
- Prepare AppState to have a RuntimeKey for unique identification at runtime; future feature in 🩸 Oqtane
- ☢️ Dnn: Minor changes to logging during installation
2sxc v21 - AppExtensions, OData and more
https://2sxc.org/en/blog/post/2sxc-v21-app-extensions-odata-and-more
Note: Oqtane needed a patch release, so it's v21.00.01.
2sxc 20.00.09 MoT - preparing for v21
2sxc v20 cleans up a lot of history, so it has breaking changes.
These mainly affect old code, so they should only affect DNN installations which have old code on it, or used old samples to develop Razor.
Read about it in the blog: https://go.2sxc.org/v20
See also the docs with all the changes and breaking changes
v20.00.09 has a lot of changes, enhancements and more, but most of it is hidden in the background, for the upcoming v21 release.
Possibly Breaking Changes
- Global extension fields (for the edit UI) are now in
/extensionsand notsystemany more.
This may affect you if you were loading the GPS/WYSIWYG manually, or had custom extensions in the old path.
Major Enhancements
- 🧩 App Extensions: Lots of enhancements
- 🧩 Feature to edit extension definition and store in a JSON in the extensions
App_Data - 🧩 System can differentiate between installed extensions and extensions being developed in an App, and provide different actions
- 🧩 Feature to export an extension incl. extensive infos, file fingerprints, versions, releases
- 🧩 Feature to install an extension incl. drag & drop
- 🧩 Feature to check if an installed extension was modified (for safer upgrading)
- 🧩 Feature to delete an installed extension
- 🧩 Extension Settings and language Resources
- 🧩 Extensions can now be installed in multiple editions
- 🧩 Extensions with input-types and multiple editions will load
stagingif user is developer/host - 🧩 Extensions have a lot of properties and links shown in the quick overview
- 🧩 Feature to edit extension definition and store in a JSON in the extensions
- ☢️ Stabilizing DNN CSHTML compiler caching and PDB preservation for better debugging
- 🌪️ Queries: Published many more System queries which were previously secret, such as
System.ContentTypes, etc. see - 🥫 DB: Increase SQL timeout because sometimes SQL was sleeping and causing timeouts
- ❤️🔥 OData Support WIP
- $select support
- $filter support for basic filters (
eq,ne,gt,lt,ge,le,startsWith,not startsWith,contains,not contains) - $orderby support
- 💃🏼 Major: Template Service can now create templated entities.
- 🧑🏼
✈️ Data Copilot: Ability to configure in detail what should be generated and how (specify alternate folders, namespaces, etc.)
Minor Enhancements
- 🔳 Toolbar: Ability to combine toolbar on a entity-field with
Copyto add copies of data to a list - ✏️🔳 Toolbar & Edit UI: Introduce
UiFields()on toolbar button Tweak - ⚙️ Admin UI: Show more info about fields (such as read-only, required etc. in addition to has-formula)
- 🌍 Language: Restore Translate All/Link All feature (had been gone for more than 1 year and nobody noticed)
- ✏️ Edit UI: Improve paste-as-text in WYSIWYG
- 🖼️ Improve Image Service so it knows about Bootstrap if added through
Kit.Page.Activate(...)(otherwise image resize/class is off when used in a skin without bootstrap) - 🌪️ DataSource: ContentType DataSource can now accept
Scopeof*to search through all scopes - Minor: Add Recaptcha Score field to settings
- Minor: Add loading indicators in various UIs to improve UX
Bugfixes
- 🐞 Improve locking / unlocking AppCode.dll which is compiled on the fly
- 🐞 Fix AppCode reporting compilation errors (were disabled in a previous release)
- 🐞 Fix languages returned by serialized entities in WebAPIs (some scenarios resulted in wrong language being returned)
- 🐞 Fix remove a data-source in a VisualQuery
- 🪲 🌍 Edit UI: Translate buttons showed up in the primary language when there was only 1 language
- 🪲 🌍 Edit UI: Translate buttons blocked access to some other buttons on entity-pickers
- 🪲 ☢️ DNN: When code in DNN triggered an HTTP Redirect, it previously logged an exception in DNN
- 🪲 Minor: fix time zone info in edit-entity-history
- 🪲 Minor: fix colors of inner-content toolbar
- 🪲 Minor: fix / enhance Tokens, so multiple fallback-tokens work (previously only 1 was possible)
Internal Changes
- Experimenting with delayed loading of AppCode dll because it may cause issues with anti-virus locking the file at first compile
- Edit UI Improved SASS to latest standards
- API renaming: shorten
noParameterOrdertonpoas the type already indicates what it is - Maintenance: get rid of obsolete warning IHostingEnvironment
- Maintenance: Update xng-breadcrumb to latest version
- Maintenance: Update various npm packages to latest versions
2sxc 20.00.08 MoT - minor fixes
2sxc v20 cleans up a lot of history, so it has breaking changes.
These mainly affect old code, so they should only affect DNN installations which have old code on it, or used old samples to develop Razor.
Read about it in the blog: https://go.2sxc.org/v20
See also the docs with all the changes and breaking changes
v20.00.08 is mainly bug fixes
2sxc 20.00.07 MoT - minor fixes
2sxc v20 cleans up a lot of history, so it has breaking changes.
These mainly affect old code, so they should only affect DNN installations which have old code on it, or used old samples to develop Razor.
Read about it in the blog: https://go.2sxc.org/v20
See also the docs with all the changes and breaking changes
v20.00.07 is mainly bug fixes