Skip to content

Performance: Optimize memory footprint of document URL cache (closes #21055)#21066

Merged
Migaroez merged 6 commits intomainfrom
v17/improvement/optimize-document-url-cache
Dec 15, 2025
Merged

Performance: Optimize memory footprint of document URL cache (closes #21055)#21066
Migaroez merged 6 commits intomainfrom
v17/improvement/optimize-document-url-cache

Conversation

@AndyButland
Copy link
Contributor

@AndyButland AndyButland commented Dec 4, 2025

Prerequisites

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

Addresses #21055

Description

The linked issue raises the concern of the memory footprint of the document URL cache, which is loaded on start-up and held for the lifetime of the application.

My understanding with the introduction of the Hybrid cache was that this was deliberately separated out, so we guarantee URLs are in the cache for routing, but can lazy load documents. So I haven't looked at lazy loading of document URLs as a solution to this.

Rather it seems we can optimize quite a bit the amount of memory the cache takes up. Having done some analysis on it it's apparent we can improve in a few areas:

  • The key we are using is unnecessarily verbose as a string containing each element.
  • We use the larger culture code instead of the smaller language Id in the cache key.
  • We have some items in the value that are already available in the key.
  • In the handling of the (rare) case of multiple segments for a document, we are allocating an array, that most of the time we won't need.

I see some significant improvements - ~58% - with a small and quite large database (these figures compare the current implementation with the one in this PR):

[14:59:08 INF] Cached 218 document URLs.
[14:59:08 INF] Document URL cache estimated memory usage: 0.08 MB (80,846 bytes).
[15:01:00 INF] Cached 218 document URLs.
[15:01:00 INF] Document URL cache estimated memory usage: 0.03 MB (34,212 bytes).	

[15:38:12 INF] Cached 1405554 document URLs.
[15:38:13 INF] Document URL cache estimated memory usage: 527.13 MB (552,737,556 bytes).
[15:36:52 INF] Cached 1405554 document URLs.
[15:36:53 INF] Document URL cache estimated memory usage: 236.26 MB (247,739,944 bytes).

Testing

Verify existing integration tests pass and via manual testing that documents can be routed.

Copilot AI review requested due to automatic review settings December 4, 2025 14:57
@AndyButland AndyButland force-pushed the v17/improvement/optimize-document-url-cache branch from 3a3ae29 to a9806fc Compare December 4, 2025 15:02
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 optimizes the memory footprint of the document URL cache in Umbraco CMS, achieving approximately 58% memory reduction (from 527MB to 236MB with 1.4M documents, and from 80KB to 34KB with 218 documents) without sacrificing performance.

Key Changes:

  • Replaced verbose string-based cache keys with a compact struct (UrlCacheKey) using int language IDs instead of culture strings
  • Implemented a more memory-efficient cache value structure (UrlSegmentCache) that stores the primary segment directly and only allocates an array for alternate segments when needed (rare case)
  • Added a culture-to-language-ID mapping cache to enable the use of integer IDs for lookups
  • Introduced memory usage calculation and logging for better observability

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

File Description
src/Umbraco.Core/Services/DocumentUrlService.cs Core implementation: Introduced UrlCacheKey struct and UrlSegmentCache class for memory-efficient caching, refactored cache storage from string keys to struct keys, added culture-to-language-ID mapping, implemented memory usage calculation, and updated all cache operations (init, lookup, update, remove) to use the new structures
tests/Umbraco.Tests.UnitTests/Umbraco.Core/Services/DocumentUrlServiceTests.cs Updated unit tests to validate the new cache model structure (Key/Cache tuple instead of single object), verified correct handling of primary/alternate segments, and updated performance benchmark comments to reflect the current implementation

@AndyButland AndyButland changed the title Performance: Optimize memory footprint of document URL cache Performance: Optimize memory footprint of document URL cache (closes #21055) Dec 4, 2025
Copy link
Contributor

@Migaroez Migaroez left a comment

Choose a reason for hiding this comment

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

LGTM
The only concern I have is the future impact of the language id changing to a key, but it think even then it will be better than it was.

@Migaroez Migaroez merged commit 452c56b into main Dec 15, 2025
25 of 26 checks passed
@Migaroez Migaroez deleted the v17/improvement/optimize-document-url-cache branch December 15, 2025 10:19
nielslyngsoe pushed a commit that referenced this pull request Dec 15, 2025
…21055) (#21066)

* Optimize memory footprint of document URL cache.

* Update tests/Umbraco.Tests.UnitTests/Umbraco.Core/Services/DocumentUrlServiceTests.cs

Co-authored-by: Copilot <[email protected]>

* Used properties, added some further comments.

* Fixed failing integration tests.

* Ensure no edge case exists where the culture code to language Id map isn't up to date with the newly created languages.

---------

Co-authored-by: Copilot <[email protected]>
nielslyngsoe added a commit that referenced this pull request Dec 15, 2025
* block context example

* fix clone method

* implement contextual variant id

* use contextual variant id

* ensure currentExposeOf uses elementType configuration

* make hasExposeOf use ElementType configuration for variatId

* Update src/Umbraco.Web.UI.Client/src/packages/rte/components/rte-base.element.ts

Co-authored-by: Copilot <[email protected]>

* rename to displayVariant

* use variantid in this case

* update readme

* return false

* remove unused imports

* return undefined

* append UmbWorkspaceViewElement interface

* remove test

* fallback to false

* fallback to false

* refactor what is not exposed.

* Fix #20944: Updating UI Slider number properties to accept decimal values (#20945)

* updating UI slider properties min, max, initial1, initial2 and step to accept decimal values

* Changes based on Copilot suggestions

* Used a smaller step value configuration.

---------

Co-authored-by: Niels Lyngsø <[email protected]>
Co-authored-by: Engiber Lozada <[email protected]>
Co-authored-by: engjlr <[email protected]>

* Manifests: Fix misnaming and mis-registering of the document validation manifest (closes #21128) (#21139)

Fix misnaming and mis-registering of the document validation manifest.

* Performance: Optimize memory footprint of document URL cache (closes #21055) (#21066)

* Optimize memory footprint of document URL cache.

* Update tests/Umbraco.Tests.UnitTests/Umbraco.Core/Services/DocumentUrlServiceTests.cs

Co-authored-by: Copilot <[email protected]>

* Used properties, added some further comments.

* Fixed failing integration tests.

* Ensure no edge case exists where the culture code to language Id map isn't up to date with the newly created languages.

---------

Co-authored-by: Copilot <[email protected]>

* Block List: Sort mode (#21060)

* Block List: added sort-mode

* Fix missing closing bracket

* register sort mode toolbar element on start up

---------

Co-authored-by: Mads Rasmussen <[email protected]>
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/packages/block/block-list/property-editors/block-list-editor/property-editor-ui-block-list.element.ts

* Update nightly build to include 16 as 17 is now main (#21144)

* Global search items missing Umbraco url segment (#20266)

* Add /umbraco url Segament for searched mapped results to aviod 404 og navigation away from backoffice

* Applied changes from code review.

---------

Co-authored-by: Lucas Bach Bisgaard <[email protected]>
Co-authored-by: Andy Butland <[email protected]>

* import

---------

Co-authored-by: Copilot <[email protected]>
Co-authored-by: Jason Andrae <[email protected]>
Co-authored-by: Engiber Lozada <[email protected]>
Co-authored-by: engjlr <[email protected]>
Co-authored-by: Andy Butland <[email protected]>
Co-authored-by: Lee Kelleher <[email protected]>
Co-authored-by: Mads Rasmussen <[email protected]>
Co-authored-by: Sven Geusens <[email protected]>
Co-authored-by: Lucas Bach Bisgaard <[email protected]>
Co-authored-by: Lucas Bach Bisgaard <[email protected]>
alexsee pushed a commit to alexsee/umbraco-container that referenced this pull request Jan 18, 2026
Updated
[Umbraco.Cms.Persistence.Sqlite](https://github.com/umbraco/Umbraco-CMS)
from 17.0.2 to 17.1.0.

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

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

## 17.1.0

# What's Changed Since 17.1.0-rc

### 🐛 Bug Fixes
* Media: Fix files not deleted from disk when recycle bin protection is
enabled by @​AndyButland in
umbraco/Umbraco-CMS#21309
* Document Editing: Refactor of Fix property variation change breaking
document save via Infinite Editing (closes #​21195) by @​nielslyngsoe in
umbraco/Umbraco-CMS#21293
* umbraco/Umbraco-CMS#21306 by @​calm329 in
umbraco/Umbraco-CMS#21306

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

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

### 📦 Dependencies
* Dependencies: Fixed dependency conflicts when installing
Microsoft.EntityFrameworkCore.Design (closes #​20421) by @​lauraneto in
umbraco/Umbraco-CMS#20474
* Dependencies: Remove `Microsoft.CodeAnalysis.CSharp` dependency from
Umbraco.Infrastructure by @​lauraneto in
umbraco/Umbraco-CMS#20481
* build(deps): bumps @​umbraco-ui/uui from 1.16.0-rc.0 to 1.16.0 by
@​iOvergaard in umbraco/Umbraco-CMS#20535
* Bump vite from 7.1.9 to 7.1.11 in /src/Umbraco.Web.UI.Client by
@​dependabot[bot] in umbraco/Umbraco-CMS#20580
* Bump vite from 7.1.9 to 7.1.11 in /src/Umbraco.Web.UI.Login by
@​dependabot[bot] in umbraco/Umbraco-CMS#20621
* Bump playwright and @​playwright/test in
/tests/Umbraco.Tests.AcceptanceTest by @​dependabot[bot] in
umbraco/Umbraco-CMS#20579
* Bump the npm_and_yarn group across 2 directories with 1 update by
@​dependabot[bot] in umbraco/Umbraco-CMS#20863
* Dependencies: Updates some dependencies to latest minor or patch
releases by @​AndyButland in
umbraco/Umbraco-CMS#20953
* build(deps): bumps monaco-editor from 0.54.0 to 0.55.1 by @​iOvergaard
in umbraco/Umbraco-CMS#21054

### 🌈 Accessibility Improvements
* Entity Actions: Create button discernible text (fixes #​20205) by
@​OskarKruger in umbraco/Umbraco-CMS#20434
* Entity Actions: More create button discernible text, extension of
#​20434 by @​OskarKruger in
umbraco/Umbraco-CMS#20458
* Header: Adjusted button focus border color contrast by @​MrHutmat in
umbraco/Umbraco-CMS#20562
* Login: Added custom validation for missing password and user/email on
the login form by @​MrHutmat in
umbraco/Umbraco-CMS#20233
* Accessibility: Adding a label attribute for `<uui-button>` in news
dashboard by @​MrHutmat in
umbraco/Umbraco-CMS#20780
* Keyboard navigation: Return to opening element after modal close by
@​MrHutmat in umbraco/Umbraco-CMS#20782

### 🚀 New Features
* Preview: Allows changing the preview environment inside the preview
app, and other UX changes that enhance the experience by @​leekelleher
in umbraco/Umbraco-CMS#20598
* Login: Adds show/hide password toggle by @​MrHutmat in
umbraco/Umbraco-CMS#20611
* Adds Clear Clipboard button & logic by @​warrenbuckley in
umbraco/Umbraco-CMS#20757
* Member types: Implement containers by @​ronaldbarendse in
umbraco/Umbraco-CMS#20706
* Log viewer: Improves search functionality and code quality by
@​iOvergaard in umbraco/Umbraco-CMS#20913
* Log Viewer: Enhances the donut chart to be responsive, link to log
search, and show numbers directly by @​iOvergaard in
umbraco/Umbraco-CMS#20928
* Culture and Hostnames: Add ability to sort hostnames (closes #​20691)
by @​MrHutmat in umbraco/Umbraco-CMS#20826
* Localization: Adds `termOrDefault()` method to accept a fallback value
by @​iOvergaard in umbraco/Umbraco-CMS#20947
* Block Grid: Sort mode by @​leekelleher in
umbraco/Umbraco-CMS#20869
* News Dashboard: Adding functionality to overwrite the cache duration
by @​NillasKA in umbraco/Umbraco-CMS#21064
* Block List: Sort mode by @​leekelleher in
umbraco/Umbraco-CMS#21060
* Extend RTE output in Delivery API for better support for multi-site
URL resolution by @​MiguelGuedelha in
umbraco/Umbraco-CMS#20846
* Content Types: Introduce schema service to support future schema
generation by @​lauraneto in
umbraco/Umbraco-CMS#21031
* Delivery API: Adding allow list for content types by @​NillasKA in
umbraco/Umbraco-CMS#21111
* Emails: Add `Expires` header by @​rickbutterfield in
umbraco/Umbraco-CMS#20285
* Indexing: Make the indexing batch size configurable by @​kjac in
umbraco/Umbraco-CMS#20543
* Media: Add protection to restrict access to media in recycle bin
(closes #​2931) by @​AndyButland in
umbraco/Umbraco-CMS#20378
* Collection: Introduce Collection Item Card extension type by
@​madsrasmussen in umbraco/Umbraco-CMS#20954
* Collection: Introduce Collection Item Ref extension type by
@​madsrasmussen in umbraco/Umbraco-CMS#20994
 ... (truncated)

## 17.1.0-rc

## What's Changed

### 📦 Dependencies
* Dependencies: Fixed dependency conflicts when installing
Microsoft.EntityFrameworkCore.Design (closes #​20421) by @​lauraneto in
umbraco/Umbraco-CMS#20474
* Dependencies: Remove `Microsoft.CodeAnalysis.CSharp` dependency from
Umbraco.Infrastructure by @​lauraneto in
umbraco/Umbraco-CMS#20481
* build(deps): bumps @​umbraco-ui/uui from 1.16.0-rc.0 to 1.16.0 by
@​iOvergaard in umbraco/Umbraco-CMS#20535
* Bump vite from 7.1.9 to 7.1.11 in /src/Umbraco.Web.UI.Client by
@​dependabot[bot] in umbraco/Umbraco-CMS#20580
* Bump vite from 7.1.9 to 7.1.11 in /src/Umbraco.Web.UI.Login by
@​dependabot[bot] in umbraco/Umbraco-CMS#20621
* Bump playwright and @​playwright/test in
/tests/Umbraco.Tests.AcceptanceTest by @​dependabot[bot] in
umbraco/Umbraco-CMS#20579
* Bump the npm_and_yarn group across 2 directories with 1 update by
@​dependabot[bot] in umbraco/Umbraco-CMS#20863
* Dependencies: Updates some dependencies to latest minor or patch
releases by @​AndyButland in
umbraco/Umbraco-CMS#20953
* build(deps): bumps monaco-editor from 0.54.0 to 0.55.1 by @​iOvergaard
in umbraco/Umbraco-CMS#21054

### 🌈 Accessibility Improvements
* Entity Actions: Create button discernible text (fixes #​20205) by
@​OskarKruger in umbraco/Umbraco-CMS#20434
* Entity Actions: More create button discernible text, extension of
#​20434 by @​OskarKruger in
umbraco/Umbraco-CMS#20458
* Header: Adjusted button focus border color contrast by @​MrHutmat in
umbraco/Umbraco-CMS#20562
* Login: Added custom validation for missing password and user/email on
the login form by @​MrHutmat in
umbraco/Umbraco-CMS#20233
* Accessibility: Adding a label attribute for `<uui-button>` in news
dashboard by @​MrHutmat in
umbraco/Umbraco-CMS#20780
* Keyboard navigation: Return to opening element after modal close by
@​MrHutmat in umbraco/Umbraco-CMS#20782

### 🚀 New Features
* Preview: Allows changing the preview environment inside the preview
app, and other UX changes that enhance the experience by @​leekelleher
in umbraco/Umbraco-CMS#20598
* Login: Adds show/hide password toggle by @​MrHutmat in
umbraco/Umbraco-CMS#20611
* Adds Clear Clipboard button & logic by @​warrenbuckley in
umbraco/Umbraco-CMS#20757
* Member types: Implement containers by @​ronaldbarendse in
umbraco/Umbraco-CMS#20706
* Log viewer: Improves search functionality and code quality by
@​iOvergaard in umbraco/Umbraco-CMS#20913
* Log Viewer: Enhances the donut chart to be responsive, link to log
search, and show numbers directly by @​iOvergaard in
umbraco/Umbraco-CMS#20928
* Culture and Hostnames: Add ability to sort hostnames (closes #​20691)
by @​MrHutmat in umbraco/Umbraco-CMS#20826
* Localization: Adds `termOrDefault()` method to accept a fallback value
by @​iOvergaard in umbraco/Umbraco-CMS#20947
* Block Grid: Sort mode by @​leekelleher in
umbraco/Umbraco-CMS#20869
* News Dashboard: Adding functionality to overwrite the cache duration
by @​NillasKA in umbraco/Umbraco-CMS#21064
* Block List: Sort mode by @​leekelleher in
umbraco/Umbraco-CMS#21060
* Extend RTE output in Delivery API for better support for multi-site
URL resolution by @​MiguelGuedelha in
umbraco/Umbraco-CMS#20846
* Content Types: Introduce schema service to support future schema
generation by @​lauraneto in
umbraco/Umbraco-CMS#21031
* Delivery API: Adding allow list for content types by @​NillasKA in
umbraco/Umbraco-CMS#21111
* Emails: Add `Expires` header by @​rickbutterfield in
umbraco/Umbraco-CMS#20285
* Indexing: Make the indexing batch size configurable by @​kjac in
umbraco/Umbraco-CMS#20543
* Media: Add protection to restrict access to media in recycle bin
(closes #​2931) by @​AndyButland in
umbraco/Umbraco-CMS#20378
* Collection: Introduce Collection Item Card extension type by
@​madsrasmussen in umbraco/Umbraco-CMS#20954
* Collection: Introduce Collection Item Ref extension type by
@​madsrasmussen in umbraco/Umbraco-CMS#20994
* Collection: Introduce Card and Ref Collection View kinds by
@​madsrasmussen in umbraco/Umbraco-CMS#21037

### 🚤 Performance
* Performance: Optimize memory footprint of document URL cache (closes
#​21055) by @​AndyButland in
umbraco/Umbraco-CMS#21066
* Distributed Background Jobs: Improve distributed background job
locking behavior and performance by @​nikolajlauridsen in
umbraco/Umbraco-CMS#21100
* Repositories: Optimize repository caches to populate for both int and
GUID keys by @​AndyButland in
umbraco/Umbraco-CMS#21124
* Performance: Re-introduce lazy locks by @​lauraneto in
umbraco/Umbraco-CMS#21102

### 🐛 Bug Fixes
 ... (truncated)

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

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Umbraco.Cms.Persistence.Sqlite&package-manager=nuget&previous-version=17.0.2&new-version=17.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
alexsee added a commit to alexsee/umbraco-container that referenced this pull request Jan 18, 2026
Updated
[Umbraco.Cms.DevelopmentMode.Backoffice](https://github.com/umbraco/Umbraco-CMS)
from 17.0.2 to 17.1.0.

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

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

## 17.1.0

# What's Changed Since 17.1.0-rc

### 🐛 Bug Fixes
* Media: Fix files not deleted from disk when recycle bin protection is
enabled by @​AndyButland in
umbraco/Umbraco-CMS#21309
* Document Editing: Refactor of Fix property variation change breaking
document save via Infinite Editing (closes #​21195) by @​nielslyngsoe in
umbraco/Umbraco-CMS#21293
* umbraco/Umbraco-CMS#21306 by @​calm329 in
umbraco/Umbraco-CMS#21306

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

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

### 📦 Dependencies
* Dependencies: Fixed dependency conflicts when installing
Microsoft.EntityFrameworkCore.Design (closes #​20421) by @​lauraneto in
umbraco/Umbraco-CMS#20474
* Dependencies: Remove `Microsoft.CodeAnalysis.CSharp` dependency from
Umbraco.Infrastructure by @​lauraneto in
umbraco/Umbraco-CMS#20481
* build(deps): bumps @​umbraco-ui/uui from 1.16.0-rc.0 to 1.16.0 by
@​iOvergaard in umbraco/Umbraco-CMS#20535
* Bump vite from 7.1.9 to 7.1.11 in /src/Umbraco.Web.UI.Client by
@​dependabot[bot] in umbraco/Umbraco-CMS#20580
* Bump vite from 7.1.9 to 7.1.11 in /src/Umbraco.Web.UI.Login by
@​dependabot[bot] in umbraco/Umbraco-CMS#20621
* Bump playwright and @​playwright/test in
/tests/Umbraco.Tests.AcceptanceTest by @​dependabot[bot] in
umbraco/Umbraco-CMS#20579
* Bump the npm_and_yarn group across 2 directories with 1 update by
@​dependabot[bot] in umbraco/Umbraco-CMS#20863
* Dependencies: Updates some dependencies to latest minor or patch
releases by @​AndyButland in
umbraco/Umbraco-CMS#20953
* build(deps): bumps monaco-editor from 0.54.0 to 0.55.1 by @​iOvergaard
in umbraco/Umbraco-CMS#21054

### 🌈 Accessibility Improvements
* Entity Actions: Create button discernible text (fixes #​20205) by
@​OskarKruger in umbraco/Umbraco-CMS#20434
* Entity Actions: More create button discernible text, extension of
#​20434 by @​OskarKruger in
umbraco/Umbraco-CMS#20458
* Header: Adjusted button focus border color contrast by @​MrHutmat in
umbraco/Umbraco-CMS#20562
* Login: Added custom validation for missing password and user/email on
the login form by @​MrHutmat in
umbraco/Umbraco-CMS#20233
* Accessibility: Adding a label attribute for `<uui-button>` in news
dashboard by @​MrHutmat in
umbraco/Umbraco-CMS#20780
* Keyboard navigation: Return to opening element after modal close by
@​MrHutmat in umbraco/Umbraco-CMS#20782

### 🚀 New Features
* Preview: Allows changing the preview environment inside the preview
app, and other UX changes that enhance the experience by @​leekelleher
in umbraco/Umbraco-CMS#20598
* Login: Adds show/hide password toggle by @​MrHutmat in
umbraco/Umbraco-CMS#20611
* Adds Clear Clipboard button & logic by @​warrenbuckley in
umbraco/Umbraco-CMS#20757
* Member types: Implement containers by @​ronaldbarendse in
umbraco/Umbraco-CMS#20706
* Log viewer: Improves search functionality and code quality by
@​iOvergaard in umbraco/Umbraco-CMS#20913
* Log Viewer: Enhances the donut chart to be responsive, link to log
search, and show numbers directly by @​iOvergaard in
umbraco/Umbraco-CMS#20928
* Culture and Hostnames: Add ability to sort hostnames (closes #​20691)
by @​MrHutmat in umbraco/Umbraco-CMS#20826
* Localization: Adds `termOrDefault()` method to accept a fallback value
by @​iOvergaard in umbraco/Umbraco-CMS#20947
* Block Grid: Sort mode by @​leekelleher in
umbraco/Umbraco-CMS#20869
* News Dashboard: Adding functionality to overwrite the cache duration
by @​NillasKA in umbraco/Umbraco-CMS#21064
* Block List: Sort mode by @​leekelleher in
umbraco/Umbraco-CMS#21060
* Extend RTE output in Delivery API for better support for multi-site
URL resolution by @​MiguelGuedelha in
umbraco/Umbraco-CMS#20846
* Content Types: Introduce schema service to support future schema
generation by @​lauraneto in
umbraco/Umbraco-CMS#21031
* Delivery API: Adding allow list for content types by @​NillasKA in
umbraco/Umbraco-CMS#21111
* Emails: Add `Expires` header by @​rickbutterfield in
umbraco/Umbraco-CMS#20285
* Indexing: Make the indexing batch size configurable by @​kjac in
umbraco/Umbraco-CMS#20543
* Media: Add protection to restrict access to media in recycle bin
(closes #​2931) by @​AndyButland in
umbraco/Umbraco-CMS#20378
* Collection: Introduce Collection Item Card extension type by
@​madsrasmussen in umbraco/Umbraco-CMS#20954
* Collection: Introduce Collection Item Ref extension type by
@​madsrasmussen in umbraco/Umbraco-CMS#20994
 ... (truncated)

## 17.1.0-rc

## What's Changed

### 📦 Dependencies
* Dependencies: Fixed dependency conflicts when installing
Microsoft.EntityFrameworkCore.Design (closes #​20421) by @​lauraneto in
umbraco/Umbraco-CMS#20474
* Dependencies: Remove `Microsoft.CodeAnalysis.CSharp` dependency from
Umbraco.Infrastructure by @​lauraneto in
umbraco/Umbraco-CMS#20481
* build(deps): bumps @​umbraco-ui/uui from 1.16.0-rc.0 to 1.16.0 by
@​iOvergaard in umbraco/Umbraco-CMS#20535
* Bump vite from 7.1.9 to 7.1.11 in /src/Umbraco.Web.UI.Client by
@​dependabot[bot] in umbraco/Umbraco-CMS#20580
* Bump vite from 7.1.9 to 7.1.11 in /src/Umbraco.Web.UI.Login by
@​dependabot[bot] in umbraco/Umbraco-CMS#20621
* Bump playwright and @​playwright/test in
/tests/Umbraco.Tests.AcceptanceTest by @​dependabot[bot] in
umbraco/Umbraco-CMS#20579
* Bump the npm_and_yarn group across 2 directories with 1 update by
@​dependabot[bot] in umbraco/Umbraco-CMS#20863
* Dependencies: Updates some dependencies to latest minor or patch
releases by @​AndyButland in
umbraco/Umbraco-CMS#20953
* build(deps): bumps monaco-editor from 0.54.0 to 0.55.1 by @​iOvergaard
in umbraco/Umbraco-CMS#21054

### 🌈 Accessibility Improvements
* Entity Actions: Create button discernible text (fixes #​20205) by
@​OskarKruger in umbraco/Umbraco-CMS#20434
* Entity Actions: More create button discernible text, extension of
#​20434 by @​OskarKruger in
umbraco/Umbraco-CMS#20458
* Header: Adjusted button focus border color contrast by @​MrHutmat in
umbraco/Umbraco-CMS#20562
* Login: Added custom validation for missing password and user/email on
the login form by @​MrHutmat in
umbraco/Umbraco-CMS#20233
* Accessibility: Adding a label attribute for `<uui-button>` in news
dashboard by @​MrHutmat in
umbraco/Umbraco-CMS#20780
* Keyboard navigation: Return to opening element after modal close by
@​MrHutmat in umbraco/Umbraco-CMS#20782

### 🚀 New Features
* Preview: Allows changing the preview environment inside the preview
app, and other UX changes that enhance the experience by @​leekelleher
in umbraco/Umbraco-CMS#20598
* Login: Adds show/hide password toggle by @​MrHutmat in
umbraco/Umbraco-CMS#20611
* Adds Clear Clipboard button & logic by @​warrenbuckley in
umbraco/Umbraco-CMS#20757
* Member types: Implement containers by @​ronaldbarendse in
umbraco/Umbraco-CMS#20706
* Log viewer: Improves search functionality and code quality by
@​iOvergaard in umbraco/Umbraco-CMS#20913
* Log Viewer: Enhances the donut chart to be responsive, link to log
search, and show numbers directly by @​iOvergaard in
umbraco/Umbraco-CMS#20928
* Culture and Hostnames: Add ability to sort hostnames (closes #​20691)
by @​MrHutmat in umbraco/Umbraco-CMS#20826
* Localization: Adds `termOrDefault()` method to accept a fallback value
by @​iOvergaard in umbraco/Umbraco-CMS#20947
* Block Grid: Sort mode by @​leekelleher in
umbraco/Umbraco-CMS#20869
* News Dashboard: Adding functionality to overwrite the cache duration
by @​NillasKA in umbraco/Umbraco-CMS#21064
* Block List: Sort mode by @​leekelleher in
umbraco/Umbraco-CMS#21060
* Extend RTE output in Delivery API for better support for multi-site
URL resolution by @​MiguelGuedelha in
umbraco/Umbraco-CMS#20846
* Content Types: Introduce schema service to support future schema
generation by @​lauraneto in
umbraco/Umbraco-CMS#21031
* Delivery API: Adding allow list for content types by @​NillasKA in
umbraco/Umbraco-CMS#21111
* Emails: Add `Expires` header by @​rickbutterfield in
umbraco/Umbraco-CMS#20285
* Indexing: Make the indexing batch size configurable by @​kjac in
umbraco/Umbraco-CMS#20543
* Media: Add protection to restrict access to media in recycle bin
(closes #​2931) by @​AndyButland in
umbraco/Umbraco-CMS#20378
* Collection: Introduce Collection Item Card extension type by
@​madsrasmussen in umbraco/Umbraco-CMS#20954
* Collection: Introduce Collection Item Ref extension type by
@​madsrasmussen in umbraco/Umbraco-CMS#20994
* Collection: Introduce Card and Ref Collection View kinds by
@​madsrasmussen in umbraco/Umbraco-CMS#21037

### 🚤 Performance
* Performance: Optimize memory footprint of document URL cache (closes
#​21055) by @​AndyButland in
umbraco/Umbraco-CMS#21066
* Distributed Background Jobs: Improve distributed background job
locking behavior and performance by @​nikolajlauridsen in
umbraco/Umbraco-CMS#21100
* Repositories: Optimize repository caches to populate for both int and
GUID keys by @​AndyButland in
umbraco/Umbraco-CMS#21124
* Performance: Re-introduce lazy locks by @​lauraneto in
umbraco/Umbraco-CMS#21102

### 🐛 Bug Fixes
 ... (truncated)

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

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Umbraco.Cms.DevelopmentMode.Backoffice&package-manager=nuget&previous-version=17.0.2&new-version=17.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alexander Seeliger <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants