Merge 18/dev into feature branch#22394
Merged
nikolajlauridsen merged 96 commits intov18/feature/ef-core-repositoriesfrom Apr 9, 2026
Merged
Merge 18/dev into feature branch#22394nikolajlauridsen merged 96 commits intov18/feature/ef-core-repositoriesfrom
nikolajlauridsen merged 96 commits intov18/feature/ef-core-repositoriesfrom
Conversation
* Update MFA label to 2FA in English language file * Changed MFA to 2FA in all other language files. * Revert "Changed MFA to 2FA in all other language files." This reverts commit 203294e. * Changed MFA to 2FA in all other language files. --------- Co-authored-by: Marc Love <marc@madebycrunch.com>
* Added tests for moving media * Renamed tests * Make tests run in the pipeline * Updated name * Reverted npm command
…icker (#22235) * Added more constant variable for validation message * Added api helper for creating multi url picker data type with min number * Renamed * Updated api helper for creating document with multi url picker * Added tests for mandatory multi url picker * Split out tests for content with a multi URL picker. * Refactor and added tests for publish a block with empty mandatory multi url picker * Make tests run in the pipeline * Fixed comments
…xing after package upgrade (#22243) * Revert to segment retrieval from content when document URL service isn't initialised. * Add tests for ContentValueSetBuilder.
…xing after package upgrade (#22243) * Revert to segment retrieval from content when document URL service isn't initialised. * Add tests for ContentValueSetBuilder.
Reverted npm command for smokeTest
Close readline before starting dev server Close the readline interface before launching the Vite dev server so Ctrl+C can properly terminate the process.
…22239) * Extend and tidy up unit and integration test coverage. * Add MaxVersionsToDeletePerRun configuration setting. * Added overload to GetDocumentVersionsEligibleForCleanup to allow restricting results to older than a given date and with a maximum count. * Use SQL date filter and per-run cap in content version cleanup. * Handle deletes using optimised process using temp tables. * Make maxCount nullable and add per-run cap integration test. * Addressed code review feedback. * Fix to reporting of cap reached. * Additional unit tests for max date cut-off logic. * Add TODOs for removal of default implementations from interfaces. Co-authored-by: Kenn Jacobsen <kja@umbraco.dk> * Revert timing for ContentVersionCleanupJob. * Add index to versionDate on umbracoContentVersion. * Ensure long command timeout for upgrade. --------- Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
…eature/ef-core-domain-repository # Conflicts: # src/Umbraco.Infrastructure/Persistence/Factories/DomainFactory.cs # src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DomainRepository.cs
* Added api helper for block grid area * Updated ui helper for block grid area * Updated tests for block grid area * Updated json builder for blockGridSpecifiedAllowance * Formatted code * Updated ui helper for specifiedAllowance * Updated tests * Fixed ui helper for enterSpecifiedAllowanceMinByIndex * Added ui helper for create content with a block area with specified allowance * Added tests for create content with ablock grid area with specified allowance * Format code * Make tests run in the pipeline * Fixed tests * Fixed comments * Reverted npm command
… Alias Names (closes #22259) (#22261) * fix raw sql statements without escaped table, column or alias names. * fix more raw sql statements without escaped table, column or alias names. * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Improve variable naming. --------- Co-authored-by: Andy Butland <abutland73@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…balancing (#22257) * fix(core): append SiteName to machine identifier for same-host load balancing When multiple Umbraco instances run on the same machine (e.g. IIS AAR load balancing or local LB simulation), they shared the same machineId key in the umbracoLastSynced table, causing cache sync interference. If Umbraco:CMS:Hosting:SiteName is configured, it is now appended to the machine name to produce a unique identifier per instance. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Update tests/Umbraco.Tests.UnitTests/Umbraco.Core/Factories/MachineInfoFactoryTests.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Validate length * Refactor to enable us to have a validator --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Added migration for SVG width/height * #22114 worked on SVG width height implementation * #22244 Code style fixes Co-authored-by: Andy Butland <abutland73@gmail.com> * #22244 XmlReaderSettings and using Co-authored-by: Andy Butland <abutland73@gmail.com> * #22244 Cleanup Co-authored-by: Andy Butland <abutland73@gmail.com> * #22244 Correction if statement Co-authored-by: Andy Butland <abutland73@gmail.com> * #22244 Refactor log message Co-authored-by: Andy Butland <abutland73@gmail.com> * #22244 Correction if statment Co-authored-by: Andy Butland <abutland73@gmail.com> * #22244 Cleanup Co-authored-by: Andy Butland <abutland73@gmail.com> * #22244 Cleanup Co-authored-by: Andy Butland <abutland73@gmail.com> * #22244 Code style adjustments Co-authored-by: Andy Butland <abutland73@gmail.com> * #22244 Adjust if statement Co-authored-by: Andy Butland <abutland73@gmail.com> * #22244 Adjust documentation comments Co-authored-by: Andy Butland <abutland73@gmail.com> * #22244 Fix log comment * #22244 Fallback to viewbox if width height attribute has other unit than numeric or px. * #22244 Refactoring SVG parser, no support for decimals * #22244 Migration, consistent logging * #22244 Create vector umbracoWidth and umbracoHeight during clean install * #22244 Remove SupportedImageType from ISvgDimensionsExtractor * #22244 pass culture and segment to SetValue * Add DtdProcessing.Prohibit security hardening to SvgDimensionExtractor. * Addressed some code styling and robustness of the migration and extractor classes. * Add further unit tests. * Add logging to notification handler. Skip when properties don't exist to avoid unnecessary processing. * Add unit tests for media saving handler. * Move the dimensions extractor implementation into infrastructure. --------- Co-authored-by: Markus Johansson <markus@obviuse.se> Co-authored-by: Andy Butland <abutland73@gmail.com>
#22137) * Remove obsolete code * Update tests in BlockEditorBackwardsCompatibilityTests * update languageId, remove obsolete construcor from ApiLink * remove the tests * Fixed build of unit tests. * Reverted removal of UmbracoApiController for now (we should do this in a single PR). * Code style fix. --------- Co-authored-by: Lan Nguyen Thuy <lnt@umbraco.dk> Co-authored-by: Andy Butland <abutland73@gmail.com>
…dCache ParseFault with Redis (#22278) * Update Microsoft.Extensions.Caching.Hybrid to latest minor, and other Microsoft dependencies to latest patch. * Align test and local web project dependency versions.
chore(tests): remove dead KeepAlive config remnants The KeepAlive feature was removed in b619399 (#15891) but references to the config remained in 8 acceptance test appsettings.json files and 2 CI pipeline env var definitions. These are no-ops since the setting no longer exists — remove them. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com>
…dCache ParseFault with Redis (#22278) * Update Microsoft.Extensions.Caching.Hybrid to latest minor, and other Microsoft dependencies to latest patch. * Align test and local web project dependency versions.
…editing services (#22012) Add missing notifications to element container and element editing services Add ElementDeletingNotification and ElementTreeChangeNotification to ElementContainerService for EmptyRecycleBin, Move, MoveToRecycleBin, and Delete operations, aligning with ContentService notification patterns. Add ElementTreeChangeNotification to ElementEditingService for Move and Copy operations. Refactor DeleteDescendantsLocked to return deleted elements and DeleteItem to return the deleted entity for use in tree change notifications. Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
Prevent NPoco auto-select from breaking retrust migration.
Prevent NPoco auto-select from breaking retrust migration.
* Add more granularity to ContentTypeChangeTypes and handle for structucal changes (pending non-structucal changes). * Integration tests to validate the granular, structucal change types * Implement "other" changes * Make "other" changes less granular. * Update tests/Umbraco.Tests.Integration/Umbraco.Core/Services/ContentTypeEditingServiceTests.ChangeTypes.cs Co-authored-by: Andy Butland <abutland73@gmail.com> * Clean up * Add test proving the sub-flags do not collide * Support change detection for both structural and non-structural changes in one operation --------- Co-authored-by: Andy Butland <abutland73@gmail.com>
#22237) * Remove token if decryption fails * Update src/Umbraco.Cms.Api.Common/DependencyInjection/HideBackOfficeTokensHandler.cs Co-authored-by: Andy Butland <abutland73@gmail.com> * inlcude namespace for suggested code change --------- Co-authored-by: Andy Butland <abutland73@gmail.com>
…22321) * Add client-side model guidance and repo rules * fix paths * Update data-flow.md
* Docs-first review: load prefs & validate patterns * Update .claude/skills/umb-review/SKILL.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Niels Lyngsø <nsl@umbraco.dk> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
# Conflicts: # src/Umbraco.Cms.Persistence.Sqlite/Services/SqliteSyntaxProvider.cs # src/Umbraco.Core/Services/OperationStatus/UserOperationStatus.cs
…22298) * feat: surface ProblemDetails detail in error notifications Pass the ProblemDetails detail field through to error notifications. Short details (≤250 chars) are shown inline with CSS line-clamp. Long details (>250 chars) are shown via a "See error" button that opens the error viewer modal. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: address PR review — rename detail/details ambiguity and remove as any cast Rename local `details` variable to `errors` to avoid confusion with `detail`. Change UmbErrorViewerModalData to a union type (UmbPeekErrorArgs | string) matching what the modal actually handles at runtime, eliminating the as any cast. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: tighten types and overload _peekError with UmbPeekErrorArgs - Document UmbPeekErrorArgs interface and its properties - Add `errors` property to UmbPeekErrorArgs, deprecate `details` - New _peekError overload: accepts UmbPeekErrorArgs directly - Old _peekError overload: positional args, deprecated for removal in v19 - Update notification element and interceptor to use `errors` - Widen UmbErrorViewerModalData to also accept Record<string, unknown> Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: extract duplicate errors fallback to #validationErrors getter Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: remove unnecessary null handling in interceptor #peekError Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: resolve tsc errors from type tightening - UmbErrorViewerModalData: use Record<string, unknown> interface to satisfy UmbModalToken's object constraint (string not allowed) - Cast detail string through unknown when opening error viewer (modal handles strings at runtime, token type doesn't allow it) - Fix interceptor errors Record to use string[] values Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: resolve eslint errors — unused import, prettier, jsdoc link Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: renames 'See error' button to 'Full Error Message' * feat: renames Danish button 'Undtagelsesdetaljer' to 'Fejldetaljer' --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…he redirect route does not contain '/' (closes #22308) (#22309) * Handle invalid redirect routes without slash in GetUrlFromRoute * Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Handle fragment-only routes before parsing node id * Add unit tests verifying the fix (as well as expanding the test coverage of the URL provider in general). --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Andy Butland <abutland73@gmail.com>
* Added instructions for maintaining the `OpenApi.json` file * Updated client-side instruction docs for clean code and style guide. * Updated "Full API surface" point * Update CLAUDE.md Co-authored-by: Andy Butland <abutland73@gmail.com> --------- Co-authored-by: Andy Butland <abutland73@gmail.com>
* Compute next delay to compensate for time drift * Addressed case flagged on code review following stopped service. --------- Co-authored-by: Andy Butland <abutland73@gmail.com>
* Adds "umb-element-tree-item" custom component Updates context to use the item data resolver.. * Adds manifests for Element entity-signs for "Has Pending Changes" and "Has Scheduled Publish" * Update src/Umbraco.Web.UI.Client/src/packages/elements/tree/element-tree-item.element.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Attempt to fix the Item Data Resolver `setData` type-casting * Align element tree item model with item model for type safety Add required `flags` field to `UmbElementTreeItemModel` (via `UmbEntityWithFlags`) and `UmbElementTreeItemVariantModel`, matching the document tree pattern. This ensures the data resolver's `#setFlags()` receives actual data instead of silently accessing undefined properties. The `as unknown as` cast in the context remains due to nominal type differences (entityType union, variant state enum) but is now structurally safe at runtime. * Maps `flags` in `UmbElementTreeItemVariantModel` * Updated locator for element tree item due to UI changes --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Niels Lyngsø <nsl@umbraco.dk> Co-authored-by: Nhu Dinh <hnd@umbraco.dk>
…save modal, and pending changes (#21897) * feat(elements): add contentTypeIcon observable and _handleSave override to workspace context Adds contentTypeIcon observable, icon field to UmbElementDetailModel, and maps icon from server response. Adds _handleSave override to remap validation error colors to warning colors during save, matching Document workspace behavior. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(elements): add loading state, variant selector, and cleanup to split view Adds loading state observation and binding, variant selector slot with new element-specific variant selector component, and element sortVariants utility. Removes dead #breadcrumbs CSS rule and reorders splitViewIndex to match Document workspace conventions. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(elements): wire up publishing workspace context in variant selector Consumes UMB_ELEMENT_PUBLISHING_WORKSPACE_CONTEXT in the element variant selector, mirroring the Document pattern. Fixes PUBLISHED_PENDING_CHANGES localization to use the correct key. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(elements): add save modal for element workspace variant picker Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Adds "Update" permission condition on Folder Rename entity-action * feat(elements): add pending changes manager for element workspace Mirror the Document workspace's UmbDocumentPublishedPendingChangesManager to provide client-side comparison of persisted vs published element data. The variant selector now uses this manager to determine pending changes state instead of relying solely on the API state. The actual API call to fetch published element data is left as a TODO until the backend endpoint exists. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Update src/Umbraco.Web.UI.Client/src/packages/elements/modals/save-modal/element-save-modal.element.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src/Umbraco.Web.UI.Client/src/packages/elements/utils.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * refactor(menu): delegate breadcrumb href to menu structure context Move the href resolution logic from the breadcrumb element into the menu structure workspace context via a new `getItemHref` method on the interface and base class. This eliminates the need for duplicate breadcrumb elements that only differ in href behavior, and mirrors the existing pattern used by the variant breadcrumb. * feat(elements): add menu structure context and breadcrumb for element folders Add UmbElementFolderMenuStructureContext that overrides getItemHref to make folder ancestors and the section root clickable in the breadcrumb. Register the menu structure context and breadcrumb footer app in the element folder workspace manifests. * fix(elements): provide synthetic variant data for folder tree items Folders don't have variants from the API, so provide a synthetic published variant using the folder name. This prevents errors when the tree item mapper expects variant data. * Updates "umb-element-table-collection-view" to add the column elements for "name" and (published) "state". * Refactor exports in constants.ts for clarity * fix(workspace): prevent breadcrumb TypeError for contexts without getItemHref Menu structure contexts that don't extend the tree base class (e.g. UmbLanguageNavigationStructureWorkspaceContext) lack getItemHref, causing a runtime TypeError in the breadcrumb element. Use optional chaining to gracefully handle missing implementations. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(menu): add JSDoc to UmbMenuStructureWorkspaceContext interface Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com> Co-authored-by: Niels Lyngsø <nsl@umbraco.dk> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
Temporary remove .smoke tags for the element-related tests
* build(deps): bumps @umbraco-ui to 2.0.0-alpha.1 with new themes * fix: updates paths to new themes * feat: uses new uui themes for static cshtml files * feat: updates to use UUISelectOption and UUIFormControlWithBasicsMixin * build: copy all themes to "themes" folder * build(uui): updates themes path so it works relatively with fonts * build: updates minimum node.js version to build from 22 to 24 to support UUI * fix: corrects paths to theme css * docs: update CLAUDE.md files to reflect UUI 2.x for CMS v18 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs(storybook): adds theme switcher * docs(storybook): updates paths * docs(web): document UUI theme CSS pipeline across build files Add comments linking the files involved in UUI theme CSS handling: - manifests.ts: where theme CSS paths are declared, with note on UUI origin - external/uui/vite.config.ts: where themes are copied for production builds - vite.config.ts: where themes are copied for dev server and PR previews - copy-to-cms.js: clarifies UUI themes are already in dist-cms at this point Each file points to the others, making the dependency on UUI theme filenames visible without adding abstraction. https://claude.ai/code/session_015ntS4GXa4s9BQHsjvigDh2 * Update package.json Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix: adjusts types * update lockfile --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* todo cleanup * adding activatorUtilitiesConstructor atribute * fix failed test by adding ActivatorUtilitiesConstructor * Apply suggestion from @AndyButland Co-authored-by: Andy Butland <abutland73@gmail.com> * Apply suggestion from @AndyButland Co-authored-by: Andy Butland <abutland73@gmail.com> * Apply suggestion from @AndyButland Co-authored-by: Andy Butland <abutland73@gmail.com> * Apply suggestion from @AndyButland Co-authored-by: Andy Butland <abutland73@gmail.com> * Apply suggestion from @AndyButland Co-authored-by: Andy Butland <abutland73@gmail.com> * update umbracoPlan and remove ConfigureSecurityStampOptions * Removed uneeded using. --------- Co-authored-by: Lan Nguyen Thuy <lnt@umbraco.dk> Co-authored-by: Andy Butland <abutland73@gmail.com>
#22335) * remove obsolete code from services * remove obsolete code from IEmailSenderClient * remove obsolete code from Notifications * unchange MemberServiceTest * Remove obsolete code from CopyingNotification * remove ContentFinderByUrl and ContentFinderByUrlAndTemplate * Remove DefaultUrlProvider, remove obsolete code from ContentPermissions, update MemberRoleStoreTests * unchange PropertyCacheLevelTests * unchange ConvertersTests * Update src/Umbraco.Core/Notifications/ContentCopiedNotification.cs Co-authored-by: Andy Butland <abutland73@gmail.com> * Update src/Umbraco.Core/Notifications/ContentCopyingNotification.cs Co-authored-by: Andy Butland <abutland73@gmail.com> * Update src/Umbraco.Core/Notifications/CopiedNotification.cs Co-authored-by: Andy Butland <abutland73@gmail.com> * Update src/Umbraco.Core/Notifications/CopyingNotification.cs Co-authored-by: Andy Butland <abutland73@gmail.com> * Update src/Umbraco.Core/Notifications/ElementCopiedNotification.cs Co-authored-by: Andy Butland <abutland73@gmail.com> * Update src/Umbraco.Core/Notifications/ElementCopyingNotification.cs Co-authored-by: Andy Butland <abutland73@gmail.com> * Update src/Umbraco.Core/Services/ContentService.cs Co-authored-by: Andy Butland <abutland73@gmail.com> * Update src/Umbraco.Infrastructure/Mail/BasicSmtpEmailSenderClient.cs Co-authored-by: Andy Butland <abutland73@gmail.com> * update tests, rename, remove file tests... * Minor formatting tidy-up. --------- Co-authored-by: Lan Nguyen Thuy <lnt@umbraco.dk> Co-authored-by: Andy Butland <abutland73@gmail.com>
# Conflicts: # Directory.Packages.props # src/Umbraco.Cms.Persistence.EFCore/CLAUDE.md # src/Umbraco.Cms.Persistence.EFCore/EfCoreMigrationExecutor.cs # src/Umbraco.Cms.Persistence.EFCore/Scoping/EFCoreScopeAccessor.cs # src/Umbraco.Cms.Persistence.EFCore/Scoping/IAmbientEfCoreScopeStack.cs # src/Umbraco.Cms.Persistence.EFCore/Scoping/IEFCoreScopeAccessor.cs # src/Umbraco.Infrastructure/Persistence/EFCore/EFCoreCreateTablesNotificationHandler.cs # src/Umbraco.Infrastructure/Persistence/EFCore/EFCoreMigrationExecutor.cs # src/Umbraco.Infrastructure/Persistence/EFCore/EfCoreMigrationExecutor.cs # src/Umbraco.Infrastructure/Persistence/EFCore/Scoping/AmbientEFCoreScopeStack.cs # src/Umbraco.Infrastructure/Persistence/EFCore/Scoping/EFCoreScopeProvider.cs # src/Umbraco.Infrastructure/Persistence/EFCore/Scoping/IAmbientEFCoreScopeStack.cs # src/Umbraco.Infrastructure/Persistence/EFCore/Scoping/IAmbientEfCoreScopeStack.cs # src/Umbraco.Infrastructure/Persistence/EFCore/Scoping/IEFCoreScopeProvider.cs # tests/Umbraco.Tests.Integration/Umbraco.Web.BackOffice/UrlAndDomains/DomainAndUrlsTests.cs
…sentationFactory (#22391) * Fix ambiguous constructor * Add clarifying comment
e791a57
into
v18/feature/ef-core-repositories
4 of 5 checks passed
nikolajlauridsen
added a commit
that referenced
this pull request
Apr 9, 2026
This reverts commit e791a57.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Merges v18/dev into feature branch