Skip to content

Commit 2640906

Browse files
Release 1.1.0 branch (#3088)
* Release 1.1.0 branch * docs(ai-copilot): add certificate PEM properties Part of kestra-io/kestra-ee#5342 * docs(fix-with-ai): add mention in UI pages Part of kestra-io/kestra#11162 * Update ai-copilot.md * Update 03.kestra-sdk.md Part of kestra-io/client-sdk#30 * docs(migration-guide): Webhook Execution API Return Type Changed * Create no-code-dashboards.md * docs(no-code-dashboards): add content and screenshots * docs(no-code-dashboards): add arcade * docs(migration-guides): add guides * docs(migration-guides): add foreachitem and metadata migration * docs(configuration): add airgapped configuration * Update index.md * Create kv-secrets-metadata-migration.md * Update kv-secrets-metadata-migration.md * docs(apps): add catalog branding and thumbnail * Apply suggestions from code review Co-authored-by: Anna Geller <anna.m.geller@gmail.com> * Revert "Update 03.kestra-sdk.md" This reverts commit 56908e3. * Apps typos Co-authored-by: Anna Geller <anna.m.geller@gmail.com> * docs(inputs): add prefill and file ext validation * update metadata migration command Co-authored-by: Anna Geller <anna.m.geller@gmail.com> * air-gapped not airgapped * fix(): remove duplicate migration guide, fix `:` * fix(): order no-code pages * fix image in no-code dashboards * docs(no-code-dashboard):remove video placeholder * Apply suggestions from code review Co-authored-by: Anna Geller <anna.m.geller@gmail.com> --------- Co-authored-by: Anna Geller <anna.m.geller@gmail.com>
1 parent ecc0bba commit 2640906

28 files changed

+321
-4
lines changed

content/docs/04.workflow-components/05.inputs.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ inputs:
107107
type: FILE
108108
displayName: "Upload a file"
109109
defaults: nsfile:///hello.txt
110+
allowedFileExtensions: [".md", ".txt"]
110111

111112
- id: json
112113
type: JSON
@@ -165,7 +166,7 @@ Here is the list of supported data types:
165166
- `DATE`: Must be a valid full [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date without the timezone from a text string such as `2042-12-03`.
166167
- `TIME`: Must be a valid full [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) time without the timezone from a text string such as `10:15:30`.
167168
- `DURATION`: Must be a valid full [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) duration from a text string such as `PT5M6S`.
168-
- `FILE`: Either a file uploaded at execution time as `Content-Type: multipart/form-data` with `Content-Disposition: form-data; name="files"; filename="<input-id>"` (where `<input-id>` is the input name), or a default file referenced via the universal file protocol using `nsfile:///path/to/file` (namespace file) or `file:///path/to/file` (local file from an allowed path).
169+
- `FILE`: Either a file uploaded at execution time as `Content-Type: multipart/form-data` with `Content-Disposition: form-data; name="files"; filename="<input-id>"` (where `<input-id>` is the input name), or a default file referenced via the universal file protocol using `nsfile:///path/to/file` (namespace file) or `file:///path/to/file` (local file from an allowed path). `FILE` type inputs also have the `allowedFileExtensions` property to control which types of files can be uploaded.
169170
- `JSON`: Must be a valid JSON string and will be converted to a typed form.
170171
- `YAML`: Must be a valid YAML string.
171172
- `URI`: Must be a valid URI and will be kept as a string.
@@ -182,6 +183,7 @@ Below is the list of available properties for all inputs regardless of their typ
182183
- `type`: The data type of the input parameter, as described in the previous section.
183184
- `required`: Whether the input is required. If `true` and neither a default nor a runtime value is provided, the execution will not be created.
184185
- `defaults`: The default value that is used if no custom input value is provided at runtime; this value must be provided as a string and will be set to the desired data type specified using the `type` property.
186+
- `prefill`: Starts with an initial value that can be cleared or set to `null` when the input is not required. Like an editable default, it allows workflows to support optional inputs that start with a suggestion but can still be reset to `null` at runtime.
185187
- `dependsOn`: Makes the input dependent on other inputs that must be provided first.
186188
- `displayName`: Label shown in the UI instead of the `id`.
187189
- `description`: Markdown description for the input.

content/docs/06.enterprise/04.scalability/apps.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,23 @@ access:
130130
- Admins
131131
```
132132

133+
### Customize the Apps Catalog
134+
135+
You can customize your Apps Catalog to align with organization branding by navigating to the **Administration** tab and then **Tenants->Apps Catalog**.
136+
137+
![Apps Catalog Customization](/docs/enterprise/apps/apps-catalog-customization.png)
138+
139+
Here, you can give your catalog a display title, set a primary banner display color, and upload an image for banner (typically an organization logo).
140+
141+
:::alert{type="info"}
142+
Currently, the uploaded banner display image must be an `.svg` file.
143+
:::
144+
145+
Once saved, navigate to the Apps Catalog, and see your branding:
146+
147+
![Apps Catalog Branding](/docs/enterprise/apps/customized-catalog.png)
148+
149+
From the Apps Catalog, you can also access the customization settings directly at any time by clicking on the **gear icon**.
133150

134151
---
135152

@@ -139,6 +156,34 @@ You can add custom tags to organize and filter apps in the App Catalog. For exam
139156

140157
---
141158

159+
## App Thumbnails
160+
161+
Design Apps with thumbnails to clearly display their intended use case or function to catalog users. To add a thumbnail to your app, upload an image file as a [namespace file](../../05.concepts/02.namespace-files.md) to the same namespace as the App's connected flow. For example, add an `.svg` (it can also be `.jpg`, `.png`, or other image file extension) to the `company.team` namespace. The example below adds `kestra-icon.svg`.
162+
163+
![Image Namespace File](/docs/enterprise/apps/app-namespace-file.png)
164+
165+
In your app code, add the `thumbnail` string property and point it towards the correct namespace file using `nsfiles:///<your-file>`. For example:
166+
167+
```yaml
168+
id: request_data_form
169+
type: io.kestra.plugin.ee.apps.Execution
170+
displayName: Form to request and download data
171+
namespace: company.team
172+
flowId: get_data
173+
thumbnail: "nsfiles:///kestra-icon.svg" # Point this property to the correct namespace file.
174+
access:
175+
type: PRIVATE
176+
tags:
177+
- Reporting
178+
- Analytics
179+
```
180+
181+
Once added, navigate to the Apps Catalog, and a new thumbnail will display on the connected app to help designate its use case:
182+
183+
![App with thumbnail](/docs/enterprise/apps/app-with-icon.png)
184+
185+
---
186+
142187
## App URL
143188

144189
Each app has a unique URL that you can share with others. When someone opens the URL, they will see the app and can submit requests. You can share the URL with team members, customers, or partners to let them interact with your Kestra workflows.

content/docs/08.ui/00.dashboard.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ Dashboards provide a load of useful data right at your finger tips, including:
2828

2929
Dashboards let you define custom queries and charts to visualize data on your executions, logs, and metrics. Rather than relying only on the default dashboard on Kestra’s home screen, you can create a custom dashboard with charts that answer specific questions and track key metrics. Each chart's configuration can be modified individually using the pencil icon in the dashboard view.
3030

31+
:::alert{type="info"}
32+
Check out the [No-Code Dashboards guide](../no-code/no-code-dashboards.md) to know more about building Dashboards without touching YAML.
33+
:::
34+
3135
### Chart types
3236

3337
Dashboards support data visualization charts like pie and bar graphs, temporal data visualizations such as time series charts, tabular representations, KPI trend charts, as well as textual displays using Markdown. Each chart type is composed of `chartOptions` and `data`.

content/docs/08.ui/02.executions.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,20 @@ The **Gantt** tab visualizes each task's duration. From this interface, you can
2727

2828
![Kestra User Interface Execution Gantt](/docs/user-interface-guide/27-Executions-Gantt.png)
2929

30+
The **Gantt** view displays all successful and failed tasks in the execution. For failed tasks, you can open the task and click the three dots to **"Fix with AI"**. This option reopens the flow editor with the [AI Copilot](../ai-tools/ai-copilot.md) prompted to help resolve any issues with the task.
31+
32+
![Fix with AI](/docs/user-interface-guide/fix-with-ai-gantt.png)
33+
3034
## Logs
3135

3236
The **Logs** tab gives access to a task's logs. You can filter by log level, copy logs into your clipboard, or download logs as a file.
3337

3438
![Kestra User Interface Execution Log](/docs/user-interface-guide/28-Executions-Logs.png)
3539

40+
For failed tasks, click the three dots to **"Fix with AI"**. This option reopens the flow editor with the [AI Copilot](../ai-tools/ai-copilot.md) prompted to help resolve any issues with the task.
41+
42+
![Fix with AI](/docs/user-interface-guide/fix-with-ai-logs.png)
43+
3644
## Topology
3745

3846
Similar to the Editor view, you can see your execution's topology. **Topology** provides a graphical view to access specific task logs, replay certain tasks, or change task status.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
title: ForEachItem now starts iteration at 0 instead of 1
3+
icon: /docs/icons/migration-guide.svg
4+
release: 1.1.0
5+
editions: ["OSS", "EE"]
6+
---
7+
8+
## Breaking Change
9+
10+
`ForEachItem` now starts iteration at 0 instead of 1 to align with the iteration starting value of `ForEach`.
11+
If you use {{taskrun.iteration}} in your flow with a `ForEachItem` the starting value is now 0 instead of 1.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
title: 1.1.0
3+
icon: /docs/icons/migration-guide.svg
4+
release: 1.1.0
5+
---
6+
7+
Deprecated features and migration guides for 1.1.0 and onwards.
8+
9+
::ChildCard
10+
::
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
---
2+
title: Key-value Store and Secrets Metadata Migration
3+
icon: /docs/icons/migration-guide.svg
4+
release: 1.1.0
5+
editions: ["OSS", "EE"]
6+
---
7+
8+
## Overview
9+
10+
In version **1.1.0**, we improved the backend logic that powers **Key-Value Pairs** and **Secrets** search in the Kestra UI.
11+
Previously, the UI fetched *all* stored pairs, which could become resource-intensive and inefficient in environments with a large number of entries.
12+
13+
To enhance performance and scalability, this release introduces **metadata indexing** that allows the backend to query these resources more efficiently.
14+
15+
---
16+
17+
## Impact
18+
19+
Because of this change, you must run a metadata migration when upgrading to version **1.1.0** (or later).
20+
This ensures existing Key-Value and Secrets data are correctly indexed for the new query structure.
21+
22+
When upgrading, include the migration command `- /app/kestra migrate metadata` in your startup configuration.
23+
For example, if you’re using **Docker Compose**, start your container with the newest version image and add the migration script in `commands` as follows:
24+
25+
```yaml
26+
kestra:
27+
image: registry.kestra.io/docker/kestra:latest
28+
command:
29+
- /app/kestra migrate metadata kv
30+
- /app/kestra migrate metadata secrets
31+
```
32+
33+
Once the migration is complete, the container will stop automatically. You can then move back to the usual command to run the server:
34+
35+
```yaml
36+
kestra:
37+
image: registry.kestra.io/docker/kestra:latest
38+
command:
39+
- server standalone --worker-thread=128
40+
```
41+
42+
Similarly, for Kubernetes installations, run a pod with the migration script (`- /app/kestra migrate metadata kv && /app/kestra migrate metadata secrets`), so the KV Store and Secrets databases are updated. Then, restart your normal pod for Kestra server components without the script.
43+
44+
:::alert{type="warning"}
45+
If you upgrade to **1.1.0** without running the migration script, the **Key-Value Store** and **Secrets** pages in the UI will appear empty.
46+
This is only a **UI issue** — your flows and tasks will continue to run normally and access their values as expected.
47+
48+
To fix the UI display, simply run the migration command above.
49+
It’s safe to execute this migration **retroactively** after the upgrade if needed.
50+
:::
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
---
2+
title: New `prefill` Property for Inputs
3+
icon: /docs/icons/migration-guide.svg
4+
release: 1.1.0
5+
editions: ["OSS", "EE"]
6+
---
7+
8+
## Overview
9+
10+
A new `prefill` property has been added to input definitions to let users start with an initial value that can be cleared or set to `null` when the input is not required.
11+
12+
**What changed:**
13+
Inputs can now define a `prefill` value, which works like an editable default. Unlike `defaults`, a `prefill` value does not persist if the user removes it. This allows workflows to support optional inputs that start with a suggestion but can still be reset to `null` at runtime.
14+
15+
**Impact:**
16+
While not a breaking change, this update clarifies how `required`, `defaults`, and `prefill` behave together:
17+
18+
* `prefill` and `defaults` cannot be used on the same input.
19+
* Use `prefill` when `required: false` and the user should be able to clear the value.
20+
* Use `defaults` when `required: true` or when the value must always have a non-null default.
21+
* If `defaults` is used with `required: false`, the value will still reset to the default when cleared, which may not be desired; use `prefill` rather than `defaults` for those scenarios.
22+
23+
**Example:**
24+
25+
```yaml
26+
inputs:
27+
- id: nullable_string_with_prefilled_default
28+
type: STRING
29+
prefill: "This is a prefilled value you can remove (set to null if needed)"
30+
required: false
31+
```
32+
33+
**Migration:** No migration is required. For optional inputs that previously used `defaults` but need to allow clearing or null values, switch to using `prefill`.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
title: Task Runs UI Page Removed
3+
icon: /docs/icons/migration-guide.svg
4+
release: 1.1.0
5+
editions: ["EE"]
6+
---
7+
8+
## Overview
9+
10+
The **Task Runs** page has been removed from the Enterprise Edition UI.
11+
12+
**Reason for removal:**
13+
* The page presented confusing granularity (task-level runs displayed on execution-level detail pages)
14+
* Filters were incomplete, and performance degraded when handling large datasets
15+
* The feature was only available on the Kafka & Elasticsearch backend, causing confusion among other customers
16+
* Customer interviews confirmed the page was not being actively used.
17+
18+
**Impact:**
19+
* No replacement is required, as all relevant execution and task run details remain accessible through the Execution detail view.
20+
* If you previously accessed Task Runs, use the **Executions** page and drill down into individual task runs through Gantt and Logs views for task-level information.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
---
2+
title: Webhook Execution API Return Type Changed
3+
icon: /docs/icons/migration-guide.svg
4+
release: 1.1.0
5+
editions: ["OSS", "EE"]
6+
---
7+
8+
## Overview
9+
10+
The return type of the Webhook Execution API endpoint has been updated from a **typed response** to a **generic response** to support broader use cases and improve extensibility.
11+
12+
**What changed:** The API method previously returned a strongly typed `WebhookResponse` object. It now returns a generic HTTP response body (`HttpResponse<?>`).
13+
14+
**Impact:** Any custom integrations, SDK consumers, or extensions that previously relied on the `WebhookResponse` type in the response body will need to adjust their handling logic:
15+
* Direct access to `WebhookResponse` methods or fields will no longer compile.
16+
* You must handle the response body dynamically and verify its type at runtime if necessary.
17+
18+
**Migration:**
19+
* Treat the HTTP response body as a generic object.
20+
* Add runtime type checks before casting if your code depends on specific response fields.
21+
* Update any logic that assumes a fixed `WebhookResponse` structure.
22+
23+
This change ensures greater flexibility in future webhook response handling but requires updates to any consuming code that previously depended on a fixed response type.

0 commit comments

Comments
 (0)