Table of Contents

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 20

2sxc v20.00.00 (2025-06-25)

Warning

2sxc v20 is a MoT Release, containing many breaking changes.

See Breaking Changes in v20 for details.

Highlights

  1. ☒️ The module was moved to /DesktopModules/ToSic.Sxc and was renamed to 2sxc
  2. πŸ’Ύ The entire SQL was reorganized - see 2sxc & EAV Database Changes in v20 for details.
  3. βš™οΈ New CoPilot Code Generator for Models (like TypedItems, but lighter / POCO)
  4. β€οΈβ€πŸ©Ή Introduced many detections of old code to give guidance to users who must fix old code
  5. πŸ₯‡ Create App experience improved to provide apps from the catalog
  6. πŸ₯‡ App Catalog enhanced to manage template apps (which expect to be renamed upon installation) - allowing for more template apps in future
  7. 🦸🏼 New Patrons Performance support tier to use all our performance enhancements
  8. πŸ“– Docs improved to better indicate internal APIs

Enhancements

  1. πŸ’Ύ Database performance enhancements with new indexes and improved code
  2. ✏️ Improved Edit-UI to use in the admin section without saving the entity (for config dialogs which are generated from the schema)
  3. ✏️ Improved Toolbar API .Audience(...) with everyone: true and roleNames and denyRoleNames
  4. πŸ‘±πŸΌ User Service with new .GetCurrentUser()
  5. ⚑ Lots of internal performance improvements, especially in loading, saving and handling data.
  6. πŸ‘¨πŸΌβ€πŸ’» All 2sxc / EAV code is now C# latest #nullable which makes it more robust.
  7. πŸ–ΌοΈ When an imported app has Rich WYSIWYG content with images, the links will be auto-corrected upon edit.
  8. πŸŒͺ️ Visual Query improved with ability to mirror out-streams based on in-streams (for things such as serialization-DataSource etc.)
  9. πŸͺ΅ New features to reduce logging of loading the system or data of Apps, which creates large logs but are rarely used
  10. βœ… Features can now support detailed configuration (used in the new Logging configuration)
  11. πŸ₯·πŸΌ Most internal APIs now clearly moved into .Sys namespaces TODO: - DOCUMENT IN BREAKING

Version Bumps and Other Changes

  1. ☒️ Minimum DNN version is now v9.11.02 (previously v9.6.2)
  2. πŸ–ΌοΈ Updated ImageFlow (the image resizer) to v2.1.0-RC11 from 2.0.0-Preview8
  3. πŸ…°οΈ Update UI to Angular 20 and Angular Material 20

Bugfixes

  1. 🩸 Oqtane fix issue which broke 2sxc because of changes in Oqtane 6.1.2
  2. 🐞 Fix: DataSource RelationshipFilter accidentally filtered out results when the filter was "" (blank) instead of not filtering at all
  3. 🐞 Fix: Images could not be deleted right after uploading, because image resizer kept the file open on the server
  4. 🐞 Fix: When serializing entities with custom configuration, the configuration for the GUID was sometimes ignored
  5. 🐞 Fix: Visual Query preview JSON didn't match serialization configuration.

Internal and Code Hygiene

  1. βœ… Most of the code was reorganized into more DLLs, to better separate concerns and make it easier to maintain / contribute.
  2. βœ… All the code for Eav and 2sxc is now C# latest #nullable which makes it more robust.
  3. βœ… Dropped old .net WebClient and replaced with HttpClient
  4. βœ… Cleanup / improvements around logging.
  5. βœ… Replaced old .net APIs for encryption with latest (reduce warnings)
  6. 🐞 Fix bug which affected developers, where APIs were missing in intellisense because of the EditorBrowsable attribute
  7. βœ… Improved naming of IMetadata from IMetadataOf
  8. βœ… Completely refactored the IBlock implementation and factory for better architecture
  9. βœ… Internal API to debug-dump objects was refactored
  10. βœ… Introduced new ServiceBase<TOptions> for services which need options at startup
  11. βœ… Introduced new SpawnNew() api and Generator<TService, TOptions> for objects expecting a setup.

2sxc v20.00.01 (2025-06-28)

Warning

2sxc v20 is a MoT Release, containing many breaking changes.

See Breaking Changes in v20 for details.

This 20.00.01 has only minor changes.

Enhancements

  1. When configuring views, the selection if it's a list or not will automatically toggle the setting IsList
  2. When upgrading from previous version, the /DesktopModules/ToSIC_SexyContent/system/ folder will be transferred to the new location.
  3. All internal use of global queries was changed to use the correct System. prefix
  4. Any use now of the old prefix Eav.Queries.Global. will throw an error, so you can fix it.
  5. The main lists in the Admin UI were enhanced to show some help text.
  6. UI button colors were improved to be more consistent.

Bugfixes

  1. 🐞 Fix: In 2-3 places some things failed because of list changes; eg. copying a query failed.
  2. 🐞 Fix: Auto-retrieve license from patrons.
  3. 🐞 Fix: In rare cases, changing the field type didn't seem to work.

2sxc v20.00.02 (2025-07-07)

Warning

2sxc v20 is a MoT Release, containing many breaking changes.

See Breaking Changes in v20 for details.

This 20.00.02 has only minor changes.

Enhancements

  1. Admin Features Management - introduce search
  2. Improve help when web.config is missing for Razor files which are used within Html.Partial(...).
  3. Color enhancements in Admin UI, now more consistent.

Bugfixes

  1. 🐞 Edit data (like App Settings) without WYSIWYG caused JS issues
  2. 🐞 Edit view caused some issues
  3. 🐞 Typed API - using Children containing null entry will filter that

Internal Changes

  1. Improved internal namespaces, now everything should be in .Sys
  2. 🩸 Oqtane: client lib does not use the 2sxc sys lib any more (not necessary, speeds up client rendering)
  3. Update Google Maps key to latest version.
  4. Drop complexity with MyServiceBase
  5. Renamed MyServices to Dependencies

2sxc v20.00.03 (2025-07-11)

Warning

2sxc v20 is a MoT Release, containing many breaking changes.

See Breaking Changes in v20 for details.

This 20.00.03 has really nice enhancements, but since we're still stabilizing v20, we are not incrementing the next number yet.

Enhancements

  1. πŸ“€ Introduced ITypedApi and ITypedApiService to improve code quality when using 2sxc in skins or outside of DNN.
  2. πŸ” App.GetQuery(...) now returns an ITypedQuery object which also has GetAll<T> and GetOne<T> just like App.Data
  3. ⚑ Major performance improvements all over, especially for 🦸🏼 Patrons Performance
  4. ⚑ Introduced features to reduce logging during normal operations, which should improve performance and lower memory footprint.
  5. ⚑ Introduced reduced logging during import/save to better debug large imports / apps.
  6. πŸ§‘πŸΌβ€πŸ’» Finally stabilized and released feature to change Edition to switch between live and staging
  7. ⚑ Internal performance improvements when generating toolbars (caching of complex lookups)
  8. πŸ‘©β€πŸ‘¦ Improved .Child(...), .Children(...), .Parent(...) and .Parents(...) to hide related data which is still draft.
  9. πŸ“– Help enhancement for various use cases and better highlighting using emojis such as β€οΈβ€πŸ©Ή and πŸ”—

Bugfixes

  1. 🐞 The first time you added site / global / app settings they would not work until you restarted the system
  2. 🐞 GPS picker had a bug which only affected very old apps (those which had the picker and 2 separate number fields for Long/Lat)
  3. 🐞 Large Apps couldn't be deleted, this is now fixed
  4. 🐞 Edition selection became inaccessible when using incorrect value
  5. 🐞 Fixed API App.Data.GetContentType(...) which only existed in RazorTyped but not in old dynamic APIs.
  6. 🐞 Fixed issue with very old apps not listing razor files in the view configuration

Internal Changes

  1. Dropped old WebApi URLs beginning with app- (documented in the breaking changes)
  2. Removed old .data as data folder for app extensions (in the [AppRoot]/system folder) - now only the protected [AppRoot]/App_Data is supported.
  3. Experimental Tweak API XCustom(prefix, key, value) for testing newer features which are not yet released.
  4. Experimental UI options to modify the behavior and not save data (for dialogs which just show data or only do JS activities)
  5. Experimental UI settings parameter to control this behavior, which is not yet documented.
  6. Experimental dialogSettings toolbar UI to change the UI from saving data to just done (naming and API not final)

2sxc v20.00.04 (2025-08-04)

Warning

2sxc v20 is a MoT Release, containing many breaking changes.

See Breaking Changes in v20 for details.

This 20.00.04 has really nice enhancements, but since we're still stabilizing v20, we are not incrementing the next number yet.

Enhancements

  1. πŸ₯«βš‘ Entire DB Access (read/write) reworked and optimized - this is a major change, but it should not affect any apps.
  2. πŸ₯«βš‘ Almost all DB access now uses non-tracking Entity-Framework queries, which should improve performance.
  3. πŸ₯«βš‘ Introduce Parallel data processing on save - imports now 3-10x faster (Patron Performance)
  4. πŸ₯«πŸ¦ΈπŸΌ Various performance features with DB can now be fine-tuned in features UI.
  5. πŸ…°οΈ App Installer from Template improved
  6. πŸ…°οΈ App Install new but change name/guid to use existing app as if it's a template
  7. πŸ§‘πŸΌβ€πŸ’» Rework SoC dynamic code and Typed Code - separate Metadata, Files, Folders, Fields to be completely independent
  8. πŸ“– Many UIs now have guidance text when opening the dialog

Bugfixes

  1. 🐞 Razor / WebApi: GetService() was missing parameter typeName because in 20.00.04 we thought it's not used.
  2. 🐞 Issue creating new Apps in some cases - especially with new name
  3. 🐞 Bug initializing App still sometimes created multiple Settings/Resources
  4. 🩸 Oqtane: AdamSecurityCheckBasic.CanEditFolder sometimes had a null-ref exception in Oqtane
  5. 🐞 Visual Query: Relationship filter - a modified behavior in v20.00.02 was reverted back to original (empty filter value should still filter for empty)
  6. 🐞 Exotic feature Ghost ContentType hasn't been working for a long time now because name of API parameters changed
  7. 🐞 Fix loading data on large apps - relationships were sometimes duplicated in cache
  8. 🐞 Admin UI - minor issue showing details of shared fields were wrong in some cases
  9. πŸͺ² Minor: when toggling features the section always collapsed
  10. πŸͺ² Minor: Toggling language always sent 2 API requests

Internal Changes

  1. Temporary property .Dyn was removed from ITypedItem
  2. Entity Framework projects are now using C# nullable
  3. Features can now be in multiple licenses (such an LightSpeed in Patron Perfectionist and Patron Performance)
  4. Internal change to Entity object to make it fully immutable
  5. ☒️ DNN: Improved internal dependency injection on ng-edit UIs

2sxc v20.00.05 (2025-08-26)

Warning

2sxc v20 is a MoT Release, containing many breaking changes.

See Breaking Changes in v20 for details.

This 20.00.05 has really nice enhancements, but since we're still stabilizing v20, we are not incrementing the next number yet.

Enhancements

  1. πŸ₯«βš‘ Razor Partial Caching introduced (🦸🏼 Patron Performance)
  2. πŸ₯«βš‘ Razor API @Configuration.PartialCache(...) to configure RazorPartialCaching
  3. πŸͺͺ New UserElevation to determine that caching is enabled/disabled for certain levels
  4. πŸ…°οΈ Admin UI now better indicates clickable areas.
  5. πŸ…°οΈ Admin UI now has more consistent save/close buttons.
  6. πŸ…°οΈ Admin UI now supports ctrl+enter in most dialogs to close and save. #TODOC / #TOBLOG
  7. πŸ§‘πŸΌβ€πŸ’» Install App: Ability to take any app and use it as a template (so give it a new name/GUID) #TODOC
  8. 🩸 Oqtane: Improve install using more SQL to work around problems with incremental updates.
  9. πŸ”¬ Formula: Introduce context.user.roles to let formulas check user roles.
  10. πŸ”¬ Formula: Introduce context.user.isContentEditor to match latest DNN 10 features.

Bugfixes

  1. 🐞 IsAnonymous always returned false since ca. v20.00.00.
  2. 🐞 Data load chunking in Patron-Performance mode had a default of 25k which didn't work well in older SQL servers.
  3. 🐞 When an App is loaded from another site, the path was wrong and file-based content types were not loaded, causing issues.
  4. 🐞 Mobius: System expected encrypted HTTP Net Posts even if not enabled.
  5. 🐞⚑ LightSpeed: Bug that View couldn't enable LightSpeed even if app was "unset" (null) instead of false
  6. 🩸 Oqtane: Bug JS exceptions during dev situation "No interop methods are registered for renderer 1"
  7. 🩸 Oqtane: Bug where old DB tables were recreated after schema update, resulting in old and new tables to be in the DB.
  8. πŸͺ² Minor: Data History: fix date to use UTC (previously used server time.)

Internal Changes

  1. ☒️ DNN: Improved time shown in Insights when a module is being rendered in DNN
  2. 🩸 Oqtane: Update dependencies to Oqtane 6.1.3 and update Asp.Net Core packages to 9.0.5.
  3. 🩸 Oqtane: Sync internal settings-names with the new convention already in use in DNN.

Breaking Changes in EAV and 2sxc v20 - Moment-of-Truth

Important

2sxc v20 is a milestone clean-up release, so it contains a lot of breaking changes.

This is the Moment of Truth where you see if you accidentally used internal or very old APIs.

These changes should only affect you, if you are accessing exotic/internal APIs, or if you have some extremely old/deprecated code.

See also: MoT Policy (Moment of Truth)

Note that we marked the breaking changes like this

  • ⚠️ things which may affect you
  • ⬇️ things which are extremely unlikely to affect you
Tip

Note that the focus of breaking changes is on the Razor code. But there are also 2 small breaking changes in Formulas.

Highlights

Tip

Despite this being a breaking change, we want to emphasize that much of this is great news. It removes a lot of old cruft, and cleans up some history such as "SexyContent".

These changes only affect you, if you were doing some really nasty things, such as accessing the DB directly.

  1. ⚠️ All SQL tables and restructured - see 2sxc & EAV Database Changes in v20

  2. ⚠️ In Dnn, the module is now installed in /DesktopModules/ToSic.Sxc/ instead of /DesktopModules/ToSic_SexyContent/
    This could affect you, if you had direct links to

  3. ⚠️ In Dnn we stop auto-creating a web.config file in the /2sxc/ folder, so Razor files will no longer automatically use the old base class SexyContentWebPage. This should not affect you, you're installing old Apps in newer DNNs.
    πŸ”¨ see Fix Breaking Change Stop Razor from Default to SexyContentWebPage in v20

  4. ⬇️ The minimum Dnn version for v20 is now Dnn 9.11.02 (previously it was 9.6.1)
    This is because older DNNs have important security issues, and we want to force people to update.
    As of now, 2sxc v20 will still run on older DNNs, but we will not support it or test it.

  5. ⬇️ The image resizer only includes the 64 bit binaries, the 32 bit binaries were removed. This makes the distribution smaller, and I don't think anyone is using 32 bit servers anymore.

  6. ⬇️ All code was restructured to create smaller, more focused assemblies.
    This should not affect you, but if you were using some very old code, it may have been moved to a different assembly. This can affect you if you were using compiled code which referenced the old assemblies (not common).

  7. ⬇️ Most internal APIs were moved into Sys namespaces, so it's easier to see if you're using internal APIs.
    This should not affect you, unless you were already using internal APIs.

  8. ⬇️ In Dnn, the modules name is now 2sxc instead of SexyContent

Breaking IEntity API Changes (Razor)

Tip

If your code just used the normal DynamicEntity or TypedEntity / Items APIs, you are not affected by these changes.

But in rare cases, especially in older Apps, some workarounds were used to access the IEntity interface directly.

This is usually done by first running AsEntity(someObject) to get the IEntity underlying data.

  1. ⚠️ A very old interface ToSic.Eav.Interfaces.IEntity has been removed, please use ToSic.Eav.Data.IEntity instead.
    Some very old code may have used this to work around LINQ limitations. Just use the new one, it's the same thing (but with fewer APIs, according to clean-up below).
    We've added some error handling to find out if this is the problem you have, and should lead you to this page.

  2. ⚠️ IEntity has object Get(name, ...) and 2 special Get<TVal>(...) methods to get a value and convert it to string, int etc. The special typed <TVal> variants were moved into extension methods.
    Normally this should not affect you, if you are @using ToSic.Eav.Data in your code, since it will just work. If you did this is a more exotic way, add the @using ToSic.Eav.Data to your code, and it will work again.

  3. ⚠️ IEntity had various GetBestValue(...) APIs which were removed. We believe that about 2-3% of all code used this, so it may affect you. πŸ”¨ see Fix Breaking Change drop old GetBestValue API in v20

  4. ⬇️ APIs on IEntity were modified

    1. .Children(...) and .Parents(...) now return IEnumerable<IEntity> instead of List<IEntity>.
      This will only affect you if you are using .Count on the result, in which case you should use .Count() instead.
  5. ⬇️ Old, deprecated APIs IEntity were removed.
    These have not worked properly for many years.
    We've added some error handling to find out if this is the problem you have, and should lead you to this page.

    1. object GetBestValue(string attributeName, bool resolveHyperlinks) - didn't work for a long time, is being removed

    2. TVal GetBestValue<TVal>(string name, string[] languages, bool resolveHyperlinks) - didn't work for a long time, is being removed

    3. object GetBestValue(string attributeName, string[] languages, bool resolveHyperlinks) - didn't work for a long time, is being removed

    4. object Value(string field, bool resolve = true) - didn't work for a long time, is being removed

    5. T Value<T>(string field, bool resolve = true) - didn't work for a long time, is being removed

  6. ⬇️ Some unofficial APIs on IEntity were removed

    1. object PrimaryValue(string attributeName)
      The term PrimaryValue was an idea which we never pursued further. please just use Get(...) instead

    2. TVal PrimaryValue<TVal>(string attributeName)
      The term PrimaryValue was an idea which we never pursued further. please just use Get(...) instead

    3. object Value(string attributeName)
      The term Value was an idea which we never pursued further. please just use Get(...) instead

    4. TVal Value<TVal>(string attributeName)
      The term Value was an idea which we never pursued further. please just use Get(...) instead

  7. ⬇️ An API giving access to the ContentType Description IContentType.Metadata.Description were removed We don't believe anyone used this.

Other Breaking Razor API Changes (Dnn only)

  1. ⚠️ The behavior to auto-load jQuery for very old Razor base classes was removed.
    A long time ago 2sxc accidentally loaded jQuery automatically in DNN.
    In those days, jQuery was used a lot. We stopped doing this for newer Razor base classes, but preserved the behavior for very old Razor base classes.
    This was removed in v20, so if you were using the old Razor base classes, you will need to add jQuery manually.
    Note: code for this was commented out with #RemovedV20 #OldDnnAutoJQuery.

  2. ⚠️ Three old APIs on old Razor Base classes such as SexyContentWebPage were removed. All have been deprecated since v12.
    They were originally meant to use the same Razor file to also create a WebApi and fill the DNN search index, but was deprecated a long time ago.

    1. Purpose - this was meant to tell Razor if it should prepare data for search or for view.
    2. CustomizeSearch(...) this was meant to customize the data for the search index. The functionality was moved to separate code many years ago.
    3. CustomizeData(...) this was a patchy way to specify the data for the razor template.
  3. ⚠️ The SexyContentWebPage had a List property which provided Element objects to loop through.
    They were deprecated since v12, and replaced with the new Razor base classes which are much better. If you were using these, please switch to the new Razor base classes and use the more modern approaches such as MyItem, MyItem.Presentation, Content, etc. πŸ”¨ To fix, see Fix Breaking Change List of Elements in v20. Note: code for this was commented out with #RemovedV20 #Element.

  4. ⬇️ There is a /system folder in the DesktopModules which had extensions. Each could have a .data folder - this must now be App_Data.
    This is probably not an issue, as we will auto-rename this during the upgrade of v20.00.01

  5. ⚠️ Every App can have a similar /system folder. Each could have a .data folder - this must now be App_Data.
    This is rarely used, but you would have to manually rename this folder to App_Data if you had it.

  6. ⚠️ DNN had some very old (pre v8) WebApi routes like app-content, app-query and app-api which were removed.
    If you had these in your code, please use the same route, just without the app- prefix.

  7. ⬇️ An old interface ToSic.Sxc.Blocks.IRenderService was removed, since it's been superseded by ToSic.Sxc.Services.IRenderService. We believe it was used in 2-3 v12 Apps, so if you encounter this, just switch to ToSic.Sxc.Services.IRenderService instead.

  8. ⬇️ An internal interface called ToSic.Sxc.Data.IEntityLight was removed
    We don't believe anyone used this, but if you did, please use ToSic.Eav.Data.IEntity instead.

  9. ⬇️ A very old interface called SexyContent.Interfaces.IDynamicEntity was removed.
    If you really had this in your code, please use ToSic.Sxc.Data.IDynamicEntity instead.

  10. ⬇️ Some internal objects were consolidated, such as IAttributeBase which nobody should have used anyway
    We don't believe anyone used this.

  11. ⬇️ lots of internal namespaces and classes/interfaces were renamed, including but not limited to:

    1. DynamicEntity.GetEntityValue(string name) (removed)
  12. ⬇️ An old API used by some of the first Mobius Apps used App.Data.Cache.GetContentType.
    This has been obsolete since v10 and is now removed in v20.
    We suggest you use a newer Mobius App or if you're really desperate, see πŸ”¨ Fix Breaking Change Removal of Cache on IAppData in v20.

  13. ⬇️ An old internal interface called ToSic.SexyContent.IAppAndDataHelpers was removed.
    It was implemented by ToSic.SexyContent.Razor.SexyContentWebPage and ToSic.SexyContent.WebApi.SxcApiController. The APIs on it still work, but the interface was removed; you should not notice the clean-up. See Fix Breaking Change Dnn Files / Folders in v20

