Commit graph

6894 commits

Author SHA1 Message Date
Sipke Schoorstra 1692fcd193
Fix CShells dependency mismatch 2026-07-11 15:38:09 +02:00
Sipke Schoorstra 974cbe740a
Skills 2026-06-25 15:19:31 +02:00
Sipke Schoorstra c7a97c6412 Shorten configured application instance names
Configured stable application instance names that exceed the Azure Service Bus transport entity limit are now shortened deterministically instead of failing startup. The same configured value resolves to the same shortened name across restarts, preserving stable per-instance transport identity while supporting normal Kubernetes pod names.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-20 12:51:30 +02:00
Sipke Schoorstra 0028604caf
Merge pull request #7742 from elsa-workflows/sfmskywalker-port-asb-stable-instance-371
Port ASB stable application instance name fix to 3.7.1
2026-06-20 00:22:30 +02:00
Sipke Schoorstra 1aef083815
fix: address greptile stable instance feedback
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-20 00:08:52 +02:00
Sipke Schoorstra fc48af062c
fix: add stable application instance name option
Cherry-picked-from: e1096c714772a8a776c209fef45983538b81a3a1

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-20 00:03:16 +02:00
Sipke Schoorstra d8d7eae204
Merge branch 'release/3.6.2' into release/3.7.0 2026-05-11 00:33:49 +02:00
Sipke Schoorstra a76e7a666f
chore(packages): add Snappier
Add Snappier to Directory.Packages.props and reference it from Elsa.Common to enable usage of the Snappier compression library.
2026-05-08 12:43:23 +02:00
minaxi98 b88af1e023
fix: handle arrays of generic types in GetFriendlyTypeName (issue - #7369) (#7400)
* BugFix 7369 - Properly resolve element type for arrays (e.g., List<string>[]) and append []

* PR comments updated

* PR for #7369
2026-04-26 20:02:15 +02:00
Sipke Schoorstra 8ee0b43b34
Add Claude Code GitHub Workflow (#7411)
* "Claude PR Assistant workflow"

* "Claude Code Review workflow"
2026-04-22 20:40:57 +02:00
Sipke Schoorstra ad90e81af9
Enhance logging configuration, update HttpFeature dependencies, and add new identity persistence options 2026-04-21 12:18:45 +02:00
Sipke Schoorstra e7eaa4b1fe
Integrate Elsa.Workflows.Runtime.Distributed into Elsa.ModularServer.Web and configure shell features for enhanced distributed runtime support. 2026-04-21 11:59:46 +02:00
Sipke Schoorstra 3d8d3b7de2
Merge remote-tracking branch 'origin/release/3.6.1' 2026-04-20 15:08:10 +02:00
Sipke Schoorstra 9f84239323
Handle null activities in RunWorkflowResultAssertions
Adjusted assertions to safely handle nullable `IActivity` types, preventing null reference errors during execution checks.
2026-04-20 14:43:00 +02:00
Sipke Schoorstra 632d1a383c
Refactor shells setup and clean up NuGet package source mapping. 2026-04-20 11:56:12 +02:00
Sipke Schoorstra 29d8a64a96
Update package versions: CShells to 0.0.14 and Nuplane to 0.0.1 in props file. 2026-04-20 11:41:03 +02:00
Sipke Schoorstra 6ff3917450
Remove unused Elsa.Workflows.Api.Contracts import from WorkflowsApiFeature. 2026-04-18 20:31:07 +02:00
Sipke Schoorstra 3decb12680
feat: extend shells integration and modular server support (#7399)
* refactor(deps): use local CShells project refs

Replace CShells NuGet package references with direct project references to the local CShells source to enable developing and testing against local changes and simplify build integration across modules.

* Handle assembly load errors in feature discovery

Added error handling for assembly load failures in feature discovery to improve resilience. Also updated configuration for identity token options and removed unused service bus consumer dependencies. Simplified project structure by moving and cleaning up `Directory.Build.targets` files.

* Refactor configuration and service extension methods.

Moved `ShellSettingsExtensions` and `ShellConfiguration` to `CShells.Abstractions` for better modularity. Added new `ServiceCollectionFeatureExtensions` to improve options registration. Updated appsettings and references to support these changes.

* Introduce ManagementServiceCollectionExtensions to streamline activity and variable registration

Added `ManagementServiceCollectionExtensions` for registering Elsa activity types and variable descriptors, providing a modular and shell-feature-compatible approach to configuration. Updated relevant features to utilize these new extension methods, enhancing code modularity and reducing redundancy.

* Add resilience strategy registration to HTTP feature

Introduced `ResilienceServiceCollectionExtensions` to register resilience strategies within the `Elsa.Resilience.Core` module. Updated `HttpFeature` to incorporate resilience strategies, enhancing HTTP-related resilience configuration leveraging the new extension methods.

* Add new configuration options to JavaScriptFeature

Implemented multiple properties in `JavaScriptFeature` to enhance JavaScript execution: `AllowClrAccess`, `AllowConfigurationAccess`, `ScriptCacheTimeout`, `DisableWrappers`, and `DisableVariableCopying`. These additions enable more flexible and secure configuration of the Jint JavaScript engine.

* refactor(workflows): unify graph caching

Resolve workflow definitions first and store graphs under stable per-version-ID cache keys so different lookup paths share entries.
Centralize cache creation and change-token registration to remove duplicated caching logic.
Skip materializer-unavailable definitions to avoid caching null graphs and simplify flow.

* refactor(tests): centralize default IDs and materializer setup

Introduce constants for default definition and version IDs, and materializer name. Refactor tests to use these constants, streamline graph and definition resolution, and improve cache key creation by sharing logic across tests. Extend tests to check scenarios with unavailable materializers, ensuring caching only occurs for valid cases.

* extend(tests): enhance cache key verification in AutoUpdateTests

Added checks for both workflow definition and version cache keys in AutoUpdateTests to ensure comprehensive cache validation, improving test reliability and coverage.

* refactor(projects): update CShells project paths and solution configuration

Revised project reference paths in `Elsa.ModularServer.Web.csproj` for CShells projects and updated `Elsa.sln` to include new CShells projects, streamlining project organization and build configuration.

* Add `IWorkflowReferenceGraphBuilder` to `WorkflowManagementFeature`; rename `ResilienceShellFeature` to `ResilienceFeature`.

* Refactor `HttpFeature` to use `IMiddlewareShellFeature`, include `HttpWorkflowsMiddleware`, and update `HttpActivityOptions` defaults.

* Add `AddTypeAlias` and `AddVariableTypeAndAlias` extension methods to service collections

- Introduced `AddTypeAlias<T>` method in `ServiceCollectionExtensions.cs` for adding type aliases.
- Added `AddVariableTypeAndAlias<T>` method in `ManagementServiceCollectionExtensions.cs` to add variable types with aliases.

* Remove shell reload API endpoints, orchestrator, and associated tests from the codebase.

* Introduce `DefaultAdminUser` options and refactor `AdminUserInitializer` to use `IOptions`.

* Add user management endpoints: Delete, List, Update with enhanced user store functionality

* Implement `DefaultAdminUser` feature for initial admin bootstrap, decouple `SecurityRoot` from user management endpoints, update related documentation and permissions.

* Add role management endpoints: Delete, List, and Update, including role data models and handle obsolete SecurityRoot policy.

* Update CShells package references to version 0.0.12-preview.66 and refactor `TenantTaskManager` for improved task lifecycle management.

* Replace project references with package references in csproj files and remove unused folders.

* Integrate Nuplane features, add sample packages, and update dependency handling within ModularServer Web.

* Improve `CShells` startup endpoint registration and resolver handling

- Address duplicate endpoint registration by adding state-aware tracking and deduplication
- Resolve `WebRoutingShellResolver` constructor ambiguity by switching to factory-based registration
- Implement a startup-specific filter to prevent redundant endpoint remapping during `ShellsReloaded`
- Update project to use project references for `CShells` and `Nuplane` components in csproj files.

* Update logging configuration in appsettings for Development and Production

- Change default log level to 'Warning' in Development settings
- Adjust Microsoft.Hosting and Elsa.SamplePackage log levels to 'Information'
- Remove Microsoft.EntityFrameworkCore log level entry from Production settings

* Refactor assembly retrieval methods and update endpoint calls for consistency.

* Add `SampleEndpointFeature` and enhance logging and service integration

- Implement `SampleEndpointFeature` with a new endpoint for handling requests.
- Log endpoint access and integrate `ISampleService` with method `DoSomething`.
- Update logging configuration to include `CShells` and `Nuplane` log levels in Development settings.
- Update `Elsa.SamplePackage` to version 1.0.1 and manage dependencies with project and assembly references.
- Modify JSON configuration for `SampleEndpoint`.

* Update package versions for `CShells` to 0.0.13 and `Nuplane` to 0.0.1-preview.15 in props file.

* Refactor `DefaultAdminUserFeature` by renaming `ConfigureServices` to `Apply` and adjusting service registration method.

* Replace project references with package references across multiple projects and remove obsolete cshells-related solution entries.

* Remove `SampleCatalogEndpointExtensions.cs` and related endpoint mappings.

* Improve `TenantTaskManager` by using `TryRemove` for state clean-up and clarify `SemaphoreSlim` disposal behavior.

* Remove hardcoded default admin credentials and add warning for unconfigured AdminRoleName in admin user setup.

* Address unresolved review comments: fix doc comments, security defaults, compilation issue, and restore reload response contracts

Agent-Logs-Url: https://github.com/elsa-workflows/elsa-core/sessions/34eb1e13-833f-4b3c-9db6-2e9221d221b9

Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>

* Refine reload endpoints: use specific exceptions, add error messages, rename ReloadedAt to Timestamp, remove unused model

Agent-Logs-Url: https://github.com/elsa-workflows/elsa-core/sessions/34eb1e13-833f-4b3c-9db6-2e9221d221b9

Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>

* Potential fix for pull request finding 'Generic catch clause'

Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>

* Potential fix for pull request finding 'Generic catch clause'

Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>

* Potential fix for pull request finding 'Generic catch clause'

Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>

* Add `ExceptionExtensions` with `IsFatal` method and simplify exception handling in `TenantTaskManager`. Remove unused properties from `Directory.Build.props`.

* Add unit tests for `TenantTaskManager` and fix potential state orphaning issue.

* Potential fix for pull request finding 'Generic catch clause'

Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>

* Fix logger dependency in `SampleEndpointFeature` constructor to use correct type.

* Add unit tests for Elsa Shells API endpoints and update solution configuration.

* Refactor ShellReload models: remove ShellReloadItemResult, update ShellReloadResponse properties.

* Potential fix for pull request finding 'Generic catch clause'

Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
2026-04-18 14:33:34 +02:00
Avinesh Singh 8d7d1a9862
Fix BulkDispatchWorkflows sharing input dictionary across dispatches (#7284)
When using BulkDispatchWorkflows with the Input property set, all dispatched child workflows received the same dictionary reference. This caused the input to be mutated across iterations, resulting in all child workflows seeing the last item's value instead of their own distinct values.

The fix creates a copy of the base input dictionary for each dispatch iteration, ensuring each child workflow receives its own isolated input.
2026-04-15 14:20:44 +02:00
Byron Mayne a459904e1f
refactor | Added a new property to expose the ability to disable the sorting (#7360)
* Added a new property to expose the ability to disable the sorting

This was because I don't want my items to be sorted by the control

* Update src/clients/Elsa.Api.Client/Shared/UIHints/DropDown/SelectList.cs

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2026-04-15 14:15:31 +02:00
RalfvandenBurg 793ae15bf7
Fix tenant scope for interrupted workflow restarts (#7389)
* Fix tenant scope for interrupted workflow restarts

* Update src/modules/Elsa.Workflows.Runtime/Tasks/RestartInterruptedWorkflowsTask.cs

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Handle per-instance restart failures

* fix: make restart interrupted workflows tenant services optional

---------

Co-authored-by: Ralf <Ralf@Careconnections.nl>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2026-04-15 14:11:26 +02:00
RalfvandenBurg 3a37668619
fix: correct workflow summary pagination on release 3.6.1 (#7392)
Co-authored-by: Ralf <Ralf@Careconnections.nl>
2026-04-15 14:06:53 +02:00
Heku c2d42fec32
test: refactor with WorkflowTestFixture (#7394) 2026-04-15 14:04:49 +02:00
Heku c372e5aff4
Code cleanup (#7395)
* refactor: replace obsolete API usage

* refactor: remove unnecessary string interpolation
2026-04-15 14:03:42 +02:00
Sipke Schoorstra 22d457ec77
Update Elsa+ link in README for professional support 2026-04-14 15:35:36 +02:00
Heku 0d308cee6e
Code cleanup and typo fix (#7393)
* Drop IsExternalInit.cs

* Fixed a wrong cref namespace in comment

* Mark IWorkflowHost obsoleted too

* Remove Source Link package reference

Starting with .NET 8, Source Link for GitHub is included in the .NET SDK and enabled by default.

https://github.com/dotnet/sourcelink?tab=readme-ov-file#using-source-link-in-net-projects
2026-04-14 15:17:26 +02:00
Sipke Schoorstra 6e870d9861
Enhance CONTRIBUTING.md with feature request guidelines
Added a section on feature requests and prioritization criteria to guide contributors.
2026-04-14 11:37:12 +02:00
Avinesh Singh 60767c4724
Isolate background workflow dispatches from caller's cancellation token (#7291)
* Isolate background workflow dispatches from caller's cancellation token

When dispatching multiple child workflows, early child completions cancel the parent activity's token while dispatches are still in progress. This creates a race condition where remaining dispatches fail with OperationCanceledException.

* Make BackgroundWorkflowDispatcher & BackgroundStimulusDispatcher caller Cts-independent
2026-04-14 10:55:38 +02:00
RalfvandenBurg c0e37e38d0
Fix/startuptask activate default tenant when empty (#7305)
* fix: activate Tenant.Default when no tenants configured (Option C)

Ensures IStartupTask implementations (e.g., PopulateRegistriesStartupTask,
RunMigrationsStartupTask) run when multitenancy is enabled but the tenant
provider returns an empty list.

- In DefaultTenantService: treat empty provider response as [Tenant.Default]
  in GetTenantsDictionaryAsync (initial load) and RefreshAsync
- Logic is internal to tenant service; no explicit call required

Co-authored-by: Cursor <cursoragent@cursor.com>

* test: add DefaultTenantService tests for empty-provider fallback

- ActivateTenantsAsync_WhenProviderReturnsEmpty_ActivatesDefaultTenant
- ListAsync_WhenProviderReturnsEmpty_ReturnsDefaultTenant
- ActivateTenantsAsync_WhenProviderReturnsTenants_ReturnsThoseTenants
- RefreshAsync_WhenProviderChangesFromTenantsToEmpty_KeepsDefaultTenant

Co-authored-by: Cursor <cursoragent@cursor.com>

* PR feedback disposes serviceprovider also

---------

Co-authored-by: Ralf <Ralf@Careconnections.nl>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-04-11 11:00:12 +02:00
Cristian Gintili 6bc0cf23ff
fix: decouple background command execution from caller cancellation token (#7224) (#7283)
* fix: decouple background command execution from caller cancellation token (fixes #7224)

* Apply suggestion from @Copilot

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-09 11:44:33 +02:00
Sipke Schoorstra 1d3c00a01f
Update print statement to say 'Goodbye World' 2026-03-14 10:47:01 +01:00
Sipke Schoorstra a0f0a3c2f5
Add workflow export functionality and update changelog (#7357)
* Add `IWorkflowDefinitionExporter` for workflow export functionality

Introduced `IWorkflowDefinitionExporter` interface and its implementation to export workflow definitions as JSON or ZIP archives. Simplified `Export` endpoint logic by utilizing the new exporter service. Updated package version to 3.6.1.

* Remove duplicate `ExportAsync` method from `IWorkflowDefinitionExporter` and its implementation in `WorkflowDefinitionExporter`.

* Remove deprecated test from `WorkflowDefinitionExporterTests`, regression tests are covered in `WorkflowReferenceGraphBuilderTests`.

* Update GitHub Actions workflow to support version 3.6.1 deployment

* Update src/modules/Elsa.Workflows.Management/Services/WorkflowDefinitionExporter.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Move `WorkflowDefinitionExporterRegressionTests` to separate test file for clarity

* Add `DefaultFileNameSanitizer` for sanitizing file names and update `WorkflowDefinitionExporter` to use it. Implement unit tests for the sanitizer.

* Update test assertion for exported workflow file name in `WorkflowDefinitionExporterRegressionTests`.

* Simplify file naming in `WorkflowDefinitionExporter` by removing duplicate ID from JSON file names.

* Update test/unit/Elsa.Workflows.Management.UnitTests/Services/DefaultFileNameSanitizerTests.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-11 17:20:07 +01:00
j03y-nxxbz 291d4a81c1
Update packages.yml: set base version to 3.6.1 2026-03-11 09:44:21 +01:00
Sipke Schoorstra 8be9b24f2a
Revise changelog for version 3.6.0
Updated breaking changes and upgrade notes for version 3.6.0, including package name changes, database migration requirements, and multitenancy ID conventions.
2026-03-10 12:44:18 +01:00
Copilot 794a35dd76
refactor: extract shared shell reload response models and address review feedback (#7355)
* feat: add specification and quality checklist for Shell Reload API endpoints

* feat: implement Shell Reload API endpoints and associated documentation

* feat: enhance Shell Reload API documentation and add tasks for implementation phases

* feat: implement Shell Reload API features with endpoints, interface contracts, models, and component tests

* feat: update Shell Reload API responses and tests to reflect changes in error handling and response structure

* Fix shell reload follow-up review issues (#7354)

* Initial plan

* Address shell reload review feedback

Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>

* Dispose shell reload semaphore

Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>

* Harden shell reload follow-up fixes

Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>

* Update src/modules/Elsa.Workflows.Api/Endpoints/Shells/Reload/Endpoint.cs

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Potential fix for pull request finding 'Missed opportunity to use Where'

Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>

* Update src/modules/Elsa.Workflows.Api/Endpoints/Shells/Reload/Endpoint.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Initial plan

* Extract shared ShellsResponseModels.cs to eliminate Response/ShellResponse duplication and null! vs default! inconsistency

Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>

* Merge origin/main - resolve add/add conflicts in shell reload endpoints (fix missing trailing newline)

Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>

---------

Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-09 09:17:28 +01:00
Sipke Schoorstra 21e982c2c6
Add shell reload API endpoints and client support (#7353)
* feat: add specification and quality checklist for Shell Reload API endpoints

* feat: implement Shell Reload API endpoints and associated documentation

* feat: enhance Shell Reload API documentation and add tasks for implementation phases

* feat: implement Shell Reload API features with endpoints, interface contracts, models, and component tests

* feat: update Shell Reload API responses and tests to reflect changes in error handling and response structure

* Fix shell reload follow-up review issues (#7354)

* Initial plan

* Address shell reload review feedback

Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>

* Dispose shell reload semaphore

Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>

* Harden shell reload follow-up fixes

Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>

* Update src/modules/Elsa.Workflows.Api/Endpoints/Shells/Reload/Endpoint.cs

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Potential fix for pull request finding 'Missed opportunity to use Where'

Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>

* Update src/modules/Elsa.Workflows.Api/Endpoints/Shells/Reload/Endpoint.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-09 08:37:11 +01:00
Sipke Schoorstra ea8f326f9e
docs: ratify constitution v1.0.0 (7 principles from codebase analysis) 2026-03-08 15:49:20 +01:00
Sipke Schoorstra 58b5d77cb1
Merge remote-tracking branch 'origin/release/3.6.0' 2026-03-08 15:20:36 +01:00
Sipke Schoorstra fddfcfc064
Update Feedz badge in README.md 2026-03-07 11:48:45 +01:00
Sipke Schoorstra 06711378af
Merge remote-tracking branch 'origin/main' 2026-03-07 11:42:37 +01:00
Sipke Schoorstra 4859954256
Add waves video 2026-03-07 11:42:31 +01:00
Copilot 7d32d95932
Add release notes for Elsa 3.6.0 (#7348)
* Initial plan

* Add release notes for Elsa 3.6.0

Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>
Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
2026-03-05 13:57:21 +01:00
Copilot 9d1bf99950
doc: add Elsa 3.6.0 release notes as doc/changelogs/3.6.0.md (#7347)
* Initial plan

* doc: add 3.6.0 release notes to doc/changelogs/3.6.0.md

Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>
2026-03-05 13:41:40 +01:00
Sipke Schoorstra 2da800649b
Document output location for release notes
Added guidelines for saving release notes in the repository.
2026-03-05 13:22:40 +01:00
Sipke Schoorstra d4b69be44b
Refactor inbound connection handling to schedule outbound activity before canceling remaining activities (#7340)
* Refactor inbound connection handling to schedule outbound activity before canceling remaining activities

* Add regression test for WaitAny join schedule-before-cancel ordering (#7341)

* Initial plan

* Add integration test for WaitAny join with blocking branch (schedule-before-cancel regression test)

Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>
2026-03-02 19:53:10 +01:00
Copilot 71438596f3
Fix ActivityNodeId column truncation for deeply nested workflows (#7338)
* Initial plan

* Increase ActivityNodeId column max length from 450 to 1024 to fix truncation for deeply nested workflows

Add HasMaxLength(1024) for ActivityNodeId on ActivityExecutionRecord and
WorkflowExecutionLogRecord entities. Create V3_7 migrations for all 5
database providers (SqlServer, MySql, PostgreSql, Sqlite, Oracle).

Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>

* Use NVARCHAR(MAX) and equivalent unlimited column types for ActivityNodeId

Update V3_6 migrations to change ActivityNodeId from fixed-length columns
to unlimited types: nvarchar(max) for SQL Server, longtext for MySQL,
NCLOB for Oracle. PostgreSQL (text) and SQLite (TEXT) already used
unlimited types. Drop ActivityNodeId indexes on both ActivityExecutionRecords
and WorkflowExecutionLogRecords tables since unlimited columns cannot be
indexed. Remove HasIndex for ActivityNodeId from Configurations.cs.

Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>

* Add IF EXISTS guards to DropIndex calls in V3_6 migrations for all providers

Replace bare migrationBuilder.DropIndex() calls with provider-specific
conditional DDL to prevent errors when indexes have already been dropped:
- SQL Server: IF EXISTS (SELECT * FROM sys.indexes ...) pattern
- PostgreSQL: DROP INDEX IF EXISTS (native support)
- SQLite: DROP INDEX IF EXISTS (native support)
- MySQL: information_schema.statistics check with PREPARE/EXECUTE
- Oracle: PL/SQL BEGIN...EXCEPTION WHEN OTHERS (SQLCODE -1418)

Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>

* Add comment explaining Oracle error code -1418 in migration

Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com>
2026-03-02 15:24:20 +01:00
Sipke Schoorstra f362d44d08
Remove CShells projects from solution file 2026-02-28 21:21:01 +01:00
Sipke Schoorstra ef953e6996
Merge branch 'release/3.6.0' 2026-02-28 21:18:22 +01:00
Sipke Schoorstra 11fec1c85d
Add shell middleware, call‑stack tracking, and workflow reference graph APIs (#7333)
* refactor(deps): use local CShells project refs

Replace CShells NuGet package references with direct project references to the local CShells source to enable developing and testing against local changes and simplify build integration across modules.

* Handle assembly load errors in feature discovery

Added error handling for assembly load failures in feature discovery to improve resilience. Also updated configuration for identity token options and removed unused service bus consumer dependencies. Simplified project structure by moving and cleaning up `Directory.Build.targets` files.

* Refactor configuration and service extension methods.

Moved `ShellSettingsExtensions` and `ShellConfiguration` to `CShells.Abstractions` for better modularity. Added new `ServiceCollectionFeatureExtensions` to improve options registration. Updated appsettings and references to support these changes.

* Introduce ManagementServiceCollectionExtensions to streamline activity and variable registration

Added `ManagementServiceCollectionExtensions` for registering Elsa activity types and variable descriptors, providing a modular and shell-feature-compatible approach to configuration. Updated relevant features to utilize these new extension methods, enhancing code modularity and reducing redundancy.

* Add resilience strategy registration to HTTP feature

Introduced `ResilienceServiceCollectionExtensions` to register resilience strategies within the `Elsa.Resilience.Core` module. Updated `HttpFeature` to incorporate resilience strategies, enhancing HTTP-related resilience configuration leveraging the new extension methods.

* Add new configuration options to JavaScriptFeature

Implemented multiple properties in `JavaScriptFeature` to enhance JavaScript execution: `AllowClrAccess`, `AllowConfigurationAccess`, `ScriptCacheTimeout`, `DisableWrappers`, and `DisableVariableCopying`. These additions enable more flexible and secure configuration of the Jint JavaScript engine.

* refactor(workflows): unify graph caching

Resolve workflow definitions first and store graphs under stable per-version-ID cache keys so different lookup paths share entries.
Centralize cache creation and change-token registration to remove duplicated caching logic.
Skip materializer-unavailable definitions to avoid caching null graphs and simplify flow.

* refactor(tests): centralize default IDs and materializer setup

Introduce constants for default definition and version IDs, and materializer name. Refactor tests to use these constants, streamline graph and definition resolution, and improve cache key creation by sharing logic across tests. Extend tests to check scenarios with unavailable materializers, ensuring caching only occurs for valid cases.

* extend(tests): enhance cache key verification in AutoUpdateTests

Added checks for both workflow definition and version cache keys in AutoUpdateTests to ensure comprehensive cache validation, improving test reliability and coverage.

* refactor(projects): update CShells project paths and solution configuration

Revised project reference paths in `Elsa.ModularServer.Web.csproj` for CShells projects and updated `Elsa.sln` to include new CShells projects, streamlining project organization and build configuration.

* Add `IWorkflowReferenceGraphBuilder` to `WorkflowManagementFeature`; rename `ResilienceShellFeature` to `ResilienceFeature`.

* Refactor `HttpFeature` to use `IMiddlewareShellFeature`, include `HttpWorkflowsMiddleware`, and update `HttpActivityOptions` defaults.

* Add `AddTypeAlias` and `AddVariableTypeAndAlias` extension methods to service collections

- Introduced `AddTypeAlias<T>` method in `ServiceCollectionExtensions.cs` for adding type aliases.
- Added `AddVariableTypeAndAlias<T>` method in `ManagementServiceCollectionExtensions.cs` to add variable types with aliases.

* Update CShells package versions to 0.0.11 and replace ProjectReferences with PackageReferences in project files
2026-02-28 21:16:04 +01:00
Sipke Schoorstra 6f53c26f24
Fix serialization logic in WorkflowTriggerEqualityComparer: avoid type discriminator injection. 2026-02-25 20:24:29 +01:00