What's Changed
π¦ Dependencies
- Dependencies: Fixed dependency conflicts when installing Microsoft.EntityFrameworkCore.Design (closes #20421) by @lauraneto in #20474
- Dependencies: Remove
Microsoft.CodeAnalysis.CSharpdependency from Umbraco.Infrastructure by @lauraneto in #20481 - build(deps): bumps @umbraco-ui/uui from 1.16.0-rc.0 to 1.16.0 by @iOvergaard in #20535
- Bump vite from 7.1.9 to 7.1.11 in /src/Umbraco.Web.UI.Client by @dependabot[bot] in #20580
- Bump vite from 7.1.9 to 7.1.11 in /src/Umbraco.Web.UI.Login by @dependabot[bot] in #20621
- Bump playwright and @playwright/test in /tests/Umbraco.Tests.AcceptanceTest by @dependabot[bot] in #20579
- Bump the npm_and_yarn group across 2 directories with 1 update by @dependabot[bot] in #20863
- Dependencies: Updates some dependencies to latest minor or patch releases by @AndyButland in #20953
- build(deps): bumps monaco-editor from 0.54.0 to 0.55.1 by @iOvergaard in #21054
π Accessibility Improvements
- Entity Actions: Create button discernible text (fixes #20205) by @OskarKruger in #20434
- Entity Actions: More create button discernible text, extension of #20434 by @OskarKruger in #20458
- Header: Adjusted button focus border color contrast by @MrHutmat in #20562
- Login: Added custom validation for missing password and user/email on the login form by @MrHutmat in #20233
- Accessibility: Adding a label attribute for
<uui-button>in news dashboard by @MrHutmat in #20780 - Keyboard navigation: Return to opening element after modal close by @MrHutmat in #20782
π New Features
- Preview: Allows changing the preview environment inside the preview app, and other UX changes that enhance the experience by @leekelleher in #20598
- Login: Adds show/hide password toggle by @MrHutmat in #20611
- Adds Clear Clipboard button & logic by @warrenbuckley in #20757
- Member types: Implement containers by @ronaldbarendse in #20706
- Log viewer: Improves search functionality and code quality by @iOvergaard in #20913
- Log Viewer: Enhances the donut chart to be responsive, link to log search, and show numbers directly by @iOvergaard in #20928
- Culture and Hostnames: Add ability to sort hostnames (closes #20691) by @MrHutmat in #20826
- Localization: Adds
termOrDefault()method to accept a fallback value by @iOvergaard in #20947 - Block Grid: Sort mode by @leekelleher in #20869
- News Dashboard: Adding functionality to overwrite the cache duration by @NillasKA in #21064
- Block List: Sort mode by @leekelleher in #21060
- Extend RTE output in Delivery API for better support for multi-site URL resolution by @MiguelGuedelha in #20846
- Content Types: Introduce schema service to support future schema generation by @lauraneto in #21031
- Delivery API: Adding allow list for content types by @NillasKA in #21111
- Emails: Add
Expiresheader by @rickbutterfield in #20285 - Indexing: Make the indexing batch size configurable by @kjac in #20543
- Media: Add protection to restrict access to media in recycle bin (closes #2931) by @AndyButland in #20378
- Collection: Introduce Collection Item Card extension type by @madsrasmussen in #20954
- Collection: Introduce Collection Item Ref extension type by @madsrasmussen in #20994
- Collection: Introduce Card and Ref Collection View kinds by @madsrasmussen in #21037
π€ Performance
- Performance: Optimize memory footprint of document URL cache (closes #21055) by @AndyButland in #21066
- Distributed Background Jobs: Improve distributed background job locking behavior and performance by @nikolajlauridsen in #21100
- Repositories: Optimize repository caches to populate for both int and GUID keys by @AndyButland in #21124
- Performance: Re-introduce lazy locks by @lauraneto in #21102
π Bug Fixes
- Preview: Removes sessions by @leekelleher in #20561
- Property Type workspace: layout & labelling adjustments by @engijlr in #20131
- Color Picker: Validate uniqueness of selected colors by @Programeerik in #20431
- Members: Forward port of fix for member lockout issue #16988 from PR #17007 for 16 by @AndyButland in #20441
- Refactoring: Fixed spelling mistake in method name by @AndyButland in #20460
- Recycle Bin: Trigger cache invalidation for trashed document/media items by @leekelleher in #20483
- News Dashboard: split into card + container, parent handles the data from the repo by @engijlr in #20503
- Extensions: Adds
@provideContextand@consumeContextdecorators for a better developer experience by @iOvergaard in #20510 - Preview: Redirect to published URL on exit by @leekelleher in #20556
- Block List: Remove bold label from inline editing by @bjarnef in #20437
- User And User Group Workspace: Make views extendable (#20548) by @madsrasmussen in #20617
- Icon Picker: Fix empty selection allowed on mandatory fields and add validation. by @engijlr in #20536
- Don't call generateAlias on #onAliasChange() by @BatJan in #20628
- Property Editors: Added form control and mandatory support to editors in common group(Number, Tags, Slider). by @engijlr in #20659
- Routing: Added method to
IDocumentUrlServicefor retrieving document key from URI (closes #20666) by @AndyButland in #20673 - Icon picker: Better title for icon colors by @bjarnef in #20649
- Document Recycle Bin: Remove non-relevant entity bulk actions (closes #20677) by @madsrasmussen in #20685
- UX: Adjust box-sizing to ensure tree and workspace top borders are aligned by @nathanwoulfe in #20694
- Preview: Add
allow-formsto iframe sandbox attributes by @rickbutterfield in #20701 - Property Editors: Add mandatory support to Number Range (Refactor). by @engijlr in #20570
- Tiptap RTE: Localizes property editor UI label (removes "[Tiptap]" from label) (closes #20439) by @leekelleher in #20713
- Auth: Cleans up stale or completed auth details from storage by @iOvergaard in #20725
- Property Editors: Hide "add button" when maximum configuration is 1 (fixes #20407) by @NguyenThuyLan in #20738
- Rich Text Editor: The media picker skips the "edit media" dialog when editing an image (closes #20066) by @iOvergaard in #20740
- User Workspace: localize password mismatch feedback by @nielslyngsoe in #20747
- Login: Changes localization for email confirmations to be more friendly by @nielslyngsoe in #20750
- Installer: Fix issues with newsletter signup by @AndyButland in #20705
- Localization: Supply the display name to the localization key for the
altandtitleattributes of the 2FA QR code image by @warrenbuckley in #20770 - Slider property editor: Fix for preset value handling of
enableRangeby @Luuk1983 in #20772 - Querying: Restore ability to retrieve all children published in any culture (closes #20760) by @AndyButland in #20766
- Package section: use command icon for migrations, remove prop by @nielslyngsoe in #20775
- Templates: Fix "Discard changes?" dialog after creating template with master template (fixes #20262) by @iOvergaard in #20749
- Backoffice Item Pickers: Show error for missing items in 10 picker types (closes #19329, #20270, #20367) by @iOvergaard in #20762
- Migrations: Provide migration for single block property editor by @Migaroez in #20663
- Fix for partial view caches not being cleared when content is publish⦠by @justin-nevitech in #20794
- Database migrations: Support
DateOnlyandTimeOnlyin syntax providers by @NguyenThuyLan in #20784 - Content Type Designer: Always register root route to support drag-and-drop into empty Generic tab. by @engijlr in #20809
- Relations: Exclude the relate parent on delete relation type from checks for related documents and media on delete, when disable delete with references is enabled (closes #20803) by @AndyButland in #20811
- Preview: Add validation support to Save and Preview button (closes #20616) by @iOvergaard in #20805
- Media Picker: Remove duplicate loaders in media cards. by @engijlr in #20793
- Content Type Designer: Use input-with-alias and implement regex validation for Alias. by @engijlr in #20755
- Property Editors: Added form control and mandatory support to editors in rich content group(Code editor, Markdown, Block grid) by @engijlr in #20693
- Decimal property editor: Flexibly parse decimal value with different separators (closes #20823) by @AndyButland in #20828
- Content Sorting: increase modal size by @Frost117 in #20835
- Property Editors: Added form control and mandatory support to editors in picker group(Color, Content, Date, Document, Eye dropper, Multi URL). by @engijlr in #20684
- Redirects: Fixes self referencing redirects (closes #20139) by @NillasKA in #20767
- Block list: ensure block items stay top-aligned when sorting by @nielslyngsoe in #20842
- Block Entry Context: Update the settingsPropertyValueByAlias to observe settings. by @engijlr in #20861
- Text string property editor: Data-type validation for max chars (fixes #18817) by @nielslyngsoe in #20843
- E2E: QA Updated tests with the .skip tag by @nhudinh0309 in #20739
- Content types: Apply text selection when unlocking alias by @engijlr in #20882
- TextBox, TextArea: Message max length validation (close #20710) by @NguyenThuyLan in #20886
- Migrations: Handles rich text blocks created with TinyMCE in convert local links migration and refreshes internal datatype cache following migration requiring cache rebuild (closes #20885) by @AndyButland in #20887
- Integration Tests: Use empty temp folder for legacy lang config when using integration tests outside core (closes #20888) by @lars-erik in #20889
- Block editors: Localization schema elements such as property names in clipboard view (#20756) by @NguyenThuyLan in #20903
- Redirect tracking: Ensure redirects with domains are stored with the domain node id prefix (closes #20894) by @AndyButland in #20900
- Content Type Designer: Only update tab name on change by @nielslyngsoe in #20786
- Collections: Sets the default name for the content collection workspace name to 'Child items' instead of 'Collection' by @netaddicts-council in #20907
- Bock Type Card: make actions stand clear from thumbnail/color by @nielslyngsoe in #20895
- Trashbin: introduce a empty trash icon by @nielslyngsoe in #20629
- Properties: Implement container queries by @nielslyngsoe in #20832
- Preserve existing Examine FieldDefinitionCollection if it already exists by @callumbwhyte in #20931
- Permissions: Protect
GetIdsFromPathReversedagainst invalid program exception by @AndyButland in #20930 - UFM: Update contentName component to respect current backoffice culture. by @engijlr in #20927
- Examine Management: Allow selection of all available fields in Examine search results, and fix layout issue when not all records have all fields (closes #20878 and #20879) by @AndyButland in #20909
- Multi URL Picker: change validation for url and anchor/querystring by @NguyenThuyLan in #20920
- Log Viewer: Adds localization in the Backoffice UI + cleans up unused keys by @iOvergaard in #20923
- Block Catalogue: Localizes block-type name/description before render (closes #20890) by @leekelleher in #20904
- Login Screen: Fix css for login screen dark mode (#20922) by @NguyenThuyLan in #20946
- Block editors: adds prefix to workspace title (closes #20588) by @leekelleher in #20884
- Extensions: Adds all yet unused Lit directives to @umbraco-cms/backoffice/external/lit (closes #20961) by @warrenbuckley in #20963
- Installer: Removes unused telemetry functionality by @iOvergaard in #20995
- Content Type Workspace: Create condition that checks content type uniques. by @engijlr in #20906
- Preview: Fix preview showing published version when Save and Preview is clicked multiple times (closes #20981) by @iOvergaard in #20992
- History: Take
URLobjects into consideration when storing Backoffice history by @iOvergaard in #20986 - Upgrade: Deprecates Management API controller for defunct our.umbraco.com version checker by @iOvergaard in #21011
- Folder Workspace: Support menu expansion and breadcrumbs (closes #20675) by @madsrasmussen in #20712
- Data Type Workspace: Enable client mandatory field validation for configuration properties by @madsrasmussen in #20799
- Table Collection View: Update table view icon to 'icon-table' by @madsrasmussen in #20970
- Property Editors: Added form control and mandatory support(User, Member, Member Group) by @engijlr in #20672
- Block: open-interaction only available when Content is Editable by @nielslyngsoe in #20833
- Image cropper modal import missing component by @bjarnef in #20651
- Backoffice: CTRL+Click to open in a new tab should work on Linux (closes #21009) by @iOvergaard in #21027
- Debug mode: Marks UMB-DEBUG cookie as HttpOnly and Secure by @iOvergaard in #21032
- Property Editors: Fix localization of user-provided labels (closes #20974) by @iOvergaard in #21045
- Packaging: Fixing bad serialization for data types in packages by @NillasKA in #21043
- Document Tree: Fix undefined name for variants without fallback. by @engijlr in #21046
- Collections: Add selection mode toggle in UmbTableElement update lifecycle by @rickbutterfield in #20486
- Segments: Only validate segment values for cultures they are defined for (closes #21029) by @AndyButland in #21033
- oEmbed Providers: Updated the X oEmbed provider to use the x.com domain (closes #21052) by @AndyButland in #21053
- Webhooks: Added 'mandatory' tag as a visual indicator for at lease one webhook event being required by @Frost117 in #21075
- Tiptap RTE: De-duplicate extensions to prevent console warnings by @leekelleher in #21068
- Examine: Improve deletion logic in
UmbracoContentIndexby @Shazwazza in #21091 - Blocks: localize group headline by @nielslyngsoe in #21090
- Sync: Fix SyncBootStateAccessor to use ILastSyncedManager to prevent unnecessary cold boots by @nikolajlauridsen in #21109
- Distributed Background Jobs: Add initialization logging to DistributedJobService by @nikolajlauridsen in #21112
- Long Running Operations: Ensure eager write lock by @lauraneto in #21113
- Templating: Creating a doctype with template now yields a strongly typed template (closes #20443) by @lauraneto in #20688
- Content Publishing: Fix deadlocks by acquiring WriteLock at outer scope by @lauraneto in #21105
- Icon Picker: Add option to hide colors by @bjarnef in #20650
- UFM: Resolves "missing filter" console warning by @leekelleher in #21118
- Media: Fixing media folder not getting deleted when deleting media files. by @NillasKA in #21059
- Workspace: Fix browser title not being set correctly by @rickbutterfield in #21126
- Fix #20944: Updating UI Slider number properties to accept decimal values by @jsandrae in #20945
- Manifests: Fix misnaming and mis-registering of the document validation manifest (closes #21128) by @AndyButland in #21139
- Backoffice search: Fixes items missing
umbracoURL segment by @rammi987 in #20266 - Tiptap RTE: Uses
UmbracoCssPathglobal setting when loading CSS files (closes #20877) by @NguyenThuyLan in #21106 - Block Editors: variantId inheritance fix by @nielslyngsoe in #21101
- Distributed Background Jobs: Catch exceptions in job loop to improve application resilience by @nikolajlauridsen in #21099
- UI: Prevent headline overflow in
umb-body-layoutby @rickbutterfield in #21140 - Tree: Fix race condition when loading tree with
hideTreeRootenabled by @iOvergaard in #21160 - Document Saving: Fix SQL Server deadlock during concurrent updates by @lauraneto in #21156
- Relations: Fix descendants query to exclude parent item by @iOvergaard in #21162
- Multi url picker: Refactor validation (fixes #21044) by @nielslyngsoe in #21143
- Add loader to Culture and Hostnames modal while data loads by @Copilot in #21084
- Models builder: Re-provide support for casting a published member to the models builder type (closes #21135) by @AndyButland in #21150
- Document Permissions: Export
UmbDocumentUserPermissionConditionfrom package (closes #21199) by @iOvergaard in #21217 - Content Type Workspace: Fix navigation blocked after save (closes #21196) by @iOvergaard in #21218
- TextBox: Fix max length validation message showing wrong exceeded count (closes #21198) by @iOvergaard in #21219
- Document Editing: Fix property variation change breaking document save via Infinite Editing (closes #21195) by @iOvergaard in #21221
- Hybrid Cache: Clear published content cache on content type change by @AndyButland in #21225
π§ͺ Tests
- Workspace View: Add tests for create and using custom workspace view by @NguyenThuyLan in #20408
- Dashboard: Add tests for create and using custom dashboard by @NguyenThuyLan in #20253
- E2E: Updated acceptance tests to match changes by @andr317c in #20493
- E2E: QA Fixed the flaky tests related to publishing content with image cropper by @nhudinh0309 in #20577
- E2E: QA cherry picked acceptance tests updates from 17 by @andr317c in #20714
- E2E: QA Fixed the failing tests due to the recent UI changes by @nhudinh0309 in #20576
- Block Custom View: Add tests for create and using block custom view by @NguyenThuyLan in #20472
- Property action: Add tests for create and using Property Action UI Extension by @NguyenThuyLan in #20291
- Integration Tests: Avoid asserting on errors for permission tests by @AndyButland in #20643
- Collection view: add tests for create and using collection view by @NguyenThuyLan in #20667
- E2E: QA added entity picker acceptance tests by @andr317c in #20776
- Collection view test: update changes for v17 by @NguyenThuyLan in #20812
- E2E: Updated the failing Default Config tests by @nhudinh0309 in #20818
- E2E: QA Updated .fixme() acceptance tests by @nhudinh0309 in #20919
- E2E: QA Added acceptance tests for notification emails by @nhudinh0309 in #20918
- E2E: QA updated flaky acceptance tests by @andr317c in #21012
- E2E: QA updated current accceptance test project README to match current project by @andr317c in #21063
- E2E: QA Fixing some failing tests related to culture and hostname, log viewer and user by @nhudinh0309 in #21132
- Unit tsts: Added tests for HideBackOfficeTokensHandler by @Migaroez in #21067
- E2E: Added acceptance tests for regression issues by @nhudinh0309 in #21098
- E2E: QA Added acceptance tests for issue #20815 by @andr317c in #21151
π€ AI Tool Support
- Docs: Add CLAUDE.md documentation for key .NET projects by @hifi-phil in #20841
- Docs: Add Claude memory files for all relevant project files by @Migaroez in #20959
- Add Context7 claim file by @hifi-phil in #21110
- Docs: Add PR naming convention to CLAUDE.md by @nikolajlauridsen in #21114
- Docs: Add CLAUDE.md documentation for Tiptap RTE by @leekelleher in #21103
New Contributors
- @Luuk1983 made their first contribution in #20772
- @Frost117 made their first contribution in #20835
- @netaddicts-council made their first contribution in #20907
- @jsandrae made their first contribution in #20945
- @MiguelGuedelha made their first contribution in #20846
Full Changelog: release-17.0.2...release-17.1.0-rc