Breaking Formulas API Changes

V1 form.runFormulas() Was Removed

The V1 formulas were not async, so they had a patchy solution for using formulas which requested data from the server. The old solution was to use fetch and in the promise, call form.runFormulas() to retrigger the formulas after the data was loaded.

2sxc 16 in early 2023 introduced V2 formulas which can return a promise. This will automatically trigger recalculations when the promise resolves, and allows for better control over what happens (like if the same formula should run again, or not).

Since v16 was released, any use of the old form.runFormulas() resulted in a warning in the console.

In v20, this method was disabled showing a JS error. If you were using it, please remove it and use the new V2 formulas instead.

Internal Formula Changes

An internal API which placed some experimental commands in the formula calls were moved to the context. Since it was only used internally, it should not affect anyone.

Other Changes

  1. ⬇️ Custom extensions (such as custom input fields) in the /system folder should place their data in the /system/[ext-name]/App_Data/system-custom/ path.
    Previously the path /system/[ext-name]/.data/ was also supported, but this is now removed.

  2. ⬇️ All system queries which are called System.Whatever previously also supported being called by Eav.Queries.Global.Whatever.
    This is now removed, so you should only use System.Whatever to call global queries.

  3. ⬇️ The DependenciesClass was previously called MyServices but it was very unclear, so it was renamed. ToSic.Eav.Data.IEntity.
    This is a breaking change, but we don't believe anyone used this interface directly, except in custom DataSources - where we kept the old name for compatibility.

  4. ⬇️ The IContentType had a .ContentTypeId which should only be .Id. The old .ContentTypeId was removed (deprecated since v13).
    This is a breaking change, but we don't believe anyone used this property directly.

  5. ⬇️ The IContentType had a .StaticName which should only be .NameId. The old .StaticName was removed (deprecated since v13).
    This is a breaking change, but we don't believe anyone used this property directly.

  6. ⬇️ Previously the APIs .Child(...), .Parent(...), .Children(...), and .Parents(...) on ITypedItem would return the related data without checking for publishing. Now it will check for publishing and only show draft children/parents to editors (v20.00.03).
    This is a breaking change, but we don't believe draft-children were used much.

  7. ⬇️ The ITypedItem had a .Dyn property which was removed (v20.00.04).
    It was a temporary addition (and always marked as such) thought to help in migrating code. But we're afraid people may use it and leave it in, so we decided it's best to completely remove it.


Version 19

2sxc v19.00 (2024-12-21)

  1. πŸ…°οΈ Update UI to Angular 19 and Angular Material 19
  2. βœ… Finalize Pickers main features
    1. Radio
    2. Checkboxes
    3. Preview Material Icon
    4. Preview SVG
    5. Preview Image (jpg/png)
    6. Configurations: AppAssets, CSS, Entity, Query, CustomList, CSV
    7. Preview features
    8. Info Link Tooltip
  3. βœ… New AppAssets DataSource and System.AppAssets query to get assets for pickers such as all SVGs in a folder.
  4. βœ… Double-Encrypt sensitive data on HTTP-Transport
  5. βœ… Ability to switch UI languages (not just content-languages)
  6. βœ… GPS Picker enhancements with my current location and searching for addresses which were not in the data
  7. βœ… Ability to delete a field (column) which had entity-relationships in it (previously SQL stopped you)
  8. βœ… New Toolbar.Audience(...) API to show it when needed
  9. βœ… Improve UI for creating fields for content-types, better dropdowns, longer etc.

Breaking Changes

  1. An interface called ToSic.Sxc.DataSources.IBlockInstance was removed since it was identical to ToSic.Eav.DataSource.IDataSource and should not be used anywhere.

Bugfixes

  1. 🐞 Fix: various issues around the Pickers
  2. 🐞 Fix: Public forms called a backend endpoint which was protected, and got errors (though it wasn't necessary)

Internal

  1. βœ… Refactor toolbar and image/picture objects to use records instead of classes in C#

2sxc v19.01 (2025-01-16)

Note: the version was incorrectly released as 19.00.01.

  1. βœ… Implemented system to use the As<...> API with interfaces, which will automatically find the right class to instantiate
  2. βœ… Created new DataModel system in the Models and Data.Model namespace #3543
  3. βœ… Created data model for IFileModel and IFolderModel which matches the entities returned by the AppAssets DataSource
  4. βœ… Created data model for IUserModel and IUserRoleModel which matches entities returned by the Users and UserRoles DataSource
  5. βœ… Renamed Roles DataSource to UserRoles (could be breaking change for very few users)
  6. βœ… Created data model ISiteModel which matches data returned by the Sites DataSource
  7. βœ… created data model IPageModel which matches data returned by Pages DataSource
  8. βœ… Finished the ICacheService on Kit.Cache #3536
  9. βœ… Finished the AppAssets Datasource and documented it #3541
  10. βœ… New ToSic.Sxc.Data.Models with ModelWithEntity and ModelWithItem base classes
  11. βœ… Changed System.Text.Json to use .net 9 #3547
  12. βœ… Upgraded to Oqtane 6+ so it's only compatible with Oqtane 6.0.1+ now #3548
  13. πŸ…°οΈ Update Date/Time picker to use Angular Material Time Picker
  14. 🩸 Oqtane: Set minimum version to 06.00.01 and minimum .net to 9 because of security warnings

Minor

  1. πŸ…°οΈ Fix some inconsistencies in the GPS UI
  2. πŸ…°οΈ Minor update Google Maps API to latest (was using old API before)
  3. βœ… Improved Custom DataSource so you can access the List and GetStream(...) #3540

Bugfixes

  1. 🐞 Bug: Fix access to global and site settings
  2. 🐞🩸 Oqtane bugs with JavaScripts due to changes in Oqtane 6.0 and 6.0.1 - affected Interactive mode #3533
  3. πŸͺ² Minor bugfixes in new AppAssets DataSource

Internal Stuff

  1. βœ… Refactor internal Entity, Attribute Values, ContentType to use record
  2. βœ… Refactor internal SaveOptions to use record
  3. βœ… Refactor internal Entity to be init-only (where were a few set properties left for legacy reasons)
  4. πŸƒπŸΌβ€βž‘οΈ Start architecture for a Task-system to run things #3545
  5. ⚠️ Enhancement in the Pages DataSource - property renames Visible to IsNavigation and Clickable to IsClickable
  6. ⚠️ Enhancement to the Roles DataSource - renamed to UserRoles - breaking change!

2sxc v19.02 (2025-01-21)

  1. βœ… IUserService on Kit.User #3552 which can get one/all users and all roles of Dnn/Oqtane in the same signature as the Users DataSource
  2. βœ… better structure for models in Cms.Users, Cms.Pages etc.
  3. ⚠️ Renamed the system query System.Roles to System.UserRoles - breaking change!

Minor

  1. βœ… Ensure that As<...> API allows the new model interfaces just like AsList<...> #3551
  2. 🐞 Bug: previous release a few days ago had an issue exporting Apps - files in the root folder were missing
  3. 🐞 Bug: previous release a few days ago had issues saving hidden items - they were visible
  4. 🐞 Bug: App name and version did not show in App Admin UI
  5. πŸ’ͺ🏼 Cleanup internal APIs on an internal interface IEntityLight which is not public. Properties: Title, Attributes and this[...]

2sxc v19.03 (2025-01-22)

  1. βœ… introduced Custom.Data.CustomModel
  2. βœ… Finalizing model base classes in ToSic.Sxc.Data.Models and attributes
  3. 🐞 Bugfix editing global and site custom settings

Version 18

2sxc v18.00 (2024-07-12)

  1. βœ… ITemplateService with MergeSources(...)
  2. βœ… 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.

2sxc v18.01 (2024-09-23)

  1. πŸ”’ Pickers
    1. βœ… Improve Picker-UIs
    2. βœ… Picker with Radio-Buttons (for patrons πŸ¦ΉπŸΎβ€β™‚οΈ)
    3. βœ… Picker with Checkboxes (for patrons πŸ¦ΉπŸΎβ€β™‚οΈ)
    4. βœ… Pickers with tooltips, more help, etc. (for patrons πŸ¦ΉπŸΎβ€β™‚οΈ)
  2. πŸ§ͺ Formulas
    1. βœ…πŸ” Major refactor of internal code structure
    2. βœ…πŸ‘¨πŸΎβ€πŸ’» Improve visibility of formulas in the UI for dev-users (always show for developes πŸ‘¨πŸΎβ€πŸ’»)
  3. πŸ” Refactoring / internal
    1. βœ…πŸ” Edit-UI Drop NgRx
    2. βœ…πŸ” Edit-UI Switch most code to Signals
    3. βœ…πŸ” Edit-UI feature to store user settings in the local storage and session
    4. βœ…πŸ‘¨πŸΎβ€πŸ’» Create debugging system to log changes in production (developers πŸ‘¨πŸΎβ€πŸ’»)
  4. Internal content types
    1. βœ… Use newer picker features for Wysiwyg and other UIs
    2. βœ… String-Default (basic field) enable different Text-Wrappings
  5. ☒️ DNN Enhancements
    1. βœ…β˜’οΈ Improve startup speed
  6. 🩸 Oqtane Enhancements
    1. βœ…πŸ©Έ Improve DLL clean-up on startup
    2. βœ…πŸ©Έ Fix compile of AppCode DLLs in inner-content
    3. βœ…πŸ©Έ Interactive Server bugs closing signalr connections
  7. πŸ¦ΉπŸΎβ€β™‚οΈ Patron Features
    1. βœ…βš‘ Optimize data loading for better performance
    2. βœ…πŸ”’ Many new picker features for patrons

2sxc v18.02 (2024-10-09)

Release notes

  1. βœ… Shared Field Configurations / Content-Type Composition
  2. βœ… Pickers stable
    1. βœ… Picker Source CSV
    2. βœ… Picker Source Custom List
    3. βœ… Picker Source Entity
    4. βœ… Picker Source Query
    5. βŒ› Picker Source CSS (BETA)
  3. βœ… Picker Data Type: Number now supported as well
  4. βœ… Picker Outputs
    1. βœ… Radio buttons
    2. βœ… Checkboxes
    3. βœ… Auto-Inline (which will take radio/checkboxes depending on your settings)
  5. βœ… Picker Previews
    1. βœ… Font-Icon preview
    2. βœ… SVG-Icon preview
    3. βŒ› Image preview (BETA)
  6. βœ… Finalize Content-Type Composition
  7. βœ… Ctrl + S (upper case) now works too
  8. βœ… Ctrl + Alt + s now saves and closes
  9. βœ… Host user now always sees the developer tool bar, but can unpin it for a while
  10. βœ… Edit UI: Update Angular 18, Material 3, and other JS dependencies, refactor to use signals.
  11. βœ… Edit UI: Massively improve pickers - ca. 90%, also with Number and CSS / SVG / Image icons
  12. βœ… HotBuild: Enhance to use SHA fingerprint for cache-busting

2sxc v18.03 (2024-11-05)

  1. βœ… Clean up data model, remove unused table ToSIC_EAV_AttributeGroups (may be breaking)
  2. βœ… Pickers - Stabilize most features so final
  3. βœ… Tweak API for Image Service Settings, Img, Picture
  4. βœ… Tweak API for Typed Items .Img(..., tweak: t => t.Alt(...)...) and .Picture(...)
  5. βœ… Ongoing Angular refactoring (switching to signals, deduplicate code, ...)

2sxc v18.04 (2024-11-24)

  1. 🐞 Bug with image generator when image was external (http) #3500
  2. 🐞 Bug with LightSpeed #3502
  3. ☒️ Search indexing bug #3498
  4. 🩸 Minor bugfix to ensure it works on Oqtane 6 #3501

2sxc v18.05 (2024-12-06)

  1. 🩸 Oqtane / AppCode problems with empty AppCode.dll #3505
  2. πŸ“– Add contributing.md to all repos #3484
  3. πŸ“– Major docs update regarding contributing to docs
  4. βœ… Support Ctrl+Click in Admin-UI to open dialogs in new windows/tabs #3496
  5. 🐞 Bug with Visual Query Editor #3513

2sxc v18.06 (2024-12-06)

Stabilization release with one big feature:

  1. πŸš€ Double-Encrypt Forms posted to server, to prevent CDN snooping πŸ›‘οΈ #3518

Features

  1. βœ… Ctrl + Click and Shift + Click now works in almost all Admin UIs / Lists #3496
  2. βœ… Automatically sort URL parameters provided by MyPage.Parameters #3520
  3. βœ… Ability to prioritize url parameters as needed with .Prioritize(...) #3521
  4. βœ… Ability to flush url parameters and still preserve settings with .Flush()
  5. Minor: add contributing.md everywhere #3484

Bugfixes

  1. 🩸 Oqtane issues with AppCode compiling when AppCode is empty #3505
  2. 🐞 Bug toolbar opens query-editor sometimes fails #3513
  3. Minor: show better indication when item in Entity-Picker doesn't exist #3504

Version 17

2sxc v17.00 (2023-12-23)

  1. βœ… DNN: Require CodeDome C# 7.3 to be installed
  2. βœ… Docs infrastructure can now be multi-versioned
  3. βœ… Show app icon in admin UI
  4. βœ… Ctrl+Click on toolbar buttons to open in new tab
  5. βœ… Completely refactor internal APIs to do advanced work and save data
  6. βœ… Change UI to use Angular 17 (from Angular 14)
  7. βœ… Get intellisense to work in VS Code
    1. βœ… Work out best way to do this in VS Code
    2. βœ… Work out best way to hide non-public APIs
    3. βœ… Work out best way to include docs (xml files, nuget, etc.)
  8. βœ… Support C# 7.3 in DNN with warning if not installed
  9. βœ… System Capabilities Framework for tagging apps which need certain technologies/features
  10. βœ… Crazy new compiled typed shared code /ThisApp/Code - see Hot App Code
  11. βœ… New APIs on Typed Code
    1. IsPublished
    2. Publishing
    • Publishing.HasPublished, Publishing.HasUnpublished, Publishing.HasBoth
    • Publishing.GetPublished(), Publishing.GetUnpublished(), Publishing.GetOpposite()

2sxc v17.01 (2024-01-18)

  1. Moved almost all internal APIs in the ToSic.Sxc namespace to hidden locations #3189
  2. Marked a lot of internal APIs so that they won't appear in IntelliSense
  3. ♨️ HotBuild: Improved errors in Razor so the user can better find them #3246
  4. ♨️ HotBuild: Improved errors when compiling ThisApp #3247
  5. ♨️ HotBuild: Support Editions such as live and staging with auto-fallback #3248
  6. ♨️ Roslyn: Improve error if @inherits ends in semicolon #3245
  7. ♨️ HotBuild: Show all compiled types in insights
  8. ♨️ HotBuild: Minimize exact pre-included namespaces
  9. ♨️ HotBuild: Performance Improvements
  10. 🟣 Toolbars: Show hover on layout button after a delay with module-infos #3251

New Features / Important Improvements

  1. Kit.PageParameters now has new commands Toggle(...), Remove(...) and Filter(...) see docs #3241 #3242 #3243
  2. 🟣 Toolbars: Tweak Notes can now delay and linger #3250 docs
  3. Create-New File now shows templates for RazorTyped, CodeTyped and ApiTyped
  4. ✏️ App-Management UI now uses a left-menu (experimental)
  5. ✏️ Edit-UI: Boolean fields can now be toggled by clicking on the label
  6. πŸ–ΌοΈ Resizer: Improve handling of images in virtual-application folders

Bugfixes

  1. ITypedItem.Equals now works #3213
  2. Old Render APIs were broken, which affected News App 4.1.1 and others #3252
  3. Fix bug with UniqueKey which affected HotSpots App
  4. Various minor UI bugfixes related to the entity-picker and dropdowns

2sxc v17.01.04

Minor enhancements and bugfixes

  1. Image toolbar now shows resize specs 🌟 #3270
  2. Toolbar notes now support a format = html #3271
  3. Edit inner-content in accordions for non-website-admins #3234
  4. Old Razor base class - PageData didn't always work #3260
  5. HotBuild now respects additional assemblies from web.config #3272

2sxc v17.01.05

minor bugfixes l enhancements including

  1. dropdown pills fixed #3269
  2. REST Query API fails when used from "outside" #3274
  3. page picker in UI is broken in 17.01.04 #3276
  4. auto-serialized ITypedItem and IEnumerable<ITypedItem> #3277
  5. refactor an internal old API to init app-objects #3275
  6. HotBuild Performance Improvements (locking / caching)
  7. HotBuild improve detection when CS files inherit from ThisApp base 1. classes
  8. Internal Lookup System Performance Improvements
  9. internal work for the new Picker-UI system

2sxc v17.01.06

  1. Upgrade System.Data.SqlClient #3209
  2. TweakButton on dynamic code #3279
  3. Edit menu in Dnn fix #3280
  4. Bug with dropdowns #3281
  5. Export/Import App now includes hidden entities #3282
  6. Export/Import App now includes Attribute SysSettings #3283

2sxc v17.01.07

  1. ajax reload on details-pages eg. blog-post #3287
  2. SQL DataSource can't connect #sql #3285

2sxc v17.02 (2024-02-22)

  1. βœ… Improve infos about layout in toolbar
  2. βœ… Improve infos about image resizer in toolbar
  3. βœ… Improve Create New App Experience
    1. βœ… Create new app template
    2. βœ… Improve the new app wizard - allow selecting template
    3. βœ… Improve create-app code to use the new template
  4. βœ… Update Monaco to latest version
  5. βœ… Ability to change input config types/metadata - eg. skip @String when never needed
  6. βœ… Improve HotBuild
    1. βœ… Improve initial list of included assemblies and namespaces @STV
    2. βœ… Improve caching of information how to build/compile to improve speed
    3. βœ… Add support for sub-folders
    4. βœ… Support Editions
    5. βœ… Improve error messages on building the ThisCode folder
    6. βœ… Improve error messages when building Razor and C# using Roslyn
    7. βœ… Improve detection so that build is locking (prevent multiple builds on high-load)
    8. βœ… Create system to generate models
    9. βœ… Provide special UI to build the code and debug Copilot
    10. βœ… Switch to AppCode ThisApp
    11. βœ… Provide final place for base type
      1. βœ… Custom.Data.CustomItem base class
      2. βœ… GPS data
  7. βœ… fix/improve date picker
  8. βœ… Ability to share field configurations
    1. βœ… Custom config inherit from multiple sources for keeping the Label
    2. βœ… Preserve config on export/import

https://github.com/2sic/2sxc/releases/tag/v17.02.00

2sxc v17.03 (2024-03-04)

  1. βœ… New Pickers released with a lot of features, incl. Sources, custom labels, help, tooltips, multi-select and much more!
  2. βœ… Ability to install recommended apps in a later step!
  3. βœ… New typed razor RazorTyped<TModel>
  4. βœ… New typed App using IAppTyped<TSettings, TResources>
  5. βœ… Publish As<Type> and AsList<Type> API
  6. βœ… Publish App.Data.GetAll<TModel>() and App.Data.GetOne<TModel>(id) APIs
  7. βœ… New Custom.Data.CustomItem base class with GPS data, As<Type> and AsList<Type> API
  8. βœ… improve App_Data/app.json schema to include editions for Copilot
  9. βœ… Add template app Basic and Empty
  10. βœ… Intellisense: Find way to link to the official docs from inside the help

2sxc v17.04 (2024-03-11)

Improvements

  1. MyView.Resources added to complement existing MyView.Settings #3315
  2. ITypedItem.Img(...) added to complement exitsing ITypedItem.Picture(...) #3324
  3. Dnn improve Roslyn build performance in many cases from ca. 2.5 seconds to 0.5 seconds #3322
  4. Query: Improve $select OData parameter
  5. REST API - add $select OData Parameter #3319
  6. Razor / Typed Code: add a Customize helper ojbect #3316
  7. Admin UI - Data Scopes now show count
  8. Add Razor compile code help for more common problem such as accessing typed-items dynamically
  9. Improve razor compile help - show errors before warnings
  10. Picker - auto extract additional fields to retrieve based on placeholders in Label / Help texts etc.

Generate Data Models Improvements

  1. Include Scope name
  2. Include content-types in Configuration scope
  3. CustomItem - implement == and != operators to use wrapper equality
  4. Lots of docs for custom data
  5. app.json editions configuration, add isDefault

Bugfixes

  1. UI Date Picker - fix but with UTC offset #3321
  2. UI Page Picker - fix, was broken in 17.03.00 #3320
  3. Calling Query using JS missed the Id property #3325
  4. Admin: state of the DateTime Show-Time toggle didn't properly get persisted #3318

2sxc v17.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

  1. Improved Code-Generator to be in a standalone DLL ToSic.Sxc.Code.Generate
  2. Improved Code-Generator to generate Razor, Code and WebApi base classes

Enhancements

  1. Impove image-resize tooltip #3329
  2. $2sxc JS used in modules which are rendered into Dnn themes #3333
  3. Improve logging of parameters of DataSources (eg. Value-Filter DS)
  4. Prepare for Oqtane 5 SSR
  5. Improve architecture for generating App-objects in the background

Bugs fixed

  1. various admin and replace-operations on inner-content #3299
  2. fix quickE when selecting content-blocks #3317
  3. Token templates - fix some toolbars #3328
  4. Fix issue with Oqtane urls
  5. Fix issue with Oqtane WebApis which affected Blog RSS feed

2sxc v17.06 LTS (2024-03-28)

The first LTS (Long-Term-Stable) Release of 2sxc 17.

Easter LTS Release

  1. βœ… Prepare for Oqtane SSR (Server-Side Rendering)
  2. βœ… Provide Code Generator for Content Types, Razor and Services
  3. βœ… Improve discoverability of REST APIs
  4. βœ… Document new Pro Typed mode
  5. βœ… Document new strong-typed mode
  6. βœ… Auto-Install more apps from catalog - even after some have already been installed - ca. 1d
    1. βœ… Feature to tell new auto-installer what apps are already installed
    2. βœ… App-Auto-Installer UI to add-install apps later on
  7. βœ… 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)

