Skip to content

Markdown Conversion: Remove hard dependency on deprecated library and replace with IMarkdownToHtmlConverter abstraction (closes #21238 and #19500)#21242

Merged
AndyButland merged 5 commits intomainfrom
v17/feature/provide-markdown-to-html-converter-abstraction
Jan 6, 2026
Merged

Markdown Conversion: Remove hard dependency on deprecated library and replace with IMarkdownToHtmlConverter abstraction (closes #21238 and #19500)#21242
AndyButland merged 5 commits intomainfrom
v17/feature/provide-markdown-to-html-converter-abstraction

Conversation

@AndyButland
Copy link
Contributor

@AndyButland AndyButland commented Dec 23, 2025

Prerequisites

Addresses #21238 and #19500.

Follows-up on this closed PR: #19501

Description

The first issue raises a specific concern about the detail of code block conversion to HTML, whereas the second is a more general one about our use of a deprecated library.

Given we need to ensure backward compatibility for Umbraco 17, we can't simply swap the library we use - we need to ensure the library is still available in case anyone is using it directly in projects or packages, and there may be subtle differences in the output people are relying on for styling.

So instead I've introduced an abstraction, and created implementations for both the deprecated library and it's recommended successor. The first is registered as default so existing behaviour isn't changed. But implementors can swap for the other, or provided their own with further customisations as needed.

I've then made sure to use the abstraction in each place where we are currently doing markdown to HTML conversion: in the markdown property value converter, and for a feature with health check notifications.

Change Summary

  • Add IMarkdownToHtmlConverter interface in Umbraco.Core.Strings namespace for converting Markdown to HTML
  • Add MarkdigMarkdownToHtmlConverter using the Markdig library (new recommended implementation)
  • Add HeyRedMarkdownToHtmlConverter using HeyRed.MarkdownSharp (deprecated, but still the default until Umbraco 18 and provided for backwards compatibility until 19)
  • Update HealthChecks.MarkdownToHtmlConverter to use the new abstraction with constructor injection
  • Update MarkdownEditorValueConverter to use the new abstraction
  • Add unit tests for both markdown converter implementations (Markdig and HeyRed)
  • Add unit tests for HealthChecks.MarkdownToHtmlConverter verifying syntax highlighting for Success/Warning/Error statuses

Testing

To test verify that a markdown property editor renders the expected output.

Using a composer, register the other implementation and verify the same:

using Umbraco.Cms.Core.Composing;
using Umbraco.Cms.Core.Strings;
using Umbraco.Cms.Infrastructure.Strings;

public class MarkdownToHtmlComposer : IComposer
{
    public void Compose(IUmbracoBuilder builder)
    {
        builder.Services.AddUnique<IMarkdownToHtmlConverter, MarkdigMarkdownToHtmlConverter>();
    }
}

The HTML should be almost or exactly the same. The only known difference I've seen is the syntax used for code blocks, but there may be other subtle differences.

Documentation

Should create a documentation page for the IMarkdownToHtmlConverter interface and the HeyRedMarkdownToHtmlConverter and MarkdigMarkdownToHtmlConverter implementations).

…ementations

- Add IMarkdownToHtmlConverter interface in Umbraco.Core.Strings
- Add MarkdigMarkdownToHtmlConverter using the Markdig library (new default)
- Add HeyRedMarkdownToHtmlConverter using HeyRed.MarkdownSharp (deprecated, for backwards compatibility)
- Update HealthChecks.MarkdownToHtmlConverter to use the new abstraction
- Update MarkdownEditorValueConverter to use the new abstraction
- Add unit tests for both markdown converter implementations
- Add unit tests for HealthChecks.MarkdownToHtmlConverter syntax highlighting

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Copilot AI review requested due to automatic review settings December 23, 2025 12:05
@AndyButland AndyButland changed the title Infrastructure: Add IMarkdownToHtmlConverter abstraction with unit tests Markdown Conversion: Remove hard dependency on deprecated library and replace with IMarkdownToHtmlConverter abstraction Dec 23, 2025
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 a new abstraction IMarkdownToHtmlConverter for converting Markdown to HTML, with two implementations: the new recommended MarkdigMarkdownToHtmlConverter using the Markdig library, and the deprecated HeyRedMarkdownToHtmlConverter for backwards compatibility. The existing code is refactored to use dependency injection with the new abstraction, maintaining backwards compatibility through obsolete constructors.

Key Changes

  • Added IMarkdownToHtmlConverter interface in the Umbraco.Core.Strings namespace with two implementations (Markdig and HeyRed)
  • Refactored MarkdownEditorValueConverter and HealthChecks.MarkdownToHtmlConverter to use constructor injection with the new abstraction
  • Comprehensive unit tests added covering both markdown converter implementations and health check color highlighting

Reviewed changes

Copilot reviewed 14 out of 14 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/Umbraco.Core/Strings/IMarkdownToHtmlConverter.cs New interface defining markdown-to-HTML conversion contract
src/Umbraco.Infrastructure/Strings/MarkdigMarkdownToHtmlConverter.cs New implementation using Markdig library (recommended)
src/Umbraco.Infrastructure/Strings/HeyRedMarkdownToHtmlConverter.cs Deprecated implementation using HeyRed.MarkdownSharp for backwards compatibility
src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/MarkdownEditorValueConverter.cs Updated to use injected converter with obsolete constructor for compatibility
src/Umbraco.Infrastructure/HealthChecks/MarkdownToHtmlConverter.cs Updated to use injected converter with obsolete constructor for compatibility
src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.Services.cs Registers HeyRed implementation as default (temporary, to be changed in V18)
src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.CoreServices.cs Updates registration to use fully qualified type name to avoid conflicts
src/Umbraco.Core/Composing/TypeFinder.cs Adds Markdig to exclusion list for type scanning
src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj Adds Markdig package reference
Directory.Packages.props Adds Markdig version 0.44.0
NOTICES.txt Adds Markdig license attribution
tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Strings/MarkdownToHtmlConverterTests.cs Unit tests for both markdown converter implementations
tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HealthChecks/MarkdownToHtmlConverterTests.cs Unit tests for health check converter with color highlighting validation
tests/Umbraco.Tests.UnitTests/Umbraco.Core/DeliveryApi/MarkdownEditorValueConverterTests.cs Updated test to inject deprecated HeyRed converter

@AndyButland AndyButland changed the title Markdown Conversion: Remove hard dependency on deprecated library and replace with IMarkdownToHtmlConverter abstraction Markdown Conversion: Remove hard dependency on deprecated library and replace with IMarkdownToHtmlConverter abstraction (closes #21238 and #19500) Dec 23, 2025
@AndyButland AndyButland added the status/needs-docs Requires new or updated documentation label Dec 23, 2025
Copy link
Contributor

@lauraneto lauraneto left a comment

Choose a reason for hiding this comment

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

Looks good! 🙌

@AndyButland
Copy link
Contributor Author

Thanks for the review @lauraneto. I've made the suggested update and created a docs PR for the feature here: umbraco/UmbracoDocs#7740

@AndyButland AndyButland merged commit 0da1fa1 into main Jan 6, 2026
26 checks passed
@AndyButland AndyButland deleted the v17/feature/provide-markdown-to-html-converter-abstraction branch January 6, 2026 07:43
alexsee pushed a commit to alexsee/umbraco-container that referenced this pull request Feb 23, 2026
Updated [Umbraco.Cms](https://github.com/umbraco/Umbraco-CMS) from
17.1.0 to 17.2.0.

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

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

## 17.2.0

## What's Changed Since 17.2.0-rc2

### 📦 Dependencies
* build(deps): bumps @​umbraco-ui/uui to 1.17.0 by @​iOvergaard in
umbraco/Umbraco-CMS#21765

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

## What's Changed Since 17.2.0-rc

### 🐛 Bug Fixes
* Block Workspace: rename root-tab to 'generic' by @​nielslyngsoe in
umbraco/Umbraco-CMS#21699
* Block Workspace: Tabs navigation, Cherry-pick from #​21672 by
@​nielslyngsoe in umbraco/Umbraco-CMS#21693

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

## What's Changed Since the Last Release (17.1.0)

### 🙌 Notable Changes
* User group: add description to user group (closes #​14986) by
@​NguyenThuyLan in umbraco/Umbraco-CMS#21057
* Content Types: Root properties by @​nielslyngsoe in
umbraco/Umbraco-CMS#21500

### 📦 Dependencies
* Storybook: Bumps storybook from 9.0.14 to 10.1.10 by @​dependabot[bot]
in umbraco/Umbraco-CMS#21208
* Bump qs from 6.14.0 to 6.14.1 in /src/Umbraco.Web.UI.Client in the
npm_and_yarn group across 1 directory by @​dependabot[bot] in
umbraco/Umbraco-CMS#21270
* Bump the npm_and_yarn group across 2 directories with 1 update by
@​dependabot[bot] in umbraco/Umbraco-CMS#21403
* Dependencies: Bumps login dependencies to latest by @​iOvergaard in
umbraco/Umbraco-CMS#21539
* Tiptap RTE: Upgraded to latest v3.x by @​leekelleher in
umbraco/Umbraco-CMS#21493
* Dependencies: Bumps @​umbraco-ui/uui to 1.17.0-rc.4 by @​iOvergaard in
umbraco/Umbraco-CMS#21538
* build(deps): bumps @​umbraco-ui/uui to 1.17.0-rc.5 by @​iOvergaard in
umbraco/Umbraco-CMS#21569
* Dependencies: Update Microsoft packages to 10.0.1 and pin vulnerable
transitive dependencies (closes #​21122) by @​AndyButland in
umbraco/Umbraco-CMS#21285
* Dependencies: Bump to latest minor/patch versions by @​AndyButland in
umbraco/Umbraco-CMS#21540

### 🚀 New Features
* Markdown Conversion: Remove hard dependency on deprecated library and
replace with `IMarkdownToHtmlConverter` abstraction (closes #​21238 and
#​19500) by @​AndyButland in
umbraco/Umbraco-CMS#21242
* UI: Refactor breadcrumb URLs to use Path Constants by @​iOvergaard in
umbraco/Umbraco-CMS#21179
* Tree Navigation: Add visual indicators for items with restricted
access by @​iOvergaard in
umbraco/Umbraco-CMS#21365
* Recycle Bin: Adds `emptyRecycleBin` collection action kind for
Documents and Media by @​leekelleher in
umbraco/Umbraco-CMS#21482
* Tiptap RTE: Adds link (`umbLink`) support to `styleMenu` API by
@​leekelleher in umbraco/Umbraco-CMS#21494
* Rollback: Add toggle for diff display (closes #​18518) by
@​AndyButland in umbraco/Umbraco-CMS#21426
* Dictionary: Add configurable value search functionality by
@​Nis-Knowit in umbraco/Umbraco-CMS#21200

### 🚤 Performance
* Performance: Embeds the API of selected extra conditions by
@​nielslyngsoe in umbraco/Umbraco-CMS#21188
* Performance: Bundle Js Libs by @​nielslyngsoe in
umbraco/Umbraco-CMS#21187
* Performance: Embed Store API in Manifests to lower number of network
request by @​madsrasmussen in
umbraco/Umbraco-CMS#21191
* Performance: Avoid database lookup in `UserIdKeyResolver` for
super-user by @​AndyButland in
umbraco/Umbraco-CMS#21281
* Performance: Only flush ID/Key map in `ContentCacheRefresher` on
content deletion by @​AndyButland in
umbraco/Umbraco-CMS#21283
* Performance: Optimize refresh of hybrid cache for a document by
retrieving draft and published in single query by @​AndyButland in
umbraco/Umbraco-CMS#21407
* Backoffice Performance: Inline entry point modules to reduce JS chunk
count by @​madsrasmussen in
umbraco/Umbraco-CMS#21380
* HybridCache: Optimize content type change cache rebuild to resolve SQL
timeouts by @​AndyButland in
umbraco/Umbraco-CMS#21207
 ... (truncated)

## 17.2.0-rc2

## What's Changed Since 17.2.0-rc

### 🐛 Bug Fixes
* Block Workspace: rename root-tab to 'generic' by @​nielslyngsoe in
umbraco/Umbraco-CMS#21699
* Block Workspace: Tabs navigation, Cherry-pick from #​21672 by
@​nielslyngsoe in umbraco/Umbraco-CMS#21693

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

## What's Changed Since the Last Release (17.1.0)

### 🙌 Notable Changes
* User group: add description to user group (closes #​14986) by
@​NguyenThuyLan in umbraco/Umbraco-CMS#21057
* Content Types: Root properties by @​nielslyngsoe in
umbraco/Umbraco-CMS#21500

### 📦 Dependencies
* Storybook: Bumps storybook from 9.0.14 to 10.1.10 by @​dependabot[bot]
in umbraco/Umbraco-CMS#21208
* Bump qs from 6.14.0 to 6.14.1 in /src/Umbraco.Web.UI.Client in the
npm_and_yarn group across 1 directory by @​dependabot[bot] in
umbraco/Umbraco-CMS#21270
* Bump the npm_and_yarn group across 2 directories with 1 update by
@​dependabot[bot] in umbraco/Umbraco-CMS#21403
* Dependencies: Bumps login dependencies to latest by @​iOvergaard in
umbraco/Umbraco-CMS#21539
* Tiptap RTE: Upgraded to latest v3.x by @​leekelleher in
umbraco/Umbraco-CMS#21493
* Dependencies: Bumps @​umbraco-ui/uui to 1.17.0-rc.4 by @​iOvergaard in
umbraco/Umbraco-CMS#21538
* build(deps): bumps @​umbraco-ui/uui to 1.17.0-rc.5 by @​iOvergaard in
umbraco/Umbraco-CMS#21569
* Dependencies: Update Microsoft packages to 10.0.1 and pin vulnerable
transitive dependencies (closes #​21122) by @​AndyButland in
umbraco/Umbraco-CMS#21285
* Dependencies: Bump to latest minor/patch versions by @​AndyButland in
umbraco/Umbraco-CMS#21540

### 🚀 New Features
* Markdown Conversion: Remove hard dependency on deprecated library and
replace with `IMarkdownToHtmlConverter` abstraction (closes #​21238 and
#​19500) by @​AndyButland in
umbraco/Umbraco-CMS#21242
* UI: Refactor breadcrumb URLs to use Path Constants by @​iOvergaard in
umbraco/Umbraco-CMS#21179
* Tree Navigation: Add visual indicators for items with restricted
access by @​iOvergaard in
umbraco/Umbraco-CMS#21365
* Recycle Bin: Adds `emptyRecycleBin` collection action kind for
Documents and Media by @​leekelleher in
umbraco/Umbraco-CMS#21482
* Tiptap RTE: Adds link (`umbLink`) support to `styleMenu` API by
@​leekelleher in umbraco/Umbraco-CMS#21494
* Rollback: Add toggle for diff display (closes #​18518) by
@​AndyButland in umbraco/Umbraco-CMS#21426
* Dictionary: Add configurable value search functionality by
@​Nis-Knowit in umbraco/Umbraco-CMS#21200

### 🚤 Performance
* Performance: Embeds the API of selected extra conditions by
@​nielslyngsoe in umbraco/Umbraco-CMS#21188
* Performance: Bundle Js Libs by @​nielslyngsoe in
umbraco/Umbraco-CMS#21187
* Performance: Embed Store API in Manifests to lower number of network
request by @​madsrasmussen in
umbraco/Umbraco-CMS#21191
* Performance: Avoid database lookup in `UserIdKeyResolver` for
super-user by @​AndyButland in
umbraco/Umbraco-CMS#21281
* Performance: Only flush ID/Key map in `ContentCacheRefresher` on
content deletion by @​AndyButland in
umbraco/Umbraco-CMS#21283
* Performance: Optimize refresh of hybrid cache for a document by
retrieving draft and published in single query by @​AndyButland in
umbraco/Umbraco-CMS#21407
* Backoffice Performance: Inline entry point modules to reduce JS chunk
count by @​madsrasmussen in
umbraco/Umbraco-CMS#21380
* HybridCache: Optimize content type change cache rebuild to resolve SQL
timeouts by @​AndyButland in
umbraco/Umbraco-CMS#21207
* Backoffice Performance: Use import maps to save requests by
@​nielslyngsoe in umbraco/Umbraco-CMS#21363
* Document URL Cache: Ensure URLs are rebuilt after upgrade and prevent
duplicate initialization (closes #​21337) by @​AndyButland in
umbraco/Umbraco-CMS#21379
* Performance: Fix thread safety and optimize cache updates in
`PublishStatusService` after content changes by @​AndyButland in
umbraco/Umbraco-CMS#21415
* Tiptap RTE: Optimize `umb-input-tiptap` initialization and rendering
by @​leekelleher in umbraco/Umbraco-CMS#21070
* Routing: Add `DocumentUrlAliasService` for optimized URL alias lookups
(closes #​21383) by @​AndyButland in
umbraco/Umbraco-CMS#21396
* Performance: Optimize property retrieval and authorization checks in
collection views (closes #​21367) by @​AndyButland in
umbraco/Umbraco-CMS#21470

 ... (truncated)

## 17.2.0-rc

## What's Changed

### 🙌 Notable Changes
* User group: add description to user group (closes #​14986) by
@​NguyenThuyLan in umbraco/Umbraco-CMS#21057
* Content Types: Root properties by @​nielslyngsoe in
umbraco/Umbraco-CMS#21500

### 📦 Dependencies
* Storybook: Bumps storybook from 9.0.14 to 10.1.10 by @​dependabot[bot]
in umbraco/Umbraco-CMS#21208
* Bump qs from 6.14.0 to 6.14.1 in /src/Umbraco.Web.UI.Client in the
npm_and_yarn group across 1 directory by @​dependabot[bot] in
umbraco/Umbraco-CMS#21270
* Bump the npm_and_yarn group across 2 directories with 1 update by
@​dependabot[bot] in umbraco/Umbraco-CMS#21403
* Dependencies: Bumps login dependencies to latest by @​iOvergaard in
umbraco/Umbraco-CMS#21539
* Tiptap RTE: Upgraded to latest v3.x by @​leekelleher in
umbraco/Umbraco-CMS#21493
* Dependencies: Bumps @​umbraco-ui/uui to 1.17.0-rc.4 by @​iOvergaard in
umbraco/Umbraco-CMS#21538
* build(deps): bumps @​umbraco-ui/uui to 1.17.0-rc.5 by @​iOvergaard in
umbraco/Umbraco-CMS#21569
* Dependencies: Update Microsoft packages to 10.0.1 and pin vulnerable
transitive dependencies (closes #​21122) by @​AndyButland in
umbraco/Umbraco-CMS#21285
* Dependencies: Bump to latest minor/patch versions by @​AndyButland in
umbraco/Umbraco-CMS#21540

### 🚀 New Features
* Markdown Conversion: Remove hard dependency on deprecated library and
replace with `IMarkdownToHtmlConverter` abstraction (closes #​21238 and
#​19500) by @​AndyButland in
umbraco/Umbraco-CMS#21242
* UI: Refactor breadcrumb URLs to use Path Constants by @​iOvergaard in
umbraco/Umbraco-CMS#21179
* Tree Navigation: Add visual indicators for items with restricted
access by @​iOvergaard in
umbraco/Umbraco-CMS#21365
* Recycle Bin: Adds `emptyRecycleBin` collection action kind for
Documents and Media by @​leekelleher in
umbraco/Umbraco-CMS#21482
* Tiptap RTE: Adds link (`umbLink`) support to `styleMenu` API by
@​leekelleher in umbraco/Umbraco-CMS#21494
* Rollback: Add toggle for diff display (closes #​18518) by
@​AndyButland in umbraco/Umbraco-CMS#21426
* Dictionary: Add configurable value search functionality by
@​Nis-Knowit in umbraco/Umbraco-CMS#21200

### 🚤 Performance
* Performance: Embeds the API of selected extra conditions by
@​nielslyngsoe in umbraco/Umbraco-CMS#21188
* Performance: Bundle Js Libs by @​nielslyngsoe in
umbraco/Umbraco-CMS#21187
* Performance: Embed Store API in Manifests to lower number of network
request by @​madsrasmussen in
umbraco/Umbraco-CMS#21191
* Performance: Avoid database lookup in `UserIdKeyResolver` for
super-user by @​AndyButland in
umbraco/Umbraco-CMS#21281
* Performance: Only flush ID/Key map in `ContentCacheRefresher` on
content deletion by @​AndyButland in
umbraco/Umbraco-CMS#21283
* Performance: Optimize refresh of hybrid cache for a document by
retrieving draft and published in single query by @​AndyButland in
umbraco/Umbraco-CMS#21407
* Backoffice Performance: Inline entry point modules to reduce JS chunk
count by @​madsrasmussen in
umbraco/Umbraco-CMS#21380
* HybridCache: Optimize content type change cache rebuild to resolve SQL
timeouts by @​AndyButland in
umbraco/Umbraco-CMS#21207
* Backoffice Performance: Use import maps to save requests by
@​nielslyngsoe in umbraco/Umbraco-CMS#21363
* Document URL Cache: Ensure URLs are rebuilt after upgrade and prevent
duplicate initialization (closes #​21337) by @​AndyButland in
umbraco/Umbraco-CMS#21379
* Performance: Fix thread safety and optimize cache updates in
`PublishStatusService` after content changes by @​AndyButland in
umbraco/Umbraco-CMS#21415
* Tiptap RTE: Optimize `umb-input-tiptap` initialization and rendering
by @​leekelleher in umbraco/Umbraco-CMS#21070
* Routing: Add `DocumentUrlAliasService` for optimized URL alias lookups
(closes #​21383) by @​AndyButland in
umbraco/Umbraco-CMS#21396
* Performance: Optimize property retrieval and authorization checks in
collection views (closes #​21367) by @​AndyButland in
umbraco/Umbraco-CMS#21470

### 🧪 Testing
* E2E: QA Replaced unreliable Thread.Sleep(500) with a counter/gate
pattern that ensures both transactions are initialized before releasing
them to compete for locks by @​andr317c in
umbraco/Umbraco-CMS#21165
* E2E QA: Updated integration test that was missing directory setup by
@​andr317c in umbraco/Umbraco-CMS#21167
* E2E: QA Added acceptance tests for removing a not-found content picker
by @​nhudinh0309 in umbraco/Umbraco-CMS#21177
* E2E: QA Fixed failing tests for the current user profile by
@​nhudinh0309 in umbraco/Umbraco-CMS#21214
* Upgrade MSW from 1.3.5 to 2.12.4 by @​madsrasmussen in
umbraco/Umbraco-CMS#21096
* E2E: QA Added acceptance tests for rendering content with invariant
blocks by @​nhudinh0309 in
umbraco/Umbraco-CMS#21180
* E2E: QA Added acceptance tests for content delivery API by
@​nhudinh0309 in umbraco/Umbraco-CMS#21095
 ... (truncated)

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

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

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

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

## 17.2.0

## What's Changed Since 17.2.0-rc2

### 📦 Dependencies
* build(deps): bumps @​umbraco-ui/uui to 1.17.0 by @​iOvergaard in
umbraco/Umbraco-CMS#21765

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

## What's Changed Since 17.2.0-rc

### 🐛 Bug Fixes
* Block Workspace: rename root-tab to 'generic' by @​nielslyngsoe in
umbraco/Umbraco-CMS#21699
* Block Workspace: Tabs navigation, Cherry-pick from #​21672 by
@​nielslyngsoe in umbraco/Umbraco-CMS#21693

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

## What's Changed Since the Last Release (17.1.0)

### 🙌 Notable Changes
* User group: add description to user group (closes #​14986) by
@​NguyenThuyLan in umbraco/Umbraco-CMS#21057
* Content Types: Root properties by @​nielslyngsoe in
umbraco/Umbraco-CMS#21500

### 📦 Dependencies
* Storybook: Bumps storybook from 9.0.14 to 10.1.10 by @​dependabot[bot]
in umbraco/Umbraco-CMS#21208
* Bump qs from 6.14.0 to 6.14.1 in /src/Umbraco.Web.UI.Client in the
npm_and_yarn group across 1 directory by @​dependabot[bot] in
umbraco/Umbraco-CMS#21270
* Bump the npm_and_yarn group across 2 directories with 1 update by
@​dependabot[bot] in umbraco/Umbraco-CMS#21403
* Dependencies: Bumps login dependencies to latest by @​iOvergaard in
umbraco/Umbraco-CMS#21539
* Tiptap RTE: Upgraded to latest v3.x by @​leekelleher in
umbraco/Umbraco-CMS#21493
* Dependencies: Bumps @​umbraco-ui/uui to 1.17.0-rc.4 by @​iOvergaard in
umbraco/Umbraco-CMS#21538
* build(deps): bumps @​umbraco-ui/uui to 1.17.0-rc.5 by @​iOvergaard in
umbraco/Umbraco-CMS#21569
* Dependencies: Update Microsoft packages to 10.0.1 and pin vulnerable
transitive dependencies (closes #​21122) by @​AndyButland in
umbraco/Umbraco-CMS#21285
* Dependencies: Bump to latest minor/patch versions by @​AndyButland in
umbraco/Umbraco-CMS#21540

### 🚀 New Features
* Markdown Conversion: Remove hard dependency on deprecated library and
replace with `IMarkdownToHtmlConverter` abstraction (closes #​21238 and
#​19500) by @​AndyButland in
umbraco/Umbraco-CMS#21242
* UI: Refactor breadcrumb URLs to use Path Constants by @​iOvergaard in
umbraco/Umbraco-CMS#21179
* Tree Navigation: Add visual indicators for items with restricted
access by @​iOvergaard in
umbraco/Umbraco-CMS#21365
* Recycle Bin: Adds `emptyRecycleBin` collection action kind for
Documents and Media by @​leekelleher in
umbraco/Umbraco-CMS#21482
* Tiptap RTE: Adds link (`umbLink`) support to `styleMenu` API by
@​leekelleher in umbraco/Umbraco-CMS#21494
* Rollback: Add toggle for diff display (closes #​18518) by
@​AndyButland in umbraco/Umbraco-CMS#21426
* Dictionary: Add configurable value search functionality by
@​Nis-Knowit in umbraco/Umbraco-CMS#21200

### 🚤 Performance
* Performance: Embeds the API of selected extra conditions by
@​nielslyngsoe in umbraco/Umbraco-CMS#21188
* Performance: Bundle Js Libs by @​nielslyngsoe in
umbraco/Umbraco-CMS#21187
* Performance: Embed Store API in Manifests to lower number of network
request by @​madsrasmussen in
umbraco/Umbraco-CMS#21191
* Performance: Avoid database lookup in `UserIdKeyResolver` for
super-user by @​AndyButland in
umbraco/Umbraco-CMS#21281
* Performance: Only flush ID/Key map in `ContentCacheRefresher` on
content deletion by @​AndyButland in
umbraco/Umbraco-CMS#21283
* Performance: Optimize refresh of hybrid cache for a document by
retrieving draft and published in single query by @​AndyButland in
umbraco/Umbraco-CMS#21407
* Backoffice Performance: Inline entry point modules to reduce JS chunk
count by @​madsrasmussen in
umbraco/Umbraco-CMS#21380
* HybridCache: Optimize content type change cache rebuild to resolve SQL
timeouts by @​AndyButland in
umbraco/Umbraco-CMS#21207
 ... (truncated)

## 17.2.0-rc2

## What's Changed Since 17.2.0-rc

### 🐛 Bug Fixes
* Block Workspace: rename root-tab to 'generic' by @​nielslyngsoe in
umbraco/Umbraco-CMS#21699
* Block Workspace: Tabs navigation, Cherry-pick from #​21672 by
@​nielslyngsoe in umbraco/Umbraco-CMS#21693

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

## What's Changed Since the Last Release (17.1.0)

### 🙌 Notable Changes
* User group: add description to user group (closes #​14986) by
@​NguyenThuyLan in umbraco/Umbraco-CMS#21057
* Content Types: Root properties by @​nielslyngsoe in
umbraco/Umbraco-CMS#21500

### 📦 Dependencies
* Storybook: Bumps storybook from 9.0.14 to 10.1.10 by @​dependabot[bot]
in umbraco/Umbraco-CMS#21208
* Bump qs from 6.14.0 to 6.14.1 in /src/Umbraco.Web.UI.Client in the
npm_and_yarn group across 1 directory by @​dependabot[bot] in
umbraco/Umbraco-CMS#21270
* Bump the npm_and_yarn group across 2 directories with 1 update by
@​dependabot[bot] in umbraco/Umbraco-CMS#21403
* Dependencies: Bumps login dependencies to latest by @​iOvergaard in
umbraco/Umbraco-CMS#21539
* Tiptap RTE: Upgraded to latest v3.x by @​leekelleher in
umbraco/Umbraco-CMS#21493
* Dependencies: Bumps @​umbraco-ui/uui to 1.17.0-rc.4 by @​iOvergaard in
umbraco/Umbraco-CMS#21538
* build(deps): bumps @​umbraco-ui/uui to 1.17.0-rc.5 by @​iOvergaard in
umbraco/Umbraco-CMS#21569
* Dependencies: Update Microsoft packages to 10.0.1 and pin vulnerable
transitive dependencies (closes #​21122) by @​AndyButland in
umbraco/Umbraco-CMS#21285
* Dependencies: Bump to latest minor/patch versions by @​AndyButland in
umbraco/Umbraco-CMS#21540

### 🚀 New Features
* Markdown Conversion: Remove hard dependency on deprecated library and
replace with `IMarkdownToHtmlConverter` abstraction (closes #​21238 and
#​19500) by @​AndyButland in
umbraco/Umbraco-CMS#21242
* UI: Refactor breadcrumb URLs to use Path Constants by @​iOvergaard in
umbraco/Umbraco-CMS#21179
* Tree Navigation: Add visual indicators for items with restricted
access by @​iOvergaard in
umbraco/Umbraco-CMS#21365
* Recycle Bin: Adds `emptyRecycleBin` collection action kind for
Documents and Media by @​leekelleher in
umbraco/Umbraco-CMS#21482
* Tiptap RTE: Adds link (`umbLink`) support to `styleMenu` API by
@​leekelleher in umbraco/Umbraco-CMS#21494
* Rollback: Add toggle for diff display (closes #​18518) by
@​AndyButland in umbraco/Umbraco-CMS#21426
* Dictionary: Add configurable value search functionality by
@​Nis-Knowit in umbraco/Umbraco-CMS#21200

### 🚤 Performance
* Performance: Embeds the API of selected extra conditions by
@​nielslyngsoe in umbraco/Umbraco-CMS#21188
* Performance: Bundle Js Libs by @​nielslyngsoe in
umbraco/Umbraco-CMS#21187
* Performance: Embed Store API in Manifests to lower number of network
request by @​madsrasmussen in
umbraco/Umbraco-CMS#21191
* Performance: Avoid database lookup in `UserIdKeyResolver` for
super-user by @​AndyButland in
umbraco/Umbraco-CMS#21281
* Performance: Only flush ID/Key map in `ContentCacheRefresher` on
content deletion by @​AndyButland in
umbraco/Umbraco-CMS#21283
* Performance: Optimize refresh of hybrid cache for a document by
retrieving draft and published in single query by @​AndyButland in
umbraco/Umbraco-CMS#21407
* Backoffice Performance: Inline entry point modules to reduce JS chunk
count by @​madsrasmussen in
umbraco/Umbraco-CMS#21380
* HybridCache: Optimize content type change cache rebuild to resolve SQL
timeouts by @​AndyButland in
umbraco/Umbraco-CMS#21207
* Backoffice Performance: Use import maps to save requests by
@​nielslyngsoe in umbraco/Umbraco-CMS#21363
* Document URL Cache: Ensure URLs are rebuilt after upgrade and prevent
duplicate initialization (closes #​21337) by @​AndyButland in
umbraco/Umbraco-CMS#21379
* Performance: Fix thread safety and optimize cache updates in
`PublishStatusService` after content changes by @​AndyButland in
umbraco/Umbraco-CMS#21415
* Tiptap RTE: Optimize `umb-input-tiptap` initialization and rendering
by @​leekelleher in umbraco/Umbraco-CMS#21070
* Routing: Add `DocumentUrlAliasService` for optimized URL alias lookups
(closes #​21383) by @​AndyButland in
umbraco/Umbraco-CMS#21396
* Performance: Optimize property retrieval and authorization checks in
collection views (closes #​21367) by @​AndyButland in
umbraco/Umbraco-CMS#21470

 ... (truncated)

## 17.2.0-rc

## What's Changed

### 🙌 Notable Changes
* User group: add description to user group (closes #​14986) by
@​NguyenThuyLan in umbraco/Umbraco-CMS#21057
* Content Types: Root properties by @​nielslyngsoe in
umbraco/Umbraco-CMS#21500

### 📦 Dependencies
* Storybook: Bumps storybook from 9.0.14 to 10.1.10 by @​dependabot[bot]
in umbraco/Umbraco-CMS#21208
* Bump qs from 6.14.0 to 6.14.1 in /src/Umbraco.Web.UI.Client in the
npm_and_yarn group across 1 directory by @​dependabot[bot] in
umbraco/Umbraco-CMS#21270
* Bump the npm_and_yarn group across 2 directories with 1 update by
@​dependabot[bot] in umbraco/Umbraco-CMS#21403
* Dependencies: Bumps login dependencies to latest by @​iOvergaard in
umbraco/Umbraco-CMS#21539
* Tiptap RTE: Upgraded to latest v3.x by @​leekelleher in
umbraco/Umbraco-CMS#21493
* Dependencies: Bumps @​umbraco-ui/uui to 1.17.0-rc.4 by @​iOvergaard in
umbraco/Umbraco-CMS#21538
* build(deps): bumps @​umbraco-ui/uui to 1.17.0-rc.5 by @​iOvergaard in
umbraco/Umbraco-CMS#21569
* Dependencies: Update Microsoft packages to 10.0.1 and pin vulnerable
transitive dependencies (closes #​21122) by @​AndyButland in
umbraco/Umbraco-CMS#21285
* Dependencies: Bump to latest minor/patch versions by @​AndyButland in
umbraco/Umbraco-CMS#21540

### 🚀 New Features
* Markdown Conversion: Remove hard dependency on deprecated library and
replace with `IMarkdownToHtmlConverter` abstraction (closes #​21238 and
#​19500) by @​AndyButland in
umbraco/Umbraco-CMS#21242
* UI: Refactor breadcrumb URLs to use Path Constants by @​iOvergaard in
umbraco/Umbraco-CMS#21179
* Tree Navigation: Add visual indicators for items with restricted
access by @​iOvergaard in
umbraco/Umbraco-CMS#21365
* Recycle Bin: Adds `emptyRecycleBin` collection action kind for
Documents and Media by @​leekelleher in
umbraco/Umbraco-CMS#21482
* Tiptap RTE: Adds link (`umbLink`) support to `styleMenu` API by
@​leekelleher in umbraco/Umbraco-CMS#21494
* Rollback: Add toggle for diff display (closes #​18518) by
@​AndyButland in umbraco/Umbraco-CMS#21426
* Dictionary: Add configurable value search functionality by
@​Nis-Knowit in umbraco/Umbraco-CMS#21200

### 🚤 Performance
* Performance: Embeds the API of selected extra conditions by
@​nielslyngsoe in umbraco/Umbraco-CMS#21188
* Performance: Bundle Js Libs by @​nielslyngsoe in
umbraco/Umbraco-CMS#21187
* Performance: Embed Store API in Manifests to lower number of network
request by @​madsrasmussen in
umbraco/Umbraco-CMS#21191
* Performance: Avoid database lookup in `UserIdKeyResolver` for
super-user by @​AndyButland in
umbraco/Umbraco-CMS#21281
* Performance: Only flush ID/Key map in `ContentCacheRefresher` on
content deletion by @​AndyButland in
umbraco/Umbraco-CMS#21283
* Performance: Optimize refresh of hybrid cache for a document by
retrieving draft and published in single query by @​AndyButland in
umbraco/Umbraco-CMS#21407
* Backoffice Performance: Inline entry point modules to reduce JS chunk
count by @​madsrasmussen in
umbraco/Umbraco-CMS#21380
* HybridCache: Optimize content type change cache rebuild to resolve SQL
timeouts by @​AndyButland in
umbraco/Umbraco-CMS#21207
* Backoffice Performance: Use import maps to save requests by
@​nielslyngsoe in umbraco/Umbraco-CMS#21363
* Document URL Cache: Ensure URLs are rebuilt after upgrade and prevent
duplicate initialization (closes #​21337) by @​AndyButland in
umbraco/Umbraco-CMS#21379
* Performance: Fix thread safety and optimize cache updates in
`PublishStatusService` after content changes by @​AndyButland in
umbraco/Umbraco-CMS#21415
* Tiptap RTE: Optimize `umb-input-tiptap` initialization and rendering
by @​leekelleher in umbraco/Umbraco-CMS#21070
* Routing: Add `DocumentUrlAliasService` for optimized URL alias lookups
(closes #​21383) by @​AndyButland in
umbraco/Umbraco-CMS#21396
* Performance: Optimize property retrieval and authorization checks in
collection views (closes #​21367) by @​AndyButland in
umbraco/Umbraco-CMS#21470

### 🧪 Testing
* E2E: QA Replaced unreliable Thread.Sleep(500) with a counter/gate
pattern that ensures both transactions are initialized before releasing
them to compete for locks by @​andr317c in
umbraco/Umbraco-CMS#21165
* E2E QA: Updated integration test that was missing directory setup by
@​andr317c in umbraco/Umbraco-CMS#21167
* E2E: QA Added acceptance tests for removing a not-found content picker
by @​nhudinh0309 in umbraco/Umbraco-CMS#21177
* E2E: QA Fixed failing tests for the current user profile by
@​nhudinh0309 in umbraco/Umbraco-CMS#21214
* Upgrade MSW from 1.3.5 to 2.12.4 by @​madsrasmussen in
umbraco/Umbraco-CMS#21096
* E2E: QA Added acceptance tests for rendering content with invariant
blocks by @​nhudinh0309 in
umbraco/Umbraco-CMS#21180
* E2E: QA Added acceptance tests for content delivery API by
@​nhudinh0309 in umbraco/Umbraco-CMS#21095
 ... (truncated)

Commits viewable in [compare
view](umbraco/Umbraco-CMS@release-17.1.0...release-17.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 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] <[email protected]>
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

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