Changes Overview for 2sxc/EAV
This page collects all the changes of all versions into one place, making it easier to search for certain keywords.
👉 if you only care about breaking, please check Breaking Changes Overview for 2sxc/EAV
Version 18
Changes in 2sxc 18.00 (2024-07-12)
- ✅
ITemplateService
withMergeSources(...)
- ✅ Oqtane 5.1 or 5.2 SSR Release
There's a lot more! I don't have time to describe it yet, but here's the short list
https://github.com/2sic/2sxc/releases/tag/v18.00.00
...and more.
Changes in 2sxc 18.01 (2024-09-23)
- 🔢 Pickers
- ✅ Improve Picker-UIs
- ✅ Picker with Radio-Buttons (for patrons 🦹🏾♂️)
- ✅ Picker with Checkboxes (for patrons 🦹🏾♂️)
- ✅ Pickers with tooltips, more help, etc. (for patrons 🦹🏾♂️)
- 🧪 Formulas
- ✅🔁 Major refactor of internal code structure
- ✅👨🏾💻 Improve visibility of formulas in the UI for dev-users (always show for developes 👨🏾💻)
- 🔁 Refactoring / internal
- ✅🔁 Edit-UI Drop NgRx
- ✅🔁 Edit-UI Switch most code to Signals
- ✅🔁 Edit-UI feature to store user settings in the local storage and session
- ✅👨🏾💻 Create debugging system to log changes in production (developers 👨🏾💻)
- Internal content types
- ✅ Use newer picker features for Wysiwyg and other UIs
- ✅ String-Default (basic field) enable different Text-Wrappings
- ☢️ DNN Enhancements
- ✅☢️ Improve startup speed
- 🩸 Oqtane Enhancements
- ✅🩸 Improve DLL clean-up on startup
- ✅🩸 Fix compile of AppCode DLLs in inner-content
- ✅🩸 Interactive Server bugs closing signalr connections
- 🦹🏾♂️ Patron Features
- ✅⚡ Optimize data loading for better performance
- ✅🔢 Many new picker features for patrons
Version 17
Changes in 2sxc 17.00 (2023-12-23)
- ✅ DNN: Require CodeDome C# 7.3 to be installed
- ✅ Docs infrastructure can now be multi-versioned
- ✅ Show app icon in admin UI
- ✅ Ctrl+Click on toolbar buttons to open in new tab
- ✅ Completely refactor internal APIs to do advanced work and save data
- ✅ Change UI to use Angular 17 (from Angular 14)
- ✅ Get intellisense to work in VS Code
- ✅ Work out best way to do this in VS Code
- ✅ Work out best way to hide non-public APIs
- ✅ Work out best way to include docs (xml files, nuget, etc.)
- ✅ Support C# 7.3 in DNN with warning if not installed
- ✅ System Capabilities Framework for tagging apps which need certain technologies/features
- ✅ Crazy new compiled typed shared code
/ThisApp/Code
- see Hot App Code - ✅ New APIs on Typed Code
IsPublished
Publishing
Publishing.HasPublished
,Publishing.HasUnpublished
,Publishing.HasBoth
Publishing.GetPublished()
,Publishing.GetUnpublished()
,Publishing.GetOpposite()
Changes in 2sxc 17.01 (2024-01-18)
- Moved almost all internal APIs in the ToSic.Sxc namespace to hidden locations #3189
- Marked a lot of internal APIs so that they won't appear in IntelliSense
- ♨️ HotBuild: Improved errors in Razor so the user can better find them #3246
- ♨️ HotBuild: Improved errors when compiling ThisApp #3247
- ♨️ HotBuild: Support Editions such as
live
andstaging
with auto-fallback #3248 - ♨️ Roslyn: Improve error if
@inherits
ends in semicolon #3245 - ♨️ HotBuild: Show all compiled types in insights
- ♨️ HotBuild: Minimize exact pre-included namespaces
- ♨️ HotBuild: Performance Improvements
- 🟣 Toolbars: Show hover on
layout
button after a delay with module-infos #3251
New Features / Important Improvements
Kit.PageParameters
now has new commandsToggle(...)
,Remove(...)
andFilter(...)
see docs #3241 #3242 #3243- 🟣 Toolbars: Tweak Notes can now
delay
andlinger
#3250 docs - Create-New File now shows templates for
RazorTyped
,CodeTyped
and ApiTyped - ✏️ App-Management UI now uses a left-menu (experimental)
- ✏️ Edit-UI: Boolean fields can now be toggled by clicking on the label
- 🖼️ Resizer: Improve handling of images in virtual-application folders
Bugfixes
ITypedItem.Equals
now works #3213- Old Render APIs were broken, which affected News App 4.1.1 and others #3252
- Fix bug with
UniqueKey
which affected HotSpots App - Various minor UI bugfixes related to the entity-picker and dropdowns
v17.01.04
Minor enhancements and bugfixes
- Image toolbar now shows resize specs 🌟 #3270
- Toolbar notes now support a
format
=html
#3271 - Edit inner-content in accordions for non-website-admins #3234
- Old Razor base class -
PageData
didn't always work #3260 - HotBuild now respects additional assemblies from web.config #3272
v17.01.05
minor bugfixes l enhancements including
- dropdown pills fixed #3269
- REST Query API fails when used from "outside" #3274
- page picker in UI is broken in 17.01.04 #3276
- auto-serialized
ITypedItem
andIEnumerable<ITypedItem>
#3277 - refactor an internal old API to init app-objects #3275
- HotBuild Performance Improvements (locking / caching)
- HotBuild improve detection when CS files inherit from ThisApp base 1. classes
- Internal Lookup System Performance Improvements
- internal work for the new Picker-UI system
v17.01.06
- Upgrade System.Data.SqlClient #3209
- TweakButton on dynamic code #3279
- Edit menu in Dnn fix #3280
- Bug with dropdowns #3281
- Export/Import App now includes hidden entities #3282
- Export/Import App now includes Attribute SysSettings #3283
v17.01.07
- ajax reload on details-pages eg. blog-post #3287
- SQL DataSource can't connect #sql #3285
Changes in 2sxc 17.02 (2024-02-22)
- ✅ Improve infos about layout in toolbar
- ✅ Improve infos about image resizer in toolbar
- ✅ Improve Create New App Experience
- ✅ Create new app template
- ✅ Improve the new app wizard - allow selecting template
- ✅ Improve create-app code to use the new template
- ✅ Update Monaco to latest version
- ✅ Ability to change input config types/metadata - eg. skip
@String
when never needed - ✅ Improve HotBuild
- ✅ Improve initial list of included assemblies and namespaces @STV
- ✅ Improve caching of information how to build/compile to improve speed
- ✅ Add support for sub-folders
- ✅ Support Editions
- ✅ Improve error messages on building the ThisCode folder
- ✅ Improve error messages when building Razor and C# using Roslyn
- ✅ Improve detection so that build is locking (prevent multiple builds on high-load)
- ✅ Create system to generate models
- ✅ Provide special UI to build the code and debug Copilot
- ✅ Switch to
AppCode
ThisApp - ✅ Provide final place for base type
- ✅
Custom.Data.CustomItem
base class - ✅ GPS data
- ✅
- ✅ fix/improve date picker
- ✅ Ability to share field configurations
- ✅ Custom config inherit from multiple sources for keeping the Label
- ✅ Preserve config on export/import
https://github.com/2sic/2sxc/releases/tag/v17.02.00
Changes in 2sxc 17.03 (2024-03-04)
- ✅ New Pickers released with a lot of features, incl. Sources, custom labels, help, tooltips, multi-select and much more!
- ✅ Ability to install recommended apps in a later step!
- ✅ New typed razor
RazorTyped<TModel>
- ✅ New typed App using
IAppTyped<TSettings, TResources>
- ✅ Publish
As<Type>
andAsList<Type>
API - ✅ Publish
App.Data.GetAll<TModel>()
andApp.Data.GetOne<TModel>(id)
APIs - ✅ New
Custom.Data.CustomItem
base class with GPS data,As<Type>
andAsList<Type>
API - ✅ improve
App_Data/app.json
schema to includeeditions
for Copilot - ✅ Add template app
Basic
andEmpty
- ✅ Intellisense: Find way to link to the official docs from inside the help
Changes in 2sxc 17.04 (2024-03-11)
Improvements
MyView.Resources
added to complement existingMyView.Settings
#3315ITypedItem.Img(...)
added to complement exitsingITypedItem.Picture(...)
#3324- Dnn improve Roslyn build performance in many cases from ca. 2.5 seconds to 0.5 seconds #3322
- Query: Improve
$select
OData parameter - REST API - add
$select
OData Parameter #3319 - Razor / Typed Code: add a
Customize
helper ojbect #3316 - Admin UI - Data Scopes now show count
- Add Razor compile code help for more common problem such as accessing typed-items dynamically
- Improve razor compile help - show errors before warnings
- Picker - auto extract additional fields to retrieve based on placeholders in Label / Help texts etc.
Generate Data Models Improvements
- Include Scope name
- Include content-types in
Configuration
scope CustomItem
- implement==
and!=
operators to use wrapper equality- Lots of docs for custom data
app.json
editions configuration, addisDefault
Bugfixes
- UI Date Picker - fix but with UTC offset #3321
- UI Page Picker - fix, was broken in 17.03.00 #3320
- Calling Query using JS missed the
Id
property #3325 - Admin: state of the DateTime Show-Time toggle didn't properly get persisted #3318
Changes in 2sxc 17.05 (2024-03-25)
We believe this is stable, but ask the community to do in-depth testing so we can release an LTS
Highlights
- Improved Code-Generator to be in a standalone DLL
ToSic.Sxc.Code.Generate
- Improved Code-Generator to generate Razor, Code and WebApi base classes
Enhancements
- Impove image-resize tooltip #3329
- $2sxc JS used in modules which are rendered into Dnn themes #3333
- Improve logging of parameters of DataSources (eg. Value-Filter DS)
- Prepare for Oqtane 5 SSR
- Improve architecture for generating App-objects in the background
Bugs fixed
- various admin and replace-operations on inner-content #3299
- fix quickE when selecting content-blocks #3317
- Token templates - fix some toolbars #3328
- Fix issue with Oqtane urls
- Fix issue with Oqtane WebApis which affected Blog RSS feed
Changes in 2sxc 17.06 LTS (2024-03-28)
The first LTS (Long-Term-Stable) Release of 2sxc 17.
Easter LTS Release
- ✅ Prepare for Oqtane SSR (Server-Side Rendering)
- ✅ Provide Code Generator for Content Types, Razor and Services
- ✅ Improve discoverability of REST APIs
- ✅ Document new
ProTyped mode - ✅ Document new strong-typed mode
- ✅ Auto-Install more apps from catalog - even after some have already been installed - ca. 1d
- ✅ Feature to tell new auto-installer what apps are already installed
- ✅ App-Auto-Installer UI to add-install apps later on
- ✅ LTS
Bugfixes
- When accessing an App through another app (eg first going to Apps-Management) it show the data of the original app
- Opening features in Apps-Management didn't work reliably
- Edit-UI Picker / Dropdown code was cleaned up
- Copilot Razor Generator ready to use
- Copilot Service generator ready to use
- Copilot WebApi generator ready to use
- Copilot previously failed if the
AppCode
folder was missing - Fix to a data-caching issue in 17.05 (this was important)
Changes in 2sxc 17.07 (2024-05-04)
published/blogged:
- ✅/✅ 2sxc 17.07
- ✅/✅ 2shine 5.3 (May 4th)
- ✅/✅ Content App 17.07 (May 6th)
- ✅/✅ Mobius Form Builder 06.00 for 2sxc 17.07 (May 7th)
- ✅/✅ Release all apps as typed (May 8th)
Changes in 2sxc 17.08 (2024-05-16)
- ✅ WebApi in AppCode
- ✅ DataSources in AppCode
- ✅
ITemplateService
- ✅ Add
CmsContext.Block
andCmsContext.Module.Block
as well asBlock.Guid
- ✅ Cache Service internal
- ✅ Switch Edition UI
- ✅ Switch Edition Permissions for non-super users
- ✅ Update Image Resizer
- ✅ Re-Release another LTS ca. 17.09
Version 16
Changes in 2sxc 16.00 LTS (2023-05-04)
No relevant changes, just minor bugfixes + our convention to upgrade the main version every 6 months. We mainly finished the docs for various features, so this is what is now done.
- ✅ improve IConfiguration API - lighten the
IDataService
API - ✅ Document new data sources API
- ✅ finish Dynamic DataSources
- ✅ Document CDN / Asset management
- ✅ Document Formula improvements
- ✅ IDataService completed
- ✅...and documented
- ✅ New WYSIWYG mode completed (and documented)
- ✅ Toolbars Service Improvements: transport
data
for use in notes etc. ca. 0.5d 2dm - ✅ Data-conversion of entities to json in attribute... - documented
Changes in 2sxc 16.01 LTS (2023-05-23)
Various bugfixes + some enhancements.
- ✅ New rich WYSIWYG experience
- ✅ Edit-UI can now be opened to only show a few specified fields (feature API not yet public, but used in the new WYSIWYG feature) #3080
- ✅ New ITypedItem and AsTyped(...) API
- ✅ New Data.Content and Data.Header objects
- ✅ IDynamicEntity now has methods like
String(...)
,Int(...)
,Bool(...)
,Date(...)
,Decimal(...)
,Double(...)
,Long(...)
,DateTime(...)
,Float(...)
to convert values to the desired type. #3089 - ✅ Sort-Items UI was enhanced with remove, add, add-existing #3077
- ✅ DynamicDataSource now supports relationships #3078
- ✅ DynamicDataSource now shows better errors in Razor on compile issues #3084
- ✅ Razor now automatically suggests the
insights
button on the toolbar if there are errors #3085 - ✅ Enhancement: Serializing Entities to JSON now skips
empty
fields such as messages or ephemeral fields - ✅ Clean up Formulas code into better SoC @SDV
- ✅ Clean up ancient documentation which is probably invalid, but still seen by many :(
Dnn / Evoq
- ✅ Evoq: Better support for list management together with page workflow #3087
- ✅ Dnn Skin: Adding module to skin using IRenderService now allows editing entities #3092
Oqtane
- ✅ Enabled full WASM support for Oqtane #3083 (previously only server-rendering worked)
- 🪲 Improvement on how AJAX reloads work, resolves some reload-errors #3081
Minor Bugfixes
- 🪲 Two bugfixes related to Formulas v1 - returning date #3088
- 🪲 XML-Data-Export now works with IsContentAdmin permissions (before it required IsSiteAdmin) #3075
- 🪲 View list of data now works with IsContentAdmin permissions (before it required IsSiteAdmin)
- 🪲 Fixed issue with
GetService<ILogService>()
becauseILogService
had been renamed toISystemLogService
#3082
Changes in 2sxc 16.02 (2023-07-07)
Major Enhancements
- ✅ ImageFlow upgraded to version 0.10.0 - thereby making sure it works with FIPS enabled #3121
- ✅ Brand new typed code Pro mode
ITypedItem
andITyped
interfaces with properties such asId
,Guid
and methods such as.String(name)
, ...RazorPro
,ApiPro
,CodePro
base classes with completely reworked API such asAsStack(...)
,MyPage
orAllSettings
ApiPro
now serializes JSON using new defaults which are more common in WebApis (lower-case properties, auto-serialize entities, etc.)
Documentation
- ✅ Upgraded DocFX from 2.48.1 to 2.67.3 with major improvements to the generated docs
- ✅ Improved Documentation of all Razor and WebApi base classes!
Support for Developers
- ✅ Dramatically improved insights with more details and filtering options
- ✅ Created system to automatically detect and warn about deprecated code - using buttons in the toolbar
- ✅ Created CodeHelp system to guide developers when common coding mistakes were made
- ✅ New Obsolete system collects issues per App and shows them even if the current Razor is not affected
- ✅ Show CodeHelp warnings if a RazorPage doesn't have
@inherits
Various bugfixes + some enhancements.
- ✅ Refactored Razor and WebApi base classes to use Composition over Inheritance
- ✅ RazorBlade upgrade from v4.2.0 to 4.4.0 (also for .net 7 compatibility)
- ✅ Feature to not show edit-toolbar buttons on HTML coming from Resources
- ✅ Improve not showing a metadata-toolbar on images which are coming from demo-items
Dnn / Evoq
- ✅ Downgrade SQL to still work with SQL Server 2012 as people had trouble upgrading #3120
- ✅ Since ImageFlow was upgraded, the following DLLs were also upgraded
- Imageflow, 0.7.24 -> 0.10.0
- Imageflow.Net, 0.7.24 -> 0.10.0
- Imazen.Common, 0.7.7 -> 0.8.1
- Imazen.HybridCache, 0.7.7 -> 0.8.1
- Newtonsoft.Json, Version=10.0.0.0 -> 13.0.0.0
- ✅ As part of the upgrade we also had to upgrade some MS DLLs
- Microsoft.Bcl.AsyncInterfaces, Version=6.0.0.0 -> 7.0.0.0
- System.Collections.Immutable, Version=6.0.0.0 -> 7.0.0.0
- System.Text.Encodings.Web, Version=6.0.0.0 -> 7.0.0.0
- System.Text.Json, Version=6.0.0.0 -> 7.0.0.2
- System.Memory, Version=4.0.1.1 -> 4.0.1.2
Oqtane
- ✅ Oqtane 4.0 Support (with .net 7) #3123
- ✅ Reworked API Middleware to avoid conflicts with OAuth 2
Minor Bugfixes
- 🪲 Fixed issue with Swiper not being able to add slides #3108 #3112
- 🪲 Fixed issue with DatePicker in Edge and also added more cultures #3113
- ✅ Changed internal APIs to return RazorBlade
IHtmlTag
objects instead of previouslyIHybridHtmlString
#3098
Changes in 2sxc 16.03 (2023-08-21)
Enhancements around Typed Code
- ✅ Typed: rename
RazorPro
toRazorTyped
etc. #3147 - ✅ Make all typed objects very strict when checking if fields exist
- ✅ Add much more helpful info / error when fields not found
- ✅ Typed: Massively enhanced with strict checks and reduced the possibility of writing code which doesn't do anything
- ✅ Typed:
ITypedItem
now has a new .Picture(...) method making the code nicer #3135 - ✅ Typed:
ITypedItem
s can now be mocked #3141 to create alternate data in code when no data exists - ✅ Typed: New methods
ContainsKey(...)
,Keys(...)
#3142 - ✅ Typed: New methods
IsEmpty(...)
andIsNotEmpty(...)
#3144 - ✅ Typed: method
.String(..., scrubHtml)
now also accepts a string containing tags to remove #3146 - ✅ Typed: If an error occurs, much more information is provided as to how to fix #3143 #3145
- ✅ Typed Json: now also supports paths, so you can use
Kit.Json.ToTyped(jsonString).Int("Root.Child.Id")
- ✅ Typed Json: now also strict using propsRequired by default
- ✅ Typed: the property
.Dyn
now only exists onITypedItem
(entity-based) and not on other wrappers
Other Enhancements
- ✅ Image Resizer: New
Square
resize settings #3134 - ✅ Image Resizer:
ImageService
can now also handleIFile
objects and get the metadata automatically #3140 - ✅ Web Farm Cache: Updated for v16.02+ (enterprise customers only)
- ✅ Page Parameters: now support ITyped so you can use MyPage.Parameters.Int("id") and similar
Support for Developers
- ✅ Errors now highlight the
.cshtml
line which caused the error - ✅ Errors on mistyped property names now gives very detailed information about it
DNN / Evoq
- ✅ Image Resizer: Upgrade to dnn-imageflow 1.2.1 #3130
- ✅ Newtonsoft internal version in DNN Manifest now matches 13.0.3
Oqtane
- ✅ Oqtane: Better error when Oqtane in installed without sufficient DB permissions #3128 / #3131
- ✅ Internal: Code cleanup with warnings new EF-Core #3132
- ✅ Internal: EF Core QuerySplittingBehavior #3133
Minor Bugfixes
- 🪲 turnOn failed on AJAX reloads during editing #3127
- 🪲 Oqtane: Bugfix importing App Assets #3129
- 🪲 Web Farm Cache: Fix issue which occured on license uploads
- 🪲 Licenses: fix issue with multiple licenses / names resulting in an
unlicensed
message
Changes in 2sxc 16.04 (2023-09-05)
Highlight: UniqueKey
- ✅ Razor: New
UniqueKey
property (in Typed mode) #3151 - ✅ Razor: New
Kit.Keys.UniqueKeyWith(...)
for unique IDs and working with JS #3152
Images
- ✅ Images: Images in rich wysiwyg mode now are shown nicely after import into other site
- ✅ Images: Dialog-Options to set empty title and not use fallback #3150
- ✅ Images: Enable crop/title dialog for public files, with delayed toolbar and warning-hint #3057
- ✅ Images: Fix Safari bug with small images #2
- ✅ Images: Ability to specify alternate toolbar #3157
- ✅ Images: Ability to specify no toolbar #3158
- ✅ Images: Ability to use Toolbar outside of main picture/img tag using img.Toolbar() #3156
- ✅ Images: Metadata now also has a DescriptionExtended
Razor in Typed Mode
- ✅ MyModel: Improve handling fallback / required #3149
- ✅ App.Folder.Url to replace App.Path for clearer APIs
- ✅ App.GetQuery(...) to replace App.Query[name]
- ✅ All ITyped objects now behave strict by default
- ✅ Complete various scenarios for ITyped with unit tests, especially conversion of anonymous and json-based ITyped
- ✅ All ITyped now have APIs for ContainsKey, IsEmpty and IsNotEmpty
- ✅ Razor: Errors now highlight the .cshtml file with a 🎯 emoji
GetDraft / GetPublished(decided not to implement yet)- ✅ Override Equality operations - using ITyped.Equals
Oqtane
- 🩸 Improve indexing in Google #3154
- 🩸 Improve pre-render adding JS/CSS
- 🩸 Improve page header changes (title, metadata) using latest Oqtane 4 APIs
Patrons
- 🦸🏽 New feature to better control language fallback sequence (beta) #3159
- 🦸🏽 Improve showing expired features - important when testing a feature for 24h
Bugfixes
- 🪲 Languages: Bug in UI: Some labels and dropdown-labels didn't show in current language #3153
- 🪲 lots of minor bugfixes
Changes in 2sxc 16.06 (2023-09-20)
- ✅ Tutorials for new Pro mode / Quick-Ref
- ✅ Optimize build of 2sxc to use local config-files so it's easier for others to contribute @STV
- ✅ Improve JS build to make it easier for others to contribute
- ✅ Improve headers handling in Oqtane 4
Changes in 2sxc 16.07 LTS (2023-09-22)
- ✅ new
TypeItem.Parent(...)
- especially..Parent(current: true)
api #3173 - ✅ new parameters to the
.Picture(...)
incl.picClass
,imgAttributes
andpicAttributes
- ✅ fix bug where presentation data was generated even if not used #3185
Major: Release 16.07 LTS 🚀
Changes in 2sxc 16.09 (2023-11-22)
- ✅
TypedItem.Picture("Child.Property")
path notation - ✅ fix js minification of
inpage.min.js
- ✅ Release all apps in the new typed mode
- ✅ Blazor .net 8 / Oqtane 5 support
- ✅ Improve file-upload to prevent files with ".." in the name
- ✅ Improve DataSource Caching and cache-flushing
- ✅ Add new (beta ⌛) feature for copyright management (Patron AdvancedCMS) to add copyright info to each image
- ✅ Extend SQL Database to store
SysSettings
andGuid
on Attributes for future features - 🐞 Fix minor issue with old
.Code
for older Razor base classes - 🐞 Fix minor issue with edit-dialog in scenarios with multiple portal aliases
- 🐞 Fix minor issue with
IMetadata.Children(...)
/...Child(...)
#3217 - 🐞 Fix DataSource
LanguageModeler
#3219 - 🐞 Fix DataSource
TreeMapper
- 🩸 Oqtane: Adam backend didn't always serialize all properties #3206
Version 15
Changes in 2sxc 15.00 (2022-12-23)
- ✅ Improve logging
- ✅ Place it in an own library DLL for better reuse
- ✅ Create ICodeLog for improve logging in Razor and WebApi which ensures compatibility with existing code
- ✅ Improve automatic connecting logs with helpers so most
Init(Log)
become obsolete
- ✅ Update CsvHelper DLL to latest version
- ✅ Improve install-file names
- ✅ Update to Razor Blade 4
- ✅
Support Oqtane v4 with .net 7- ATM Oqtane doesn't plan on going to .net 7 - ✅ Tutorial App
- ✅ Improve internal structure
- ✅ Change how to show code vs results - mostly use tabs
- ✅ Razor APIs and Services
- ✅ Improve
ImageService
to have animgAltFallback
on.Img()
,.Picture()
and.ImgOrPic()
- ✅ Improve
ImageService
to better respect multi-language crop-settings and labels - ✅ Improve
Page
serviceParameters.Set(...)
to also allow bool, int etc. (not just strings) - ✅ Create Kit.HtmlTag
- ✅ Create
ITurnOnService
andKit.Page.TurnOn(...)
- ✅ Improve
- ✅ Data Sources
- ✅ Improve
ValuFilter
Data Source to also allowContains
on numbers
- ✅ Improve
- ✅ DB Clean-Up
- ✅ Remove SQL triggers which log XML data to
DataTimeline
which isn't used any more - ✅ Remove XML column
NewData
inDataTimeline
which isn't used any more
- ✅ Remove SQL triggers which log XML data to
- ✅ Internal APIs
- ✅ Improve Settings/Resources Stack with various unit tests
- ✅ Improve Settings/Resources Stack to have internal quick access to deep objects using a path like
"Images.Content.Width"
- ✅ Create API
DependenciesBase
to better handle log attachments to dependencies
- ✅ TinyMCE upgrade to v6
- ✅ Drop
_
prefix requirement on cshtml files by protecting them in an another manner- ✅ It's not needed on Oqtane, as the files are not accessible
- ✅ Only needed ATM on DNN because each file could be called from the browser directly
- ✅ Probably make sure all base classes refuse to render standalone
- ✅ Ability to use compressed GZIP data for DataTimeline (patrons)
- ✅ Technical features
- ✅ Toggle to turn on/off
- ✅ Rename internal
.data
folder toApp_Data/system
and similar as this folder will contain private data in future - ✅ Feature to deploy a corporate license in an installation to auto-enable certain features on all sites
- ✅ Settings: Ability to augment the preset configuration / settings with custom overrides
- ✅ Provide Google Services API Keys (Maps, Translate) from backend to edit UI
- ✅ Ability to set own default GPS coordinates for when not set
- ✅ Ability to configure them in settings
- ✅ Provide Default maps coordinates from backend to Edit UI
- ✅ Ability to import apps from folder directly (patrons)
- ✅ Functionality
- ✅ Hints / Infos to user
- ⏳ Documentation
- ✅ Integration of Google Translate in the Edit UI
- ✅ Functionality for one field
- ✅ For many fields
- ✅ Configure so it only affects string fields
- ✅ Ability to disable auto-translate on certain fields - eg. name fields
- ✅ Ability to add custom API key
- ✅ Clear warning when using the demo key
- ✅ Make sure the license is respected and easy to spot
- ⏳ Documentation for this (how the fields are selected, how to activate, etc.)
- ✅ Release v15 before XMas
Breaking Changes in 2sxc 15.00
Tip
In summary we've made a lot of internal breaking changes. But for all normal users it will have no effect at all.
We believe it will only affect you in these scenarios:
- If you have a custom DataSource, you will need to make some minor changes and recompile them
- If you used special, non-public Logging APIs you would need to update your work
- If you used any undocumented APIs, you will need to check if everything still works
API Changes that may affect you
- DataSource base class was completely refactored
see instructions - Old static
ToSic.Eav.DataSource
was removed (deprecated since v13) - Internal logging API
ILog
was completely refactored
see instructions - Internal object wrappers were completely refactored
see instructions - TinyMCE Upgrade to v6
- Database changes
- Minor API changes
Breaking Updates which probably don't affect anybody
- SQL changes - minor updates to the Database
- Internal APIs which were removed
- Static
ToSic.Eav.Data.Builder.AttribBuilder.AddValue(...)
- Static
Changes in 2sxc 15.01 (2023-01-31)
- ✅ Export / Import
- ✅ Create export bundle configuration to mark content-types and entities for export together
- ✅ Create json bundle export system
- ✅ Create json bundle import system
- ✅ Extend the file-based data loader to also load bundles
- ✅ Change all pre-loaded data items to be in bundles
- ✅ New Auto-Installer with search, list-view etc.
- ✅ Remaining docs for Features released in v15.00
- ✅ Finish API and docs for Logging v15.01
- ✅ Ability to import apps from folder directly (patrons)
- ✅ Documentation for google translate (how the fields are selected, how to activate, etc.)
- ✅ Indicate premium/patron features in UI and explain what it is and how to get it
- ✅ Visual indicators on buttons
- ✅ Visual messages in certain places
- ✅ Details dialog to know more about the feature
- ✅ Public DB of the feature explaining it in more details, how to activate etc. on https://patrons.2sxc.org/features
- ✅ Licenses / Features
- ✅ Ability to license a specific feature only (for enterprise customers)
- ✅ Feature to generate enterprise license fingerprints for enterprise distribution
- ✅ Allow parts of the license to expire earlier (for evaluation purpose)
- ✅ Internal / Data Management
- ✅ Ability to retrieve Entities for App, parent-App, global-App etc. for certain settings-pickers
- ✅ System query to retrieve such entities (need for Wysiwyg-functionality)
- ✅ Oqtane: fix compatibility so it works in Oqtane 3.3+
- ✅ FIPS Compliance
Note that the image resizer is not yet FIPS compliant, and it may take a while for it to become compliant- ✅ Change Secure Data Service to be FIPS compliant
- ✅ Change System fingerprint to use FIPS compliant SHA256
- ✅ Internal - re-org ApiKeys for UI to be in a better place
- ✅ Enhance Page DataSource with community requests
Changes in 2sxc 15.02 (2023-02)
This was a quick release, no changes to report ATM, they will be reported in v15.03
also done:
- ✅ Upgrade Blazor-CMS.org to use 2sxc 15.01 for real-life testing
- ✅ Create blog on Blazor-CMS.org
- ✅ Publish Tutorial in Blazor-CMS.org
- ✅ CSP Training at DNN Summit
- ✅ Image Perfectionist Training at DNN Summit
Changes in 2sxc 15.03 (2023-02-21)
- ✅ APIs
- ✅ EntityId now has a OwnerId property
- ✅
Kit.Page.Activate(condition: bool, features: "...")
- ✅ move to .net 6 (and drop .net standard 2.0) - almost done, last tests
- ✅ Bugs
- ✅ RazorBlade json serialization https://github.com/2sic/2sxc/issues/2998
- ✅ Support for use on DNN 404 pages
- ✅ Date was off in date-picker
- ✅ FIPS compliance on encryption APIs
- ✅ DataSources
- ✅ Pages DataSource
- ✅ Improve Pages DataSource with
LinkTarget
- ✅ Improve Pages DataSource with internal ability to configure what to get
- ✅ Improve Pages DataSource to have a UI to configure what to get - @2dm
- ✅ Improve Pages DataSource with
- ✅ Users DataSource Massively improved - with Roles and configurable
- ✅ Roles DataSource improved
- ✅ Pages DataSource
- ✅ Internal - Rework Getting-Started Server to be latest and greatest @2ro ... and more see https://github.com/2sic/2sxc/releases
Breaking Changes in 2sxc 15.03
Tip
In summary we've made a lot of internal breaking changes. But for all normal users it will have no effect at all.
We believe it will only affect you in these scenarios:
- TODO
API Changes that may affect you
- An internal user property
IUser.IsDesigner
was renamed toIUser.IsSiteDeveloper
- An internal, deprecated user property
IUser.IsAdmin
was removed - An internal, deprecated user property
IUser.IsSuperUser
was removed - An internal property
IUser.Guid
was changed fromGuid?
toGuid
- The
Users
DataSource had a property calledIncludeSystemAdmins
which was changed frombool
tostring
to allow for more options - The
Users
DataSource had a property calledRoleIds
which returned a non-standard string-array. It has been removed, and the newRoles
returns standard related entities. - Removed static
ToSic.Eav.Data.Build.Entity(...)
method which was deprecated in v12
API Changes which should really not affect you
These are internal APIs which we changed to make everything more immutable. They should never have been in use outside of the internal code.
- Changed
IValue.Languages
fromIList
toIEnumerable
and made it immutable - Change
IEntity.Attributes
fromDictionary<string, IAttribute>
toIImmutableDictionary<string, IAttribute>
as a step to later make it immutable - Removed some old, probably never used APIs on
IAttribute<T>
such asIAttribute<T>[int[] languageIDs]
IAttribute<T>[string]
IAttribute<T>[string[]]
IAttribute[string[] languageKeys]
- was always marked as private
- Changed the type of
Attribute.Type
from string toValueTypes
to make it more strong-typed - Removed the property
Attribute.ControlledType
which previously contained the ValueType
Changes in 2sxc 15.04 (2023-03-22)
- ✅ Oqtane: Compatibility with Oqtane 15.04
- ✅ Formula improvements
- ✅ Get App or global settings for formulas
- ✅ Better support for promises
- ✅ Ability to set the value of another field
- ✅ Intellisense on Formulas
- ✅ Cdn remapping to other cdn like cdn.2sxc.org or custom CDN
- ✅ Ability to remap all cdn urls to a different url
- ✅ New template CDN on https://cdn.2sxc.org
- ✅ New template repo for anybody that wants to create their own CDN or host on their path https://github.com/2sxc/cdn.2sxc.org
- New APIs for Data Sources finalized
- ✅ Public
IDataFactory
API - ✅ Public
IDataSourceFactory
API - ✅ Enhanced
IDataSource
API - ✅ Prototype of live DataSources
- ✅ Public
- ✅ Make everything internal immutable
- ✅ Improve WYSIWYG
- ✅ Ability to select which "mode" the editor is in, affecting toolbars
- ✅ Allow selected mode to affect other things (like deny image-drop if in text-mode)
- ✅ Sections to better align images
- ✅ Use classes to determine size instead of styles
- ✅ WYSIWYG Images which auto-resize on the server based on size (eg 1/2 of the screen)
- ✅ New Data Sources and System Queries
- ✅ New Data Source
Scopes
- ✅ New Query
Scopes
- ✅ New Data Source
MetadataTargetTypes
- ✅ New Query
MetadataTargetTypes
- ✅ New DataSource
Licenses
- with state - ✅ New Query
Licenses
- ✅ New DataSource
Features
- with state - ✅ New Query
Features
- ✅ New DataSource
Sites
- ✅ New Query
Sites
- ✅ Improve data sources for
Pages
- ✅ New Data Source
- ✅ Query Improvements
- ✅ Allow edit/new to be done in a query-selector
- ✅ Get query to know if entity can be edited (based on AppId)
- ✅ We've renamed the system queries to have a much simpler name such as
System.Sites
which we'll make available to public use soon. - ✅ New LookUp for Settings- and Resources-Stack - to use
Settings
andResources
- ✅ Change internal key for
Settings
toMyConfiguration
to avoid naming conflicts (breaking but probably no impact)
- ✅ Custom DataSources - breaking
- ✅ New
IDataFactory
API - ✅ New
RawEntity
andIRawEntity
API - ✅ New API for data sources to make data generation easier
- ✅ Improved custom DataSources API
- ✅ New base class
CustomDataSourceLight
- ✅ New base class
CustomDataSourceAdvanced
- ✅ Error handling is now simpler / more standardized
- ✅ New
- ✅ Jewels
- ✅
CmsContext.View
now has aPath
,PathShared
,PhysicalPath
andPhysicalPathShared
property - ✅
Page.Activate(...)
now has acondition: true
parameter which lets you only activate a feature if a condition is met - ✅
Page.Parameters
has newGet(name)
andGet<type>(name)
andGet(name, fallback: 7)
APIs to make it easier to work with url parameters
- ✅
- ✅ The Toolbar now has a new
Info
button which is used to show an info-bubble to the user or provide a help-link to somewhere. You'll soon see this in our standard apps to inform users about special cases such as "why the toolbar isn't available on demo-data" - ✅ Bugs fixes
- ✅ 2sxc in DNN Skins on 404 pages https://github.com/2sic/2sxc/issues/2986
- ✅ Issue with Mobius Forms in v15.03
Breaking Changes in 2sxc 15.06
Tip
In summary we've made a lot of internal breaking changes. But for all normal users it will have no effect at all.
We believe it will only affect you in these scenarios:
- TODO
API Changes that may affect you on IEntity
These were internal APIs which were not publicly documented, but may have been used by some developers.
IEntity.GetDraft()
was removed to ensure the entity is immutableIEntity.GetPublished()
was removed to ensure the entity is immutable
Note: GetDraft()
and GetPublished()
are still available on DynamicEntity in Razor and WebApi.
They were only removed on IEntity
.
Renamed DataSources
These data sources had uncommon names, and were renamed to be more consistent. We believe that they were only used in VisualQuery and not in code, so it should not affect you.
CsvDataSource
is nowCsv
SerializationConfiguration
is nowSerialization
Breaking Changes in EAV and 2sxc v14
We try to minimize breaking changes, and most breaking changes won't affect your work, because it's internal API. We're documenting it here to ensure you know what happened, in case you still run into this.
Summary
V14 did some clean-up of internal APIs, but otherwise there are no known breaking changes.
Note that these changes could be seen as a breaking change for certain users:
All Changes V14
14.00 - 14.07.05 (2022-Q2 & 2022-Q3)
Q2
- ✅ Image-Service/Picture
- ✅ Image primary area / corner selector
- ✅ Patron features with licensing & payment system
- ✅ LightSpeed cache
- ✅ v14 Release
- ✅ DNN 9.6.1 only
- ✅ Formula Boost with many new features #1
- ✅ DNN DI integration
- ✅ Update turnOn to 0.1.2
- ✅ CSP for the site (DNN only ATM)
- ✅ Formula Boost #2 (more context info, features-infos, etc.)
- ✅ NPM Types updated to latest release
- ✅ Enterprise Features which will be availabe for bigger sponsors
- ✅ Patron-System, where sponsors of 2sxc get some extra features
- ✅ Standardize how to integrate into other systems (non-Dnn/Oqtane)
- ✅ Service Kits
- ✅ Deprecation System
- ✅ Toolbar Services v1
- ✅ JS Docs updated to the latest version and auto-generated
- ✅ Tutorials Formulas
- ✅ Update all Apps to the lastest/greatest conventions
- ✅ v14 LTS
Q3
- ✅ Toolbars Service Improvements
- ✅ icon-metadata
- ✅ group C# API - ToolbarBuilder now has
Group
command - ✅ SVG icons - Toolbar Buttons can now use SVGs for icons (usually base64 encoded)
- ✅ base64
- ✅ ui multiple params
- ✅ bugfixes
- ✅ params multiple params
- ✅ array params
- ✅ Debug-logging on Oqtane client side code, bugfixing ca. 0.5d
- ✅ Change storage of
app.xml
toApp_Data
, change how import works and enable import-from-folder/git - ✅ Clean up JS code, latest webpack, packages etc. ca. 1d
- ✅ Infrastructure for automated testing of JS - ca. 5d
- Apps / App Maintenance
- ✅ Update most apps which used ephemeral variables for formulas to just use parameters (new in v14) ca. 0.5d
- ✅ new Timeline Apps
- ✅ new Files App
- ✅ new Jobs
- ✅ Make many Apps backwards compatible with Bootstrap 3 for a big customer
- ✅ Have the core apps tested & optimized for WCAG for a government customer
- ✅ Re-release sxc-angular
- ✅ Remove dependency on SharpZipLib
14.09 - 14.12 (2022-10)
- ✅ Improve UI/Flow of system registration (ATM still confusing)
- ✅ Make sure edit-ui doesn't need material fonts from CDN for icons
- ✅ Create a new
app.json
configuration file for 2sxc apps to tune how export/import works - ✅ Remove Newtonsoft JSON and migrate to System.Text.Json
- ✅ Improve handling of app-metadata (resources, settings)
- ✅ Enable init and import completely new app directly from folder/git copy 1d SDV
- ✅ Ability to sync Apps through git including the Assets and ADAM
- ✅ Improve handing feature details to edit-ui
- Data Sources
- New data source
Users
- New data source
Roles
- New data source
- ✅ Update Imageflow to latest version
- ✅ Remove dependency on Newtonsoft - only use System.Text.Json
- ✅ Create https://schemas.2sxc.org for json schemas
- ✅ Create JSON Schemas for image recipe and app.json
- ✅ More formula tutorials how to call a WebAPI
- ✅ Security update System.Data.SqlClient
- ✅ Oqtane 2shine Theme release
- ✅ cre8magic v0.0.1 released
14.12.00 - 14.12.03 LTS (November 2022)
- ✅ Publish blazor-cms.org
- ✅ get a great page speed - 95%+
- ✅ Get blazor-cms.org to index really well in google
- ✅ v14 LTS #2 ca. v14.12 🚀
Important Changes
- Assembly Binding Issue on Installs from 2sxc 13.04 to 14.02
- Change in App Zip Package in v14.08 v14.08
- Change in App Data Folder in v14.08 v14.08
- New app.json with Export Exclude v14.09
Version 13
TODO
- New WebApi route
app/auto/data
to replace/app/auto/content
- the old one will still work, but we won't document it any more, because it was a confusing name - Lots of metadata stuff... TODO:
- New
sxc.data
andsxc.query
Breaking Changes in 2sxc 13.00
API Changes that may affect you
An old, non-DI feature for Inner Content is being deprecated and will be removed in v14
see instructionsAn old feature for publishing module InstanceData as JSON is removed
see instructionsAn old feature to create DataSources is removed
see instructionsTwo old data-conversion features DataToDictionary and EntitiesToDictionary were removed
see instructionsSome internal functionality which enabled
IEntity
objects to convert links containingfile:...
andpage:...
has been removed. This only affects special deep code calls onIEntity
and does _not affectDynamicEntity
objects in Razor see instructionsThe old feature
Eav.Factory.Resolve<T>()
was deprecated and will be removed in v14
see instructionsThe old feature
BlockDataSource.Cache.GetContentType(...)
was removed see instructionsThe Dnn Static
ToSic.Sxc.Dnn.Factory
is being deprecated and will be removed in v14 see instructions
Major Updates with may affect you
- The Image Resizer is being replaced with ImageFlow
- The App containing Site-wide settings is changed to
Primary
- previously it used theContent
app for this. We believe this won't affect many users, as the settings-stack is still very new in v12
Things which probably don't affect anybody
- SQL changes - minor updates to the Database
- .net Framework and Dll Updated to Match Dnn 9 Requirements - but still works in Dnn 7.4.2
- .net Framework 4.7.2 now required (previously .net Framework 4.5.1)
- .net Standard 2.0.3 required (previously .net Standard 1.6)
Important: This will be referenced in theweb.config
upon installation - Dependency Injection updated to .net core 2.1.1 (previously 1.1)
- Newtonsoft.Json updated to v10.0.3
- Entity Framework updated to 2.1.1 (previously 1.1) - Oqtane is unmodified and uses 3.1.4
- Dnn DLLs renamed
ToSic.Sxc.Dnn.dll
becameToSic.Sxc.Dnn.Core.dll
for consistencyToSic.SexyContent.WebApi.dll
becameToSic.Sxc.Dnn.WebApi.dll
ToSic.SexyContent.Razor.dll
becameToSic.Sxc.Dnn.Razor.dll
- An internal object
ToSic.Eav.Apps.State
was removed
Internal APIs which were removed
- Static
ToSic.Eav.Data.Builder.AttribBuilder.AddValue(...)
13.01
- JSON fields
- Link.Image with srcSet Parameter ?
- ToSic.Sxc.Services.IFeaturesService
13.02
- JS
- Global Apps
13.03 TODO
13.04 TODO
13.05
- Moved the
Web.IInPageEditingHelper
toServices.IEditService
- this is non breaking and shouldn't matter, as people won't be using the direct inteface - Moved the
Web.ILinkHelper
toServices.ILinkService
- this is non breaking and shouldn't matter, as people won't be using the direct inteface
13.x 2022-Q1
- ✅ Improve Tutorials massively
- ✅ View Metadata
- ✅ Oqtane Website Mode which can be indexed in Google
- ✅ Improve Feature-Management
- ✅ IFeaturesService
- ✅ Shared Apps across Sites (Patrons only feature)
- ✅ Enable editing of Shared Templates / files
- ✅ Enable shared APIs
- ✅ Disable translation of specific content-types
- ✅ Dnn Factory replacement to render module or get DynamicCode outside of 2sxc
- ✅ Fully integrate with Dnn Dependency Injection
- ✅ Improve DI Scopes to Module-Level
- ✅ IImageService
13.x LTS 2022-Q2
- ✅ v13 LTS
Version 12
Changes Version 12.10
- New Children DataSource
- New Parents DataSource
- New Metadata DataSource
- New MetadataTargets DataSource
- The StreamMerge DataSource got three new out-streams
Distinct
,And
andXor
- Moved IPageService from previously ToSic.Sxc.Web to ToSic.Sxc.Services but preserving compatibility with old code
- Moved IPageService from previously ToSic.Sxc.Web to ToSic.Sxc.Services but preserving compatibility with old code
Breaking Change Version 12.10
- Jquery is completely removed. This shouldn't affect your code, since all old code usually runs in DNN where jQuery is included by default.
Changes Version 12.06 LTS
No relevant changes
Changes Version 12.05
- Introduced IJsonService for json serialize/deserialize
- Introduced IConvertService for simple data-type conversion, also available on the
Convert
property of Razor12 and Api12 - Introduced ToSic.Sxc.Services.ILogService to log messages to the system (Dnn/Oqtane)
- Introduced IMailService to easily send mails cross-platform
- Introduced ISecureDataService to use encrypted settings
- Introduced IRenderService for inner-content rendering (Oqtane code must use this)
- Published ToSic.Eav.DataFormats.EavLight to better document simple eav data
- Published IConvertToEavLight as the new standard way to prepare entities for WebAPI serialization.
This is meant to replace previous code using objects such as
EntitiesToDictionary
orDataToDictionary
which are now marked as obsolete. - New Razor12, Api12 and Code12 Classes now don't support old, obsolete APIs anymore
- Link.Image now also accepts
parameters
as a parameter - Link.Image and Link.To always create safe urls now (spaces are encoded etc.)
- Link.To and Link.Image now have a parameter
type
which can be"full"
to ensure domains are always added to links (for use in APIs generating RSS etc.) - Update to RazorBlade v3.7
- Edit.Toolbar now supports
condition
so that toolbars may or may not be created based on a true/false value - Link.Image now also accepts a
factor
oraspectRatio
which is a string like1:2
or3/4
AsDynamic(...)
now also wraps anonymous objects in quite an amazing way- Bugfix: lots of small ones
Breaking Change Version 12.05
V12 adds new properties to Razor and WebAPI which could result in some surprises: Path
, Convert
, Settings
, Resources
and DevTools
.
Especially the new Path
and Convert
could clash with existing code which had @using System
or @using System.IO
so the code would just read Path.GetFileName(...)
or something.
Because of this, we only give the latest classes Custom.Dnn.Razor12
, Custom.Dnn.Code12
, Custom.Hybrid.Razor12
, Custom.Hybrid.Api12
etc. these properties.
This means that previous base classes do not have these by design, and we encourage you to move to these latest base classes.
Important: 2sxc 12.00 - 12.04 also had some of these properties on
ToSic.Sxc.Dnn.RazorComponent
as well asToSic.Sxc.Dnn.ApiController
. So if you were eager to use these properties but didn't change the base class, you were able to use it. To protect thousands of upgrade-scenarios we had to take them away from the old base classes. Sorry!
Possible Breaking Changes
- We believe nothing broke, but it could be that some commands on
EntitiesToDictionary
orDataToDictionary
were accidentally changed. Pls report so we can fix that. - The
Link.To(...)
now returns safe URLs. This should not be an issue, but in rare cases post-processing of the string returned may expect spaces or something, which are now%20
- We disabled old obsolete APIs on the new Razor12, Api12 and Code12 base classes. In case you were using this (not likely) you'll get an error telling you about this.
Changes Version 12.04 incl 12.03 which was not officially released
- Settings Stack and Resources Stack added, and the
Settings
/Resources
object now have this - Global
Settings.Images.xxx
settings defined for Content, Screen, Lightbox and Section - Global
Settings.Resources.xxx
defined for fancybox3, fancybox4, bootstrap4, bootstrap5 - Link.Image API created to support predefined sizes/resize modes etc.
- Created feature where DynamicEntities can browse to sub-items using their identifier (used for
Settings.Images.Content
whereContent
is actually the title of a sub-entity) - Added debug-feature for DynamicEntity get
- String-Dropdown inputs now have a value-key presets option (instead of the key-value which was flaky) and added support for escaping special characters
- #Oqtane 2.2 support added
- Introduced Monaco (VS-Code online) editor for beta-testing source-editing
Breaking Change Version 12.04
- DynamicEntity now has a property Count because it's a list as well, this could cause issues if a content-type has a property
Count
- DynamicEntity is now always a list. Because of this we removed the
DynamicEntityWithList
object. We believe the type is never referenced in user code, but if it is, this would be a breaking change. - Many parts that prepare Entities returned a
Dictionary<string, object>
and now return anIDictionary<string, object>
.
We believe this shouldn't hurt much, since the result would usually be in avar
or returend directly to the API for streaming, but in case someone had used explicitly typed code, this will require a minor change
Changes Version 12.02
- Formulas feature finalized
- DynamicEntityStack object created
- Hybrid
IPageService
created withActivate
and similar features CmsContext
was enhanced withView
information- Content-Type icons can now be stored in the app with an
[App:Path]/image.jpg
style reference - Enabled view-configuration to configure search behavior incl. not-to-index or what streams should be indexed
turnOn
created / deployed- #Oqtane 2.1 support added in 2sxc 12.02.01
Changes Version 12.00 Todo
Version 11
Changes Version 11.00
Breaking Changes
The following changes are all super-low-profile, but we want to document them just to be through:
DataStream
andIDataStream
loses a very old property called.LightList
- we're pretty sure it's not in use anywhere, if you have it, just use.List
instead.
Enhancements
- Brand new Admin UI based on Angular 9 and Ivy with new Code-Editor, new VisualQuery and much more
- Razor CodeBehind
- Automatic Polymorphism
- Updated Razor Blades to 3.02 with the new
Tags.SafeUrl(...)
command - Field: Boolean-Tristate which saves true/false/null
App.Data.Create(...)
now returns entities it just created
Changes Version 11.01
Enhancements
- In-Page Toolbar now recognises sub-item lists and provides sorting and editing buttons #2009
- Item-lists now have a button to add existing items to them #1278
- New system to create extensions in an app, in the system folder
- Ability to create custom Input Fields just by placing them in the system folder #2070
Minor
- Improve Equality Check for DynamicEntities and EntitiesInList #2075
- Data-table in admin UI now shows
Title
field no matter if there is another field which is the title #1639 - Button to flush app-cache in admin-ui #2073
- 2sxc Insights now available from the super-user toolbar #2069
- PT translations are added again #2064
- Loads of enhancements and minor issues in the UI
Changes Version 11.02
Enhancements
- App-Extensions system in the folder
system
- Custom WebComponent based input fields #2082
- API to reconfigure the wysiwyg input control #2090
- Show view use with links to pages and more #2077
- UI - fields can now be set to not-translate #2086
- UI - boolean can now show different labels based on the value it has #2085
Minor
- Add HR language pack for editor #2087
- show app-name in admin ui
- show app-icon in apps-management #2078
Changes Version 11.03 - todo
Changes Version 11.04 - todo
Changes Version 11.05
- Old Edit UI be removed
- Old Admin-UI be removed
- APIs which only the old UIs used be removed
- Old helper JS for AngularJS apps (located in
/js/angularjs
) will be removed from the distribution. They had not been updated for over 3 years and we believe they were not widely used. Anybody upgrading will still preserve the files that are there. If you really need them, download an old release of 2sxc and get them manually.
Changes Version 11.06 - 11.11 - todo
👉 See the Project Issues
Changes Version 11.13
- VisualQuery 3 with a lot of new features
- Click on a stream shows what's in that stream
- Much better error handling to avoid queries from crashing if a stream has an error
- All internal DataSources were updated to use this new Error-Handling
- Output of Query is now tabbed which is much nicer to use
- Visual-Query only returns top 25 results by default to help with creating queries with large amounts of data
- UI was enhanced to show more user-friendly names/infos
DynamicIn
was introduced so DataSources can indicate that they expect a lot of In-streams- UI enhanced with better/larger buttons/icons
In
Streams are now managed better so they can connect before it's known if the sourceOut
actually has that stream
- New DataSource Error to provoke an error in a Query for testing
- New DataSource SerializationConfiguration lets you determine how things are serialized
- DataSource AttributeFilter enhanced to have keep-all or remove-all and multi-line configuration (easier)
- New DataSource Tutorial with updated sample code
- Insights-Logging was enhanced to log Exceptions (used in the VisualQuery Error handling)
Bugfixes
- Toolbar had issue when color code was numbers only
Changes Version 11.14 - 11.22 LTS TODO
Breaking Changes in EAV and 2sxc v11
We try to minimize breaking changes, and most breaking changes won't affect your work, because it's internal API. We're documenting it here to ensure you know what happened, in case you still run into this.
Summary
There were small breaking changes in 11.00 to 11.11 but they were internal so shouldn't affect normal developers.
Breaking Changes Version 11.07 - Drop the old edit UI
- In 11.07 the old edit UI was removed, so customizations for that UI would not be in effect any more.
Breaking Changes Version 11.10 - Mainly Dependency Injection
- In v11.10 we used much more dependency injection than ever before and stopped using static values which were still in the API in many places. Because of this, certain helper objects to create entities or lookup values were changed and their constructors were changed. We invested a lot of time to try to ensure that old APIs still work, but in case you're hit by one of these, make sure you check the DI and switch to resolving the objects using DI.
Breaking Changes Version 11.11 - Language Detection
- Previously the language detection used the Thread culture. Turns out this wasn't reliable because Dnn does some funny stuff (probably historical) which means that API-calls ended up using the language stored in some cookie instead of the one specified by the URL. We changed this, which should be more reliable. But if you were relying on this strange effect, then it may be a breaking change.
- Internally our tokens were also using the thread culture. When we changed this, we also had to change how tokens pick up the language. In rare cases this may affect you.
- We changed all tokens to always resolve boolean values to
true
/false
(previously they would have been changed to the current language, likewahr
for german). We believe this change is only an improvement, and should ensure that internal resolves in Queries etc. result in reliable output.
Breaking Changes Version 11.11 - DataSources: DataSourceConfiguration
Note that we also improved the DataSourceConfiguration
to an interface IDataSourceConfiguration
and documented this.
As a side effect the API stays the same, but you will have to recompile your data sources for them to work again - sorry.
Breaking Changes Version 11.11.03 - IEntity Values
IEntity
had a command calledValue(fieldName)
which was probably never used. The idea used to be that it does language lookup internally, but we refactored this out since it could never be fully reliable because the full language list wasn't known to theIEntity
. So we re-purposed the method (assuming it's not used) to just lookup the first occurance of the value. This way it`s useful for configurations and similar which are not multi-language.IEntity
also had aValue(fieldname, lookup)
method. We are deprecating it, and making the lookup not happen from now on. We believe it was never used.IEntity
had a command calledPrimaryValue(fieldName)
which was probably never ever used, so we're deprecating it. UseValue(fieldName)
instead.
Breaking Changes Version 11.11.03 - Other
- UI Toolbar dropped the button and command for
item-history
, as the history is now part of the edit dialog
Version 10
Changes Version 10.01 - 10.09 LTS
- Develop and fine-tuning of the new Edit-UI based on Angular 8
Changes Version 10.20-00 to 10.20-05
- Enhanced ListCache so it will prevent parallel buildup - important for long-loading DataSources like SharePoint DataSources
- Updating to RazorBlade 3.1 which doesn't need extension methods
Changes Version 10.20-06
- Created
AsDynamic(string)
- Created
AsDynamic(DataSource)
to enableAsDynamic(Data)
instead ofAsDynamic(Data["Default"])
Changes Version 10.21
- New
AsList()
for better code - New
AsDynamic(string)
to work with json /dist/
is now cleaned up on every update, to better distribute changing JS file structures
Changes Version 10.22
- Query Params added for VisualQuery
- Created QueryRun DataSource
- Insights now includes the code file and line numbers
- Insights now also measures time needed to execute some code
- Various performance enhancements
- Improved SoC for AppsCache and AppRoot DataSource
Changes Version 10.23
- Lots of logging enhancements
Changes Version 10.24 LTS
- New stable LTS
- Improved/fixed QueryRun DataSource
- Improved Insights
- Enhancements to use 2sxc with Redis Cache
- WYSIWYG enhancements for better H1-Hx, P and Blockquote
- Performance enhancements
- Intenal refactoring for APIs
- Introduced an internal Compatibility-Level to disable very old features when using new RazorComponents
Changes Version 10.25 LTS
- Changed how the $2sxc client JavaScripts are loaded for much better performance and better Google PageSpeed
- Enabled various features for the Content area which previously were hidden, like Resources and Settings
- Released brand new Content-Templates App with best-practices for 10.25
- Fixed bugs with Evoq Page Publishing
- Enhanced the ValueFilter DataSource to handle dates which were null
Changes Version 10.26
- TinyMCE Updated to 5.1
- Enhanced
CreateInstance
API to also work when compiling Razor files from a WebApi - New DataSource
StreamPick
- New automatic Param called
[Params:ShowDrafts]
to be used in VisualQuery - returnsTrue
orFalse
- New tokens
[App:AppId]
and[App:ZoneId]
to use in VisualQuery calles (dropdown from query) - Changed List-Caching bbehavior to create more reliable cache-keys for complex queries (previously it only went through
Default
streams to generate the cache-key)
Changes Version 10.27
Possibly breaking changes
- Because the dynamic entity list now has a type which is dynamic, it cannot be cast to
List<dynamic>
any more.IList<dynamic>
works, but in case you have any code casting it toList<dynamic>
you'll need to change that to eitherIList<dynamic>
orIEnumerable<dynamic>
.
New Features / Major Improvements
- Changed DynamicEntity so that accessing a property which contains many other entities it will return a
DynamicEntityWithList
. This allows Razor files to access the properties like.EntityId
or.FirstName
of the main entity in a sub-list easily without requiringAsList(...)
#1993 - Updated Quick-Dialog to use Angular 9, Ivy and the latest Dnn-Sxc-Angular #1992
- New DataSource AttributeRename #2004
- Completely refactored internal list management API #1995
- Complete refactoring of the inpage code to make it typesafe (no more
any
types) - Created brand-new, simpler way to create custom Toolbars and specs
- Introduces JS/API 2sxc-Insights for debugging In-Page code
Enhancements
- Performance-Enhance App DataSource to delay building objects until needed #1991
- Performance-Enhance internal Token Lookup #1998
- Enhanced Dnn Search Index logging #1997
- Corrected help-links on all data sources #1994
Bugfixes
- Cache-All-Streams only used the Default-Streams for Cache-Key identification #1988
- QueryRun DataSource doesn't show statitics on all streams #1989
- Modified date and Owner information were missing on json stored entities #2005 / #2006
- Fixed bug in JS API for non-2sxc endpoint resolution #2000
- Queries didn't resolve Dnn tokens when accessed in the Search Index #1999
Breaking Changes in EAV and 2sxc
We try to minimize breaking changes, and most breaking changes won't affect your work, because it's internal API. We're documenting it here to ensure you know what happened, in case you still run into this.
Summary
Version 10 has a lot of small breaking changes because we restructured the internal API so it's consistent when we publish it. All these things shouldn't affect you, because they were internal APIs, but in case it does - here's what we did.
Version 10.22 and 10.23
- Renamed the
RootDataSource
and the Interface toIAppRoot
- Split SOC of the
AppRoot
DataSource so that caching, Root-Metadata and ListCache is fully separate - Since the Logging system now auto-picks up the code lines and names of the methods, we simplified the commands and dropped some parameters.
- Moved quite a bit of the DataSource objects into sub-objects, again for SOC.
Version 10.20-04 (ca. 2019-12-03)
- Renamed
DataTableDataSource
toDataTable
, old name still works. - Renamed
ExternalDataDataSource
toExternalData
, old name still works. - Renamed
ToSic.SexyContent.DataSources.ModuleDataSource
toToSic.Sxc.DataSources.CmsBlock
, old name still works. - Renamed
ToSic.Eav.DataSources.VisualQuery.VisualQueryAttribute
toToSic.Eav.DataSources.Queries.VisualQueryAttribute
, old name still works. - Renamed
ToSic.SexyContent.Environment.Dnn7.Factory
toToSic.Sxc.Dnn.Factory
, old name still works. - Renamed
ToSic.Eav.DataSources.BaseDataSource
toToSic.Eav.DataSources.DataSourceBase
for consistency, old name still works. - Moved the LookUp namespaces into the Core DLL
Version 10.20-02 (ca. 2019-11-22)
More internal changes which shouldn't affect anybody, but make the API ready for public docs...
- Moved/renamed the internal
Eav.AppDataPackage
toEav.Apps.AppState
- Moved/renamed some internal interfaces like
Entity...
- Did a major change for how
Attribute<T>
for relationships work.
Before they wereAttribute<EntityRelationship>
and now they areAttribute<IEnumerable<IEntity>>
.
This also affectsValue<EntityRelationship>
which is nowValue<IEnumerable<IEntity>>
- Moved
Tenant<T>
andContainer<T>
including matching interfaces toEav.Environment
- Renamed
IAppIdentity
toIInAppAndZone
andIZoneIdentity
toIInZone
- Renamed
ICacheKeyProvider
toICacheKey
- Renamed
CacheChainedIEnumerable<T>
toSynchronizedList<T>
- Moved/Renamed
MetadataFor
toEav.Metadata.Target
. Left old name compatible. - Moved some extension methods for IEntity from
ToSic.Eav.Data.Query
toToSic.Eav.Data
- Changed
Permissions
to be strong-typed EntityBased objects
Version 10.20.01 (2019-11-12)
- Internal code now uses the term
Header
instead ofListContent
. External code provides both for backward-compatibility - moved internal interfaces for engines (Razor/Token) to final namespaces
ToSic.Sxc.Engines
IEngine
EngineBase
ITokenEngine
IRazorEngine
- corrected architecture - some template-management code had slipped into
Eav.Apps
, was moved back toSxc.Apps
- The
Template
object was moved fromEav.Apps
toSxc.Views
and we added an interfaceIView
. We also renamed the internal propertiViewNameInUrl
toUrlIdentifier
. - To correct the API a CmsManager was created extending the AppManager, which is in charge of Views
- Moving internal stuff related to content blocks
IContentBlock
fromSexyContent.Interfaces
toSxc.Blocks
- from
ToSic.SexyContent.ISxcInstance
toToSic.Sxc.Blocks.IBlockContext
- actually moved a lot of things there incl.
ContentBlock
nowBlockConfiguration
and more - all internal stuff
- Moving the
ToSic.SexyContent.App
toToSic.Sxc.Apps.App
- In a razor page, we added the preferred
Purpose
. The oldInstancePurpose
will still work - Placed some things we just moved in 10.20 to a final place - since it's a very recent change, we updated the docs in the 10.20.00 section
Changed, but completely internal
- Some namespaces on
SexyContent.ContentBlocks
were moved toSxc.Blocks
Version 10.20.00 (2019-11-05)
- the internal interface
IInPageEditingHelpers
was moved fromToSic.SexyContent.Interfaces
to the namespaceToSic.Sxc.Web
- the internal interface
ILinkHelper
was moved toToSic.Sxc.Web
- the internal interface
IHtmlHelper
was moved toToSic.Sxc.Dnn
- the property
Configuration
on dynamic entities was deprecated in 2sxc 4 and removed in 2sxc 10 - we don't think it was ever used - moved internal Metadata interfaces (ca. 5) into final namespace ToSic.Eav.Metadata
- Moved a bunch of internal interfaces which we believe were never used externally from
ToSic.Eav.Interfaces
toToSic.Eav.Data
ToSic.Eav.Data.IAttribute
ToSic.Eav.IAttribute<T>
IAttributeBase
IAttributeDefinition
IChildEntities
IContentType
IDimension
IEntityLight
ILanguage
IRelationshipManager
IValue
IValue<T>
IValueOfDimension<T>
- Moved a bunch of internal interfaces which we believe were never used externally from
ToSic.Eav.Apps.Interfaces
toToSic.Eav.Apps
IApp
IAppData
IAppDataConfiguration
IAppEnvironment
IEnvironmentFactory
IInstanceInfo
IItemListAction
IPagePublishing
ITenant
IZoneMapper
- the internal namespace
ToSic.Eav.ValueProvider
was changed toToSic.Eav.LookUp
and inside it
we renamed a bunch of internal interfaces and objects which we believe were never used externally
Deprecated/Changed, but not broken
- the internal interface
ToSic.SexyContent.IAppAndDataHelpers
was renamed toToSic.Sxc.IDynamicCode
but the old interface still exists, so it shouldn't break
it was used by Mobius Forms - moved
ToSic.Eav.Interfaces.IEntity
toToSic.Eav.Data.IEntity
- but preserved the old interface for compatibility it was used everywhere
Clean-Up, but not broken
- We're transitioning to the term
Header
instead ofListContent
in templates.
The Razor pages and WebApi have this starting now, while old terms still work. Note that we're not creating aHeaderPresentation
, because you should useHeader.Presentation
Version 9
Changes Version 9.0
- [x] Change data access to Entity Framework Core 1.1
- [x] Change IoC Layer to use .net Core mechanisms
- [x] Replace Quick-Dialogs with Angular4 implementation
Changes Version 9.1
- [x] Move primary quick-dialog GUI to bottom of page
Changes Version 9.3
- [x] Item-Level versioning, history and rollback
Changes Version 9.4
- [x] Drop all dependencies to Telerik - file browser using ADAM
Changes Version 9.5
Changes Version 9.6
Changes Version 9.7 - the JSON-Content-Types & Entities Upgrade
- [x] New features in entity json serialization
- [x] Support for schema-free (very dynamic) entities
- [x] new features in content-type json serialization
- [x] defined json format for content-types
- [x] full serialization and deserialization of json-based content types
- [x] SQL IRepository storage enhancements
- [x] extended SQL table Entities to also store AppId and ContentType (name) to ensure that json-entities can be stored
- [x] Support to persist entities as JSON in repository (DB)
- [x] file-storage implementation of IRepository loader, to created a standard-based app-content-types provider
- [x] Ability to provide file-based json content-types at a system level, which is probably the better solution for most scenarios (more flexible, easier to spot changes, etc.)
- [x] global content-types system
- [x] Support for code-provided content-types, which allows faster feature-evolution
- [x]
Support for JSON based i18n on code-provided content-types, to allow better translationremoved again, as not needed
- [x] Ensure export/import of data of these new content-types (req. extensive refactoring)
- [x] extensive automated testing of these new features
Changes Version 9.8 - the VisualQuery Upgrade
- [x] SqlDataSource in VisualQuery Designer
- [x] Show DataSources which have Fallback-In-Streams in VisualQuery Designer
- [x] UI Updates on VisualQuery Designer, to better fit current needs
- [x] More help documentation for various data sources in VisualQuery Designer
- [x] Shuffle DataSource now configurable in VisualQuery
- [x] Support for Schema-Free Content (dynamic, without existing content-type)
Changes Version 9.9 - another VisualQuery Upgrade
- [x] Enhance relationship filter to enable filtering on other fields of related items
- [x] Enhance other data sources with features which so far were not available in the visual designer
Changes Version 9.10 - Combobox and more DataSources (WIP)
- [x] Combobox input type allowing a dropdown with values, but also allowing manual typing (to select pre-defined values, but also use Tokens)
- [x] StreamMerge DataSource
- [x] ItemFilterDuplicates DataSource
- [x] feature to export Json ContentTypes
- [x] multiple file-repos which deliver Content-Types, allows for any module to provide additional contenttypes
Changes Version 9.11 - Query-Picker & more DataSources
- [x] Entity-Picker delivering items from a query, instead of a type
- [x] string-dropdown-query to pick string-items from a query instead of pre-filled
- [x] query export / import
- [x] multi-select items in a string-query-picker
Changes Version 9.12
- [x] Json-based global query definitions
- [x] Method to add parameters to a called query (like when using an entity-pickers which uses a query)
- [x] pre-build queries for things like zones, apps, content-types, fields, query-info etc.
- [x] data sources for Zones, Apps, Queries, Attributes, etc.
- [x] limit streams returned by a query
Changes Version 9.13
- [x] Enhanced API to create custom DataSources + ca. 10 blog posts for that
- [x] Standalone FnL / UDT DataSource (removed it from core distribution)
Changes Version 9.14 LTS
- [x] New LTS Concept - see blog post about LTS 9.14
Changes Version 9.15-9.42 LTS
Didn't have time to document this yet, sorry. If you need to know, best check the git-history.
Breaking Changes in EAV and 2sxc Version 9
We try to minimize breaking changes, and most breaking changes won't affect your work, because it's internal API. We're documenting it here to ensure you know what happened, in case you still run into this.
Version 9.20.00 (2018-03-04)
- Minor breaking change in ADAM properties, like
Id
instead ofFolderID
which was a leftover of Dnn naming.
see full blog post
Version 09.08.00 (2017-11-28)
- Minor breaking change
List<IEntity>
instead ofDictionary<int, IEntity>
on theIDataSource
see full blog post
Version 09.03.00 (2017-10-08)
- Breaking change on inconsistent naming
ToSic.Eav.IEntity
instead ofToSic.Eav.Interfaces.IEntity
.
see full blog post
Changes Version 8
Changes Version 8.00 - 8.8
Didn't find time to document this :)
Changes Version 8.09
- [x] Very Rich Content (Inner Content 2.0)
- [x] Item-Delete directly from in-page toolbar
Changes Version 8.10
- [x] Shuffle data sources (to randomize items)
- [x] Public (anonyomous) REST API for query and read/write content-items
Changes Version 8.11-8.12
Mostly smaller bugfixes
Version 1-7 (2012-2016)
Didn't find time to document this :)