2sxc v17.07 (2024-05-04)

published/blogged:

  1. βœ…/βœ… 2sxc 17.07
  2. βœ…/βœ… 2shine 5.3 (May 4th)
  3. βœ…/βœ… Content App 17.07 (May 6th)
  4. βœ…/βœ… Mobius Form Builder 06.00 for 2sxc 17.07 (May 7th)
  5. βœ…/βœ… Release all apps as typed (May 8th)

2sxc v17.08 (2024-05-16)

  1. βœ… WebApi in AppCode
  2. βœ… DataSources in AppCode
  3. βœ… ITemplateService
  4. βœ… Add CmsContext.Block and CmsContext.Module.Block as well as Block.Guid
  5. βœ… Cache Service internal
  6. βœ… Switch Edition UI
  7. βœ… Switch Edition Permissions for non-super users
  8. βœ… Update Image Resizer
  9. βœ… Re-Release another LTS ca. 17.09

Version 16

2sxc v16.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.

  1. βœ… improve IConfiguration API - lighten the IDataService API
  2. βœ… Document new data sources API
  3. βœ… finish Dynamic DataSources
  4. βœ… Document CDN / Asset management
  5. βœ… Document Formula improvements
  6. βœ… IDataService completed
  7. βœ…...and documented
  8. βœ… New WYSIWYG mode completed (and documented)
  9. βœ… Toolbars Service Improvements: transport data for use in notes etc. ca. 0.5d 2dm
  10. βœ… Data-conversion of entities to json in attribute... - documented

2sxc v16.01 LTS (2023-05-23)

Various bugfixes + some enhancements.

  1. βœ… New rich WYSIWYG experience
  2. βœ… 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
  3. βœ… New ITypedItem and AsTyped(...) API
  4. βœ… New Data.Content and Data.Header objects
  5. βœ… IDynamicEntity now has methods like String(...), Int(...), Bool(...), Date(...), Decimal(...), Double(...), Long(...), DateTime(...), Float(...) to convert values to the desired type. #3089
  6. βœ… Sort-Items UI was enhanced with remove, add, add-existing #3077
  7. βœ… DynamicDataSource now supports relationships #3078
  8. βœ… DynamicDataSource now shows better errors in Razor on compile issues #3084
  9. βœ… Razor now automatically suggests the insights button on the toolbar if there are errors #3085
  10. βœ… Enhancement: Serializing Entities to JSON now skips empty fields such as messages or ephemeral fields
  11. βœ… Clean up Formulas code into better SoC @SDV
  12. βœ… Clean up ancient documentation which is probably invalid, but still seen by many :(

Dnn / Evoq

  1. βœ… Evoq: Better support for list management together with page workflow #3087
  2. βœ… Dnn Skin: Adding module to skin using IRenderService now allows editing entities #3092

Oqtane

  1. βœ… Enabled full WASM support for Oqtane #3083 (previously only server-rendering worked)
  2. πŸͺ² Improvement on how AJAX reloads work, resolves some reload-errors #3081

Minor Bugfixes

  1. πŸͺ² Two bugfixes related to Formulas v1 - returning date #3088
  2. πŸͺ² XML-Data-Export now works with IsContentAdmin permissions (before it required IsSiteAdmin) #3075
  3. πŸͺ² View list of data now works with IsContentAdmin permissions (before it required IsSiteAdmin)
  4. πŸͺ² Fixed issue with GetService<ILogService>() because ILogService had been renamed to ISystemLogService #3082

2sxc v16.02 (2023-07-07)

Major Enhancements

  1. βœ… ImageFlow upgraded to version 0.10.0 - thereby making sure it works with FIPS enabled #3121
  2. βœ… Brand new typed code Pro mode
    • ITypedItem and ITyped interfaces with properties such as Id, Guid and methods such as .String(name), ...
    • RazorPro, ApiPro, CodePro base classes with completely reworked API such as AsStack(...), MyPage or AllSettings
    • ApiPro now serializes JSON using new defaults which are more common in WebApis (lower-case properties, auto-serialize entities, etc.)

Documentation

  1. βœ… Upgraded DocFX from 2.48.1 to 2.67.3 with major improvements to the generated docs
  2. βœ… Improved Documentation of all Razor and WebApi base classes!

Support for Developers

  1. βœ… Dramatically improved insights with more details and filtering options
  2. βœ… Created system to automatically detect and warn about deprecated code - using buttons in the toolbar
  3. βœ… Created CodeHelp system to guide developers when common coding mistakes were made
  4. βœ… New Obsolete system collects issues per App and shows them even if the current Razor is not affected
  5. βœ… Show CodeHelp warnings if a RazorPage doesn't have @inherits

Various bugfixes + some enhancements.

  1. βœ… Refactored Razor and WebApi base classes to use Composition over Inheritance
  2. βœ… RazorBlade upgrade from v4.2.0 to 4.4.0 (also for .net 7 compatibility)
  3. βœ… Feature to not show edit-toolbar buttons on HTML coming from Resources
  4. βœ… Improve not showing a metadata-toolbar on images which are coming from demo-items

Dnn / Evoq

  1. βœ… Downgrade SQL to still work with SQL Server 2012 as people had trouble upgrading #3120
  2. βœ… 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
  3. βœ… 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

  1. βœ… Oqtane 4.0 Support (with .net 7) #3123
  2. βœ… Reworked API Middleware to avoid conflicts with OAuth 2

Minor Bugfixes

  1. πŸͺ² Fixed issue with Swiper not being able to add slides #3108 #3112
  2. πŸͺ² Fixed issue with DatePicker in Edge and also added more cultures #3113
  3. βœ… Changed internal APIs to return RazorBlade IHtmlTag objects instead of previously IHybridHtmlString #3098

2sxc v16.03 (2023-08-21)

Enhancements around Typed Code

  1. βœ… Typed: rename RazorPro to RazorTyped etc. #3147
  2. βœ… Make all typed objects very strict when checking if fields exist
  3. βœ… Add much more helpful info / error when fields not found
  4. βœ… Typed: Massively enhanced with strict checks and reduced the possibility of writing code which doesn't do anything
  5. βœ… Typed: ITypedItem now has a new .Picture(...) method making the code nicer #3135
  6. βœ… Typed: ITypedItems can now be mocked #3141 to create alternate data in code when no data exists
  7. βœ… Typed: New methods ContainsKey(...), Keys(...) #3142
  8. βœ… Typed: New methods IsEmpty(...) and IsNotEmpty(...) #3144
  9. βœ… Typed: method .String(..., scrubHtml) now also accepts a string containing tags to remove #3146
  10. βœ… Typed: If an error occurs, much more information is provided as to how to fix #3143 #3145
  11. βœ… Typed Json: now also supports paths, so you can use Kit.Json.ToTyped(jsonString).Int("Root.Child.Id")
  12. βœ… Typed Json: now also strict using propsRequired by default
  13. βœ… Typed: the property .Dyn now only exists on ITypedItem (entity-based) and not on other wrappers

Other Enhancements

  1. βœ… Image Resizer: New Square resize settings #3134
  2. βœ… Image Resizer: ImageService can now also handle IFile objects and get the metadata automatically #3140
  3. βœ… Web Farm Cache: Updated for v16.02+ (enterprise customers only)
  4. βœ… Page Parameters: now support ITyped so you can use MyPage.Parameters.Int("id") and similar

Support for Developers

  1. βœ… Errors now highlight the .cshtml line which caused the error
  2. βœ… Errors on mistyped property names now gives very detailed information about it

DNN / Evoq

  1. βœ… Image Resizer: Upgrade to dnn-imageflow 1.2.1 #3130
  2. βœ… Newtonsoft internal version in DNN Manifest now matches 13.0.3

Oqtane

  1. βœ… Oqtane: Better error when Oqtane in installed without sufficient DB permissions #3128 / #3131
  2. βœ… Internal: Code cleanup with warnings new EF-Core #3132
  3. βœ… Internal: EF Core QuerySplittingBehavior #3133

Minor Bugfixes

  1. πŸͺ² turnOn failed on AJAX reloads during editing #3127
  2. πŸͺ² Oqtane: Bugfix importing App Assets #3129
  3. πŸͺ² Web Farm Cache: Fix issue which occured on license uploads
  4. πŸͺ² Licenses: fix issue with multiple licenses / names resulting in an unlicensed message

2sxc v16.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

2sxc v16.06 (2023-09-20)

  1. βœ… Tutorials for new Pro mode / Quick-Ref
  2. βœ… Optimize build of 2sxc to use local config-files so it's easier for others to contribute @STV
  3. βœ… Improve JS build to make it easier for others to contribute
  4. βœ… Improve headers handling in Oqtane 4

2sxc v16.07 LTS (2023-09-22)

  1. βœ… new TypeItem.Parent(...) - especially. .Parent(current: true) api #3173
  2. βœ… new parameters to the .Picture(...) incl. picClass, imgAttributes and picAttributes
  3. βœ… fix bug where presentation data was generated even if not used #3185

Major: Release 16.07 LTS πŸš€

2sxc v16.09 (2023-11-22)

  1. βœ… TypedItem.Picture("Child.Property") path notation
  2. βœ… fix js minification of inpage.min.js
  3. βœ… Release all apps in the new typed mode
  4. βœ… Blazor .net 8 / Oqtane 5 support
  5. βœ… Improve file-upload to prevent files with ".." in the name
  6. βœ… Improve DataSource Caching and cache-flushing
  7. βœ… Add new (beta βŒ›) feature for copyright management (Patron AdvancedCMS) to add copyright info to each image
  8. βœ… Extend SQL Database to store SysSettings and Guid on Attributes for future features
  9. 🐞 Fix minor issue with old .Code for older Razor base classes
  10. 🐞 Fix minor issue with edit-dialog in scenarios with multiple portal aliases
  11. 🐞 Fix minor issue with IMetadata.Children(...) / ...Child(...) #3217
  12. 🐞 Fix DataSource LanguageModeler #3219
  13. 🐞 Fix DataSource TreeMapper
  14. 🩸 Oqtane: Adam backend didn't always serialize all properties #3206

Version 15

2sxc v15.00 (2022-12-23)

  1. βœ… Improve logging
    1. βœ… Place it in an own library DLL for better reuse
    2. βœ… Create ICodeLog for improve logging in Razor and WebApi which ensures compatibility with existing code
    3. βœ… Improve automatic connecting logs with helpers so most Init(Log) become obsolete
  2. βœ… Update CsvHelper DLL to latest version
  3. βœ… Improve install-file names
  4. βœ… Update to Razor Blade 4
  5. βœ… Support Oqtane v4 with .net 7 - ATM Oqtane doesn't plan on going to .net 7
  6. βœ… Tutorial App
    1. βœ… Improve internal structure
    2. βœ… Change how to show code vs results - mostly use tabs
  7. βœ… Razor APIs and Services
    1. βœ… Improve ImageService to have an imgAltFallback on .Img(), .Picture() and .ImgOrPic()
    2. βœ… Improve ImageService to better respect multi-language crop-settings and labels
    3. βœ… Improve Page service Parameters.Set(...) to also allow bool, int etc. (not just strings)
    4. βœ… Create Kit.HtmlTag
    5. βœ… Create ITurnOnService and Kit.Page.TurnOn(...)
  8. βœ… Data Sources
    1. βœ… Improve ValuFilter Data Source to also allow Contains on numbers
  9. βœ… DB Clean-Up
    1. βœ… Remove SQL triggers which log XML data to DataTimeline which isn't used any more
    2. βœ… Remove XML column NewData in DataTimeline which isn't used any more
  10. βœ… Internal APIs
    1. βœ… Improve Settings/Resources Stack with various unit tests
    2. βœ… Improve Settings/Resources Stack to have internal quick access to deep objects using a path like "Images.Content.Width"
    3. βœ… Create API DependenciesBase to better handle log attachments to dependencies
  11. βœ… TinyMCE upgrade to v6
  12. βœ… Drop _ prefix requirement on cshtml files by protecting them in an another manner
    1. βœ… It's not needed on Oqtane, as the files are not accessible
    2. βœ… Only needed ATM on DNN because each file could be called from the browser directly
    3. βœ… Probably make sure all base classes refuse to render standalone
  13. βœ… Ability to use compressed GZIP data for DataTimeline (patrons)
    1. βœ… Technical features
    2. βœ… Toggle to turn on/off
  14. βœ… Rename internal .data folder to App_Data/system and similar as this folder will contain private data in future
  15. βœ… Feature to deploy a corporate license in an installation to auto-enable certain features on all sites
  16. βœ… Settings: Ability to augment the preset configuration / settings with custom overrides
  17. βœ… Provide Google Services API Keys (Maps, Translate) from backend to edit UI
  18. βœ… Ability to set own default GPS coordinates for when not set
    1. βœ… Ability to configure them in settings
    2. βœ… Provide Default maps coordinates from backend to Edit UI
  19. βœ… Ability to import apps from folder directly (patrons)
    1. βœ… Functionality
    2. βœ… Hints / Infos to user
    3. ⏳ Documentation
  20. βœ… Integration of Google Translate in the Edit UI
    1. βœ… Functionality for one field
    2. βœ… For many fields
    3. βœ… Configure so it only affects string fields
    4. βœ… Ability to disable auto-translate on certain fields - eg. name fields
    5. βœ… Ability to add custom API key
    6. βœ… Clear warning when using the demo key
    7. βœ… Make sure the license is respected and easy to spot
    8. ⏳ Documentation for this (how the fields are selected, how to activate, etc.)
  21. βœ… 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:

  1. If you have a custom DataSource, you will need to make some minor changes and recompile them
  2. If you used special, non-public Logging APIs you would need to update your work
  3. If you used any undocumented APIs, you will need to check if everything still works

API Changes that may affect you

  1. DataSource base class was completely refactored
    see instructions
  2. Old static ToSic.Eav.DataSource was removed (deprecated since v13)
  3. Internal logging API ILog was completely refactored
    see instructions
  4. Internal object wrappers were completely refactored
    see instructions
  5. TinyMCE Upgrade to v6
  6. Database changes
  7. Minor API changes

Breaking Updates which probably don't affect anybody

  1. SQL changes - minor updates to the Database
  2. Internal APIs which were removed
    1. Static ToSic.Eav.Data.Builder.AttribBuilder.AddValue(...)

2sxc v15.01 (2023-01-31)

  1. βœ… Export / Import
    1. βœ… Create export bundle configuration to mark content-types and entities for export together
    2. βœ… Create json bundle export system
    3. βœ… Create json bundle import system
    4. βœ… Extend the file-based data loader to also load bundles
    5. βœ… Change all pre-loaded data items to be in bundles
  2. βœ… New Auto-Installer with search, list-view etc.
  3. βœ… Remaining docs for Features released in v15.00
    1. βœ… Finish API and docs for Logging v15.01
    2. βœ… Ability to import apps from folder directly (patrons)
    3. βœ… Documentation for google translate (how the fields are selected, how to activate, etc.)
  4. βœ… Indicate premium/patron features in UI and explain what it is and how to get it
    1. βœ… Visual indicators on buttons
    2. βœ… Visual messages in certain places
    3. βœ… Details dialog to know more about the feature
    4. βœ… Public DB of the feature explaining it in more details, how to activate etc. on https://patrons.2sxc.org/features
  5. βœ… Licenses / Features
    1. βœ… Ability to license a specific feature only (for enterprise customers)
    2. βœ… Feature to generate enterprise license fingerprints for enterprise distribution
    3. βœ… Allow parts of the license to expire earlier (for evaluation purpose)
  6. βœ… Internal / Data Management
    1. βœ… Ability to retrieve Entities for App, parent-App, global-App etc. for certain settings-pickers
    2. βœ… System query to retrieve such entities (need for Wysiwyg-functionality)
  7. βœ… Oqtane: fix compatibility so it works in Oqtane 3.3+
  8. βœ… FIPS Compliance
    Note that the image resizer is not yet FIPS compliant, and it may take a while for it to become compliant
    1. βœ… Change Secure Data Service to be FIPS compliant
    2. βœ… Change System fingerprint to use FIPS compliant SHA256
  9. βœ… Internal - re-org ApiKeys for UI to be in a better place
  10. βœ… Enhance Page DataSource with community requests

2sxc v15.02 (2023-02)

This was a quick release, no changes to report ATM, they will be reported in v15.03

also done:

  1. βœ… Upgrade Blazor-CMS.org to use 2sxc 15.01 for real-life testing
  2. βœ… Create blog on Blazor-CMS.org
  3. βœ… Publish Tutorial in Blazor-CMS.org
  4. βœ… CSP Training at DNN Summit
  5. βœ… Image Perfectionist Training at DNN Summit

2sxc v15.03 (2023-02-21)

  1. βœ… APIs
    1. βœ… EntityId now has a OwnerId property
    2. βœ… Kit.Page.Activate(condition: bool, features: "...")
  2. βœ… move to .net 6 (and drop .net standard 2.0) - almost done, last tests
  3. βœ… Bugs
    1. βœ… RazorBlade json serialization https://github.com/2sic/2sxc/issues/2998
    2. βœ… Support for use on DNN 404 pages
    3. βœ… Date was off in date-picker
  4. βœ… FIPS compliance on encryption APIs
  5. βœ… DataSources
    1. βœ… Pages DataSource
      1. βœ… Improve Pages DataSource with LinkTarget
      2. βœ… Improve Pages DataSource with internal ability to configure what to get
      3. βœ… Improve Pages DataSource to have a UI to configure what to get - @2dm
    2. βœ… Users DataSource Massively improved - with Roles and configurable
    3. βœ… Roles DataSource improved
  6. βœ… 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:

  1. TODO

API Changes that may affect you

  1. An internal user property IUser.IsDesigner was renamed to IUser.IsSiteDeveloper
  2. An internal, deprecated user property IUser.IsAdmin was removed
  3. An internal, deprecated user property IUser.IsSuperUser was removed
  4. An internal property IUser.Guid was changed from Guid? to Guid
  5. The Users DataSource had a property called IncludeSystemAdmins which was changed from bool to string to allow for more options
  6. The Users DataSource had a property called RoleIds which returned a non-standard string-array. It has been removed, and the new Roles returns standard related entities.
  7. 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.

  1. Changed IValue.Languages from IList to IEnumerable and made it immutable
  2. Change IEntity.Attributes from Dictionary<string, IAttribute> to IImmutableDictionary<string, IAttribute> as a step to later make it immutable
  3. Removed some old, probably never used APIs on IAttribute<T> such as
    • IAttribute<T>[int[] languageIDs]
    • IAttribute<T>[string]
    • IAttribute<T>[string[]]
    • IAttribute[string[] languageKeys] - was always marked as private
  4. Changed the type of Attribute.Type from string to ValueTypes to make it more strong-typed
  5. Removed the property Attribute.ControlledType which previously contained the ValueType

2sxc v15.04 (2023-03-22)

  1. βœ… Oqtane: Compatibility with Oqtane 15.04
  2. βœ… Formula improvements
    1. βœ… Get App or global settings for formulas
    2. βœ… Better support for promises
    3. βœ… Ability to set the value of another field
    4. βœ… Intellisense on Formulas
  3. βœ… Cdn remapping to other cdn like cdn.2sxc.org or custom CDN
    1. βœ… Ability to remap all cdn urls to a different url
    2. βœ… New template CDN on https://cdn.2sxc.org
    3. βœ… New template repo for anybody that wants to create their own CDN or host on their path https://github.com/2sxc/cdn.2sxc.org
  4. New APIs for Data Sources finalized
    1. βœ… Public IDataFactory API
    2. βœ… Public IDataSourceFactory API
    3. βœ… Enhanced IDataSource API
    4. βœ… Prototype of live DataSources
  5. βœ… Make everything internal immutable
  6. βœ… Improve WYSIWYG
    1. βœ… Ability to select which "mode" the editor is in, affecting toolbars
    2. βœ… Allow selected mode to affect other things (like deny image-drop if in text-mode)
    3. βœ… Sections to better align images
    4. βœ… Use classes to determine size instead of styles
    5. βœ… WYSIWYG Images which auto-resize on the server based on size (eg 1/2 of the screen)
  7. βœ… New Data Sources and System Queries
    1. βœ… New Data Source Scopes
    2. βœ… New Query Scopes
    3. βœ… New Data Source MetadataTargetTypes
    4. βœ… New Query MetadataTargetTypes
    5. βœ… New DataSource Licenses - with state
    6. βœ… New Query Licenses
    7. βœ… New DataSource Features - with state
    8. βœ… New Query Features
    9. βœ… New DataSource Sites
    10. βœ… New Query Sites
    11. βœ… Improve data sources for Pages
  8. βœ… Query Improvements
    1. βœ… Allow edit/new to be done in a query-selector
    2. βœ… Get query to know if entity can be edited (based on AppId)
    3. βœ… 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.
    4. βœ… New LookUp for Settings- and Resources-Stack - to use Settings and Resources
    5. βœ… Change internal key for Settings to MyConfiguration to avoid naming conflicts (breaking but probably no impact)
  9. βœ… Custom DataSources - breaking
    1. βœ… New IDataFactory API
    2. βœ… New RawEntity and IRawEntity API
    3. βœ… New API for data sources to make data generation easier
    4. βœ… Improved custom DataSources API
    5. βœ… New base class CustomDataSourceLight
    6. βœ… New base class CustomDataSourceAdvanced
    7. βœ… Error handling is now simpler / more standardized
  10. βœ… Jewels
    1. βœ… CmsContext.View now has a Path, PathShared, PhysicalPath and PhysicalPathShared property
    2. βœ… Page.Activate(...) now has a condition: true parameter which lets you only activate a feature if a condition is met
    3. βœ… Page.Parameters has new Get(name) and Get<type>(name) and Get(name, fallback: 7) APIs to make it easier to work with url parameters
  11. βœ… 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"
  12. βœ… Bugs fixes
    1. βœ… 2sxc in DNN Skins on 404 pages https://github.com/2sic/2sxc/issues/2986
    2. βœ… 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:

  1. 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.

  1. IEntity.GetDraft() was removed to ensure the entity is immutable
  2. IEntity.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.

  1. CsvDataSource is now Csv
  2. SerializationConfiguration is now Serialization

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:

  1. Change in App Zip Package in v14.08 v14.08
  2. Change in App Data Folder in v14.08 v14.08

All Changes V14

14.00 - 14.07.05 (2022-Q2 & 2022-Q3)

Q2

  1. βœ… Image-Service/Picture
  2. βœ… Image primary area / corner selector
  3. βœ… Patron features with licensing & payment system
  4. βœ… LightSpeed cache
  5. βœ… v14 Release
  6. βœ… DNN 9.6.1 only
  7. βœ… Formula Boost with many new features #1
  8. βœ… DNN DI integration
  9. βœ… Update turnOn to 0.1.2
  10. βœ… CSP for the site (DNN only ATM)
  11. βœ… Formula Boost #2 (more context info, features-infos, etc.)
  12. βœ… NPM Types updated to latest release
  13. βœ… Enterprise Features which will be availabe for bigger sponsors
  14. βœ… Patron-System, where sponsors of 2sxc get some extra features
  15. βœ… Standardize how to integrate into other systems (non-Dnn/Oqtane)
  16. βœ… Service Kits
  17. βœ… Deprecation System
  18. βœ… Toolbar Services v1
  19. βœ… JS Docs updated to the latest version and auto-generated
  20. βœ… Tutorials Formulas
  21. βœ… Update all Apps to the lastest/greatest conventions
  22. βœ… v14 LTS

Q3

  1. βœ… Toolbars Service Improvements
    1. βœ… icon-metadata
    2. βœ… group C# API - ToolbarBuilder now has Group command
    3. βœ… SVG icons - Toolbar Buttons can now use SVGs for icons (usually base64 encoded)
    4. βœ… base64
    5. βœ… ui multiple params
    6. βœ… bugfixes
    7. βœ… params multiple params
    8. βœ… array params
  2. βœ… Debug-logging on Oqtane client side code, bugfixing ca. 0.5d
  3. βœ… Change storage of app.xml to App_Data, change how import works and enable import-from-folder/git
  4. βœ… Clean up JS code, latest webpack, packages etc. ca. 1d
  5. βœ… Infrastructure for automated testing of JS - ca. 5d
  6. Apps / App Maintenance
    1. βœ… Update most apps which used ephemeral variables for formulas to just use parameters (new in v14) ca. 0.5d
    2. βœ… new Timeline Apps
    3. βœ… new Files App
    4. βœ… new Jobs
    5. βœ… Make many Apps backwards compatible with Bootstrap 3 for a big customer
    6. βœ… Have the core apps tested & optimized for WCAG for a government customer
  7. βœ… Re-release sxc-angular
  8. βœ… Remove dependency on SharpZipLib

14.09 - 14.12 (2022-10)

  1. βœ… Improve UI/Flow of system registration (ATM still confusing)
  2. βœ… Make sure edit-ui doesn't need material fonts from CDN for icons
  3. βœ… Create a new app.json configuration file for 2sxc apps to tune how export/import works
  4. βœ… Remove Newtonsoft JSON and migrate to System.Text.Json
  5. βœ… Improve handling of app-metadata (resources, settings)
  6. βœ… Enable init and import completely new app directly from folder/git copy 1d SDV
  7. βœ… Ability to sync Apps through git including the Assets and ADAM
  8. βœ… Improve handing feature details to edit-ui
  9. Data Sources
    1. New data source Users
    2. New data source Roles
  10. βœ… Update Imageflow to latest version
  11. βœ… Remove dependency on Newtonsoft - only use System.Text.Json
  12. βœ… Create https://schemas.2sxc.org for json schemas
  13. βœ… Create JSON Schemas for image recipe and app.json
  14. βœ… More formula tutorials how to call a WebAPI
  15. βœ… Security update System.Data.SqlClient
  16. βœ… Oqtane 2shine Theme release
  17. βœ… cre8magic v0.0.1 released

14.12.00 - 14.12.03 LTS (November 2022)

  1. βœ… Publish blazor-cms.org
    1. βœ… get a great page speed - 95%+
    2. βœ… Get blazor-cms.org to index really well in google
  2. βœ… v14 LTS #2 ca. v14.12 πŸš€

Important Changes

  1. Assembly Binding Issue on Installs from 2sxc 13.04 to 14.02
  2. Change in App Zip Package in v14.08 v14.08
  3. Change in App Data Folder in v14.08 v14.08
  4. New app.json with Export Exclude v14.09

Version 13

TODO

  1. 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
  2. Lots of metadata stuff... TODO:
  3. New sxc.data and sxc.query

Breaking Changes in 2sxc 13.00

API Changes that may affect you

  1. An old, non-DI feature for Inner Content is being deprecated and will be removed in v14
    see instructions

  2. An old feature for publishing module InstanceData as JSON is removed
    see instructions

  3. An old feature to create DataSources is removed
    see instructions

  4. Two old data-conversion features DataToDictionary and EntitiesToDictionary were removed
    see instructions

  5. Some internal functionality which enabled IEntity objects to convert links containing file:... and page:... has been removed. This only affects special deep code calls on IEntity and does _not affect DynamicEntity objects in Razor see instructions

  6. The old feature Eav.Factory.Resolve<T>() was deprecated and will be removed in v14
    see instructions

  7. The old feature BlockDataSource.Cache.GetContentType(...) was removed see instructions

  8. The Dnn Static ToSic.Sxc.Dnn.Factory is being deprecated and will be removed in v14 see instructions

Major Updates with may affect you

  1. The Image Resizer is being replaced with ImageFlow
  2. The App containing Site-wide settings is changed to Primary - previously it used the Content 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

  1. SQL changes - minor updates to the Database
  2. .net Framework and Dll Updated to Match Dnn 9 Requirements - but still works in Dnn 7.4.2
    1. .net Framework 4.7.2 now required (previously .net Framework 4.5.1)
    2. .net Standard 2.0.3 required (previously .net Standard 1.6)
      Important: This will be referenced in the web.config upon installation
    3. Dependency Injection updated to .net core 2.1.1 (previously 1.1)
    4. Newtonsoft.Json updated to v10.0.3
  3. Entity Framework updated to 2.1.1 (previously 1.1) - Oqtane is unmodified and uses 3.1.4
  4. Dnn DLLs renamed
    1. ToSic.Sxc.Dnn.dll became ToSic.Sxc.Dnn.Core.dll for consistency
    2. ToSic.SexyContent.WebApi.dll became ToSic.Sxc.Dnn.WebApi.dll
    3. ToSic.SexyContent.Razor.dll became ToSic.Sxc.Dnn.Razor.dll
  5. An internal object ToSic.Eav.Apps.State was removed

Internal APIs which were removed

  1. 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 to Services.IEditService - this is non breaking and shouldn't matter, as people won't be using the direct inteface
  • Moved the Web.ILinkHelper to Services.ILinkService - this is non breaking and shouldn't matter, as people won't be using the direct inteface

13.x 2022-Q1

  1. βœ… Improve Tutorials massively
  2. βœ… View Metadata
  3. βœ… Oqtane Website Mode which can be indexed in Google
  4. βœ… Improve Feature-Management
  5. βœ… IFeaturesService
  6. βœ… Shared Apps across Sites (Patrons only feature)
  7. βœ… Enable editing of Shared Templates / files
  8. βœ… Enable shared APIs
  9. βœ… Disable translation of specific content-types
  10. βœ… Dnn Factory replacement to render module or get DynamicCode outside of 2sxc
  11. βœ… Fully integrate with Dnn Dependency Injection
  12. βœ… Improve DI Scopes to Module-Level
  13. βœ… IImageService

13.x LTS 2022-Q2

  1. βœ… v13 LTS

Version 12

Changes Version 12.10

  1. New Children DataSource
  2. New Parents DataSource
  3. New Metadata DataSource
  4. New MetadataTargets DataSource
  5. The StreamMerge DataSource got three new out-streams Distinct, And and Xor
  6. Moved IPageService from previously ToSic.Sxc.Web to ToSic.Sxc.Services but preserving compatibility with old code
  7. Moved IPageService from previously ToSic.Sxc.Web to ToSic.Sxc.Services but preserving compatibility with old code

Breaking Change Version 12.10

  1. 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

  1. Introduced IJsonService for json serialize/deserialize
  2. Introduced IConvertService for simple data-type conversion, also available on the Convert property of Razor12 and Api12
  3. Introduced ToSic.Sxc.Services.ILogService to log messages to the system (Dnn/Oqtane)
  4. Introduced IMailService to easily send mails cross-platform
  5. Introduced ISecureDataService to use encrypted settings
  6. Introduced IRenderService for inner-content rendering (Oqtane code must use this)
  7. Published ToSic.Eav.DataFormats.EavLight to better document simple eav data
  8. 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 or DataToDictionary which are now marked as obsolete.
  9. New Razor12, Api12 and Code12 Classes now don't support old, obsolete APIs anymore
  10. Link.Image now also accepts parameters as a parameter
  11. Link.Image and Link.To always create safe urls now (spaces are encoded etc.)
  12. 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.)
  13. Update to RazorBlade v3.7
  14. Edit.Toolbar now supports condition so that toolbars may or may not be created based on a true/false value
  15. Link.Image now also accepts a factor or aspectRatio which is a string like 1:2 or 3/4
  16. AsDynamic(...) now also wraps anonymous objects in quite an amazing way
  17. 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 as ToSic.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

  1. We believe nothing broke, but it could be that some commands on EntitiesToDictionary or DataToDictionary were accidentally changed. Pls report so we can fix that.
  2. 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
  3. 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

  1. Settings Stack and Resources Stack added, and the Settings / Resources object now have this
  2. Global Settings.Images.xxx settings defined for Content, Screen, Lightbox and Section
  3. Global Settings.Resources.xxx defined for fancybox3, fancybox4, bootstrap4, bootstrap5
  4. Link.Image API created to support predefined sizes/resize modes etc.
  5. Created feature where DynamicEntities can browse to sub-items using their identifier (used for Settings.Images.Content where Content is actually the title of a sub-entity)
  6. Added debug-feature for DynamicEntity get
  7. 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
  8. #Oqtane 2.2 support added
  9. Introduced Monaco (VS-Code online) editor for beta-testing source-editing

