Skip to content

Provides an abstraction for creating the JavaScriptEncoder used in SystemTextConfigurationEditorJsonSerializer#19849

Merged
nikolajlauridsen merged 4 commits intomainfrom
v16/improvement/allow-encoder-customization-in-system-text-configuration-editor-json-serializer
Aug 7, 2025
Merged

Provides an abstraction for creating the JavaScriptEncoder used in SystemTextConfigurationEditorJsonSerializer#19849
nikolajlauridsen merged 4 commits intomainfrom
v16/improvement/allow-encoder-customization-in-system-text-configuration-editor-json-serializer

Conversation

@AndyButland
Copy link
Contributor

Prerequisites

  • I have added steps to test this contribution in the description below

Provides a solution to #19812

Description

When serializing the data type configuration to the database we use SystemTextConfigurationEditorJsonSerializer which uses a default JavaScriptEncoder. The linked issue shows how a project may want to customize this, but controlling how particular UnicodeRanges are encoded.

It doesn't seem we can just change the default behaviour here - as we don't know what ranges are appropriate to consider for a given project. We could provide UnicodeRanges.All, but at minimum that would be a behaviourally breaking change and at worst could lead to errors where certain strings aren't encoded with escaping as we'd expect.

So I've added an interface with a default implementation of the current behaviour to allow this to be overridden.

Testing

Verify that for example a check box list with values containing non-Latin characters can be saved with configuration and used in content.
Verify that the non-Latin values continue to be escaped in the database, via:

select * from umbracoPropertyData where PropertyTypeId = {id}
select * from umbracoDataType where nodeid = {id}

Add a custom implementation such as the following and verify that the expect changes to the stored values in the database are made, that the data type configuration can be saved and that content using the data type can be updated.

using System.Text.Encodings.Web;
using System.Text.Unicode;
using Umbraco.Cms.Core.Composing;
using Umbraco.Cms.Core.Serialization;

namespace Umbraco.Cms.Web.UI.Custom.SystemTextConfigurationEditor;

public class SystemTextConfigurationEditorComposer : IComposer
{
    public void Compose(IUmbracoBuilder builder)
    {
        builder.Services.AddUnique<IConfigurationEditorJsonSerializerEncoderFactory, MyConfigurationEditorJsonSerializerEncoderFactory>();
    }
}

internal class MyConfigurationEditorJsonSerializerEncoderFactory : IConfigurationEditorJsonSerializerEncoderFactory
{
    public JavaScriptEncoder CreateEncoder() => JavaScriptEncoder.Create(UnicodeRanges.BasicLatin, UnicodeRanges.Cyrillic);
}

Copilot AI review requested due to automatic review settings August 4, 2025 09:25
@AndyButland AndyButland added area/backend status/needs-docs Requires new or updated documentation labels Aug 4, 2025

This comment was marked as outdated.

@AndyButland AndyButland requested a review from Copilot August 4, 2025 09:47
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces an abstraction for creating the JavaScriptEncoder used in SystemTextConfigurationEditorJsonSerializer to address requirements for customizing Unicode character encoding in data type configurations. The solution allows projects to control how specific UnicodeRanges are encoded while maintaining backward compatibility.

  • Adds an interface and factory pattern for encoder creation
  • Updates SystemTextConfigurationEditorJsonSerializer to accept the encoder factory via dependency injection
  • Updates all test files to use the new constructor with the default encoder factory

Reviewed Changes

