diff --git a/15/umbraco-workflow/release-notes.md b/15/umbraco-workflow/release-notes.md index e795a457ac7..f658c8dd784 100644 --- a/15/umbraco-workflow/release-notes.md +++ b/15/umbraco-workflow/release-notes.md @@ -16,6 +16,9 @@ Check the [Version Specific Upgrade Notes](upgrading/version-specific.md) articl This section contains the release notes for Umbraco Workflow 15 including all changes for this version. +### 15.1.5 (https://github.com/umbraco/Umbraco.Workflow.Issues/issues?q=is%3Aissue+is%3Aclosed+label%3Arelease%2F15.1.5) (June 11 2025) +* Fixes pagination offset in editor dashboards [#105](https://github.com/umbrco/Umbraco.Workflow.Issues/issues/105) + ### 15.1.4 (https://github.com/umbraco/Umbraco.Workflow.Issues/issues?q=is%3Aissue+is%3Aclosed+label%3Arelease%2F15.1.4) (May 29 2025) * Improves task summary display in notification emails [#94](https://github.com/umbraco/Umbraco.Workflow.Issues/issues/94) * Fixes error when attempting to open the workflow detail dialog from the editor dashboard diff --git a/16/umbraco-workflow/release-notes.md b/16/umbraco-workflow/release-notes.md index eebdafa5180..742d138d3ad 100644 --- a/16/umbraco-workflow/release-notes.md +++ b/16/umbraco-workflow/release-notes.md @@ -14,52 +14,12 @@ Check the [Version Specific Upgrade Notes](upgrading/version-specific.md) articl ## Release History -This section contains the release notes for Umbraco Workflow 15 including all changes for this version. +This section contains the release notes for Umbraco Workflow 16 including all changes for this version. -### 15.1.2 (April 2 2025) -* Improves culture variant handling in Advanced Search -* Ensure case-insensitive culture comparison when fetching tasks - -### 15.1.1 (March 20 2025) -* Fixes an intermittent issue where fetching approval groups in a mapper resulted in a scoping error - -### 15.1.0 (https://github.com/umbraco/Umbraco.Workflow.Issues/issues?q=is%3Aissue+is%3Aclosed+label%3Arelease%2F15.1.0) (March 7 2025 ) -* Dependency update for Umbraco.Licenses (making this release a minor) -* Fixes pagination in assigned-to task table [#96](https://github.com/umbraco/Umbraco.Workflow.Issues/issues/91) -* Fixes off-by-one bug when calculating approval thresholds with implicit approval [#97](https://github.com/umbraco/Umbraco.Workflow.Issues/issues/97) -* Allow searching for empty fields in advanced search. For example, search for all Product documents with no SKU - -### 15.0.4 (March 3, 2025) -* Fixes an issue where Workflow's content lock was always applied on documents where Workflow was not configured. -* Fixes a related issue where the content lock was never applied on invariant documents with no Workflow configuration. - -### 15.0.3 (February 14, 2025) -* Fixes SQLite migration bug where async methods were causing a race condition. - -### [15.0.2](https://github.com/umbraco/Umbraco.Workflow.Issues/issues?q=is%3Aissue+is%3Aclosed+label%3Arelease%2F15.0.2) (January 16 2025 ) -* Fixes workflow task summary generation in email body [#91](https://github.com/umbraco/Umbraco.Workflow.Issues/issues/91) -* Fixes localization in email body -* Updates Umbraco.Licenses dependency -* Refactors migration plan naming to align with the broader DXP product suite. - -### 15.0.1 (December 16th 2024) -* Fixes column type mismatch in migration -* Correctly implements delay time in History Cleanup hosted service - -### 15.0.0 (November 14th, 2024) -* Compatibility with Umbraco 15 -* Replaces entity action wrappers with `umbExtensionRegistry.appendCondition()` -* Adds abstraction over `UmbContentWorkspaceContext.readOnlyState` to consistently implement readonly document workspaces. -* Fixes invariant culture handling when unlocking a scheduled document. - -### 15.0.0-rc3 (November 8th, 2024) -* Compatibility with Umbraco 15-rc3 - -### 15.0.0-rc2 (October 23rd, 2024) -* Compatibility with Umbraco 15-rc2 - -### 15.0.0-rc1 (October 9th, 2024) -* Compatibility with Umbraco 15-rc1 +### 16.0.0 (June 12 2025) +* Compatibility with Umbraco 16 +* **FEATURE** => Alternate Versions. Refer to [Alternate Versions](alternate-versions/alternate-versions) for more details. +* **FEATURE** => Release Sets. Refer to [Release Sets](release-sets/release-sets.md) for more details. ## Legacy release notes diff --git a/16/umbraco-workflow/upgrading/version-specific.md b/16/umbraco-workflow/upgrading/version-specific.md index 5a47bbb9f4f..cb15e7443d8 100644 --- a/16/umbraco-workflow/upgrading/version-specific.md +++ b/16/umbraco-workflow/upgrading/version-specific.md @@ -6,7 +6,7 @@ description: >- # Version Specific Upgrade Notes -This page covers specific upgrade documentation for when migrating to Umbraco Workflow version 14. +This page covers specific upgrade documentation for when migrating to Umbraco Workflow version 16. {% hint style="info" %} If you are upgrading to a new minor or patch version, you can find information about the breaking changes in the [Release Notes](../release-notes.md) article. @@ -14,30 +14,83 @@ If you are upgrading to a new minor or patch version, you can find information a ## Version Specific Upgrade Notes History -Version 14 of Umbraco Workflow has a minimum dependency on Umbraco CMS core of `14.1.0`. It runs on .NET 8. - -#### **Breaking changes** - -Version 14 contains a number of breaking changes, primarily due to the new backoffice introduced in Umbraco 14. The details are listed here: - -#### **Behaviour** - -* A new management API has been introduced at `umbraco/workflow/management/api` - -#### Dependencies - -* Umbraco CMS dependency was updated to `14.1.0` - -#### **Code** - -Workflow 14 includes a non-trivial number of breaking code changes, primarily related to namespace changes. The majority of these related to removing the `Implement` namespace for services, and moving appropriate models to `Umbraco.Workflow.Core.ViewModels` or `Umbraco.Workflow.Core.Interfaces`. - -* The serialization library has been changed from `Newtonsoft.Json` to `System.Text.Json`. -* Approval group identifiers changes from int to Guid. -* Workflow instance author identifier changes from int to Guid. -* Workflow task indentifiers for approving user, assigned user and actioning user change from int to Guid. -* Services return `Attempt` or `Attempt`, in line with similar changes in the CMS. - -## Legacy version specific upgrade notes +Version 16 of Umbraco Workflow has a minimum dependency on Umbraco CMS core of `16.0.0`. It runs on .NET 9. + +## Breaking changes + +Version 16 contains a number of breaking changes. The details are listed here: + +### Dependencies + +* Umbraco CMS dependency was updated to `16.0.0` + +### Code + +The list below includes all changes raising validation errors `CP0001`, `CP0002` and `CP0006` between versions 15.1.5 and 16.0.0. + +Of note are changes to API controller constructors to accept an `IWorkflowProcessFactory` argument and the removal of `IInstancesService.Create` (`IWorkflowInstanceGenerator.Create` should be used instead). Other changes are not typical extension or integration points, but are listed below for reference. + +#### Removed Types +- `Umbraco.Workflow.Core.Models.GlobalUserVariablesModel` +- `Umbraco.Workflow.Core.Models.GlobalVariablesModel` +- `Umbraco.Workflow.Core.Models.OptionType` +- `Umbraco.Workflow.Core.Processes.ICompleteWorkflowInstances` +- `Umbraco.Workflow.Web.Api.Controllers.Settings.GetVersionSettingsController` + +#### Removed Members +- `Umbraco.Workflow.Core.ApprovalGroups.Services.IGroupService.GetUserGroupWithUsers``1(System.Guid)` +- `Umbraco.Workflow.Core.ApprovalGroups.ViewModels.ApprovalGroupDetailPermissionConfigModel.get_ApprovalThreshold` +- `Umbraco.Workflow.Core.ApprovalGroups.ViewModels.DocumentTypePermissionConfigModel.get_ApprovalThreshold` +- `Umbraco.Workflow.Core.Email.Models.HtmlEmailModel.#ctor(Umbraco.Cms.Core.Services.ILocalizedTextService,Umbraco.Cms.Core.Services.IUserService,Umbraco.Workflow.Core.Configuration.ColorSettings)` +- `Umbraco.Workflow.Core.Models.Enums.WorkflowType.Both` +- `Umbraco.Workflow.Core.Models.GlobalWorkflowVariablesModel.get_DefaultApprovalThreshold` +- `Umbraco.Workflow.Core.Models.GlobalWorkflowVariablesModel.get_FlowType` +- `Umbraco.Workflow.Core.Models.ScaffoldRequestModel.get_ContentTypeKey` +- `Umbraco.Workflow.Core.Models.ScaffoldRequestModel.set_ContentTypeKey(System.Guid)` +- `Umbraco.Workflow.Core.Persistence.ITasksRepository.GetActiveByNodeId(System.Int32)` +- `Umbraco.Workflow.Core.Processes.IWorkflowProcessGenerator.GetProcess(Umbraco.Workflow.Core.Models.Enums.WorkflowType)` +- `Umbraco.Workflow.Core.Services.IInstancesService.Create(Umbraco.Workflow.Core.ViewModels.InitiateWorkflowRequestModel)` +- `Umbraco.Workflow.Core.Services.ITasksService.GetActiveTasksByNodeId(System.Int32,System.String)` +- `Umbraco.Workflow.Core.Services.ScaffoldService.#ctor(Umbraco.Workflow.Core.Services.ITasksService,Umbraco.Workflow.Core.Services.IConfigService,Umbraco.Workflow.Core.ContentReviews.Services.IContentReviewService,Umbraco.Workflow.Core.Persistence.IContentRepository,Umbraco.Workflow.Core.Services.ISettingsService,Umbraco.Cms.Core.Mapping.IUmbracoMapper,Umbraco.Cms.Core.Services.IIdKeyMap,Umbraco.Cms.Core.Services.IContentService)` +- `Umbraco.Workflow.Core.ViewModels.InstanceDetailViewModel.get_Status` +- `Umbraco.Workflow.Core.ViewModels.InstanceDetailViewModel.get_Type` +- `Umbraco.Workflow.Core.ViewModels.InstanceDetailViewModel.get_WorkflowStatus` +- `Umbraco.Workflow.Core.ViewModels.InstanceDetailViewModel.get_WorkflowType` +- `Umbraco.Workflow.Core.ViewModels.InstanceDetailViewModel.set_WorkflowStatus(Umbraco.Workflow.Core.Models.Enums.WorkflowStatus)` +- `Umbraco.Workflow.Core.ViewModels.InstanceDetailViewModel.set_WorkflowType(Umbraco.Workflow.Core.Models.Enums.WorkflowType)` +- `Umbraco.Workflow.Core.ViewModels.LanguageViewModel.get_IsDefault` +- `Umbraco.Workflow.Core.ViewModels.LanguageViewModel.set_IsDefault(System.Boolean)` +- `Umbraco.Workflow.Core.ViewModels.UserItemModel.set_Name(System.String)` +- `Umbraco.Workflow.Core.ViewModels.UserItemModel.set_Unique(System.Guid)` +- `Umbraco.Workflow.Core.ViewModels.WorkflowInstanceViewModel.get_StatusName` +- `Umbraco.Workflow.Core.ViewModels.WorkflowInstanceViewModel.get_TypeDescription` +- `Umbraco.Workflow.Core.ViewModels.WorkflowInstanceViewModel.set_StatusName(System.String)` +- `Umbraco.Workflow.Core.ViewModels.WorkflowInstanceViewModel.set_TypeDescription(System.String)` +- `Umbraco.Workflow.Core.ViewModels.WorkflowTaskCollectionViewModel.get_ApprovalsText` +- `Umbraco.Workflow.Core.ViewModels.WorkflowTaskCollectionViewModel.set_ApprovalsText(System.String)` +- `Umbraco.Workflow.Core.ViewModels.WorkflowTaskViewModel.get_Status` +- `Umbraco.Workflow.Core.ViewModels.WorkflowTaskViewModel.get_TypeDescription` +- `Umbraco.Workflow.Core.ViewModels.WorkflowTaskViewModel.get_TypeId` +- `Umbraco.Workflow.Core.ViewModels.WorkflowTaskViewModel.set_TypeDescription(System.String)` +- `Umbraco.Workflow.Core.ViewModels.WorkflowTaskViewModel.set_TypeId(System.Int32)` +- `Umbraco.Workflow.Web.Api.Controllers.Action.ApproveActionController.#ctor(Umbraco.Workflow.Core.Services.IInstancesService,Umbraco.Workflow.Core.Processes.IWorkflowProcessGenerator,Umbraco.Workflow.Core.Mapping.IWorkflowActionResponsePresentationMapper)` +- `Umbraco.Workflow.Web.Api.Controllers.Action.ApproveOrRejectActionController.#ctor(Umbraco.Workflow.Core.Services.IInstancesService,Umbraco.Workflow.Core.Processes.IWorkflowProcessGenerator,Umbraco.Workflow.Core.Mapping.IWorkflowActionResponsePresentationMapper)` +- `Umbraco.Workflow.Web.Api.Controllers.Action.CancelActionController.#ctor(Umbraco.Workflow.Core.Services.IInstancesService,Umbraco.Workflow.Core.Processes.IWorkflowProcessGenerator,Umbraco.Workflow.Core.Mapping.IWorkflowActionResponsePresentationMapper)` +- `Umbraco.Workflow.Web.Api.Controllers.Action.RejectActionController.#ctor(Umbraco.Workflow.Core.Services.IInstancesService,Umbraco.Workflow.Core.Processes.IWorkflowProcessGenerator,Umbraco.Workflow.Core.Mapping.IWorkflowActionResponsePresentationMapper)` +- `Umbraco.Workflow.Web.Api.Controllers.Action.RequiresInstanceActionController.#ctor(Umbraco.Workflow.Core.Services.IInstancesService,Umbraco.Workflow.Core.Processes.IWorkflowProcessGenerator,Umbraco.Workflow.Core.Mapping.IWorkflowActionResponsePresentationMapper)` +- `Umbraco.Workflow.Web.Api.Controllers.Action.ResubmitActionController.#ctor(Umbraco.Workflow.Core.Services.IInstancesService,Umbraco.Workflow.Core.Mapping.IWorkflowActionResponsePresentationMapper,Umbraco.Workflow.Core.Processes.IWorkflowProcessGenerator)` +- `Umbraco.Workflow.Web.Api.Controllers.ApprovalGroup.DeleteApprovalGroupController.#ctor(Umbraco.Workflow.Core.ApprovalGroups.Services.IGroupService,Umbraco.Cms.Core.Security.IBackOfficeSecurityAccessor,Umbraco.Workflow.Core.Services.IInstancesService,Umbraco.Workflow.Core.Processes.IWorkflowProcessGenerator,Umbraco.Workflow.Core.Services.INotificationsService,Umbraco.Workflow.Core.Services.IConfigService)` +- `Umbraco.Workflow.Web.Api.Controllers.Information.GetInformationController.#ctor(Umbraco.Cms.Core.PublishedCache.IDefaultCultureAccessor,Umbraco.Cms.Core.Security.IBackOfficeSecurityAccessor,Umbraco.Cms.Core.Services.ILanguageService,Microsoft.Extensions.Options.IOptions{Umbraco.Workflow.Core.HistoryCleanup.Configuration.HistoryCleanup},Umbraco.Workflow.Core.Services.ISettingsService,Umbraco.Workflow.Core.SignalR.WorkflowHubRoutes)` +- `Umbraco.Workflow.Web.Api.Controllers.Information.GetInformationController.WorkflowInformationResponseModel.get_GlobalVariables` +- `Umbraco.Workflow.Web.Api.Controllers.Scaffold.GetScaffoldController.Get(Umbraco.Workflow.Core.Models.ScaffoldRequestModel)` + +#### Added Interface Members (Breaking) +- `Umbraco.Workflow.Core.Persistence.IDatabaseAccessor.Execute(NPoco.Sql)` +- `Umbraco.Workflow.Core.Persistence.IDatabaseAccessor.ExecuteScalar``1(NPoco.Sql)` +- `Umbraco.Workflow.Core.Persistence.ITasksRepository.GetActiveByNodeId(System.Int32,System.String)` +- `Umbraco.Workflow.Core.Persistence.IWorkflowRepository``1.GetIdForKey``1(System.Guid)` +- `Umbraco.Workflow.Core.Services.ITasksService.GetActiveTasksByNodeId(System.Int32,System.String,System.String)` + +### Legacy version specific upgrade notes You can find the version specific upgrade notes for versions out of support in the [Legacy documentation on GitHub](https://github.com/umbraco/UmbracoDocs/tree/umbraco-eol-versions).