Breaking Change Version 12.04

  1. 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
  2. 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.
  3. Many parts that prepare Entities returned a Dictionary<string, object> and now return an IDictionary<string, object>.
    We believe this shouldn't hurt much, since the result would usually be in a var 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

  1. Formulas feature finalized
  2. DynamicEntityStack object created
  3. Hybrid IPageService created with Activate and similar features
  4. CmsContext was enhanced with View information
  5. Content-Type icons can now be stored in the app with an [App:Path]/image.jpg style reference
  6. Enabled view-configuration to configure search behavior incl. not-to-index or what streams should be indexed
  7. turnOn created / deployed
  8. #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:

  1. DataStream and IDataStream 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

  1. Brand new Admin UI based on Angular 9 and Ivy with new Code-Editor, new VisualQuery and much more
  2. Razor CodeBehind
  3. Automatic Polymorphism
  4. Updated Razor Blades to 3.02 with the new Tags.SafeUrl(...) command
  5. Field: Boolean-Tristate which saves true/false/null
  6. App.Data.Create(...) now returns entities it just created

Changes Version 11.01

Enhancements

  1. In-Page Toolbar now recognises sub-item lists and provides sorting and editing buttons #2009
  2. Item-lists now have a button to add existing items to them #1278
  3. New system to create extensions in an app, in the system folder
  4. Ability to create custom Input Fields just by placing them in the system folder #2070