Copilot reviewed 17 out of 17 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/Umbraco.Core/Serialization/IConfigurationEditorJsonSerializerEncoderFactory.cs Defines interface for encoder factory
src/Umbraco.Infrastructure/Serialization/DefaultConfigurationEditorJsonSerializerEncoderFactory.cs Provides default implementation using BasicLatin Unicode range
src/Umbraco.Infrastructure/Serialization/SystemTextConfigurationEditorJsonSerializer.cs Updates serializer to use encoder factory and adds obsolete constructor
src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.CoreServices.cs Registers default encoder factory implementation
tests/* Updates all test instantiations to use new constructor

@nikolajlauridsen
Copy link
Contributor

Looks good, and works for configurations; however, the values themselves are escaped in the property data table, for instance:

Configuration:
image

Saved values:
image

This tracks with the changes of this PR, but I'm wondering if the issue reported didn't relate to both of these options? Both the stored value and the configuration? 🤔

@AndyButland
Copy link
Contributor Author

This tracks with the changes of this PR, but I'm wondering if the issue reported didn't relate to both of these options? Both the stored value and the configuration? 🤔

Yes, I thought that was what I was seeing when I tested - i.e. the configuration and the property data both encoded as per the JavaScriptEncoder settings. I'll check again, but first just want to check you resaved the content after updating the code? As you would need to do that. Just resaving the data type wouldn't be enough.

@nikolajlauridsen
Copy link
Contributor

Yes, I resaved 😄 also threw a debugger on the value editor and could see that no custom encoder was configured.

I'm pretty sure this is because the configurations have their specific JSON serializer, which tracks with the IConfigurationEditorJsonSerializerEncoderFactory name as well 😄

An alternative solution could be to just introduce an IJsonSerializerEncoderFactory, and use that in both SystemTextConfigurationEditorJsonSerializer and SystemTextJsonSerializer potentially also SystemTextWebhookJsonSerializer it really depends on how granular we want people to control this,

@AndyButland
Copy link
Contributor Author

Thanks, I'll take a further look at this. On the face of it feels like this should be consistent, so one factory for all would make sense. Likely a project needing to use non Latin characters would want them serialized the same in all three of these places.

@nikolajlauridsen
Copy link
Contributor

Yeah, I completely agree, that seems to make the most sense to me too. Additionally, if the need for separate encodings arises we can extend the factory with a method to handle this, that is the benefit of the factory pattern after all 😄

….Tex.Json serializers.

Added the serializer's name as a parameter to allow for different encodings per serializer if required.
@AndyButland
Copy link
Contributor Author

I've pushed an update that should resolve the issue raised in the way we discussed.

Also just addressing the theoretical requirement for different encoders for different serializers, I've added a parameter to the factory method where the name of the serializer class can be passed, and used to customize the encoder returned. Seems reasonable, but maybe you think there's something better to provide here - I wondered about introducing an Alias property on the IJsonSerializer?

@nikolajlauridsen
Copy link
Contributor

nikolajlauridsen commented Aug 6, 2025

Tests out good now 👍

I think it is reasonable with the name as you did, however, I think a potentially more elegant solution could be to use generics, and pass the class through that way, I.E. JavaScriptEncoder.CreateEncoder<TSerializer>() that way you don't have to add an alias, and it gives more freedom to the implementation of IJsonSerializerEncoderFactory in how it decides the correct encoding, it could be class name, inherited class name, interface, all kinds of things 😄

@AndyButland
Copy link
Contributor Author

That's a much nicer idea, thanks. I've implemented that now.

Copy link
Contributor

@nikolajlauridsen nikolajlauridsen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great now 🤩

@nikolajlauridsen nikolajlauridsen merged commit 44aa5dc into main Aug 7, 2025
24 of 25 checks passed
@nikolajlauridsen nikolajlauridsen deleted the v16/improvement/allow-encoder-customization-in-system-text-configuration-editor-json-serializer branch August 7, 2025 07:08
alexsee pushed a commit to alexsee/umbraco-container that referenced this pull request Sep 8, 2025
Updated [Umbraco.Cms](https://github.com/umbraco/Umbraco-CMS) from
16.1.1 to 16.2.0.

<details>
<summary>Release notes</summary>

_Sourced from [Umbraco.Cms's
releases](https://github.com/umbraco/Umbraco-CMS/releases)._

## 16.2.0

<!-- Release notes generated using configuration in .github/release.yml
at release-16.2.0 -->

## What's Changed
### 🙌 Notable Changes
* UFM: JavaScript-like Expressions by @​leekelleher in
umbraco/Umbraco-CMS#19685
* Make logging more friendly for docker by @​Migaroez in
umbraco/Umbraco-CMS#19818
* Adds abstraction around boot time checks for database availability by
@​AndyButland in umbraco/Umbraco-CMS#19848
* Optimize document and media seeding by looking up from database in
batches by @​AndyButland in
umbraco/Umbraco-CMS#19890
* Added configuration option UseStrictDomainMatching, which allows
control over whether content is routed without a matching domain by
@​AndyButland in umbraco/Umbraco-CMS#19815
### 📦 Dependencies
* Bump linkifyjs from 4.3.1 to 4.3.2 in /src/Umbraco.Web.UI.Login by
@​dependabot[bot] in umbraco/Umbraco-CMS#19819
* Tiptap RTE: Upgraded to latest v2.x by @​leekelleher in
umbraco/Umbraco-CMS#19869
* build(deps): bump @​umbraco-ui/uui to 1.15.0 by @​iOvergaard in
umbraco/Umbraco-CMS#19981
### 🚀 New Features
* V16: Siblings endpoints by @​nikolajlauridsen in
umbraco/Umbraco-CMS#19657
* UFM: Adds `markedExtension` extension-type by @​leekelleher in
umbraco/Umbraco-CMS#19684
* UFM: Make Block Settings data available by @​leekelleher in
umbraco/Umbraco-CMS#19686
* Adds background worker to check timeout state by @​iOvergaard in
umbraco/Umbraco-CMS#19702
* V16: Build Backoffice externals with Vite by @​iOvergaard in
umbraco/Umbraco-CMS#19716
* Tiptap RTE: Custom CSS Variables for min/max height/width by
@​leekelleher in umbraco/Umbraco-CMS#19841
* Provides an abstraction for creating the JavaScriptEncoder used in
SystemTextConfigurationEditorJsonSerializer by @​AndyButland in
umbraco/Umbraco-CMS#19849
* Tiptap RTE: Refactor Table menus to use `menu` extension-type by
@​leekelleher in umbraco/Umbraco-CMS#19789
### 🐛 Bug Fixes
* Amend accessibility modifiers on file upload property editor
components to support extension by @​PeterKvayt in
umbraco/Umbraco-CMS#19643
* Docs: Tree example by @​madsrasmussen in
umbraco/Umbraco-CMS#19624
* Hide Document/Media Collection Workspace View until the item is
created by @​madsrasmussen in
umbraco/Umbraco-CMS#19644
* Title returns "Server Error" in non-debug mode by @​PeterKvayt in
umbraco/Umbraco-CMS#19665
* Fix issue with preview in delivery API for MNTP property editor by
@​AndyButland in umbraco/Umbraco-CMS#19668
* Adds support for custom granular permissions when aggregating across
user groups by @​AndyButland in
umbraco/Umbraco-CMS#19660
* Fixes issues with creation of documents from blueprints that have
populated file upload properties by @​AndyButland in
umbraco/Umbraco-CMS#19655
* Clear member cache by older user name when member user name is updated
(16) by @​AndyButland in
umbraco/Umbraco-CMS#19690
* V16 QA Removed unused API acceptance tests by @​nhudinh0309 in
umbraco/Umbraco-CMS#19679
* V16 QA Added acceptance tests for granular document permission by
@​nhudinh0309 in umbraco/Umbraco-CMS#19546
* V16 QA Reverted npx command by @​nhudinh0309 in
umbraco/Umbraco-CMS#19699
* Fixes Block Catalogue Modal Filter by @​leekelleher in
umbraco/Umbraco-CMS#19700
* Fix issue forceHideContentEditorInOverlay not available in RTE by
@​NguyenThuyLan in umbraco/Umbraco-CMS#19698
* V16: Property editor file upload does not validate file types by
@​iOvergaard in umbraco/Umbraco-CMS#19714
* Fix failing integration tests in SQL Server by @​lauraneto in
umbraco/Umbraco-CMS#19725
* Populate name for content and media on URL picker if title is left
empty by @​AndyButland in
umbraco/Umbraco-CMS#19677
* Forward merge #​19720 to V16 by @​kjac in
umbraco/Umbraco-CMS#19735
* Include /.well-known/jwks in the paths covered by OpenIddict by @​kjac
in umbraco/Umbraco-CMS#19749
* Add flag to exclude trashed media by @​rammi987 in
umbraco/Umbraco-CMS#19746
* V16 Added acceptance tests for the regression issue #​16985 by
@​nhudinh0309 in umbraco/Umbraco-CMS#19712
* V16 Added acceptance tests for the regression issue #​19529 by
@​nhudinh0309 in umbraco/Umbraco-CMS#19713
* V16 QA Added acceptance tests for creating a document using blueprint
by @​nhudinh0309 in umbraco/Umbraco-CMS#19708
* Allow saving blueprints with validation errors by @​lauraneto in
umbraco/Umbraco-CMS#19748
* Make internal & private classes sealed where possible, to avoid code
for virtual dispatch by @​Henr1k80 in
umbraco/Umbraco-CMS#19719
* add missing translation for DA by @​rammi987 in
umbraco/Umbraco-CMS#19740
* Add a backing field for EditorUIAlias and track changes when its set.
by @​KevinJump in umbraco/Umbraco-CMS#19733
* Template with Block List field with Inline Editing Mode causes
Collection List View to shrink by @​NguyenThuyLan in
umbraco/Umbraco-CMS#19754
 ... (truncated)

## 16.2.0-rc2

<!-- Release notes generated using configuration in .github/release.yml
at release-16.2.0-rc2 -->

## What's Changed
### 📦 Dependencies
* build(deps): bump @​umbraco-ui/uui to 1.15.0 by @​iOvergaard in
umbraco/Umbraco-CMS#19981
### 🐛 Bug Fixes
* fix: pins the UmbracoExtension `@​hey-api/*` versions to that of the
Backoffice client by @​iOvergaard in
umbraco/Umbraco-CMS#20016
### ✍️ Documentation
* Chore: JSDocs for RTE CSS Props by @​leekelleher in
umbraco/Umbraco-CMS#20008


**Full Changelog**:
umbraco/Umbraco-CMS@release-16.2.0-rc...release-16.2.0-rc2

## 16.2.0-rc

<!-- Release notes generated using configuration in .github/release.yml
at release-16.2.0-rc -->

## What's Changed
### 🙌 Notable Changes
* UFM: JavaScript-like Expressions by @​leekelleher in
umbraco/Umbraco-CMS#19685
* Make logging more friendly for docker by @​Migaroez in
umbraco/Umbraco-CMS#19818
* Adds abstraction around boot time checks for database availability by
@​AndyButland in umbraco/Umbraco-CMS#19848
* Optimize document and media seeding by looking up from database in
batches by @​AndyButland in
umbraco/Umbraco-CMS#19890
* Added configuration option UseStrictDomainMatching, which allows
control over whether content is routed without a matching domain by
@​AndyButland in umbraco/Umbraco-CMS#19815
### 📦 Dependencies
* Bump linkifyjs from 4.3.1 to 4.3.2 in /src/Umbraco.Web.UI.Login by
@​dependabot[bot] in umbraco/Umbraco-CMS#19819
* Tiptap RTE: Upgraded to latest v2.x by @​leekelleher in
umbraco/Umbraco-CMS#19869
* build(deps): bump @​umbraco-ui/uui from 1.14.2 to 1.15.0-rc.0 by
@​iOvergaard in umbraco/Umbraco-CMS#19870
### 🚀 New Features
* V16: Siblings endpoints by @​nikolajlauridsen in
umbraco/Umbraco-CMS#19657
* UFM: Adds `markedExtension` extension-type by @​leekelleher in
umbraco/Umbraco-CMS#19684
* UFM: Make Block Settings data available by @​leekelleher in
umbraco/Umbraco-CMS#19686
* Adds background worker to check timeout state by @​iOvergaard in
umbraco/Umbraco-CMS#19702
* V16: Build Backoffice externals with Vite by @​iOvergaard in
umbraco/Umbraco-CMS#19716
* Tiptap RTE: Custom CSS Variables for min/max height/width by
@​leekelleher in umbraco/Umbraco-CMS#19841
* Provides an abstraction for creating the JavaScriptEncoder used in
SystemTextConfigurationEditorJsonSerializer by @​AndyButland in
umbraco/Umbraco-CMS#19849
* Tiptap RTE: Refactor Table menus to use `menu` extension-type by
@​leekelleher in umbraco/Umbraco-CMS#19789
### 🐛 Bug Fixes
* Amend accessibility modifiers on file upload property editor
components to support extension by @​PeterKvayt in
umbraco/Umbraco-CMS#19643
* Docs: Tree example by @​madsrasmussen in
umbraco/Umbraco-CMS#19624
* Hide Document/Media Collection Workspace View until the item is
created by @​madsrasmussen in
umbraco/Umbraco-CMS#19644
* Title returns "Server Error" in non-debug mode by @​PeterKvayt in
umbraco/Umbraco-CMS#19665
* Fix issue with preview in delivery API for MNTP property editor by
@​AndyButland in umbraco/Umbraco-CMS#19668
* Adds support for custom granular permissions when aggregating across
user groups by @​AndyButland in
umbraco/Umbraco-CMS#19660
* Fixes issues with creation of documents from blueprints that have
populated file upload properties by @​AndyButland in
umbraco/Umbraco-CMS#19655
* Clear member cache by older user name when member user name is updated
(16) by @​AndyButland in
umbraco/Umbraco-CMS#19690
* V16 QA Removed unused API acceptance tests by @​nhudinh0309 in
umbraco/Umbraco-CMS#19679
* V16 QA Added acceptance tests for granular document permission by
@​nhudinh0309 in umbraco/Umbraco-CMS#19546
* V16 QA Reverted npx command by @​nhudinh0309 in
umbraco/Umbraco-CMS#19699
* Fixes Block Catalogue Modal Filter by @​leekelleher in
umbraco/Umbraco-CMS#19700
* Fix issue forceHideContentEditorInOverlay not available in RTE by
@​NguyenThuyLan in umbraco/Umbraco-CMS#19698
* V16: Property editor file upload does not validate file types by
@​iOvergaard in umbraco/Umbraco-CMS#19714
* Fix failing integration tests in SQL Server by @​lauraneto in
umbraco/Umbraco-CMS#19725
* Populate name for content and media on URL picker if title is left
empty by @​AndyButland in
umbraco/Umbraco-CMS#19677
* Forward merge #​19720 to V16 by @​kjac in
umbraco/Umbraco-CMS#19735
* Include /.well-known/jwks in the paths covered by OpenIddict by @​kjac
in umbraco/Umbraco-CMS#19749
* Add flag to exclude trashed media by @​rammi987 in
umbraco/Umbraco-CMS#19746
* V16 Added acceptance tests for the regression issue #​16985 by
@​nhudinh0309 in umbraco/Umbraco-CMS#19712
* V16 Added acceptance tests for the regression issue #​19529 by
@​nhudinh0309 in umbraco/Umbraco-CMS#19713
* V16 QA Added acceptance tests for creating a document using blueprint
by @​nhudinh0309 in umbraco/Umbraco-CMS#19708
* Allow saving blueprints with validation errors by @​lauraneto in
umbraco/Umbraco-CMS#19748
* Make internal & private classes sealed where possible, to avoid code
for virtual dispatch by @​Henr1k80 in
umbraco/Umbraco-CMS#19719
* add missing translation for DA by @​rammi987 in
umbraco/Umbraco-CMS#19740
* Add a backing field for EditorUIAlias and track changes when its set.
by @​KevinJump in umbraco/Umbraco-CMS#19733
* Template with Block List field with Inline Editing Mode causes
Collection List View to shrink by @​NguyenThuyLan in
umbraco/Umbraco-CMS#19754
 ... (truncated)

Commits viewable in [compare
view](umbraco/Umbraco-CMS@release-16.1.1...release-16.2.0).
</details>

Updated
[Umbraco.Cms.Persistence.Sqlite](https://github.com/umbraco/Umbraco-CMS)
from 16.1.1 to 16.2.0.

<details>
<summary>Release notes</summary>

_Sourced from [Umbraco.Cms.Persistence.Sqlite's
releases](https://github.com/umbraco/Umbraco-CMS/releases)._

## 16.2.0

<!-- Release notes generated using configuration in .github/release.yml
at release-16.2.0 -->

## What's Changed
### 🙌 Notable Changes
* UFM: JavaScript-like Expressions by @​leekelleher in
umbraco/Umbraco-CMS#19685
* Make logging more friendly for docker by @​Migaroez in
umbraco/Umbraco-CMS#19818
* Adds abstraction around boot time checks for database availability by
@​AndyButland in umbraco/Umbraco-CMS#19848
* Optimize document and media seeding by looking up from database in
batches by @​AndyButland in
umbraco/Umbraco-CMS#19890
* Added configuration option UseStrictDomainMatching, which allows
control over whether content is routed without a matching domain by
@​AndyButland in umbraco/Umbraco-CMS#19815
### 📦 Dependencies
* Bump linkifyjs from 4.3.1 to 4.3.2 in /src/Umbraco.Web.UI.Login by
@​dependabot[bot] in umbraco/Umbraco-CMS#19819
* Tiptap RTE: Upgraded to latest v2.x by @​leekelleher in
umbraco/Umbraco-CMS#19869
* build(deps): bump @​umbraco-ui/uui to 1.15.0 by @​iOvergaard in
umbraco/Umbraco-CMS#19981
### 🚀 New Features
* V16: Siblings endpoints by @​nikolajlauridsen in
umbraco/Umbraco-CMS#19657
* UFM: Adds `markedExtension` extension-type by @​leekelleher in
umbraco/Umbraco-CMS#19684
* UFM: Make Block Settings data available by @​leekelleher in
umbraco/Umbraco-CMS#19686
* Adds background worker to check timeout state by @​iOvergaard in
umbraco/Umbraco-CMS#19702
* V16: Build Backoffice externals with Vite by @​iOvergaard in
umbraco/Umbraco-CMS#19716
* Tiptap RTE: Custom CSS Variables for min/max height/width by
@​leekelleher in umbraco/Umbraco-CMS#19841
* Provides an abstraction for creating the JavaScriptEncoder used in
SystemTextConfigurationEditorJsonSerializer by @​AndyButland in
umbraco/Umbraco-CMS#19849
* Tiptap RTE: Refactor Table menus to use `menu` extension-type by
@​leekelleher in umbraco/Umbraco-CMS#19789
### 🐛 Bug Fixes
* Amend accessibility modifiers on file upload property editor
components to support extension by @​PeterKvayt in
umbraco/Umbraco-CMS#19643
* Docs: Tree example by @​madsrasmussen in
umbraco/Umbraco-CMS#19624
* Hide Document/Media Collection Workspace View until the item is
created by @​madsrasmussen in
umbraco/Umbraco-CMS#19644
* Title returns "Server Error" in non-debug mode by @​PeterKvayt in
umbraco/Umbraco-CMS#19665
* Fix issue with preview in delivery API for MNTP property editor by
@​AndyButland in umbraco/Umbraco-CMS#19668
* Adds support for custom granular permissions when aggregating across
user groups by @​AndyButland in
umbraco/Umbraco-CMS#19660
* Fixes issues with creation of documents from blueprints that have
populated file upload properties by @​AndyButland in
umbraco/Umbraco-CMS#19655
* Clear member cache by older user name when member user name is updated
(16) by @​AndyButland in
umbraco/Umbraco-CMS#19690
* V16 QA Removed unused API acceptance tests by @​nhudinh0309 in
umbraco/Umbraco-CMS#19679
* V16 QA Added acceptance tests for granular document permission by
@​nhudinh0309 in umbraco/Umbraco-CMS#19546
* V16 QA Reverted npx command by @​nhudinh0309 in
umbraco/Umbraco-CMS#19699
* Fixes Block Catalogue Modal Filter by @​leekelleher in
umbraco/Umbraco-CMS#19700
* Fix issue forceHideContentEditorInOverlay not available in RTE by
@​NguyenThuyLan in umbraco/Umbraco-CMS#19698
* V16: Property editor file upload does not validate file types by
@​iOvergaard in umbraco/Umbraco-CMS#19714
* Fix failing integration tests in SQL Server by @​lauraneto in
umbraco/Umbraco-CMS#19725
* Populate name for content and media on URL picker if title is left
empty by @​AndyButland in
umbraco/Umbraco-CMS#19677
* Forward merge #​19720 to V16 by @​kjac in
umbraco/Umbraco-CMS#19735
* Include /.well-known/jwks in the paths covered by OpenIddict by @​kjac
in umbraco/Umbraco-CMS#19749
* Add flag to exclude trashed media by @​rammi987 in
umbraco/Umbraco-CMS#19746
* V16 Added acceptance tests for the regression issue #​16985 by
@​nhudinh0309 in umbraco/Umbraco-CMS#19712
* V16 Added acceptance tests for the regression issue #​19529 by
@​nhudinh0309 in umbraco/Umbraco-CMS#19713
* V16 QA Added acceptance tests for creating a document using blueprint
by @​nhudinh0309 in umbraco/Umbraco-CMS#19708
* Allow saving blueprints with validation errors by @​lauraneto in
umbraco/Umbraco-CMS#19748
* Make internal & private classes sealed where possible, to avoid code
for virtual dispatch by @​Henr1k80 in
umbraco/Umbraco-CMS#19719
* add missing translation for DA by @​rammi987 in
umbraco/Umbraco-CMS#19740
* Add a backing field for EditorUIAlias and track changes when its set.
by @​KevinJump in umbraco/Umbraco-CMS#19733
* Template with Block List field with Inline Editing Mode causes
Collection List View to shrink by @​NguyenThuyLan in
umbraco/Umbraco-CMS#19754
 ... (truncated)

## 16.2.0-rc2

<!-- Release notes generated using configuration in .github/release.yml
at release-16.2.0-rc2 -->

## What's Changed
### 📦 Dependencies
* build(deps): bump @​umbraco-ui/uui to 1.15.0 by @​iOvergaard in
umbraco/Umbraco-CMS#19981
### 🐛 Bug Fixes
* fix: pins the UmbracoExtension `@​hey-api/*` versions to that of the
Backoffice client by @​iOvergaard in
umbraco/Umbraco-CMS#20016
### ✍️ Documentation
* Chore: JSDocs for RTE CSS Props by @​leekelleher in
umbraco/Umbraco-CMS#20008


**Full Changelog**:
umbraco/Umbraco-CMS@release-16.2.0-rc...release-16.2.0-rc2

## 16.2.0-rc

<!-- Release notes generated using configuration in .github/release.yml
at release-16.2.0-rc -->

## What's Changed
### 🙌 Notable Changes
* UFM: JavaScript-like Expressions by @​leekelleher in
umbraco/Umbraco-CMS#19685
* Make logging more friendly for docker by @​Migaroez in
umbraco/Umbraco-CMS#19818
* Adds abstraction around boot time checks for database availability by
@​AndyButland in umbraco/Umbraco-CMS#19848
* Optimize document and media seeding by looking up from database in
batches by @​AndyButland in
umbraco/Umbraco-CMS#19890
* Added configuration option UseStrictDomainMatching, which allows
control over whether content is routed without a matching domain by
@​AndyButland in umbraco/Umbraco-CMS#19815
### 📦 Dependencies
* Bump linkifyjs from 4.3.1 to 4.3.2 in /src/Umbraco.Web.UI.Login by
@​dependabot[bot] in umbraco/Umbraco-CMS#19819
* Tiptap RTE: Upgraded to latest v2.x by @​leekelleher in
umbraco/Umbraco-CMS#19869
* build(deps): bump @​umbraco-ui/uui from 1.14.2 to 1.15.0-rc.0 by
@​iOvergaard in umbraco/Umbraco-CMS#19870
### 🚀 New Features
* V16: Siblings endpoints by @​nikolajlauridsen in
umbraco/Umbraco-CMS#19657
* UFM: Adds `markedExtension` extension-type by @​leekelleher in
umbraco/Umbraco-CMS#19684
* UFM: Make Block Settings data available by @​leekelleher in
umbraco/Umbraco-CMS#19686
* Adds background worker to check timeout state by @​iOvergaard in
umbraco/Umbraco-CMS#19702
* V16: Build Backoffice externals with Vite by @​iOvergaard in
umbraco/Umbraco-CMS#19716
* Tiptap RTE: Custom CSS Variables for min/max height/width by
@​leekelleher in umbraco/Umbraco-CMS#19841
* Provides an abstraction for creating the JavaScriptEncoder used in
SystemTextConfigurationEditorJsonSerializer by @​AndyButland in
umbraco/Umbraco-CMS#19849
* Tiptap RTE: Refactor Table menus to use `menu` extension-type by
@​leekelleher in umbraco/Umbraco-CMS#19789
### 🐛 Bug Fixes
* Amend accessibility modifiers on file upload property editor
components to support extension by @​PeterKvayt in
umbraco/Umbraco-CMS#19643
* Docs: Tree example by @​madsrasmussen in
umbraco/Umbraco-CMS#19624
* Hide Document/Media Collection Workspace View until the item is
created by @​madsrasmussen in
umbraco/Umbraco-CMS#19644
* Title returns "Server Error" in non-debug mode by @​PeterKvayt in
umbraco/Umbraco-CMS#19665
* Fix issue with preview in delivery API for MNTP property editor by
@​AndyButland in umbraco/Umbraco-CMS#19668
* Adds support for custom granular permissions when aggregating across
user groups by @​AndyButland in
umbraco/Umbraco-CMS#19660
* Fixes issues with creation of documents from blueprints that have
populated file upload properties by @​AndyButland in
umbraco/Umbraco-CMS#19655
* Clear member cache by older user name when member user name is updated
(16) by @​AndyButland in
umbraco/Umbraco-CMS#19690
* V16 QA Removed unused API acceptance tests by @​nhudinh0309 in
umbraco/Umbraco-CMS#19679
* V16 QA Added acceptance tests for granular document permission by
@​nhudinh0309 in umbraco/Umbraco-CMS#19546
* V16 QA Reverted npx command by @​nhudinh0309 in
umbraco/Umbraco-CMS#19699
* Fixes Block Catalogue Modal Filter by @​leekelleher in
umbraco/Umbraco-CMS#19700
* Fix issue forceHideContentEditorInOverlay not available in RTE by
@​NguyenThuyLan in umbraco/Umbraco-CMS#19698
* V16: Property editor file upload does not validate file types by
@​iOvergaard in umbraco/Umbraco-CMS#19714
* Fix failing integration tests in SQL Server by @​lauraneto in
umbraco/Umbraco-CMS#19725
* Populate name for content and media on URL picker if title is left
empty by @​AndyButland in
umbraco/Umbraco-CMS#19677
* Forward merge #​19720 to V16 by @​kjac in
umbraco/Umbraco-CMS#19735
* Include /.well-known/jwks in the paths covered by OpenIddict by @​kjac
in umbraco/Umbraco-CMS#19749
* Add flag to exclude trashed media by @​rammi987 in
umbraco/Umbraco-CMS#19746
* V16 Added acceptance tests for the regression issue #​16985 by
@​nhudinh0309 in umbraco/Umbraco-CMS#19712
* V16 Added acceptance tests for the regression issue #​19529 by
@​nhudinh0309 in umbraco/Umbraco-CMS#19713
* V16 QA Added acceptance tests for creating a document using blueprint
by @​nhudinh0309 in umbraco/Umbraco-CMS#19708
* Allow saving blueprints with validation errors by @​lauraneto in
umbraco/Umbraco-CMS#19748
* Make internal & private classes sealed where possible, to avoid code
for virtual dispatch by @​Henr1k80 in
umbraco/Umbraco-CMS#19719
* add missing translation for DA by @​rammi987 in
umbraco/Umbraco-CMS#19740
* Add a backing field for EditorUIAlias and track changes when its set.
by @​KevinJump in umbraco/Umbraco-CMS#19733
* Template with Block List field with Inline Editing Mode causes
Collection List View to shrink by @​NguyenThuyLan in
umbraco/Umbraco-CMS#19754
 ... (truncated)

Commits viewable in [compare
view](umbraco/Umbraco-CMS@release-16.1.1...release-16.2.0).
</details>

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/backend status/needs-docs Requires new or updated documentation type/feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants