diff --git a/CHANGELOG.md b/CHANGELOG.md index 94542ab12e..dcb135648e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,40 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [7.5.0] - 2023-03-03 + +### Fixed + +* **UI**: Fixed styling of schemas in workflow settings. +* **Contents**: Fixed a bug when permanently deleting a content that was permanently deleted before didn't work. +* **Scripting**: Fixes to the handling of asynchronous tasks in scripts. + +### Changed + +* **Rabbit MQ**: Removed the RabbitMQ event consumer. +* **Contents**: Allow DateTime fields in sample uniqueness validator. +* **Rules**: Only create enriched content events once for the same trigger type. +* **Schemas**: Added tooltip to field icon in schema editor. +* **Tests**: Improvements to the tests to verify all methods to make an update, delete and so on. +* **UI** + +### Added + +* **Assets**: Added support for Cloudflare R2. +* **Contents**: New endpoint to stream all content items out using server-sent-events. +* **Rules**: Also trigger rules when a reference has changed. +* **Scripting**: Expose information about deprecated helper methods. +* **Scripting**: Improved the `reject` method to output multiple errors. +* **Scripting**: New method to resolve a single asset. +* **Scripting**: New method to resolve a single reference. +* **UI**: Autocompletion for Preview URLs. +* **UI**: Autocompletion for single line code editors. +* **UI**: Show allowed values in autocompletion. + +### Security + +* **UI**: Escape HTML in the hightlight pipe, that is used to highlight matching words in search. + ## [7.4.0] - 2023-02-01 ### Fixed diff --git a/backend/extensions/Squidex.Extensions/Actions/AzureQueue/AzureQueueActionHandler.cs b/backend/extensions/Squidex.Extensions/Actions/AzureQueue/AzureQueueActionHandler.cs index 2319d3c921..6934d5015f 100644 --- a/backend/extensions/Squidex.Extensions/Actions/AzureQueue/AzureQueueActionHandler.cs +++ b/backend/extensions/Squidex.Extensions/Actions/AzureQueue/AzureQueueActionHandler.cs @@ -47,7 +47,7 @@ public AzureQueueActionHandler(RuleEventFormatter formatter) requestBody = ToEnvelopeJson(@event); } - var ruleDescription = $"Send AzureQueueJob to azure queue '{queueName}'"; + var ruleText = $"Send AzureQueueJob to azure queue '{queueName}'"; var ruleJob = new AzureQueueJob { QueueConnectionString = action.ConnectionString, @@ -55,7 +55,7 @@ public AzureQueueActionHandler(RuleEventFormatter formatter) MessageBodyV2 = requestBody }; - return (ruleDescription, ruleJob); + return (ruleText, ruleJob); } protected override async Task ExecuteJobAsync(AzureQueueJob job, diff --git a/backend/extensions/Squidex.Extensions/Actions/ElasticSearch/ElasticSearchActionHandler.cs b/backend/extensions/Squidex.Extensions/Actions/ElasticSearch/ElasticSearchActionHandler.cs index e8c1614cc6..a06719269d 100644 --- a/backend/extensions/Squidex.Extensions/Actions/ElasticSearch/ElasticSearchActionHandler.cs +++ b/backend/extensions/Squidex.Extensions/Actions/ElasticSearch/ElasticSearchActionHandler.cs @@ -58,7 +58,7 @@ public ElasticSearchActionHandler(RuleEventFormatter formatter, IScriptEngine sc contentId = DomainId.NewGuid().ToString(); } - var ruleDescription = string.Empty; + var ruleText = string.Empty; var ruleJob = new ElasticSearchJob { IndexName = await FormatAsync(action.IndexName, @event), @@ -70,11 +70,11 @@ public ElasticSearchActionHandler(RuleEventFormatter formatter, IScriptEngine sc if (delete) { - ruleDescription = $"Delete entry index: {action.IndexName}"; + ruleText = $"Delete entry index: {action.IndexName}"; } else { - ruleDescription = $"Upsert to index: {action.IndexName}"; + ruleText = $"Upsert to index: {action.IndexName}"; ElasticSearchContent content; try @@ -109,7 +109,7 @@ public ElasticSearchActionHandler(RuleEventFormatter formatter, IScriptEngine sc ruleJob.Content = serializer.Serialize(content, true); } - return (ruleDescription, ruleJob); + return (ruleText, ruleJob); } protected override async Task ExecuteJobAsync(ElasticSearchJob job, diff --git a/backend/extensions/Squidex.Extensions/Actions/OpenSearch/OpenSearchActionHandler.cs b/backend/extensions/Squidex.Extensions/Actions/OpenSearch/OpenSearchActionHandler.cs index 09591fe114..c8829a1de5 100644 --- a/backend/extensions/Squidex.Extensions/Actions/OpenSearch/OpenSearchActionHandler.cs +++ b/backend/extensions/Squidex.Extensions/Actions/OpenSearch/OpenSearchActionHandler.cs @@ -58,7 +58,7 @@ public OpenSearchActionHandler(RuleEventFormatter formatter, IScriptEngine scrip contentId = DomainId.NewGuid().ToString(); } - var ruleDescription = string.Empty; + var ruleText = string.Empty; var ruleJob = new OpenSearchJob { IndexName = await FormatAsync(action.IndexName, @event), @@ -70,11 +70,11 @@ public OpenSearchActionHandler(RuleEventFormatter formatter, IScriptEngine scrip if (delete) { - ruleDescription = $"Delete entry index: {action.IndexName}"; + ruleText = $"Delete entry index: {action.IndexName}"; } else { - ruleDescription = $"Upsert to index: {action.IndexName}"; + ruleText = $"Upsert to index: {action.IndexName}"; OpenSearchContent content; try @@ -109,7 +109,7 @@ public OpenSearchActionHandler(RuleEventFormatter formatter, IScriptEngine scrip ruleJob.Content = serializer.Serialize(content, true); } - return (ruleDescription, ruleJob); + return (ruleText, ruleJob); } protected override async Task ExecuteJobAsync(OpenSearchJob job, diff --git a/backend/extensions/Squidex.Extensions/Actions/SignalR/SignalRActionHandler.cs b/backend/extensions/Squidex.Extensions/Actions/SignalR/SignalRActionHandler.cs index 76d30db4b8..3733aa6ec4 100644 --- a/backend/extensions/Squidex.Extensions/Actions/SignalR/SignalRActionHandler.cs +++ b/backend/extensions/Squidex.Extensions/Actions/SignalR/SignalRActionHandler.cs @@ -52,7 +52,7 @@ public SignalRActionHandler(RuleEventFormatter formatter) var target = (await FormatAsync(action.Target, @event)) ?? string.Empty; - var ruleDescription = $"Send SignalRJob to signalR hub '{hubName}'"; + var ruleText = $"Send SignalRJob to signalR hub '{hubName}'"; var ruleJob = new SignalRJob { @@ -64,7 +64,7 @@ public SignalRActionHandler(RuleEventFormatter formatter) Targets = target.Split("\n") }; - return (ruleDescription, ruleJob); + return (ruleText, ruleJob); } protected override async Task ExecuteJobAsync(SignalRJob job, diff --git a/backend/extensions/Squidex.Extensions/Actions/Typesense/TypesenseActionHandler.cs b/backend/extensions/Squidex.Extensions/Actions/Typesense/TypesenseActionHandler.cs index 6127ef2333..8c41ee5d23 100644 --- a/backend/extensions/Squidex.Extensions/Actions/Typesense/TypesenseActionHandler.cs +++ b/backend/extensions/Squidex.Extensions/Actions/Typesense/TypesenseActionHandler.cs @@ -49,7 +49,7 @@ public TypesenseActionHandler(RuleEventFormatter formatter, IHttpClientFactory h var indexName = await FormatAsync(action.IndexName, @event); - var ruleDescription = string.Empty; + var ruleText = string.Empty; var ruleJob = new TypesenseJob { ServerUrl = $"{action.Host.ToString().TrimEnd('/')}/collections/{indexName}/documents", @@ -59,11 +59,11 @@ public TypesenseActionHandler(RuleEventFormatter formatter, IHttpClientFactory h if (delete) { - ruleDescription = $"Delete entry index: {action.IndexName}"; + ruleText = $"Delete entry index: {action.IndexName}"; } else { - ruleDescription = $"Upsert to index: {action.IndexName}"; + ruleText = $"Upsert to index: {action.IndexName}"; TypesenseContent content; try @@ -98,7 +98,7 @@ public TypesenseActionHandler(RuleEventFormatter formatter, IHttpClientFactory h ruleJob.Content = serializer.Serialize(content, true); } - return (ruleDescription, ruleJob); + return (ruleText, ruleJob); } protected override async Task ExecuteJobAsync(TypesenseJob job, diff --git a/backend/extensions/Squidex.Extensions/Actions/Webhook/WebhookActionHandler.cs b/backend/extensions/Squidex.Extensions/Actions/Webhook/WebhookActionHandler.cs index b8f6bedcfb..4da3d39a80 100644 --- a/backend/extensions/Squidex.Extensions/Actions/Webhook/WebhookActionHandler.cs +++ b/backend/extensions/Squidex.Extensions/Actions/Webhook/WebhookActionHandler.cs @@ -44,7 +44,7 @@ public WebhookActionHandler(RuleEventFormatter formatter, IHttpClientFactory htt requestSignature = $"{requestBody}{action.SharedSecret}".ToSha256Base64(); } - var ruleDescription = $"Send event to webhook '{requestUrl}'"; + var ruleText = $"Send event to webhook '{requestUrl}'"; var ruleJob = new WebhookJob { Method = action.Method, @@ -55,7 +55,7 @@ public WebhookActionHandler(RuleEventFormatter formatter, IHttpClientFactory htt Headers = await ParseHeadersAsync(action.Headers, @event) }; - return (ruleDescription, ruleJob); + return (ruleText, ruleJob); } private async Task> ParseHeadersAsync(string headers, EnrichedEvent @event)