Minor

  1. Improve Equality Check for DynamicEntities and EntitiesInList #2075
  2. Data-table in admin UI now shows Title field no matter if there is another field which is the title #1639
  3. Button to flush app-cache in admin-ui #2073
  4. 2sxc Insights now available from the super-user toolbar #2069
  5. PT translations are added again #2064
  6. Loads of enhancements and minor issues in the UI

Changes Version 11.02

Enhancements

  1. App-Extensions system in the folder system
  2. Custom WebComponent based input fields #2082
  3. API to reconfigure the wysiwyg input control #2090
  4. Show view use with links to pages and more #2077
  5. UI - fields can now be set to not-translate #2086
  6. UI - boolean can now show different labels based on the value it has #2085

Minor

  1. Add HR language pack for editor #2087
  2. show app-name in admin ui
  3. show app-icon in apps-management #2078

Changes Version 11.03 - todo

Changes Version 11.04 - todo

Changes Version 11.05

  1. Old Edit UI be removed
  2. Old Admin-UI be removed
  3. APIs which only the old UIs used be removed
  4. 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

  1. VisualQuery 3 with a lot of new features
    1. Click on a stream shows what's in that stream
    2. Much better error handling to avoid queries from crashing if a stream has an error
    3. All internal DataSources were updated to use this new Error-Handling
    4. Output of Query is now tabbed which is much nicer to use
    5. Visual-Query only returns top 25 results by default to help with creating queries with large amounts of data
    6. UI was enhanced to show more user-friendly names/infos
    7. DynamicIn was introduced so DataSources can indicate that they expect a lot of In-streams
    8. UI enhanced with better/larger buttons/icons
    9. In Streams are now managed better so they can connect before it's known if the source Out actually has that stream
  2. New DataSource Error to provoke an error in a Query for testing
  3. New DataSource SerializationConfiguration lets you determine how things are serialized
  4. DataSource AttributeFilter enhanced to have keep-all or remove-all and multi-line configuration (easier)
  5. New DataSource Tutorial with updated sample code
  6. Insights-Logging was enhanced to log Exceptions (used in the VisualQuery Error handling)

Bugfixes

  1. 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

  1. 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

  1. 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

  1. 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.
  2. 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.
  3. We changed all tokens to always resolve boolean values to true/false (previously they would have been changed to the current language, like wahr 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

  1. IEntity had a command called Value(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 the IEntity. 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.
  2. IEntity also had a Value(fieldname, lookup) method. We are deprecating it, and making the lookup not happen from now on. We believe it was never used.
  3. IEntity had a command called PrimaryValue(fieldName) which was probably never ever used, so we're deprecating it. Use Value(fieldName) instead.

Breaking Changes Version 11.11.03 - Other

  1. 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 enable AsDynamic(Data) instead of AsDynamic(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 - returns True or False
  • 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

  1. 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 to List<dynamic> you'll need to change that to either IList<dynamic> or IEnumerable<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 requiring AsList(...) #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

  1. Renamed the RootDataSource and the Interface to IAppRoot
  2. Split SOC of the AppRoot DataSource so that caching, Root-Metadata and ListCache is fully separate
  3. Since the Logging system now auto-picks up the code lines and names of the methods, we simplified the commands and dropped some parameters.
  4. Moved quite a bit of the DataSource objects into sub-objects, again for SOC.

Version 10.20-04 (ca. 2019-12-03)

  1. Renamed DataTableDataSource to DataTable, old name still works.
  2. Renamed ExternalDataDataSource to ExternalData, old name still works.
  3. Renamed ToSic.SexyContent.DataSources.ModuleDataSource to ToSic.Sxc.DataSources.CmsBlock, old name still works.
  4. Renamed ToSic.Eav.DataSources.VisualQuery.VisualQueryAttribute to ToSic.Eav.DataSources.Queries.VisualQueryAttribute, old name still works.
  5. Renamed ToSic.SexyContent.Environment.Dnn7.Factory to ToSic.Sxc.Dnn.Factory, old name still works.
  6. Renamed ToSic.Eav.DataSources.BaseDataSource to ToSic.Eav.DataSources.DataSourceBase for consistency, old name still works.
  7. 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...

  1. Moved/renamed the internal Eav.AppDataPackage to Eav.Apps.AppState
  2. Moved/renamed some internal interfaces like Entity...
  3. Did a major change for how Attribute<T> for relationships work.
    Before they were Attribute<EntityRelationship> and now they are Attribute<IEnumerable<IEntity>>.
    This also affects Value<EntityRelationship> which is now Value<IEnumerable<IEntity>>
  4. Moved Tenant<T> and Container<T> including matching interfaces to Eav.Environment
  5. Renamed IAppIdentity to IInAppAndZone and IZoneIdentity to IInZone
  6. Renamed ICacheKeyProvider to ICacheKey
  7. Renamed CacheChainedIEnumerable<T> to SynchronizedList<T>
  8. Moved/Renamed MetadataFor to Eav.Metadata.Target. Left old name compatible.
  9. Moved some extension methods for IEntity from ToSic.Eav.Data.Query to ToSic.Eav.Data
  10. Changed Permissions to be strong-typed EntityBased objects

Version 10.20.01 (2019-11-12)

  1. Internal code now uses the term Header instead of ListContent. External code provides both for backward-compatibility
  2. moved internal interfaces for engines (Razor/Token) to final namespaces ToSic.Sxc.Engines
    1. IEngine
    2. EngineBase
    3. ITokenEngine
    4. IRazorEngine
  3. corrected architecture - some template-management code had slipped into Eav.Apps, was moved back to Sxc.Apps
  4. The Template object was moved from Eav.Apps to Sxc.Views and we added an interface IView. We also renamed the internal properti ViewNameInUrl to UrlIdentifier.
  5. To correct the API a CmsManager was created extending the AppManager, which is in charge of Views
  6. Moving internal stuff related to content blocks
    1. IContentBlock from SexyContent.Interfaces to Sxc.Blocks
    2. from ToSic.SexyContent.ISxcInstance to ToSic.Sxc.Blocks.IBlockContext
    3. actually moved a lot of things there incl. ContentBlock now BlockConfiguration and more - all internal stuff
  7. Moving the ToSic.SexyContent.App to ToSic.Sxc.Apps.App
  8. In a razor page, we added the preferred Purpose. The old InstancePurpose will still work
  9. 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

  1. Some namespaces on SexyContent.ContentBlocks were moved to Sxc.Blocks

Version 10.20.00 (2019-11-05)

  1. the internal interface IInPageEditingHelpers was moved from ToSic.SexyContent.Interfaces to the namespace ToSic.Sxc.Web
  2. the internal interface ILinkHelper was moved to ToSic.Sxc.Web
  3. the internal interface IHtmlHelper was moved to ToSic.Sxc.Dnn
  4. the property Configuration on dynamic entities was deprecated in 2sxc 4 and removed in 2sxc 10 - we don't think it was ever used
  5. moved internal Metadata interfaces (ca. 5) into final namespace ToSic.Eav.Metadata
  6. Moved a bunch of internal interfaces which we believe were never used externally from ToSic.Eav.Interfaces to ToSic.Eav.Data
    1. ToSic.Eav.Data.IAttribute
    2. ToSic.Eav.IAttribute<T>
    3. IAttributeBase
    4. IAttributeDefinition
    5. IChildEntities
    6. IContentType
    7. IDimension
    8. IEntityLight
    9. ILanguage
    10. IRelationshipManager
    11. IValue
    12. IValue<T>
    13. IValueOfDimension<T>
  7. Moved a bunch of internal interfaces which we believe were never used externally from ToSic.Eav.Apps.Interfaces to ToSic.Eav.Apps
    1. IApp
    2. IAppData
    3. IAppDataConfiguration
    4. IAppEnvironment
    5. IEnvironmentFactory
    6. IInstanceInfo
    7. IItemListAction
    8. IPagePublishing
    9. ITenant
    10. IZoneMapper
  8. the internal namespace ToSic.Eav.ValueProvider was changed to ToSic.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

  1. the internal interface ToSic.SexyContent.IAppAndDataHelpers was renamed to ToSic.Sxc.IDynamicCode but the old interface still exists, so it shouldn't break
    it was used by Mobius Forms
  2. moved ToSic.Eav.Interfaces.IEntity to ToSic.Eav.Data.IEntity - but preserved the old interface for compatibility it was used everywhere

Clean-Up, but not broken

  1. We're transitioning to the term Header instead of ListContent in templates.
    The Razor pages and WebApi have this starting now, while old terms still work. Note that we're not creating a HeaderPresentation, because you should use Header.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 translation removed 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)

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

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)

  1. Minor breaking change in ADAM properties, like Id instead of FolderID which was a leftover of Dnn naming.
    see full blog post

Version 09.08.00 (2017-11-28)

  1. Minor breaking change List<IEntity> instead of Dictionary<int, IEntity> on the IDataSource
    see full blog post

Version 09.03.00 (2017-10-08)

  1. Breaking change on inconsistent naming ToSic.Eav.IEntity instead of ToSic.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 :)