From 2015e79ff09293cafb799f4049de35f786059831 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Wed, 12 Feb 2025 22:10:53 +0100 Subject: [PATCH 01/47] fix: better handling of null pre-processor return values --- ...cd9aef958c15df1c0a7b02318a756cd3589e9.json | 15 +++++++++++ ...b312404e637212de1897e97999755a2e492fd.json | 15 ----------- backend/windmill-api/src/jobs.rs | 7 +++++- backend/windmill-worker/src/worker.rs | 2 +- backend/windmill-worker/src/worker_flow.rs | 25 ++++++++++++++++--- 5 files changed, 43 insertions(+), 21 deletions(-) create mode 100644 backend/.sqlx/query-303c7e92ce23dc367d97d813415cd9aef958c15df1c0a7b02318a756cd3589e9.json delete mode 100644 backend/.sqlx/query-8a1c9119f6f4763f64597684dc7b312404e637212de1897e97999755a2e492fd.json diff --git a/backend/.sqlx/query-303c7e92ce23dc367d97d813415cd9aef958c15df1c0a7b02318a756cd3589e9.json b/backend/.sqlx/query-303c7e92ce23dc367d97d813415cd9aef958c15df1c0a7b02318a756cd3589e9.json new file mode 100644 index 0000000000..58cfc98b09 --- /dev/null +++ b/backend/.sqlx/query-303c7e92ce23dc367d97d813415cd9aef958c15df1c0a7b02318a756cd3589e9.json @@ -0,0 +1,15 @@ +{ + "db_name": "PostgreSQL", + "query": "WITH job_result AS (\n SELECT result \n FROM v2_job_completed \n WHERE id = $1\n )\n UPDATE v2_job \n SET args = COALESCE(\n CASE \n WHEN job_result.result IS NULL THEN NULL\n WHEN jsonb_typeof(job_result.result) = 'object' \n THEN job_result.result\n WHEN jsonb_typeof(job_result.result) = 'null'\n THEN NULL\n ELSE jsonb_build_object('value', job_result.result)\n END, \n '{}'::jsonb\n ),\n preprocessed = TRUE\n FROM job_result\n WHERE v2_job.id = $2;\n ", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Uuid", + "Uuid" + ] + }, + "nullable": [] + }, + "hash": "303c7e92ce23dc367d97d813415cd9aef958c15df1c0a7b02318a756cd3589e9" +} diff --git a/backend/.sqlx/query-8a1c9119f6f4763f64597684dc7b312404e637212de1897e97999755a2e492fd.json b/backend/.sqlx/query-8a1c9119f6f4763f64597684dc7b312404e637212de1897e97999755a2e492fd.json deleted file mode 100644 index 8a92be2af8..0000000000 --- a/backend/.sqlx/query-8a1c9119f6f4763f64597684dc7b312404e637212de1897e97999755a2e492fd.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE v2_job SET\n args = (SELECT result FROM v2_job_completed WHERE id = $1),\n preprocessed = TRUE\n WHERE id = $2", - "describe": { - "columns": [], - "parameters": { - "Left": [ - "Uuid", - "Uuid" - ] - }, - "nullable": [] - }, - "hash": "8a1c9119f6f4763f64597684dc7b312404e637212de1897e97999755a2e492fd" -} diff --git a/backend/windmill-api/src/jobs.rs b/backend/windmill-api/src/jobs.rs index 90caf92518..3248c2fe20 100644 --- a/backend/windmill-api/src/jobs.rs +++ b/backend/windmill-api/src/jobs.rs @@ -717,7 +717,12 @@ macro_rules! get_job_query { const_format::formatcp!( "SELECT \ id, {table}.workspace_id, parent_job, created_by, {table}.created_at, started_at, script_hash, script_path, \ - CASE WHEN args is null or pg_column_size(args) < 90000 THEN args ELSE '{{\"reason\": \"WINDMILL_TOO_BIG\"}}'::jsonb END as args, \ + CASE WHEN args is null THEN NULL + WHEN pg_column_size(args) < 90000 THEN + CASE WHEN jsonb_typeof(args) = 'object' THEN args + ELSE jsonb_build_object('value', args) + END + ELSE '{{\"reason\": \"WINDMILL_TOO_BIG\"}}'::jsonb END as args, \ {logs} as logs, {code} as raw_code, canceled, canceled_by, canceled_reason, job_kind, \ schedule_path, permissioned_as, flow_status, {flow} as raw_flow, is_flow_step, language, \ {lock} as raw_lock, email, visible_to_owner, mem_peak, tag, priority, preprocessed, {additional_fields} \ diff --git a/backend/windmill-worker/src/worker.rs b/backend/windmill-worker/src/worker.rs index 90b0444901..f523ce0723 100644 --- a/backend/windmill-worker/src/worker.rs +++ b/backend/windmill-worker/src/worker.rs @@ -2147,7 +2147,7 @@ async fn handle_queued_job( #[cfg(not(feature = "enterprise"))] if job.concurrent_limit.is_some() { logs.push_str("---\n"); - logs.push_str("WARNING: This job has concurrency limits enabled. Concurrency limits are going to become an Enterprise Edition feature in the near future.\n"); + logs.push_str("WARNING: This job has concurrency limits enabled. Concurrency limits are an EE feature and the setting is ignored.\n"); logs.push_str("---\n"); } diff --git a/backend/windmill-worker/src/worker_flow.rs b/backend/windmill-worker/src/worker_flow.rs index 5e4224681f..f265adaf93 100644 --- a/backend/windmill-worker/src/worker_flow.rs +++ b/backend/windmill-worker/src/worker_flow.rs @@ -408,10 +408,27 @@ pub async fn update_flow_status_after_job_completion_internal( if matches!(module_step, Step::PreprocessorStep) { sqlx::query!( - "UPDATE v2_job SET - args = (SELECT result FROM v2_job_completed WHERE id = $1), - preprocessed = TRUE - WHERE id = $2", + "WITH job_result AS ( + SELECT result + FROM v2_job_completed + WHERE id = $1 + ) + UPDATE v2_job + SET args = COALESCE( + CASE + WHEN job_result.result IS NULL THEN NULL + WHEN jsonb_typeof(job_result.result) = 'object' + THEN job_result.result + WHEN jsonb_typeof(job_result.result) = 'null' + THEN NULL + ELSE jsonb_build_object('value', job_result.result) + END, + '{}'::jsonb + ), + preprocessed = TRUE + FROM job_result + WHERE v2_job.id = $2; + ", job_id_for_status, flow ) From 055c3367b7afd06a9c789d17fb29bf1d195055bc Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Wed, 12 Feb 2025 23:38:58 +0100 Subject: [PATCH 02/47] fix: remove variable pickers in app forms --- .../lib/components/apps/components/buttons/AppSchemaForm.svelte | 1 + .../components/apps/components/helpers/RunnableComponent.svelte | 1 + 2 files changed, 2 insertions(+) diff --git a/frontend/src/lib/components/apps/components/buttons/AppSchemaForm.svelte b/frontend/src/lib/components/apps/components/buttons/AppSchemaForm.svelte index 6c3f1b3688..ee1b5a622d 100644 --- a/frontend/src/lib/components/apps/components/buttons/AppSchemaForm.svelte +++ b/frontend/src/lib/components/apps/components/buttons/AppSchemaForm.svelte @@ -151,6 +151,7 @@ !$connectingInput.opened && selectId(e, id, selectedComponent, $app)} > 0}
Date: Thu, 13 Feb 2025 01:25:11 +0100 Subject: [PATCH 03/47] feat(cli): wmill dev works with flows --- cli/dev.ts | 80 +++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 58 insertions(+), 22 deletions(-) diff --git a/cli/dev.ts b/cli/dev.ts index 2da25ec4ac..2a3dfb4a7d 100644 --- a/cli/dev.ts +++ b/cli/dev.ts @@ -8,8 +8,9 @@ import { log, open, WebSocket, + yamlParseFile, } from "./deps.ts"; -import { GlobalOptions } from "./types.ts"; +import { getTypeStrFromPath, GlobalOptions } from "./types.ts"; import { ignoreF } from "./sync.ts"; import { requireLogin, resolveWorkspace } from "./context.ts"; import { @@ -19,6 +20,8 @@ import { } from "./conf.ts"; import { exts } from "./script.ts"; import { inferContentTypeFromFilePath } from "./script_common.ts"; +import { OpenFlow } from "./gen/types.gen.ts"; +import { FlowFile, replaceInlineScripts } from "./flow.ts"; const PORT = 3001; async function dev(opts: GlobalOptions & SyncOptions) { @@ -27,54 +30,87 @@ async function dev(opts: GlobalOptions & SyncOptions) { log.info("Started dev mode"); const conf = await readConfigFile(); - let currentLastEdit: LastEdit | undefined = undefined; + let currentLastEdit: LastEditScript | LastEditFlow | undefined = undefined; const watcher = Deno.watchFs("."); const base = await Deno.realPath("."); opts = await mergeConfigWithConfigFile(opts); const ignore = await ignoreF(opts); + const changesTimeouts: Record = {}; async function watchChanges() { for await (const event of watcher) { - log.debug(">>>> event", event); - // Example event: { kind: "create", paths: [ "/home/alice/deno/foo.txt" ] } - await loadPaths(event.paths); + // console.log(">>>> event", event); + const key = event.paths.join(","); + if (changesTimeouts[key]) { + clearTimeout(changesTimeouts[key]); + } + changesTimeouts[key] = setTimeout(async () => { + delete changesTimeouts[key]; + await loadPaths(event.paths); + }, 100); } } + const DOT_FLOW_SEP = ".flow" + SEP; async function loadPaths(pathsToLoad: string[]) { - const paths = pathsToLoad.filter((path) => - exts.some((ext) => path.endsWith(ext)) + const paths = pathsToLoad.filter( + (path) => + exts.some((ext) => path.endsWith(ext)) || path.includes(DOT_FLOW_SEP) ); if (paths.length == 0) { return; } const cpath = (await Deno.realPath(paths[0])).replace(base + SEP, ""); - console.log("Detected change in " + cpath); if (!ignore(cpath, false)) { - const content = await Deno.readTextFile(cpath); - const splitted = cpath.split("."); - const wmPath = splitted[0]; - const lang = inferContentTypeFromFilePath(cpath, conf.defaultTs); - currentLastEdit = { - content, - path: wmPath, - language: lang, - }; - broadcastChanges(currentLastEdit); - log.info("Updated " + wmPath); + const typ = getTypeStrFromPath(cpath); + log.info("Detected change in " + cpath + " (" + typ + ")"); + if (typ == "flow") { + const localPath = cpath.split(DOT_FLOW_SEP)[0] + DOT_FLOW_SEP; + const localFlow = (await yamlParseFile( + localPath + "flow.yaml" + )) as FlowFile; + replaceInlineScripts(localFlow.value.modules, localPath, undefined); + currentLastEdit = { + type: "flow", + flow: localFlow, + uriPath: localPath, + }; + log.info("Updated " + localPath); + broadcastChanges(currentLastEdit); + } else if (typ == "script") { + const content = await Deno.readTextFile(cpath); + const splitted = cpath.split("."); + const wmPath = splitted[0]; + const lang = inferContentTypeFromFilePath(cpath, conf.defaultTs); + currentLastEdit = { + type: "script", + content, + path: wmPath, + language: lang, + }; + log.info("Updated " + wmPath); + broadcastChanges(currentLastEdit); + } } } - type LastEdit = { + type LastEditScript = { + type: "script"; content: string; path: string; language: string; }; + type LastEditFlow = { + type: "flow"; + flow: OpenFlow; + uriPath: string; + }; + const connectedClients: Set = new Set(); // Function to send a message to all connected clients - function broadcastChanges(lastEdit: LastEdit) { + function broadcastChanges(lastEdit: LastEditScript | LastEditFlow) { for (const client of connectedClients.values()) { client.send(JSON.stringify(lastEdit)); } @@ -119,7 +155,7 @@ async function dev(opts: GlobalOptions & SyncOptions) { // Start the server const port = await getPort.default({ port: 3001 }); const url = - `${workspace.remote}scripts/dev?workspace=${workspace.workspaceId}&local=true` + + `${workspace.remote}dev?workspace=${workspace.workspaceId}&local=true&wm_token=${workspace.token}` + (port === PORT ? "" : `&port=${port}`); console.log(`Go to ${url}`); From 8895f05375ff365408551e38428043e0f38d76b7 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Thu, 13 Feb 2025 01:34:37 +0100 Subject: [PATCH 04/47] add button work for flows --- frontend/src/lib/components/Dev.svelte | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/frontend/src/lib/components/Dev.svelte b/frontend/src/lib/components/Dev.svelte index e53d49eb72..30c2fb45cc 100644 --- a/frontend/src/lib/components/Dev.svelte +++ b/frontend/src/lib/components/Dev.svelte @@ -207,7 +207,6 @@ runTest() event.preventDefault() } else if (event.data.type == 'replaceScript') { - mode = 'script' replaceScript(event.data) } else if (event.data.type == 'testBundle') { if (event.data.id == lastCommandId) { @@ -235,7 +234,6 @@ true ) } else if (event.data.type == 'replaceFlow') { - mode = 'flow' lockChanges = true replaceFlow(event.data) timeout && clearTimeout(timeout) @@ -333,6 +331,13 @@ }) function connectWs() { + try { + if (socket) { + socket.close() + } + } catch (e) { + console.error('Failed to close websocket', e) + } const port = searchParams?.get('port') || '3001' try { socket = new WebSocket(`ws://localhost:${port}/ws`) @@ -350,7 +355,13 @@ console.log('Received invalid JSON: ' + msg) return } - replaceScript(data) + if (data.type == 'script') { + replaceScript(data) + } else if (data.type == 'flow') { + replaceFlow(data) + } else { + sendUserToast(`Received invalid message type ${data.type}`, true) + } } } catch (e) { sendUserToast('Failed to connect to local server', true) @@ -419,6 +430,7 @@ let relativePaths: any[] = [] let lastPath: string | undefined = undefined async function replaceScript(lastEdit: LastEditScript) { + mode = 'script' currentScript = lastEdit if (lastPath !== lastEdit.path) { schema = emptySchema() @@ -455,6 +467,7 @@ } let lastUriPath: string | undefined = undefined async function replaceFlow(lastEdit: LastEditFlow) { + mode = 'flow' lastUriPath = lastEdit.uriPath // sendUserToast(JSON.stringify(lastEdit.flow), true) // return @@ -715,6 +728,7 @@ {#if $flowStore?.value?.modules} +
Date: Thu, 13 Feb 2025 01:41:05 +0100 Subject: [PATCH 05/47] chore(main): release 1.461.0 (#5276) * chore(main): release 1.461.0 * Apply automatic changes --------- Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com> --- CHANGELOG.md | 14 +++++ backend/Cargo.lock | 54 +++++++++---------- backend/Cargo.toml | 4 +- backend/windmill-api/openapi.yaml | 2 +- benchmarks/lib.ts | 2 +- cli/main.ts | 2 +- frontend/package-lock.json | 4 +- frontend/package.json | 2 +- lsp/Pipfile | 4 +- openflow.openapi.yaml | 2 +- .../WindmillClient/WindmillClient.psd1 | 2 +- python-client/wmill/pyproject.toml | 2 +- python-client/wmill_pg/pyproject.toml | 2 +- typescript-client/jsr.json | 2 +- typescript-client/package.json | 2 +- version.txt | 2 +- 16 files changed, 58 insertions(+), 44 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fc17ef924d..107e0b36d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [1.461.0](https://github.com/windmill-labs/windmill/compare/v1.460.1...v1.461.0) (2025-02-13) + + +### Features + +* **cli:** wmill dev works with flows ([956a5ac](https://github.com/windmill-labs/windmill/commit/956a5ac68236df1c1f9ea4facd7ad237457427cf)) + + +### Bug Fixes + +* **backend:** improve schedule queries plan to leverage indices better for performance ([#5273](https://github.com/windmill-labs/windmill/issues/5273)) ([bf20651](https://github.com/windmill-labs/windmill/commit/bf206515e8653bbe431e106277b72082e0c9e388)) +* better handling of null pre-processor return values ([2015e79](https://github.com/windmill-labs/windmill/commit/2015e79ff09293cafb799f4049de35f786059831)) +* remove variable pickers in app forms ([055c336](https://github.com/windmill-labs/windmill/commit/055c3367b7afd06a9c789d17fb29bf1d195055bc)) + ## [1.460.1](https://github.com/windmill-labs/windmill/compare/v1.460.0...v1.460.1) (2025-02-12) diff --git a/backend/Cargo.lock b/backend/Cargo.lock index a6473bff94..032562d14b 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -2050,9 +2050,9 @@ dependencies = [ [[package]] name = "csv-core" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70" +checksum = "7d02f3b0da4c6504f86e9cd789d8dbafab48c2321be74e9987593de5a894d93d" dependencies = [ "memchr", ] @@ -10859,7 +10859,7 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windmill" -version = "1.460.1" +version = "1.461.0" dependencies = [ "anyhow", "axum", @@ -10902,7 +10902,7 @@ dependencies = [ [[package]] name = "windmill-api" -version = "1.460.1" +version = "1.461.0" dependencies = [ "anyhow", "argon2", @@ -10995,7 +10995,7 @@ dependencies = [ [[package]] name = "windmill-api-client" -version = "1.460.1" +version = "1.461.0" dependencies = [ "base64 0.22.1", "chrono", @@ -11013,7 +11013,7 @@ dependencies = [ [[package]] name = "windmill-audit" -version = "1.460.1" +version = "1.461.0" dependencies = [ "chrono", "serde", @@ -11026,7 +11026,7 @@ dependencies = [ [[package]] name = "windmill-autoscaling" -version = "1.460.1" +version = "1.461.0" dependencies = [ "anyhow", "serde", @@ -11040,7 +11040,7 @@ dependencies = [ [[package]] name = "windmill-common" -version = "1.460.1" +version = "1.461.0" dependencies = [ "anyhow", "async-stream", @@ -11099,7 +11099,7 @@ dependencies = [ [[package]] name = "windmill-git-sync" -version = "1.460.1" +version = "1.461.0" dependencies = [ "regex", "serde", @@ -11113,7 +11113,7 @@ dependencies = [ [[package]] name = "windmill-indexer" -version = "1.460.1" +version = "1.461.0" dependencies = [ "anyhow", "bytes", @@ -11136,7 +11136,7 @@ dependencies = [ [[package]] name = "windmill-macros" -version = "1.460.1" +version = "1.461.0" dependencies = [ "itertools 0.14.0", "lazy_static", @@ -11148,7 +11148,7 @@ dependencies = [ [[package]] name = "windmill-parser" -version = "1.460.1" +version = "1.461.0" dependencies = [ "convert_case 0.6.0", "serde", @@ -11157,7 +11157,7 @@ dependencies = [ [[package]] name = "windmill-parser-bash" -version = "1.460.1" +version = "1.461.0" dependencies = [ "anyhow", "lazy_static", @@ -11169,7 +11169,7 @@ dependencies = [ [[package]] name = "windmill-parser-csharp" -version = "1.460.1" +version = "1.461.0" dependencies = [ "anyhow", "serde_json", @@ -11181,7 +11181,7 @@ dependencies = [ [[package]] name = "windmill-parser-go" -version = "1.460.1" +version = "1.461.0" dependencies = [ "anyhow", "gosyn", @@ -11193,7 +11193,7 @@ dependencies = [ [[package]] name = "windmill-parser-graphql" -version = "1.460.1" +version = "1.461.0" dependencies = [ "anyhow", "lazy_static", @@ -11205,7 +11205,7 @@ dependencies = [ [[package]] name = "windmill-parser-php" -version = "1.460.1" +version = "1.461.0" dependencies = [ "anyhow", "itertools 0.14.0", @@ -11216,7 +11216,7 @@ dependencies = [ [[package]] name = "windmill-parser-py" -version = "1.460.1" +version = "1.461.0" dependencies = [ "anyhow", "itertools 0.14.0", @@ -11227,7 +11227,7 @@ dependencies = [ [[package]] name = "windmill-parser-py-imports" -version = "1.460.1" +version = "1.461.0" dependencies = [ "anyhow", "async-recursion", @@ -11247,7 +11247,7 @@ dependencies = [ [[package]] name = "windmill-parser-rust" -version = "1.460.1" +version = "1.461.0" dependencies = [ "anyhow", "convert_case 0.6.0", @@ -11264,7 +11264,7 @@ dependencies = [ [[package]] name = "windmill-parser-sql" -version = "1.460.1" +version = "1.461.0" dependencies = [ "anyhow", "lazy_static", @@ -11276,7 +11276,7 @@ dependencies = [ [[package]] name = "windmill-parser-ts" -version = "1.460.1" +version = "1.461.0" dependencies = [ "anyhow", "lazy_static", @@ -11294,7 +11294,7 @@ dependencies = [ [[package]] name = "windmill-parser-wasm" -version = "1.460.1" +version = "1.461.0" dependencies = [ "anyhow", "getrandom 0.2.15", @@ -11316,7 +11316,7 @@ dependencies = [ [[package]] name = "windmill-parser-yaml" -version = "1.460.1" +version = "1.461.0" dependencies = [ "anyhow", "serde_json", @@ -11326,7 +11326,7 @@ dependencies = [ [[package]] name = "windmill-queue" -version = "1.460.1" +version = "1.461.0" dependencies = [ "anyhow", "async-recursion", @@ -11359,7 +11359,7 @@ dependencies = [ [[package]] name = "windmill-sql-datatype-parser-wasm" -version = "1.460.1" +version = "1.461.0" dependencies = [ "wasm-bindgen", "wasm-bindgen-test", @@ -11369,7 +11369,7 @@ dependencies = [ [[package]] name = "windmill-worker" -version = "1.460.1" +version = "1.461.0" dependencies = [ "anyhow", "async-recursion", diff --git a/backend/Cargo.toml b/backend/Cargo.toml index 21060519be..d45747f6ce 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "windmill" -version = "1.460.1" +version = "1.461.0" authors.workspace = true edition.workspace = true @@ -30,7 +30,7 @@ members = [ ] [workspace.package] -version = "1.460.1" +version = "1.461.0" authors = ["Ruben Fiszel "] edition = "2021" diff --git a/backend/windmill-api/openapi.yaml b/backend/windmill-api/openapi.yaml index a34706a011..feee318709 100644 --- a/backend/windmill-api/openapi.yaml +++ b/backend/windmill-api/openapi.yaml @@ -1,7 +1,7 @@ openapi: "3.0.3" info: - version: 1.460.1 + version: 1.461.0 title: Windmill API contact: diff --git a/benchmarks/lib.ts b/benchmarks/lib.ts index 7e4f36a358..cd7cb8d8bf 100644 --- a/benchmarks/lib.ts +++ b/benchmarks/lib.ts @@ -2,7 +2,7 @@ import { sleep } from "https://deno.land/x/sleep@v1.2.1/mod.ts"; import * as windmill from "https://deno.land/x/windmill@v1.174.0/mod.ts"; import * as api from "https://deno.land/x/windmill@v1.174.0/windmill-api/index.ts"; -export const VERSION = "v1.460.1"; +export const VERSION = "v1.461.0"; export async function login(email: string, password: string): Promise { return await windmill.UserService.login({ diff --git a/cli/main.ts b/cli/main.ts index bd377e5168..a5d8720248 100644 --- a/cli/main.ts +++ b/cli/main.ts @@ -62,7 +62,7 @@ export { // } // }); -export const VERSION = "1.460.1"; +export const VERSION = "1.461.0"; const command = new Command() .name("wmill") diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 6edef5b202..8f5ae1fc02 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "windmill-components", - "version": "1.460.1", + "version": "1.461.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "windmill-components", - "version": "1.460.1", + "version": "1.461.0", "license": "AGPL-3.0", "dependencies": { "@anthropic-ai/sdk": "^0.32.1", diff --git a/frontend/package.json b/frontend/package.json index 167351899e..3593b01ab8 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "windmill-components", - "version": "1.460.1", + "version": "1.461.0", "scripts": { "dev": "vite dev", "build": "vite build", diff --git a/lsp/Pipfile b/lsp/Pipfile index b02c64fb49..6fa478cbda 100644 --- a/lsp/Pipfile +++ b/lsp/Pipfile @@ -4,8 +4,8 @@ verify_ssl = true name = "pypi" [packages] -wmill = ">=1.460.1" -wmill_pg = ">=1.460.1" +wmill = ">=1.461.0" +wmill_pg = ">=1.461.0" sendgrid = "*" mysql-connector-python = "*" pymongo = "*" diff --git a/openflow.openapi.yaml b/openflow.openapi.yaml index 876fc85dcc..915ead7c51 100644 --- a/openflow.openapi.yaml +++ b/openflow.openapi.yaml @@ -1,7 +1,7 @@ openapi: "3.0.3" info: - version: 1.460.1 + version: 1.461.0 title: OpenFlow Spec contact: name: Ruben Fiszel diff --git a/powershell-client/WindmillClient/WindmillClient.psd1 b/powershell-client/WindmillClient/WindmillClient.psd1 index 4098939492..3986c5aa8b 100644 --- a/powershell-client/WindmillClient/WindmillClient.psd1 +++ b/powershell-client/WindmillClient/WindmillClient.psd1 @@ -12,7 +12,7 @@ RootModule = 'WindmillClient.psm1' # Version number of this module. - ModuleVersion = '1.460.1' + ModuleVersion = '1.461.0' # Supported PSEditions # CompatiblePSEditions = @() diff --git a/python-client/wmill/pyproject.toml b/python-client/wmill/pyproject.toml index 96c744abf6..8784f9cad5 100644 --- a/python-client/wmill/pyproject.toml +++ b/python-client/wmill/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "wmill" -version = "1.460.1" +version = "1.461.0" description = "A client library for accessing Windmill server wrapping the Windmill client API" license = "Apache-2.0" homepage = "https://windmill.dev" diff --git a/python-client/wmill_pg/pyproject.toml b/python-client/wmill_pg/pyproject.toml index a2274c752b..a8a02745dd 100644 --- a/python-client/wmill_pg/pyproject.toml +++ b/python-client/wmill_pg/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "wmill-pg" -version = "1.460.1" +version = "1.461.0" description = "An extension client for the wmill client library focused on pg" license = "Apache-2.0" homepage = "https://windmill.dev" diff --git a/typescript-client/jsr.json b/typescript-client/jsr.json index 705982e0f9..302b718bad 100644 --- a/typescript-client/jsr.json +++ b/typescript-client/jsr.json @@ -1,6 +1,6 @@ { "name": "@windmill/windmill", - "version": "1.460.1", + "version": "1.461.0", "exports": "./src/index.ts", "publish": { "exclude": ["!src", "./s3Types.ts", "./client.ts"] diff --git a/typescript-client/package.json b/typescript-client/package.json index 2ab30279c3..f7c90a5a34 100644 --- a/typescript-client/package.json +++ b/typescript-client/package.json @@ -1,7 +1,7 @@ { "name": "windmill-client", "description": "Windmill SDK client for browsers and Node.js", - "version": "1.460.1", + "version": "1.461.0", "author": "Ruben Fiszel", "license": "Apache 2.0", "devDependencies": { diff --git a/version.txt b/version.txt index 3194fbf29a..4c56a7e0f3 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.460.1 +1.461.0 From 6fb8f7b45dd85fdf5edc5ca3948f767eb0a39629 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Thu, 13 Feb 2025 01:51:54 +0100 Subject: [PATCH 06/47] fix(cli): fix nits preventing release --- cli/dev.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/cli/dev.ts b/cli/dev.ts index 2a3dfb4a7d..f69e88eb59 100644 --- a/cli/dev.ts +++ b/cli/dev.ts @@ -45,6 +45,7 @@ async function dev(opts: GlobalOptions & SyncOptions) { if (changesTimeouts[key]) { clearTimeout(changesTimeouts[key]); } + // @ts-ignore changesTimeouts[key] = setTimeout(async () => { delete changesTimeouts[key]; await loadPaths(event.paths); From 768c11310fd85b7fc5b3a64e72975800b7718c23 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Thu, 13 Feb 2025 01:54:48 +0100 Subject: [PATCH 07/47] chore(main): release 1.461.1 (#5278) * chore(main): release 1.461.1 * Apply automatic changes --------- Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com> --- CHANGELOG.md | 7 +++ backend/Cargo.lock | 50 +++++++++---------- backend/Cargo.toml | 4 +- backend/windmill-api/openapi.yaml | 2 +- benchmarks/lib.ts | 2 +- cli/main.ts | 2 +- frontend/package-lock.json | 4 +- frontend/package.json | 2 +- lsp/Pipfile | 4 +- openflow.openapi.yaml | 2 +- .../WindmillClient/WindmillClient.psd1 | 2 +- python-client/wmill/pyproject.toml | 2 +- python-client/wmill_pg/pyproject.toml | 2 +- typescript-client/jsr.json | 2 +- typescript-client/package.json | 2 +- version.txt | 2 +- 16 files changed, 49 insertions(+), 42 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 107e0b36d2..febe433ac7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [1.461.1](https://github.com/windmill-labs/windmill/compare/v1.461.0...v1.461.1) (2025-02-13) + + +### Bug Fixes + +* **cli:** fix nits preventing release ([6fb8f7b](https://github.com/windmill-labs/windmill/commit/6fb8f7b45dd85fdf5edc5ca3948f767eb0a39629)) + ## [1.461.0](https://github.com/windmill-labs/windmill/compare/v1.460.1...v1.461.0) (2025-02-13) diff --git a/backend/Cargo.lock b/backend/Cargo.lock index 032562d14b..c3deb74625 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -10859,7 +10859,7 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windmill" -version = "1.461.0" +version = "1.461.1" dependencies = [ "anyhow", "axum", @@ -10902,7 +10902,7 @@ dependencies = [ [[package]] name = "windmill-api" -version = "1.461.0" +version = "1.461.1" dependencies = [ "anyhow", "argon2", @@ -10995,7 +10995,7 @@ dependencies = [ [[package]] name = "windmill-api-client" -version = "1.461.0" +version = "1.461.1" dependencies = [ "base64 0.22.1", "chrono", @@ -11013,7 +11013,7 @@ dependencies = [ [[package]] name = "windmill-audit" -version = "1.461.0" +version = "1.461.1" dependencies = [ "chrono", "serde", @@ -11026,7 +11026,7 @@ dependencies = [ [[package]] name = "windmill-autoscaling" -version = "1.461.0" +version = "1.461.1" dependencies = [ "anyhow", "serde", @@ -11040,7 +11040,7 @@ dependencies = [ [[package]] name = "windmill-common" -version = "1.461.0" +version = "1.461.1" dependencies = [ "anyhow", "async-stream", @@ -11099,7 +11099,7 @@ dependencies = [ [[package]] name = "windmill-git-sync" -version = "1.461.0" +version = "1.461.1" dependencies = [ "regex", "serde", @@ -11113,7 +11113,7 @@ dependencies = [ [[package]] name = "windmill-indexer" -version = "1.461.0" +version = "1.461.1" dependencies = [ "anyhow", "bytes", @@ -11136,7 +11136,7 @@ dependencies = [ [[package]] name = "windmill-macros" -version = "1.461.0" +version = "1.461.1" dependencies = [ "itertools 0.14.0", "lazy_static", @@ -11148,7 +11148,7 @@ dependencies = [ [[package]] name = "windmill-parser" -version = "1.461.0" +version = "1.461.1" dependencies = [ "convert_case 0.6.0", "serde", @@ -11157,7 +11157,7 @@ dependencies = [ [[package]] name = "windmill-parser-bash" -version = "1.461.0" +version = "1.461.1" dependencies = [ "anyhow", "lazy_static", @@ -11169,7 +11169,7 @@ dependencies = [ [[package]] name = "windmill-parser-csharp" -version = "1.461.0" +version = "1.461.1" dependencies = [ "anyhow", "serde_json", @@ -11181,7 +11181,7 @@ dependencies = [ [[package]] name = "windmill-parser-go" -version = "1.461.0" +version = "1.461.1" dependencies = [ "anyhow", "gosyn", @@ -11193,7 +11193,7 @@ dependencies = [ [[package]] name = "windmill-parser-graphql" -version = "1.461.0" +version = "1.461.1" dependencies = [ "anyhow", "lazy_static", @@ -11205,7 +11205,7 @@ dependencies = [ [[package]] name = "windmill-parser-php" -version = "1.461.0" +version = "1.461.1" dependencies = [ "anyhow", "itertools 0.14.0", @@ -11216,7 +11216,7 @@ dependencies = [ [[package]] name = "windmill-parser-py" -version = "1.461.0" +version = "1.461.1" dependencies = [ "anyhow", "itertools 0.14.0", @@ -11227,7 +11227,7 @@ dependencies = [ [[package]] name = "windmill-parser-py-imports" -version = "1.461.0" +version = "1.461.1" dependencies = [ "anyhow", "async-recursion", @@ -11247,7 +11247,7 @@ dependencies = [ [[package]] name = "windmill-parser-rust" -version = "1.461.0" +version = "1.461.1" dependencies = [ "anyhow", "convert_case 0.6.0", @@ -11264,7 +11264,7 @@ dependencies = [ [[package]] name = "windmill-parser-sql" -version = "1.461.0" +version = "1.461.1" dependencies = [ "anyhow", "lazy_static", @@ -11276,7 +11276,7 @@ dependencies = [ [[package]] name = "windmill-parser-ts" -version = "1.461.0" +version = "1.461.1" dependencies = [ "anyhow", "lazy_static", @@ -11294,7 +11294,7 @@ dependencies = [ [[package]] name = "windmill-parser-wasm" -version = "1.461.0" +version = "1.461.1" dependencies = [ "anyhow", "getrandom 0.2.15", @@ -11316,7 +11316,7 @@ dependencies = [ [[package]] name = "windmill-parser-yaml" -version = "1.461.0" +version = "1.461.1" dependencies = [ "anyhow", "serde_json", @@ -11326,7 +11326,7 @@ dependencies = [ [[package]] name = "windmill-queue" -version = "1.461.0" +version = "1.461.1" dependencies = [ "anyhow", "async-recursion", @@ -11359,7 +11359,7 @@ dependencies = [ [[package]] name = "windmill-sql-datatype-parser-wasm" -version = "1.461.0" +version = "1.461.1" dependencies = [ "wasm-bindgen", "wasm-bindgen-test", @@ -11369,7 +11369,7 @@ dependencies = [ [[package]] name = "windmill-worker" -version = "1.461.0" +version = "1.461.1" dependencies = [ "anyhow", "async-recursion", diff --git a/backend/Cargo.toml b/backend/Cargo.toml index d45747f6ce..cb55ca5b33 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "windmill" -version = "1.461.0" +version = "1.461.1" authors.workspace = true edition.workspace = true @@ -30,7 +30,7 @@ members = [ ] [workspace.package] -version = "1.461.0" +version = "1.461.1" authors = ["Ruben Fiszel "] edition = "2021" diff --git a/backend/windmill-api/openapi.yaml b/backend/windmill-api/openapi.yaml index feee318709..1bcc37256e 100644 --- a/backend/windmill-api/openapi.yaml +++ b/backend/windmill-api/openapi.yaml @@ -1,7 +1,7 @@ openapi: "3.0.3" info: - version: 1.461.0 + version: 1.461.1 title: Windmill API contact: diff --git a/benchmarks/lib.ts b/benchmarks/lib.ts index cd7cb8d8bf..054efa90c5 100644 --- a/benchmarks/lib.ts +++ b/benchmarks/lib.ts @@ -2,7 +2,7 @@ import { sleep } from "https://deno.land/x/sleep@v1.2.1/mod.ts"; import * as windmill from "https://deno.land/x/windmill@v1.174.0/mod.ts"; import * as api from "https://deno.land/x/windmill@v1.174.0/windmill-api/index.ts"; -export const VERSION = "v1.461.0"; +export const VERSION = "v1.461.1"; export async function login(email: string, password: string): Promise { return await windmill.UserService.login({ diff --git a/cli/main.ts b/cli/main.ts index a5d8720248..f7dcdbab14 100644 --- a/cli/main.ts +++ b/cli/main.ts @@ -62,7 +62,7 @@ export { // } // }); -export const VERSION = "1.461.0"; +export const VERSION = "1.461.1"; const command = new Command() .name("wmill") diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 8f5ae1fc02..98cddab626 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "windmill-components", - "version": "1.461.0", + "version": "1.461.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "windmill-components", - "version": "1.461.0", + "version": "1.461.1", "license": "AGPL-3.0", "dependencies": { "@anthropic-ai/sdk": "^0.32.1", diff --git a/frontend/package.json b/frontend/package.json index 3593b01ab8..fc75071c72 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "windmill-components", - "version": "1.461.0", + "version": "1.461.1", "scripts": { "dev": "vite dev", "build": "vite build", diff --git a/lsp/Pipfile b/lsp/Pipfile index 6fa478cbda..e281bb6b27 100644 --- a/lsp/Pipfile +++ b/lsp/Pipfile @@ -4,8 +4,8 @@ verify_ssl = true name = "pypi" [packages] -wmill = ">=1.461.0" -wmill_pg = ">=1.461.0" +wmill = ">=1.461.1" +wmill_pg = ">=1.461.1" sendgrid = "*" mysql-connector-python = "*" pymongo = "*" diff --git a/openflow.openapi.yaml b/openflow.openapi.yaml index 915ead7c51..5d8ac5f208 100644 --- a/openflow.openapi.yaml +++ b/openflow.openapi.yaml @@ -1,7 +1,7 @@ openapi: "3.0.3" info: - version: 1.461.0 + version: 1.461.1 title: OpenFlow Spec contact: name: Ruben Fiszel diff --git a/powershell-client/WindmillClient/WindmillClient.psd1 b/powershell-client/WindmillClient/WindmillClient.psd1 index 3986c5aa8b..6ecefe7ae1 100644 --- a/powershell-client/WindmillClient/WindmillClient.psd1 +++ b/powershell-client/WindmillClient/WindmillClient.psd1 @@ -12,7 +12,7 @@ RootModule = 'WindmillClient.psm1' # Version number of this module. - ModuleVersion = '1.461.0' + ModuleVersion = '1.461.1' # Supported PSEditions # CompatiblePSEditions = @() diff --git a/python-client/wmill/pyproject.toml b/python-client/wmill/pyproject.toml index 8784f9cad5..9645ecb5a1 100644 --- a/python-client/wmill/pyproject.toml +++ b/python-client/wmill/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "wmill" -version = "1.461.0" +version = "1.461.1" description = "A client library for accessing Windmill server wrapping the Windmill client API" license = "Apache-2.0" homepage = "https://windmill.dev" diff --git a/python-client/wmill_pg/pyproject.toml b/python-client/wmill_pg/pyproject.toml index a8a02745dd..265349e6ea 100644 --- a/python-client/wmill_pg/pyproject.toml +++ b/python-client/wmill_pg/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "wmill-pg" -version = "1.461.0" +version = "1.461.1" description = "An extension client for the wmill client library focused on pg" license = "Apache-2.0" homepage = "https://windmill.dev" diff --git a/typescript-client/jsr.json b/typescript-client/jsr.json index 302b718bad..2dc385b271 100644 --- a/typescript-client/jsr.json +++ b/typescript-client/jsr.json @@ -1,6 +1,6 @@ { "name": "@windmill/windmill", - "version": "1.461.0", + "version": "1.461.1", "exports": "./src/index.ts", "publish": { "exclude": ["!src", "./s3Types.ts", "./client.ts"] diff --git a/typescript-client/package.json b/typescript-client/package.json index f7c90a5a34..59c9627ae5 100644 --- a/typescript-client/package.json +++ b/typescript-client/package.json @@ -1,7 +1,7 @@ { "name": "windmill-client", "description": "Windmill SDK client for browsers and Node.js", - "version": "1.461.0", + "version": "1.461.1", "author": "Ruben Fiszel", "license": "Apache 2.0", "devDependencies": { diff --git a/version.txt b/version.txt index 4c56a7e0f3..9189143a83 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.461.0 +1.461.1 From fe922114a74b1757c37f7f7b76adb3aed1ffccc4 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Thu, 13 Feb 2025 10:27:43 +0100 Subject: [PATCH 08/47] fix(bun): remove unecessary buntar in a bun bundle world --- backend/src/main.rs | 12 +- backend/windmill-worker/src/bun_executor.rs | 131 +++----------------- backend/windmill-worker/src/worker.rs | 1 - 3 files changed, 21 insertions(+), 123 deletions(-) diff --git a/backend/src/main.rs b/backend/src/main.rs index d9ae5c6e58..432095580d 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -66,12 +66,11 @@ use windmill_common::METRICS_ADDR; use windmill_common::global_settings::OBJECT_STORE_CACHE_CONFIG_SETTING; use windmill_worker::{ - get_hub_script_content_and_requirements, BUN_BUNDLE_CACHE_DIR, BUN_CACHE_DIR, - BUN_DEPSTAR_CACHE_DIR, CSHARP_CACHE_DIR, DENO_CACHE_DIR, DENO_CACHE_DIR_DEPS, - DENO_CACHE_DIR_NPM, GO_BIN_CACHE_DIR, GO_CACHE_DIR, LOCK_CACHE_DIR, PIP_CACHE_DIR, - POWERSHELL_CACHE_DIR, PY310_CACHE_DIR, PY311_CACHE_DIR, PY312_CACHE_DIR, PY313_CACHE_DIR, - RUST_CACHE_DIR, TAR_PIP_CACHE_DIR, TAR_PY310_CACHE_DIR, TAR_PY311_CACHE_DIR, - TAR_PY312_CACHE_DIR, TAR_PY313_CACHE_DIR, UV_CACHE_DIR, + get_hub_script_content_and_requirements, BUN_BUNDLE_CACHE_DIR, BUN_CACHE_DIR, CSHARP_CACHE_DIR, + DENO_CACHE_DIR, DENO_CACHE_DIR_DEPS, DENO_CACHE_DIR_NPM, GO_BIN_CACHE_DIR, GO_CACHE_DIR, + LOCK_CACHE_DIR, PIP_CACHE_DIR, POWERSHELL_CACHE_DIR, PY310_CACHE_DIR, PY311_CACHE_DIR, + PY312_CACHE_DIR, PY313_CACHE_DIR, RUST_CACHE_DIR, TAR_PIP_CACHE_DIR, TAR_PY310_CACHE_DIR, + TAR_PY311_CACHE_DIR, TAR_PY312_CACHE_DIR, TAR_PY313_CACHE_DIR, UV_CACHE_DIR, }; use crate::monitor::{ @@ -1042,7 +1041,6 @@ pub async fn run_workers( TAR_PY312_CACHE_DIR, TAR_PY313_CACHE_DIR, PIP_CACHE_DIR, - BUN_DEPSTAR_CACHE_DIR, BUN_BUNDLE_CACHE_DIR, GO_CACHE_DIR, GO_BIN_CACHE_DIR, diff --git a/backend/windmill-worker/src/bun_executor.rs b/backend/windmill-worker/src/bun_executor.rs index 4fc471df91..134511472f 100644 --- a/backend/windmill-worker/src/bun_executor.rs +++ b/backend/windmill-worker/src/bun_executor.rs @@ -1,14 +1,12 @@ #[cfg(feature = "deno_core")] use std::time::Instant; -use std::{collections::HashMap, fs, path::Path, process::Stdio}; +use std::{collections::HashMap, fs, process::Stdio}; -use anyhow::Context; use base64::Engine; use itertools::Itertools; use serde_json::value::RawValue; -use sha2::Digest; use uuid::Uuid; use windmill_parser_ts::remove_pinned_imports; use windmill_queue::{append_logs, CanceledBy}; @@ -23,8 +21,8 @@ use crate::{ }, handle_child::handle_child, AuthedClientBackgroundTask, BUNFIG_INSTALL_SCOPES, BUN_BUNDLE_CACHE_DIR, BUN_CACHE_DIR, - BUN_DEPSTAR_CACHE_DIR, BUN_PATH, DISABLE_NSJAIL, DISABLE_NUSER, HOME_ENV, NODE_BIN_PATH, - NODE_PATH, NPM_CONFIG_REGISTRY, NPM_PATH, NSJAIL_PATH, PATH_ENV, PROXY_ENVS, TZ_ENV, + BUN_PATH, DISABLE_NSJAIL, DISABLE_NUSER, HOME_ENV, NODE_BIN_PATH, NODE_PATH, + NPM_CONFIG_REGISTRY, NPM_PATH, NSJAIL_PATH, PATH_ENV, PROXY_ENVS, TZ_ENV, }; #[cfg(windows)] @@ -637,51 +635,6 @@ pub async fn pull_codebase(_w_id: &str, _id: &str, _job_dir: &str) -> Result<()> )); } -#[cfg(unix)] -pub fn copy_recursively( - source: impl AsRef, - destination: impl AsRef, - skip: Option<&Vec>, -) -> Result<()> { - let mut stack = Vec::new(); - stack.push(( - source.as_ref().to_path_buf(), - destination.as_ref().to_path_buf(), - 0, - )); - while let Some((current_source, current_destination, level)) = stack.pop() { - for entry in fs::read_dir(¤t_source) - .context(format!("reading directory {current_source:?}"))? - { - let entry = entry?; - let filetype = entry.file_type()?; - let destination = current_destination.join(entry.file_name()); - if level == 0 { - if let Some(skip) = skip { - if skip.contains(&entry.file_name().to_string_lossy().to_string()) { - continue; - } - } - } - - let original = entry.path(); - - if filetype.is_dir() { - fs::create_dir_all(&destination)?; - stack.push((entry.path(), destination, level + 1)); - } else { - fs::hard_link(&original, &destination).map_err(|e| { - error::Error::internal_err(format!( - "hard linking from {original:?} to {destination:?}: {e:#}" - )) - })?; - } - } - } - - Ok(()) -} - pub async fn prebundle_bun_script( inner_content: &str, lockfile: Option<&String>, @@ -889,7 +842,6 @@ pub async fn handle_bun_job( )); } - let mut gbuntar_name: Option = None; if has_bundle_cache { let target; let symlink; @@ -924,67 +876,23 @@ pub async fn handle_bun_job( let _ = write_file(job_dir, "package.json", pkg)?; let lock = if annotation.npm { "" } else { lock.unwrap() }; if !empty { - let mut skip_install = false; - let mut create_buntar = false; - let mut buntar_path = "".to_string(); - if !annotation.npm { let _ = write_lock(lock, job_dir, is_binary).await?; - - let mut sha_path = sha2::Sha256::new(); - sha_path.update(lock.as_bytes()); - - let buntar_name = - base64::engine::general_purpose::URL_SAFE.encode(sha_path.finalize()); - buntar_path = format!("{BUN_DEPSTAR_CACHE_DIR}/{buntar_name}"); - - #[cfg(unix)] - if tokio::fs::metadata(&buntar_path).await.is_ok() { - if let Err(e) = copy_recursively(&buntar_path, job_dir, None) { - tracing::error!("Could not extract buntar: {e:#}"); - } else { - gbuntar_name = Some(buntar_name.clone()); - skip_install = true; - } - } else { - create_buntar = true; - } } - if !skip_install { - install_bun_lockfile( - mem_peak, - canceled_by, - &job.id, - &job.workspace_id, - Some(db), - job_dir, - worker_name, - common_bun_proc_envs.clone(), - annotation.npm, - &mut Some(occupancy_metrics), - ) - .await?; - - #[cfg(unix)] - if create_buntar { - fs::create_dir_all(&buntar_path)?; - if let Err(e) = copy_recursively( - job_dir, - &buntar_path, - Some(&vec![ - "main.ts".to_string(), - "package.json".to_string(), - if is_binary { "bun.lockb" } else { "bun.lock" }.to_string(), - "shared".to_string(), - "bunfig.toml".to_string(), - ]), - ) { - fs::remove_dir_all(&buntar_path).context("deleting buntar directory")?; - tracing::error!("Could not create buntar: {e}"); - } - } - } + install_bun_lockfile( + mem_peak, + canceled_by, + &job.id, + &job.workspace_id, + Some(db), + job_dir, + worker_name, + common_bun_proc_envs.clone(), + annotation.npm, + &mut Some(occupancy_metrics), + ) + .await?; } } else { // if !*DISABLE_NSJAIL || !empty_trusted_deps || has_custom_config_registry { @@ -1031,13 +939,6 @@ pub async fn handle_bun_job( "\n\n--- BUN CODE EXECUTION ---\n".to_string() }; - if let Some(gbuntar_name) = gbuntar_name { - init_logs = format!( - "\nskipping install, using cached buntar based on lockfile hash: {gbuntar_name}{}", - init_logs - ); - } - if has_bundle_cache { init_logs = format!("\n{}{}", cache_logs, init_logs); } diff --git a/backend/windmill-worker/src/worker.rs b/backend/windmill-worker/src/worker.rs index f523ce0723..5592e0d722 100644 --- a/backend/windmill-worker/src/worker.rs +++ b/backend/windmill-worker/src/worker.rs @@ -291,7 +291,6 @@ pub const RUST_CACHE_DIR: &str = concatcp!(ROOT_CACHE_DIR, "rust"); pub const CSHARP_CACHE_DIR: &str = concatcp!(ROOT_CACHE_DIR, "csharp"); pub const BUN_CACHE_DIR: &str = concatcp!(ROOT_CACHE_NOMOUNT_DIR, "bun"); pub const BUN_BUNDLE_CACHE_DIR: &str = concatcp!(ROOT_CACHE_DIR, "bun"); -pub const BUN_DEPSTAR_CACHE_DIR: &str = concatcp!(ROOT_CACHE_NOMOUNT_DIR, "buntar"); pub const GO_BIN_CACHE_DIR: &str = concatcp!(ROOT_CACHE_DIR, "gobin"); pub const POWERSHELL_CACHE_DIR: &str = concatcp!(ROOT_CACHE_DIR, "powershell"); From 69ed5a9bbf3c0bc863ce50bc058552f7e294e8d0 Mon Sep 17 00:00:00 2001 From: Henri Courdent <122811744+hcourdent@users.noreply.github.com> Date: Thu, 13 Feb 2025 12:18:39 +0100 Subject: [PATCH 09/47] List of telemetry collected (#5282) --- .../src/lib/components/InstanceSettings.svelte | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/frontend/src/lib/components/InstanceSettings.svelte b/frontend/src/lib/components/InstanceSettings.svelte index ef91c8400a..476e7182f5 100644 --- a/frontend/src/lib/components/InstanceSettings.svelte +++ b/frontend/src/lib/components/InstanceSettings.svelte @@ -278,13 +278,16 @@ Anonymous usage data is collected to help improve Windmill.
The following information is collected:
    -
  • version of your instance
  • -
  • number and total duration of jobs
  • -
  • accounts usage
  • -
  • login type usage
  • -
  • workers usage
  • -
  • vCPUs usage
  • +
  • version of your instances
  • +
  • instance base URL
  • +
  • job usage (language, total duration, count)
  • +
  • login type usage (login type, count)
  • +
  • worker usage (worker, worker instance, vCPUs, memory)
  • +
  • user usage (author count, operator count)
  • +
  • superadmin email addresses
  • +
  • vCPU usage
  • memory usage
  • +
  • development instance status
{#if $enterpriseLicense} From dd695b40f41decdf9f2f3d6918d860249661fb36 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Thu, 13 Feb 2025 13:02:30 +0100 Subject: [PATCH 10/47] fix(cli): support lock in wmill dev --- cli/dev.ts | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/cli/dev.ts b/cli/dev.ts index f69e88eb59..7cc92c45ff 100644 --- a/cli/dev.ts +++ b/cli/dev.ts @@ -18,10 +18,11 @@ import { mergeConfigWithConfigFile, readConfigFile, } from "./conf.ts"; -import { exts } from "./script.ts"; +import { exts, findGlobalDeps, removeExtensionToPath } from "./script.ts"; import { inferContentTypeFromFilePath } from "./script_common.ts"; import { OpenFlow } from "./gen/types.gen.ts"; import { FlowFile, replaceInlineScripts } from "./flow.ts"; +import { parseMetadataFile } from "./metadata.ts"; const PORT = 3001; async function dev(opts: GlobalOptions & SyncOptions) { @@ -55,9 +56,10 @@ async function dev(opts: GlobalOptions & SyncOptions) { const DOT_FLOW_SEP = ".flow" + SEP; async function loadPaths(pathsToLoad: string[]) { - const paths = pathsToLoad.filter( - (path) => - exts.some((ext) => path.endsWith(ext)) || path.includes(DOT_FLOW_SEP) + const paths = pathsToLoad.filter((path) => + exts.some( + (ext) => path.endsWith(ext) || path.endsWith(DOT_FLOW_SEP + "flow.yaml") + ) ); if (paths.length == 0) { return; @@ -84,11 +86,24 @@ async function dev(opts: GlobalOptions & SyncOptions) { const splitted = cpath.split("."); const wmPath = splitted[0]; const lang = inferContentTypeFromFilePath(cpath, conf.defaultTs); + const globalDeps = await findGlobalDeps(); + const typed = + (await parseMetadataFile( + removeExtensionToPath(cpath), + undefined, + globalDeps, + [] + ) + )?.payload + + currentLastEdit = { type: "script", content, path: wmPath, language: lang, + tag: typed?.tag, + lock: typed?.lock, }; log.info("Updated " + wmPath); broadcastChanges(currentLastEdit); @@ -100,6 +115,9 @@ async function dev(opts: GlobalOptions & SyncOptions) { content: string; path: string; language: string; + tag?: string; + lock?: string; + }; type LastEditFlow = { From 1be335f042727bbb33b5f515433b65c54bf841fe Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Thu, 13 Feb 2025 13:40:40 +0100 Subject: [PATCH 11/47] fix(bun): remove unecessary buntar in a bun bundle world --- .../lib/components/InputTransformForm.svelte | 24 +++++++++++++++---- .../flows/propPicker/PropPickerWrapper.svelte | 1 + .../propertyPicker/PropPicker.svelte | 1 - 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/frontend/src/lib/components/InputTransformForm.svelte b/frontend/src/lib/components/InputTransformForm.svelte index aa0c31057b..50ad1e8922 100644 --- a/frontend/src/lib/components/InputTransformForm.svelte +++ b/frontend/src/lib/components/InputTransformForm.svelte @@ -196,10 +196,26 @@ } function connectProperty(rawValue: string) { - arg.expr = getDefaultExpr(undefined, previousModuleId, rawValue) - arg.type = 'javascript' - propertyType = 'javascript' - monaco?.setCode(arg.expr) + // Extract path from variable('x') or resource('x') format + const varMatch = rawValue.match(/^variable\('([^']+)'\)$/) + const resourceMatch = rawValue.match(/^resource\('([^']+)'\)$/) + + if (varMatch) { + arg.type = 'static' + propertyType = 'static' + arg.value = '$var:' + varMatch[1] + monacoTemplate?.setCode(arg.value) + } else if (resourceMatch) { + arg.type = 'static' + propertyType = 'static' + arg.value = '$res:' + resourceMatch[1] + monacoTemplate?.setCode(arg.value) + } else { + arg.expr = getDefaultExpr(undefined, previousModuleId, rawValue) + arg.type = 'javascript' + propertyType = 'javascript' + monaco?.setCode(arg.expr) + } } function onFocus() { diff --git a/frontend/src/lib/components/flows/propPicker/PropPickerWrapper.svelte b/frontend/src/lib/components/flows/propPicker/PropPickerWrapper.svelte index 41f05c1fb5..57df089a62 100644 --- a/frontend/src/lib/components/flows/propPicker/PropPickerWrapper.svelte +++ b/frontend/src/lib/components/flows/propPicker/PropPickerWrapper.svelte @@ -146,6 +146,7 @@ {pickableProperties} allowCopy={!notSelectable && !$propPickerConfig} on:select={({ detail }) => { + // console.log('selecting', detail) dispatch('select', detail) if ($propPickerConfig?.onSelect(detail)) { $propPickerConfig?.clearFocus() diff --git a/frontend/src/lib/components/propertyPicker/PropPicker.svelte b/frontend/src/lib/components/propertyPicker/PropPicker.svelte index 7e62990eb6..982b95f892 100644 --- a/frontend/src/lib/components/propertyPicker/PropPicker.svelte +++ b/frontend/src/lib/components/propertyPicker/PropPicker.svelte @@ -343,7 +343,6 @@ wrapperClasses="inline-flex whitespace-nowrap w-fit" btnClasses="font-mono h-4 text-2xs font-thin px-1 rounded-[0.275rem]">- - Date: Thu, 13 Feb 2025 10:53:57 -0500 Subject: [PATCH 12/47] feat: teams workspace scripts (#5238) * backend and clients * adding teams_team_name to workspace_settings * openapi.yaml adding teams workspace settings endpoints * teams workspace settings frontend * workspaces router * build ce * ee gate * ee oauth * update client * workspace error handler * remove log * ce * point to new hub scripts * updating hubPaths * updating hubPaths * cleanup * merge * schedule teams error * polish, reactivity * sqlx compilewarning * sqlx migrate * make it build * router * fix * remove sqlx workaround * Update ee-repo-ref.txt * simplify some logic * sqlx * latest ee ref * latest ee ref --------- Co-authored-by: Ruben Fiszel --- ...8234ca7d1efeee9661f3901f298da375e73f7.json | 196 +++++++++++++++ ...c61296a3ff7489ae12f52a19f9543173ac597.json | 18 ++ ...d9474b17887711128dbb2ef15d247d50686b0.json | 22 ++ ...de63612a7506cc0671b0eb83e528c1c839db4.json | 14 ++ ...8ed593004c22bb5d11170b3196e290dd1d966.json | 26 ++ ...3cd1a1d6eca4083286c6f29c9acba522d2fe3.json | 22 ++ ...b1bd45853bf5b72e0ab991e0e61fedcfb42fc.json | 16 ++ ...dcc40f463cbc52d94ed9315cf9a547d4c89f2.json | 18 ++ ...f55354ad0397356c67a6162249a3cc553f125.json | 53 ++++ ...315ff25dad08e4cb714718505b77a75d44b95.json | 15 ++ ...950295e0d0fbdabb38434534fb3430eeddc25.json | 53 ---- backend/ee-repo-ref.txt | 2 +- ...51_teams_workspace_command_script.down.sql | 3 + ...1251_teams_workspace_command_script.up.sql | 3 + backend/windmill-api/openapi.yaml | 195 ++++++++++++++ backend/windmill-api/src/lib.rs | 1 - backend/windmill-api/src/teams_ee.rs | 34 +++ backend/windmill-api/src/workspaces.rs | 36 ++- .../src/lib/components/AuthSettings.svelte | 2 +- .../lib/components/ConnectionSection.svelte | 184 ++++++++++++++ .../components/ErrorOrRecoveryHandler.svelte | 235 +++++++++++++++-- .../src/lib/components/OAuthSetting.svelte | 23 +- .../lib/components/ScheduleEditorInner.svelte | 59 +++-- frontend/src/lib/hub.ts | 3 + frontend/src/lib/hubPaths.json | 3 + .../(logged)/workspace_settings/+page.svelte | 237 +++++++++--------- python-client/wmill/wmill/client.py | 11 + typescript-client/client.ts | 2 + 28 files changed, 1266 insertions(+), 220 deletions(-) create mode 100644 backend/.sqlx/query-08f288d2781d823e109a9e5b8848234ca7d1efeee9661f3901f298da375e73f7.json create mode 100644 backend/.sqlx/query-1ace9bdcde90fd2261fd64344a2d9474b17887711128dbb2ef15d247d50686b0.json create mode 100644 backend/.sqlx/query-23c37d36e16251763fabf194e41de63612a7506cc0671b0eb83e528c1c839db4.json create mode 100644 backend/.sqlx/query-2fa27b0a71740e4e168879cf9a58ed593004c22bb5d11170b3196e290dd1d966.json create mode 100644 backend/.sqlx/query-3b02f3ec6b92706c26065b2fa703cd1a1d6eca4083286c6f29c9acba522d2fe3.json create mode 100644 backend/.sqlx/query-551c78392919e18019bb0a4344fb1bd45853bf5b72e0ab991e0e61fedcfb42fc.json create mode 100644 backend/.sqlx/query-72f98539ff9874479f6fc0e9f45f55354ad0397356c67a6162249a3cc553f125.json create mode 100644 backend/.sqlx/query-ebbe03cad470d0c6ae98964f630315ff25dad08e4cb714718505b77a75d44b95.json delete mode 100644 backend/.sqlx/query-eed16e356f3f36183c3db13fcc1950295e0d0fbdabb38434534fb3430eeddc25.json create mode 100644 backend/migrations/20250128201251_teams_workspace_command_script.down.sql create mode 100644 backend/migrations/20250128201251_teams_workspace_command_script.up.sql create mode 100644 frontend/src/lib/components/ConnectionSection.svelte diff --git a/backend/.sqlx/query-08f288d2781d823e109a9e5b8848234ca7d1efeee9661f3901f298da375e73f7.json b/backend/.sqlx/query-08f288d2781d823e109a9e5b8848234ca7d1efeee9661f3901f298da375e73f7.json new file mode 100644 index 0000000000..4bcf3c6ce3 --- /dev/null +++ b/backend/.sqlx/query-08f288d2781d823e109a9e5b8848234ca7d1efeee9661f3901f298da375e73f7.json @@ -0,0 +1,196 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT * FROM workspace_settings WHERE teams_team_id = $1 AND teams_command_script IS NOT NULL", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "workspace_id", + "type_info": "Varchar" + }, + { + "ordinal": 1, + "name": "slack_team_id", + "type_info": "Varchar" + }, + { + "ordinal": 2, + "name": "slack_name", + "type_info": "Varchar" + }, + { + "ordinal": 3, + "name": "slack_command_script", + "type_info": "Varchar" + }, + { + "ordinal": 4, + "name": "slack_email", + "type_info": "Varchar" + }, + { + "ordinal": 5, + "name": "auto_invite_domain", + "type_info": "Varchar" + }, + { + "ordinal": 6, + "name": "auto_invite_operator", + "type_info": "Bool" + }, + { + "ordinal": 7, + "name": "customer_id", + "type_info": "Varchar" + }, + { + "ordinal": 8, + "name": "plan", + "type_info": "Varchar" + }, + { + "ordinal": 9, + "name": "webhook", + "type_info": "Text" + }, + { + "ordinal": 10, + "name": "deploy_to", + "type_info": "Varchar" + }, + { + "ordinal": 11, + "name": "error_handler", + "type_info": "Varchar" + }, + { + "ordinal": 12, + "name": "ai_resource", + "type_info": "Jsonb" + }, + { + "ordinal": 13, + "name": "error_handler_extra_args", + "type_info": "Json" + }, + { + "ordinal": 14, + "name": "error_handler_muted_on_cancel", + "type_info": "Bool" + }, + { + "ordinal": 15, + "name": "large_file_storage", + "type_info": "Jsonb" + }, + { + "ordinal": 16, + "name": "git_sync", + "type_info": "Jsonb" + }, + { + "ordinal": 17, + "name": "default_app", + "type_info": "Varchar" + }, + { + "ordinal": 18, + "name": "auto_add", + "type_info": "Bool" + }, + { + "ordinal": 19, + "name": "automatic_billing", + "type_info": "Bool" + }, + { + "ordinal": 20, + "name": "default_scripts", + "type_info": "Jsonb" + }, + { + "ordinal": 21, + "name": "deploy_ui", + "type_info": "Jsonb" + }, + { + "ordinal": 22, + "name": "mute_critical_alerts", + "type_info": "Bool" + }, + { + "ordinal": 23, + "name": "color", + "type_info": "Varchar" + }, + { + "ordinal": 24, + "name": "operator_settings", + "type_info": "Jsonb" + }, + { + "ordinal": 25, + "name": "ai_models", + "type_info": "VarcharArray" + }, + { + "ordinal": 26, + "name": "code_completion_model", + "type_info": "Varchar" + }, + { + "ordinal": 27, + "name": "teams_command_script", + "type_info": "Text" + }, + { + "ordinal": 28, + "name": "teams_team_id", + "type_info": "Text" + }, + { + "ordinal": 29, + "name": "teams_team_name", + "type_info": "Text" + } + ], + "parameters": { + "Left": [ + "Text" + ] + }, + "nullable": [ + false, + true, + true, + true, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + true, + true, + true, + true, + false, + true, + true, + true, + true, + true, + false, + true, + true, + true, + true + ] + }, + "hash": "08f288d2781d823e109a9e5b8848234ca7d1efeee9661f3901f298da375e73f7" +} diff --git a/backend/.sqlx/query-1730f39fd1793d45fbb41b21389c61296a3ff7489ae12f52a19f9543173ac597.json b/backend/.sqlx/query-1730f39fd1793d45fbb41b21389c61296a3ff7489ae12f52a19f9543173ac597.json index 03da2cee85..6df517592a 100644 --- a/backend/.sqlx/query-1730f39fd1793d45fbb41b21389c61296a3ff7489ae12f52a19f9543173ac597.json +++ b/backend/.sqlx/query-1730f39fd1793d45fbb41b21389c61296a3ff7489ae12f52a19f9543173ac597.json @@ -137,6 +137,21 @@ "ordinal": 26, "name": "code_completion_model", "type_info": "Varchar" + }, + { + "ordinal": 27, + "name": "teams_command_script", + "type_info": "Text" + }, + { + "ordinal": 28, + "name": "teams_team_id", + "type_info": "Text" + }, + { + "ordinal": 29, + "name": "teams_team_name", + "type_info": "Text" } ], "parameters": { @@ -171,6 +186,9 @@ true, true, false, + true, + true, + true, true ] }, diff --git a/backend/.sqlx/query-1ace9bdcde90fd2261fd64344a2d9474b17887711128dbb2ef15d247d50686b0.json b/backend/.sqlx/query-1ace9bdcde90fd2261fd64344a2d9474b17887711128dbb2ef15d247d50686b0.json new file mode 100644 index 0000000000..9a8ef973a4 --- /dev/null +++ b/backend/.sqlx/query-1ace9bdcde90fd2261fd64344a2d9474b17887711128dbb2ef15d247d50686b0.json @@ -0,0 +1,22 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT teams_team_id FROM workspace_settings WHERE workspace_id = $1", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "teams_team_id", + "type_info": "Text" + } + ], + "parameters": { + "Left": [ + "Text" + ] + }, + "nullable": [ + true + ] + }, + "hash": "1ace9bdcde90fd2261fd64344a2d9474b17887711128dbb2ef15d247d50686b0" +} diff --git a/backend/.sqlx/query-23c37d36e16251763fabf194e41de63612a7506cc0671b0eb83e528c1c839db4.json b/backend/.sqlx/query-23c37d36e16251763fabf194e41de63612a7506cc0671b0eb83e528c1c839db4.json new file mode 100644 index 0000000000..917540aec4 --- /dev/null +++ b/backend/.sqlx/query-23c37d36e16251763fabf194e41de63612a7506cc0671b0eb83e528c1c839db4.json @@ -0,0 +1,14 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE workspace_settings\n SET teams_team_id = null, teams_team_name = null WHERE workspace_id = $1", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Text" + ] + }, + "nullable": [] + }, + "hash": "23c37d36e16251763fabf194e41de63612a7506cc0671b0eb83e528c1c839db4" +} diff --git a/backend/.sqlx/query-2fa27b0a71740e4e168879cf9a58ed593004c22bb5d11170b3196e290dd1d966.json b/backend/.sqlx/query-2fa27b0a71740e4e168879cf9a58ed593004c22bb5d11170b3196e290dd1d966.json new file mode 100644 index 0000000000..704778d04a --- /dev/null +++ b/backend/.sqlx/query-2fa27b0a71740e4e168879cf9a58ed593004c22bb5d11170b3196e290dd1d966.json @@ -0,0 +1,26 @@ +{ + "db_name": "PostgreSQL", + "query": "\n WITH assigned_teams AS (\n SELECT teams_team_id\n FROM workspace_settings\n ),\n all_teams AS (\n SELECT jsonb_array_elements(value::jsonb) AS team\n FROM global_settings\n WHERE name = 'teams'\n )\n SELECT team->>'team_name' AS team_name, team->>'team_internal_id' AS team_id\n FROM all_teams\n WHERE NOT EXISTS (\n SELECT 1\n FROM assigned_teams\n WHERE assigned_teams.teams_team_id = team->>'team_internal_id'\n )\n AND team->>'team_name' IS NOT NULL\n AND team->>'team_id' IS NOT NULL\n ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "team_name", + "type_info": "Text" + }, + { + "ordinal": 1, + "name": "team_id", + "type_info": "Text" + } + ], + "parameters": { + "Left": [] + }, + "nullable": [ + null, + null + ] + }, + "hash": "2fa27b0a71740e4e168879cf9a58ed593004c22bb5d11170b3196e290dd1d966" +} diff --git a/backend/.sqlx/query-3b02f3ec6b92706c26065b2fa703cd1a1d6eca4083286c6f29c9acba522d2fe3.json b/backend/.sqlx/query-3b02f3ec6b92706c26065b2fa703cd1a1d6eca4083286c6f29c9acba522d2fe3.json new file mode 100644 index 0000000000..7c35515d12 --- /dev/null +++ b/backend/.sqlx/query-3b02f3ec6b92706c26065b2fa703cd1a1d6eca4083286c6f29c9acba522d2fe3.json @@ -0,0 +1,22 @@ +{ + "db_name": "PostgreSQL", + "query": "\n SELECT EXISTS (SELECT 1\n FROM workspace_settings\n WHERE workspace_id <> $1\n AND teams_command_script IS NOT NULL\n AND teams_team_id IS NOT NULL\n AND teams_team_id = (SELECT teams_team_id FROM workspace_settings WHERE workspace_id = $1))\n ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "exists", + "type_info": "Bool" + } + ], + "parameters": { + "Left": [ + "Text" + ] + }, + "nullable": [ + null + ] + }, + "hash": "3b02f3ec6b92706c26065b2fa703cd1a1d6eca4083286c6f29c9acba522d2fe3" +} diff --git a/backend/.sqlx/query-551c78392919e18019bb0a4344fb1bd45853bf5b72e0ab991e0e61fedcfb42fc.json b/backend/.sqlx/query-551c78392919e18019bb0a4344fb1bd45853bf5b72e0ab991e0e61fedcfb42fc.json new file mode 100644 index 0000000000..4a9bcd8cf3 --- /dev/null +++ b/backend/.sqlx/query-551c78392919e18019bb0a4344fb1bd45853bf5b72e0ab991e0e61fedcfb42fc.json @@ -0,0 +1,16 @@ +{ + "db_name": "PostgreSQL", + "query": "\n UPDATE workspace_settings\n SET teams_team_id = $1, teams_team_name = $2\n WHERE workspace_id = $3\n AND NOT EXISTS (\n SELECT 1 FROM workspace_settings\n WHERE teams_team_id = $1 AND workspace_id <> $2\n )\n ", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Text", + "Text", + "Text" + ] + }, + "nullable": [] + }, + "hash": "551c78392919e18019bb0a4344fb1bd45853bf5b72e0ab991e0e61fedcfb42fc" +} diff --git a/backend/.sqlx/query-55cb03040bc2a8c53dd7fbb42bbdcc40f463cbc52d94ed9315cf9a547d4c89f2.json b/backend/.sqlx/query-55cb03040bc2a8c53dd7fbb42bbdcc40f463cbc52d94ed9315cf9a547d4c89f2.json index 920176991b..14685a8bfa 100644 --- a/backend/.sqlx/query-55cb03040bc2a8c53dd7fbb42bbdcc40f463cbc52d94ed9315cf9a547d4c89f2.json +++ b/backend/.sqlx/query-55cb03040bc2a8c53dd7fbb42bbdcc40f463cbc52d94ed9315cf9a547d4c89f2.json @@ -137,6 +137,21 @@ "ordinal": 26, "name": "code_completion_model", "type_info": "Varchar" + }, + { + "ordinal": 27, + "name": "teams_command_script", + "type_info": "Text" + }, + { + "ordinal": 28, + "name": "teams_team_id", + "type_info": "Text" + }, + { + "ordinal": 29, + "name": "teams_team_name", + "type_info": "Text" } ], "parameters": { @@ -171,6 +186,9 @@ true, true, false, + true, + true, + true, true ] }, diff --git a/backend/.sqlx/query-72f98539ff9874479f6fc0e9f45f55354ad0397356c67a6162249a3cc553f125.json b/backend/.sqlx/query-72f98539ff9874479f6fc0e9f45f55354ad0397356c67a6162249a3cc553f125.json new file mode 100644 index 0000000000..1f10da84cf --- /dev/null +++ b/backend/.sqlx/query-72f98539ff9874479f6fc0e9f45f55354ad0397356c67a6162249a3cc553f125.json @@ -0,0 +1,53 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT\n workspace.id AS \"id!\",\n workspace.name AS \"name!\",\n workspace.owner AS \"owner!\",\n workspace.deleted AS \"deleted!\",\n workspace.premium AS \"premium!\",\n workspace_settings.color AS \"color!\"\n FROM workspace\n LEFT JOIN workspace_settings ON workspace.id = workspace_settings.workspace_id\n LIMIT $1 OFFSET $2", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "id!", + "type_info": "Varchar" + }, + { + "ordinal": 1, + "name": "name!", + "type_info": "Varchar" + }, + { + "ordinal": 2, + "name": "owner!", + "type_info": "Varchar" + }, + { + "ordinal": 3, + "name": "deleted!", + "type_info": "Bool" + }, + { + "ordinal": 4, + "name": "premium!", + "type_info": "Bool" + }, + { + "ordinal": 5, + "name": "color!", + "type_info": "Varchar" + } + ], + "parameters": { + "Left": [ + "Int8", + "Int8" + ] + }, + "nullable": [ + true, + true, + true, + true, + true, + true + ] + }, + "hash": "72f98539ff9874479f6fc0e9f45f55354ad0397356c67a6162249a3cc553f125" +} diff --git a/backend/.sqlx/query-ebbe03cad470d0c6ae98964f630315ff25dad08e4cb714718505b77a75d44b95.json b/backend/.sqlx/query-ebbe03cad470d0c6ae98964f630315ff25dad08e4cb714718505b77a75d44b95.json new file mode 100644 index 0000000000..e087310961 --- /dev/null +++ b/backend/.sqlx/query-ebbe03cad470d0c6ae98964f630315ff25dad08e4cb714718505b77a75d44b95.json @@ -0,0 +1,15 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE workspace_settings SET teams_command_script = $1 WHERE workspace_id = $2", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Text", + "Text" + ] + }, + "nullable": [] + }, + "hash": "ebbe03cad470d0c6ae98964f630315ff25dad08e4cb714718505b77a75d44b95" +} diff --git a/backend/.sqlx/query-eed16e356f3f36183c3db13fcc1950295e0d0fbdabb38434534fb3430eeddc25.json b/backend/.sqlx/query-eed16e356f3f36183c3db13fcc1950295e0d0fbdabb38434534fb3430eeddc25.json deleted file mode 100644 index 5e0817ae84..0000000000 --- a/backend/.sqlx/query-eed16e356f3f36183c3db13fcc1950295e0d0fbdabb38434534fb3430eeddc25.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "SELECT workspace.id, workspace.name, workspace.owner, workspace.deleted, workspace.premium, workspace_settings.color\n FROM workspace\n LEFT JOIN workspace_settings ON workspace.id = workspace_settings.workspace_id\n LIMIT $1 OFFSET $2", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "id", - "type_info": "Varchar" - }, - { - "ordinal": 1, - "name": "name", - "type_info": "Varchar" - }, - { - "ordinal": 2, - "name": "owner", - "type_info": "Varchar" - }, - { - "ordinal": 3, - "name": "deleted", - "type_info": "Bool" - }, - { - "ordinal": 4, - "name": "premium", - "type_info": "Bool" - }, - { - "ordinal": 5, - "name": "color", - "type_info": "Varchar" - } - ], - "parameters": { - "Left": [ - "Int8", - "Int8" - ] - }, - "nullable": [ - false, - false, - false, - false, - false, - true - ] - }, - "hash": "eed16e356f3f36183c3db13fcc1950295e0d0fbdabb38434534fb3430eeddc25" -} diff --git a/backend/ee-repo-ref.txt b/backend/ee-repo-ref.txt index b3154d15ef..fa0585b17f 100644 --- a/backend/ee-repo-ref.txt +++ b/backend/ee-repo-ref.txt @@ -1 +1 @@ -8dab3198496461e40610145e4c818fce2345e20a \ No newline at end of file +841642097f07cc1f765ef74059d66aae2eba2c1d \ No newline at end of file diff --git a/backend/migrations/20250128201251_teams_workspace_command_script.down.sql b/backend/migrations/20250128201251_teams_workspace_command_script.down.sql new file mode 100644 index 0000000000..5b8b721e87 --- /dev/null +++ b/backend/migrations/20250128201251_teams_workspace_command_script.down.sql @@ -0,0 +1,3 @@ +ALTER TABLE workspace_settings DROP COLUMN teams_command_script; +ALTER TABLE workspace_settings DROP COLUMN teams_team_id; +ALTER TABLE workspace_settings DROP COLUMN teams_team_name; \ No newline at end of file diff --git a/backend/migrations/20250128201251_teams_workspace_command_script.up.sql b/backend/migrations/20250128201251_teams_workspace_command_script.up.sql new file mode 100644 index 0000000000..5373b6c57b --- /dev/null +++ b/backend/migrations/20250128201251_teams_workspace_command_script.up.sql @@ -0,0 +1,3 @@ +ALTER TABLE workspace_settings ADD COLUMN teams_command_script TEXT DEFAULT NULL; +ALTER TABLE workspace_settings ADD COLUMN teams_team_id TEXT DEFAULT NULL; +ALTER TABLE workspace_settings ADD COLUMN teams_team_name TEXT DEFAULT NULL; diff --git a/backend/windmill-api/openapi.yaml b/backend/windmill-api/openapi.yaml index 1bcc37256e..d873da73fc 100644 --- a/backend/windmill-api/openapi.yaml +++ b/backend/windmill-api/openapi.yaml @@ -1728,6 +1728,12 @@ paths: type: string slack_command_script: type: string + teams_team_id: + type: string + teams_command_script: + type: string + teams_team_name: + type: string auto_invite_domain: type: string auto_invite_operator: @@ -1954,6 +1960,110 @@ paths: schema: type: string + /w/{workspace}/workspaces/edit_teams_command: + post: + summary: edit teams command + operationId: editTeamsCommand + tags: + - workspace + parameters: + - $ref: "#/components/parameters/WorkspaceId" + requestBody: + description: WorkspaceInvite + required: true + content: + application/json: + schema: + type: object + properties: + slack_command_script: + type: string + responses: + "200": + description: status + content: + text/plain: + schema: + type: string + + /w/{workspace}/workspaces/available_teams_ids: + get: + summary: list available teams ids + operationId: listAvailableTeamsIds + tags: + - workspace + parameters: + - $ref: "#/components/parameters/WorkspaceId" + responses: + "200": + description: status + content: + application/json: + schema: + type: array + items: + type: object + properties: + team_name: + type: string + team_id: + type: string + + /w/{workspace}/workspaces/available_teams_channels: + get: + summary: list available teams channels + operationId: listAvailableTeamsChannels + tags: + - workspace + parameters: + - $ref: "#/components/parameters/WorkspaceId" + responses: + "200": + description: status + content: + application/json: + schema: + type: array + items: + type: object + properties: + channel_name: + type: string + channel_id: + type: string + service_url: + type: string + tenant_id: + type: string + + /w/{workspace}/workspaces/connect_teams: + post: + summary: connect teams + operationId: connectTeams + tags: + - workspace + parameters: + - $ref: "#/components/parameters/WorkspaceId" + requestBody: + description: connect teams + required: true + content: + application/json: + schema: + type: object + properties: + team_id: + type: string + team_name: + type: string + responses: + "200": + description: status + content: + text/plain: + schema: + type: string + /w/{workspace}/workspaces/run_slack_message_test_job: post: summary: run a job that sends a message to Slack @@ -1987,6 +2097,40 @@ paths: properties: job_uuid: type: string + + /w/{workspace}/workspaces/run_teams_message_test_job: + post: + summary: run a job that sends a message to Teams + operationId: runTeamsMessageTestJob + tags: + - workspace + parameters: + - $ref: "#/components/parameters/WorkspaceId" + requestBody: + description: path to hub script to run and its corresponding args + required: true + content: + application/json: + schema: + type: object + properties: + hub_script_path: + type: string + channel: + type: string + test_msg: + type: string + + responses: + "200": + description: status + content: + text/json: + schema: + type: object + properties: + job_uuid: + type: string /w/{workspace}/workspaces/edit_deploy_to: post: @@ -3199,6 +3343,22 @@ paths: schema: type: string + /w/{workspace}/oauth/disconnect_teams: + post: + summary: disconnect teams + operationId: disconnectTeams + tags: + - oauth + parameters: + - $ref: "#/components/parameters/WorkspaceId" + responses: + "200": + description: disconnected teams + content: + text/plain: + schema: + type: string + /oauth/list_logins: get: summary: list oauth logins @@ -3289,6 +3449,41 @@ paths: items: $ref: '#/components/schemas/TeamInfo' + /teams/activities: + post: + summary: send update to Microsoft Teams activity + description: Respond to a Microsoft Teams activity after a workspace command is run + operationId: sendMessageToConversation + tags: + - teams + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - conversation_id + - text + properties: + conversation_id: + type: string + description: The ID of the Teams conversation/activity + success: + type: boolean + description: Used for styling the card conditionally + default: true + text: + type: string + description: The message text to be sent in the Teams card + card_block: + type: object + description: The card block to be sent in the Teams card + + responses: + '200': + description: Activity processed successfully + /w/{workspace}/resources/create: post: summary: create resource diff --git a/backend/windmill-api/src/lib.rs b/backend/windmill-api/src/lib.rs index 7ab057292f..b4c262b9eb 100644 --- a/backend/windmill-api/src/lib.rs +++ b/backend/windmill-api/src/lib.rs @@ -106,7 +106,6 @@ mod slack_approvals; mod smtp_server_ee; mod static_assets; mod stripe_ee; -#[cfg(feature = "enterprise")] mod teams_ee; mod tracing_init; mod triggers; diff --git a/backend/windmill-api/src/teams_ee.rs b/backend/windmill-api/src/teams_ee.rs index 2933d4214c..46cbe72059 100644 --- a/backend/windmill-api/src/teams_ee.rs +++ b/backend/windmill-api/src/teams_ee.rs @@ -1,5 +1,39 @@ +use http::status::StatusCode; +#[cfg(feature = "enterprise")] use axum::Router; +use windmill_common::error::Error; +pub async fn edit_teams_command() -> Result { + return Err(Error::BadRequest( + "Teams only available on enterprise".to_string(), + )); +} + +pub async fn workspaces_list_available_teams_ids() -> Result { + return Err(Error::BadRequest( + "Teams only available on enterprise".to_string(), + )); +} + +pub async fn connect_teams() -> Result { + return Err(Error::BadRequest( + "Teams only available on enterprise".to_string(), + )); +} + +pub async fn run_teams_message_test_job() -> Result { + return Err(Error::BadRequest( + "Teams only available on enterprise".to_string(), + )); +} + +pub async fn workspaces_list_available_teams_channels() -> Result { + return Err(Error::BadRequest( + "Teams only available on enterprise".to_string(), + )); +} + +#[cfg(feature = "enterprise")] pub fn teams_service() -> Router { Router::new() } \ No newline at end of file diff --git a/backend/windmill-api/src/workspaces.rs b/backend/windmill-api/src/workspaces.rs index f832b85f14..b2dbb9d2f7 100644 --- a/backend/windmill-api/src/workspaces.rs +++ b/backend/windmill-api/src/workspaces.rs @@ -58,6 +58,11 @@ use sqlx::{FromRow, Postgres, Transaction}; use windmill_common::oauth2::InstanceEvent; use windmill_common::utils::not_found_if_none; +use crate::teams_ee::{ + connect_teams, edit_teams_command, run_teams_message_test_job, + workspaces_list_available_teams_channels, workspaces_list_available_teams_ids, +}; + lazy_static::lazy_static! { static ref WORKSPACE_KEY_REGEXP: Regex = Regex::new("^[a-zA-Z0-9]{64}$").unwrap(); } @@ -73,10 +78,24 @@ pub fn workspaced_service() -> Router { .route("/get_settings", get(get_settings)) .route("/get_deploy_to", get(get_deploy_to)) .route("/edit_slack_command", post(edit_slack_command)) + .route("/edit_teams_command", post(edit_teams_command)) + .route( + "/available_teams_ids", + get(workspaces_list_available_teams_ids), + ) + .route( + "/available_teams_channels", + get(workspaces_list_available_teams_channels), + ) + .route("/connect_teams", post(connect_teams)) .route( "/run_slack_message_test_job", post(run_slack_message_test_job), ) + .route( + "/run_teams_message_test_job", + post(run_teams_message_test_job), + ) .route("/edit_webhook", post(edit_webhook)) .route("/edit_auto_invite", post(edit_auto_invite)) .route("/edit_deploy_to", post(edit_deploy_to)) @@ -168,9 +187,14 @@ pub struct WorkspaceSettings { #[serde(skip_serializing_if = "Option::is_none")] pub slack_team_id: Option, #[serde(skip_serializing_if = "Option::is_none")] + pub teams_team_id: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub teams_team_name: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub slack_name: Option, #[serde(skip_serializing_if = "Option::is_none")] pub slack_command_script: Option, + pub teams_command_script: Option, pub slack_email: String, #[serde(skip_serializing_if = "Option::is_none")] pub auto_invite_domain: Option, @@ -1380,9 +1404,15 @@ async fn list_workspaces_as_super_admin( let mut tx = user_db.begin(&authed).await?; let workspaces = sqlx::query_as!( Workspace, - "SELECT workspace.id, workspace.name, workspace.owner, workspace.deleted, workspace.premium, workspace_settings.color - FROM workspace - LEFT JOIN workspace_settings ON workspace.id = workspace_settings.workspace_id + "SELECT + workspace.id AS \"id!\", + workspace.name AS \"name!\", + workspace.owner AS \"owner!\", + workspace.deleted AS \"deleted!\", + workspace.premium AS \"premium!\", + workspace_settings.color AS \"color!\" + FROM workspace + LEFT JOIN workspace_settings ON workspace.id = workspace_settings.workspace_id LIMIT $1 OFFSET $2", per_page as i32, offset as i32 diff --git a/frontend/src/lib/components/AuthSettings.svelte b/frontend/src/lib/components/AuthSettings.svelte index f6db65526a..b9ea98aeb9 100644 --- a/frontend/src/lib/components/AuthSettings.svelte +++ b/frontend/src/lib/components/AuthSettings.svelte @@ -172,7 +172,7 @@
- +
{#each Object.keys(oauths) as k} diff --git a/frontend/src/lib/components/ConnectionSection.svelte b/frontend/src/lib/components/ConnectionSection.svelte new file mode 100644 index 0000000000..104d6527b5 --- /dev/null +++ b/frontend/src/lib/components/ConnectionSection.svelte @@ -0,0 +1,184 @@ + + +
+
Connect Workspace to {platform.charAt(0).toUpperCase() + platform.slice(1)}
+ + Connect your Windmill workspace to your {platform} workspace to trigger a script or a flow with a + '/windmill' command. + +
+ +{#if teamName} +
+
+ + {#if display_name} + Connected to Team '{display_name}' + {/if} +
+ {#if $enterpriseLicense || platform === 'slack'} + + + {/if} +
+{:else} +
+ {#if platform === 'teams'} + + {#if $enterpriseLicense} +
+ +
+
+ +
+ {/if} + {:else} + + {/if} + Not connected +
+{/if} + +
+
Script or flow to run on /windmill command
+
+ {#if !teamName || (!$enterpriseLicense && platform === 'teams')} +
+ {/if} + +
+ +
+ Pick a script or flow meant to be triggered when the `/windmill` command is invoked. Upon + connection, templates for a script + and flow are available. + +

+ + The script or flow chosen is passed the parameters `response_url: string` and `text: string` + respectively the url to reply directly to the trigger and the text of the command. + +

+ + It can take additionally the following args: channel_id, user_name, user_id, command, + trigger_id, api_app_id + +

+ + + The script or flow is permissioned as group "{platform}" that will be automatically created + after connection to {platform.charAt(0).toUpperCase() + platform.slice(1)}. + + +

+ + See more on + documentation. +
+
diff --git a/frontend/src/lib/components/ErrorOrRecoveryHandler.svelte b/frontend/src/lib/components/ErrorOrRecoveryHandler.svelte index 57674aedef..6c3b4790ba 100644 --- a/frontend/src/lib/components/ErrorOrRecoveryHandler.svelte +++ b/frontend/src/lib/components/ErrorOrRecoveryHandler.svelte @@ -1,10 +1,13 @@ diff --git a/frontend/src/lib/components/FlowStatusViewerInner.svelte b/frontend/src/lib/components/FlowStatusViewerInner.svelte index 5f9faa8ed9..cbd1f9bfbd 100644 --- a/frontend/src/lib/components/FlowStatusViewerInner.svelte +++ b/frontend/src/lib/components/FlowStatusViewerInner.svelte @@ -88,7 +88,7 @@ flowJobIds?.flowJobs?.map((x, id) => `iter #${id + 1} not loaded by frontend yet`) ?? [] let retry_selected = '' - let timeout: NodeJS.Timeout + let timeout: NodeJS.Timeout | undefined = undefined let localModuleStates: Writable> = writable({}) let localDurationStatuses: Writable> = writable({}) @@ -403,7 +403,7 @@ } } - $: isForloopSelected && globalModuleStates && loadJobInProgress() + $: isForloopSelected && globalModuleStates && debounceLoadJobInProgress() async function getNewJob(jobId: string, initialJob: Job | undefined) { if ( @@ -421,10 +421,33 @@ } } + let debounceJobId: string | undefined = undefined + let lastRefreshed: Date | undefined = undefined + function debounceLoadJobInProgress() { + const pollingRate = reducedPolling ? 5000 : 1000 + if ( + lastRefreshed && + new Date().getTime() - lastRefreshed.getTime() < pollingRate && + debounceJobId == jobId + ) { + timeout && clearTimeout(timeout) + } + timeout = setTimeout(() => { + loadJobInProgress() + lastRefreshed = new Date() + debounceJobId = jobId + timeout = undefined + }, pollingRate) + } + let errorCount = 0 let notAnonynmous = false + let started = false async function loadJobInProgress() { - dispatch('start') + if (!started) { + started = true + dispatch('start') + } if (jobId != '00000000-0000-0000-0000-000000000000') { try { const newJob = await getNewJob(jobId, initialJob) @@ -447,7 +470,7 @@ } } if (job?.type !== 'CompletedJob' && errorCount < 4 && !destroyed) { - timeout = setTimeout(() => loadJobInProgress(), reducedPolling ? 5000 : 1000) + debounceLoadJobInProgress() } else { dispatch('done', job) } diff --git a/frontend/src/routes/(root)/(logged)/run/[...run]/+page.svelte b/frontend/src/routes/(root)/(logged)/run/[...run]/+page.svelte index 7d9d8da47c..4cc1f4c826 100644 --- a/frontend/src/routes/(root)/(logged)/run/[...run]/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/run/[...run]/+page.svelte @@ -388,19 +388,20 @@ {/if} - - job?.['result'] != undefined && (viewTab = 'result')} - bind:this={testJobLoader} - bind:getLogs - bind:isLoading={testIsLoading} - bind:job - bind:jobUpdateLastFetch - workspaceOverride={$workspaceStore} - bind:notfound -/> +{#if job?.job_kind != 'flow' && job?.job_kind != 'flownode' && job?.job_kind != 'flowpreview'} + job?.['result'] != undefined && (viewTab = 'result')} + bind:this={testJobLoader} + bind:getLogs + bind:isLoading={testIsLoading} + bind:job + bind:jobUpdateLastFetch + workspaceOverride={$workspaceStore} + bind:notfound + /> +{/if} From e0f3e0b1f8a3ff55629ed22a543b752ecc108d3d Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Fri, 14 Feb 2025 16:51:49 +0100 Subject: [PATCH 37/47] nit --- frontend/src/routes/(root)/(logged)/run/[...run]/+page.svelte | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/routes/(root)/(logged)/run/[...run]/+page.svelte b/frontend/src/routes/(root)/(logged)/run/[...run]/+page.svelte index 4cc1f4c826..3c125343b7 100644 --- a/frontend/src/routes/(root)/(logged)/run/[...run]/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/run/[...run]/+page.svelte @@ -342,6 +342,7 @@ path: job.script_path! }) } + job = undefined await goto('/run/' + id + '?workspace=' + $workspaceStore) } else { From cfe5232f56ad03713f858d8a7567dfaa9b07cc2e Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Fri, 14 Feb 2025 17:15:59 +0100 Subject: [PATCH 38/47] nits --- .../src/lib/components/FlowJobResult.svelte | 2 +- .../lib/components/FlowStatusViewerInner.svelte | 3 +-- .../(root)/(logged)/run/[...run]/+page.svelte | 17 ++++++++++------- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/frontend/src/lib/components/FlowJobResult.svelte b/frontend/src/lib/components/FlowJobResult.svelte index 6160ebe45b..d603d72a92 100644 --- a/frontend/src/lib/components/FlowJobResult.svelte +++ b/frontend/src/lib/components/FlowJobResult.svelte @@ -77,7 +77,7 @@ class:border={!noBorder} class="grid {!col ? 'grid-cols-2' - : 'grid-rows-2'} shadow border border-tertiary-inverse grow overflow-hidden" + : 'grid-rows-2 max-h-screen'} shadow border border-tertiary-inverse grow overflow-hidden" >
Result diff --git a/frontend/src/lib/components/FlowStatusViewerInner.svelte b/frontend/src/lib/components/FlowStatusViewerInner.svelte index cbd1f9bfbd..d356196aa3 100644 --- a/frontend/src/lib/components/FlowStatusViewerInner.svelte +++ b/frontend/src/lib/components/FlowStatusViewerInner.svelte @@ -1309,7 +1309,7 @@ durationStatuses={localDurationStatuses} /> {:else if rightColumnSelect == 'node_status'} -
+
{#if selectedNode} {@const node = $localModuleStates[selectedNode]} @@ -1388,7 +1388,6 @@ />
{/if} - Date: Fri, 14 Feb 2025 18:49:26 +0100 Subject: [PATCH 39/47] nits --- frontend/src/lib/components/FlowJobResult.svelte | 1 - frontend/src/routes/(root)/(logged)/run/[...run]/+page.svelte | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/frontend/src/lib/components/FlowJobResult.svelte b/frontend/src/lib/components/FlowJobResult.svelte index d603d72a92..ca071370a4 100644 --- a/frontend/src/lib/components/FlowJobResult.svelte +++ b/frontend/src/lib/components/FlowJobResult.svelte @@ -43,7 +43,6 @@ } async function getLogs() { - console.log('getLogs', iteration, jobId) iteration += 1 if (jobId) { const getUpdate = await JobService.getJobUpdates({ diff --git a/frontend/src/routes/(root)/(logged)/run/[...run]/+page.svelte b/frontend/src/routes/(root)/(logged)/run/[...run]/+page.svelte index 7105094747..1b817d15d6 100644 --- a/frontend/src/routes/(root)/(logged)/run/[...run]/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/run/[...run]/+page.svelte @@ -927,6 +927,9 @@ on:jobsLoaded={({ detail }) => { job = detail }} + on:done={(e) => { + job = e.detail + }} initialJob={job} workspaceId={$workspaceStore} bind:selectedJobStep From 41eecc1437301bea557fb467cc48b502162de419 Mon Sep 17 00:00:00 2001 From: HugoCasa Date: Fri, 14 Feb 2025 19:03:40 +0100 Subject: [PATCH 40/47] fix: static website serving (#5298) --- backend/windmill-api/src/http_triggers.rs | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/backend/windmill-api/src/http_triggers.rs b/backend/windmill-api/src/http_triggers.rs index 0d6be258e1..722a639842 100644 --- a/backend/windmill-api/src/http_triggers.rs +++ b/backend/windmill-api/src/http_triggers.rs @@ -538,7 +538,7 @@ async fn get_http_route_trigger( let route_path = trigger.route_path.clone(); if trigger.is_static_website { router - .insert(format!("{}/*wm_subpath", route_path), idx) + .insert(format!("/{}/*wm_subpath", route_path), idx) .unwrap_or_else(|e| { tracing::warn!( "Failed to consider http trigger route {}: {:?}", @@ -547,19 +547,22 @@ async fn get_http_route_trigger( ); }); } - router.insert(route_path.as_str(), idx).unwrap_or_else(|e| { - tracing::warn!( - "Failed to consider http trigger route {}: {:?}", - route_path, - e, - ); - }); + router + .insert(format!("/{}", route_path), idx) + .unwrap_or_else(|e| { + tracing::warn!( + "Failed to consider http trigger route {}: {:?}", + route_path, + e, + ); + }); } - let trigger_idx = router.at(route_path.0.as_str()).ok(); + let requested_path = format!("/{}", route_path.0); + let trigger_idx = router.at(requested_path.as_str()).ok(); let matchit::Match { value: trigger_idx, params } = - not_found_if_none(trigger_idx, "Trigger", route_path.0.as_str())?; + not_found_if_none(trigger_idx, "Trigger", requested_path.as_str())?; let trigger = triggers.remove(trigger_idx.to_owned()); From dad829adf4bff97e998f7d18e0bbafb8497d4198 Mon Sep 17 00:00:00 2001 From: Alexander Petric Date: Fri, 14 Feb 2025 14:48:33 -0500 Subject: [PATCH 41/47] feat: adding docker log rotation by default in docker compose (#5295) * feat: adding docker log rotation by default in docker compose * add newline * add compression --- .env | 4 ++++ docker-compose.yml | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/.env b/.env index d4a48661cd..da41f78d5c 100644 --- a/.env +++ b/.env @@ -7,3 +7,7 @@ WM_IMAGE=ghcr.io/windmill-labs/windmill:main # To use another port than :80, setup the Caddyfile and the caddy section of the docker-compose to your needs: https://caddyserver.com/docs/getting-started # To have caddy take care of automatic TLS + +# To rotate logs, set the following variables: +#LOG_MAX_SIZE=10m +#LOG_MAX_FILE=3 diff --git a/docker-compose.yml b/docker-compose.yml index df2a99b38d..a8ac7ba565 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,12 @@ version: "3.7" +x-logging: &default-logging + driver: "json-file" + options: + max-size: "${LOG_MAX_SIZE:-20m}" + max-file: "${LOG_MAX_FILE:-10}" + compress: "true" + services: db: deploy: @@ -22,6 +29,7 @@ services: interval: 10s timeout: 5s retries: 5 + logging: *default-logging windmill_server: image: ${WM_IMAGE} @@ -40,6 +48,7 @@ services: condition: service_healthy volumes: - worker_logs:/tmp/windmill/logs + logging: *default-logging windmill_worker: image: ${WM_IMAGE} @@ -65,6 +74,7 @@ services: - /var/run/docker.sock:/var/run/docker.sock - worker_dependency_cache:/tmp/windmill/cache - worker_logs:/tmp/windmill/logs + logging: *default-logging ## This worker is specialized for "native" jobs. Native jobs run in-process and thus are much more lightweight than other jobs windmill_worker_native: @@ -90,6 +100,7 @@ services: condition: service_healthy volumes: - worker_logs:/tmp/windmill/logs + logging: *default-logging # This worker is specialized for reports or scraping jobs. It is assigned the "reports" worker group which has an init script that installs chromium and can be targeted by using the "chromium" worker tag. # windmill_worker_reports: # image: ${WM_IMAGE} @@ -135,6 +146,7 @@ services: volumes: - windmill_index:/tmp/windmill/search - worker_logs:/tmp/windmill/logs + logging: *default-logging lsp: image: ghcr.io/windmill-labs/windmill-lsp:latest @@ -144,6 +156,7 @@ services: - 3001 volumes: - lsp_cache:/pyls/.cache + logging: *default-logging multiplayer: image: ghcr.io/windmill-labs/windmill-multiplayer:latest @@ -152,6 +165,7 @@ services: restart: unless-stopped expose: - 3002 + logging: *default-logging caddy: image: ghcr.io/windmill-labs/caddy-l4:latest @@ -170,6 +184,7 @@ services: - BASE_URL=":80" # - BASE_URL=":443" # uncomment and comment line above to enable HTTPS via custom certificate and key files # - BASE_URL=mydomain.com # Uncomment and comment line above to enable HTTPS handling by Caddy + logging: *default-logging volumes: db_data: null From 8adf02ba3c8aaf98b63f92fe61046f6cdffbba71 Mon Sep 17 00:00:00 2001 From: Alexander Petric Date: Fri, 14 Feb 2025 17:07:17 -0500 Subject: [PATCH 42/47] reactivity fix on teams workspace dropdown (#5300) --- frontend/src/lib/components/ConnectionSection.svelte | 2 +- frontend/src/lib/components/ScheduleEditorInner.svelte | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/frontend/src/lib/components/ConnectionSection.svelte b/frontend/src/lib/components/ConnectionSection.svelte index 104d6527b5..c0ad6eea20 100644 --- a/frontend/src/lib/components/ConnectionSection.svelte +++ b/frontend/src/lib/components/ConnectionSection.svelte @@ -35,7 +35,7 @@ isFetching = false } - $: workspaceStore && platform && $enterpriseLicense === 'teams' && loadTeams() + $: workspaceStore && platform && $enterpriseLicense && loadTeams() async function connectTeams() { const selectedTeam = teams.find((team) => team.team_id === selected_teams_team) diff --git a/frontend/src/lib/components/ScheduleEditorInner.svelte b/frontend/src/lib/components/ScheduleEditorInner.svelte index 4d19aa1991..722354c8df 100644 --- a/frontend/src/lib/components/ScheduleEditorInner.svelte +++ b/frontend/src/lib/components/ScheduleEditorInner.svelte @@ -344,7 +344,6 @@ failedTimes = s.on_failure_times ?? 1 failedExact = s.on_failure_exact ?? false errorHandlerExtraArgs = s.on_failure_extra_args ?? {} - console.log('errorHandlerExtraArgs', errorHandlerExtraArgs) errorHandlerSelected = getHandlerType('error', errorHandlerPath) } else { errorHandlerPath = undefined From f1d9922688bf9caabddf8d690aedaf56efc43ad8 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Fri, 14 Feb 2025 23:07:39 +0100 Subject: [PATCH 43/47] chore(main): release 1.463.0 (#5293) * chore(main): release 1.463.0 * Apply automatic changes --------- Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com> --- CHANGELOG.md | 17 ++++++ backend/Cargo.lock | 58 +++++++++---------- backend/Cargo.toml | 4 +- backend/windmill-api/openapi.yaml | 2 +- benchmarks/lib.ts | 2 +- cli/main.ts | 2 +- frontend/package-lock.json | 4 +- frontend/package.json | 2 +- lsp/Pipfile | 4 +- openflow.openapi.yaml | 2 +- .../WindmillClient/WindmillClient.psd1 | 2 +- python-client/wmill/pyproject.toml | 2 +- python-client/wmill_pg/pyproject.toml | 2 +- typescript-client/jsr.json | 2 +- typescript-client/package.json | 2 +- version.txt | 2 +- 16 files changed, 63 insertions(+), 46 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a535cc09f7..f1063c11aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,22 @@ # Changelog +## [1.463.0](https://github.com/windmill-labs/windmill/compare/v1.462.1...v1.463.0) (2025-02-14) + + +### Features + +* adding docker log rotation by default in docker compose ([#5295](https://github.com/windmill-labs/windmill/issues/5295)) ([dad829a](https://github.com/windmill-labs/windmill/commit/dad829adf4bff97e998f7d18e0bbafb8497d4198)) +* parse script for preprocessor/no_main_func on deploy ([#5292](https://github.com/windmill-labs/windmill/issues/5292)) ([28558e6](https://github.com/windmill-labs/windmill/commit/28558e674f60fef1b165a79c039b1b450759d500)) + + +### Bug Fixes + +* display branch chosen even if emoty branch ([77a8eed](https://github.com/windmill-labs/windmill/commit/77a8eedc96171e9f84463407bdc5aec9b7b10d62)) +* improve handling of empty branches and loops ([e7d4582](https://github.com/windmill-labs/windmill/commit/e7d458278969897aa7312dcd20a8091aaad772d7)) +* improve runs page load time ([266f820](https://github.com/windmill-labs/windmill/commit/266f82046ad287163d24910902393cd63156ca1d)) +* static website serving ([#5298](https://github.com/windmill-labs/windmill/issues/5298)) ([41eecc1](https://github.com/windmill-labs/windmill/commit/41eecc1437301bea557fb467cc48b502162de419)) +* users should be able to see their own jobs ([9ccadb6](https://github.com/windmill-labs/windmill/commit/9ccadb6085498119bdfcc172d52c7fce1eb3336e)) + ## [1.462.3](https://github.com/windmill-labs/windmill/compare/v1.462.1...v1.462.2) (2025-02-14) diff --git a/backend/Cargo.lock b/backend/Cargo.lock index 9c02a43c36..edb01c756a 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -6608,9 +6608,9 @@ dependencies = [ [[package]] name = "psm" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200b9ff220857e53e184257720a14553b2f4aa02577d2ed9842d45d4b9654810" +checksum = "f58e5423e24c18cc840e1c98370b3993c6649cd1678b4d24318bcf0a083cbe88" dependencies = [ "cc", ] @@ -6737,9 +6737,9 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.9" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c40286217b4ba3a71d644d752e6a0b71f13f1b6a2c5311acfcbe0c2418ed904" +checksum = "e46f3055866785f6b92bc6164b76be02ca8f2eb4b002c0354b28cf4c119e5944" dependencies = [ "cfg_aliases", "libc", @@ -10858,7 +10858,7 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windmill" -version = "1.462.3" +version = "1.463.0" dependencies = [ "anyhow", "axum", @@ -10901,7 +10901,7 @@ dependencies = [ [[package]] name = "windmill-api" -version = "1.462.3" +version = "1.463.0" dependencies = [ "anyhow", "argon2", @@ -10995,7 +10995,7 @@ dependencies = [ [[package]] name = "windmill-api-client" -version = "1.462.3" +version = "1.463.0" dependencies = [ "base64 0.22.1", "chrono", @@ -11013,7 +11013,7 @@ dependencies = [ [[package]] name = "windmill-audit" -version = "1.462.3" +version = "1.463.0" dependencies = [ "chrono", "serde", @@ -11026,7 +11026,7 @@ dependencies = [ [[package]] name = "windmill-autoscaling" -version = "1.462.3" +version = "1.463.0" dependencies = [ "anyhow", "serde", @@ -11040,7 +11040,7 @@ dependencies = [ [[package]] name = "windmill-common" -version = "1.462.3" +version = "1.463.0" dependencies = [ "anyhow", "async-stream", @@ -11099,7 +11099,7 @@ dependencies = [ [[package]] name = "windmill-git-sync" -version = "1.462.3" +version = "1.463.0" dependencies = [ "regex", "serde", @@ -11113,7 +11113,7 @@ dependencies = [ [[package]] name = "windmill-indexer" -version = "1.462.3" +version = "1.463.0" dependencies = [ "anyhow", "bytes", @@ -11136,7 +11136,7 @@ dependencies = [ [[package]] name = "windmill-macros" -version = "1.462.3" +version = "1.463.0" dependencies = [ "itertools 0.14.0", "lazy_static", @@ -11148,7 +11148,7 @@ dependencies = [ [[package]] name = "windmill-parser" -version = "1.462.3" +version = "1.463.0" dependencies = [ "convert_case 0.6.0", "serde", @@ -11157,7 +11157,7 @@ dependencies = [ [[package]] name = "windmill-parser-bash" -version = "1.462.3" +version = "1.463.0" dependencies = [ "anyhow", "lazy_static", @@ -11169,7 +11169,7 @@ dependencies = [ [[package]] name = "windmill-parser-csharp" -version = "1.462.3" +version = "1.463.0" dependencies = [ "anyhow", "serde_json", @@ -11181,7 +11181,7 @@ dependencies = [ [[package]] name = "windmill-parser-go" -version = "1.462.3" +version = "1.463.0" dependencies = [ "anyhow", "gosyn", @@ -11193,7 +11193,7 @@ dependencies = [ [[package]] name = "windmill-parser-graphql" -version = "1.462.3" +version = "1.463.0" dependencies = [ "anyhow", "lazy_static", @@ -11205,7 +11205,7 @@ dependencies = [ [[package]] name = "windmill-parser-php" -version = "1.462.3" +version = "1.463.0" dependencies = [ "anyhow", "itertools 0.14.0", @@ -11216,7 +11216,7 @@ dependencies = [ [[package]] name = "windmill-parser-py" -version = "1.462.3" +version = "1.463.0" dependencies = [ "anyhow", "itertools 0.14.0", @@ -11227,7 +11227,7 @@ dependencies = [ [[package]] name = "windmill-parser-py-imports" -version = "1.462.3" +version = "1.463.0" dependencies = [ "anyhow", "async-recursion", @@ -11247,7 +11247,7 @@ dependencies = [ [[package]] name = "windmill-parser-rust" -version = "1.462.3" +version = "1.463.0" dependencies = [ "anyhow", "convert_case 0.6.0", @@ -11264,7 +11264,7 @@ dependencies = [ [[package]] name = "windmill-parser-sql" -version = "1.462.3" +version = "1.463.0" dependencies = [ "anyhow", "lazy_static", @@ -11276,7 +11276,7 @@ dependencies = [ [[package]] name = "windmill-parser-ts" -version = "1.462.3" +version = "1.463.0" dependencies = [ "anyhow", "lazy_static", @@ -11294,7 +11294,7 @@ dependencies = [ [[package]] name = "windmill-parser-wasm" -version = "1.462.3" +version = "1.463.0" dependencies = [ "anyhow", "getrandom 0.2.15", @@ -11316,7 +11316,7 @@ dependencies = [ [[package]] name = "windmill-parser-yaml" -version = "1.462.3" +version = "1.463.0" dependencies = [ "anyhow", "serde_json", @@ -11326,7 +11326,7 @@ dependencies = [ [[package]] name = "windmill-queue" -version = "1.462.3" +version = "1.463.0" dependencies = [ "anyhow", "async-recursion", @@ -11359,7 +11359,7 @@ dependencies = [ [[package]] name = "windmill-sql-datatype-parser-wasm" -version = "1.462.3" +version = "1.463.0" dependencies = [ "wasm-bindgen", "wasm-bindgen-test", @@ -11369,7 +11369,7 @@ dependencies = [ [[package]] name = "windmill-worker" -version = "1.462.3" +version = "1.463.0" dependencies = [ "anyhow", "async-recursion", diff --git a/backend/Cargo.toml b/backend/Cargo.toml index 3e60f4d878..3952f0b5c1 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "windmill" -version = "1.462.3" +version = "1.463.0" authors.workspace = true edition.workspace = true @@ -30,7 +30,7 @@ members = [ ] [workspace.package] -version = "1.462.3" +version = "1.463.0" authors = ["Ruben Fiszel "] edition = "2021" diff --git a/backend/windmill-api/openapi.yaml b/backend/windmill-api/openapi.yaml index 2b9bfe7c0f..87af4c763d 100644 --- a/backend/windmill-api/openapi.yaml +++ b/backend/windmill-api/openapi.yaml @@ -1,7 +1,7 @@ openapi: "3.0.3" info: - version: 1.462.3 + version: 1.463.0 title: Windmill API contact: diff --git a/benchmarks/lib.ts b/benchmarks/lib.ts index d55c726139..12d38c1797 100644 --- a/benchmarks/lib.ts +++ b/benchmarks/lib.ts @@ -2,7 +2,7 @@ import { sleep } from "https://deno.land/x/sleep@v1.2.1/mod.ts"; import * as windmill from "https://deno.land/x/windmill@v1.174.0/mod.ts"; import * as api from "https://deno.land/x/windmill@v1.174.0/windmill-api/index.ts"; -export const VERSION = "v1.462.3"; +export const VERSION = "v1.463.0"; export async function login(email: string, password: string): Promise { return await windmill.UserService.login({ diff --git a/cli/main.ts b/cli/main.ts index 1ae97653b6..847d32c1d3 100644 --- a/cli/main.ts +++ b/cli/main.ts @@ -62,7 +62,7 @@ export { // } // }); -export const VERSION = "1.462.3"; +export const VERSION = "1.463.0"; const command = new Command() .name("wmill") diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 87f3664686..bf535a2d6e 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "windmill-components", - "version": "1.462.3", + "version": "1.463.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "windmill-components", - "version": "1.462.3", + "version": "1.463.0", "license": "AGPL-3.0", "dependencies": { "@anthropic-ai/sdk": "^0.32.1", diff --git a/frontend/package.json b/frontend/package.json index 14762e9b43..1bb507930e 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "windmill-components", - "version": "1.462.3", + "version": "1.463.0", "scripts": { "dev": "vite dev", "build": "vite build", diff --git a/lsp/Pipfile b/lsp/Pipfile index 15339d6e59..0628a6f79a 100644 --- a/lsp/Pipfile +++ b/lsp/Pipfile @@ -4,8 +4,8 @@ verify_ssl = true name = "pypi" [packages] -wmill = ">=1.462.3" -wmill_pg = ">=1.462.3" +wmill = ">=1.463.0" +wmill_pg = ">=1.463.0" sendgrid = "*" mysql-connector-python = "*" pymongo = "*" diff --git a/openflow.openapi.yaml b/openflow.openapi.yaml index 18bc00e847..e48c92ac39 100644 --- a/openflow.openapi.yaml +++ b/openflow.openapi.yaml @@ -1,7 +1,7 @@ openapi: "3.0.3" info: - version: 1.462.3 + version: 1.463.0 title: OpenFlow Spec contact: name: Ruben Fiszel diff --git a/powershell-client/WindmillClient/WindmillClient.psd1 b/powershell-client/WindmillClient/WindmillClient.psd1 index 13f17174b8..7c4e2f0fef 100644 --- a/powershell-client/WindmillClient/WindmillClient.psd1 +++ b/powershell-client/WindmillClient/WindmillClient.psd1 @@ -12,7 +12,7 @@ RootModule = 'WindmillClient.psm1' # Version number of this module. - ModuleVersion = '1.462.3' + ModuleVersion = '1.463.0' # Supported PSEditions # CompatiblePSEditions = @() diff --git a/python-client/wmill/pyproject.toml b/python-client/wmill/pyproject.toml index 7b7cdcbd0b..402ecfad42 100644 --- a/python-client/wmill/pyproject.toml +++ b/python-client/wmill/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "wmill" -version = "1.462.3" +version = "1.463.0" description = "A client library for accessing Windmill server wrapping the Windmill client API" license = "Apache-2.0" homepage = "https://windmill.dev" diff --git a/python-client/wmill_pg/pyproject.toml b/python-client/wmill_pg/pyproject.toml index 10fcb541c6..e0de24be3b 100644 --- a/python-client/wmill_pg/pyproject.toml +++ b/python-client/wmill_pg/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "wmill-pg" -version = "1.462.3" +version = "1.463.0" description = "An extension client for the wmill client library focused on pg" license = "Apache-2.0" homepage = "https://windmill.dev" diff --git a/typescript-client/jsr.json b/typescript-client/jsr.json index 71c58a044d..2a86dfa9f7 100644 --- a/typescript-client/jsr.json +++ b/typescript-client/jsr.json @@ -1,6 +1,6 @@ { "name": "@windmill/windmill", - "version": "1.462.3", + "version": "1.463.0", "exports": "./src/index.ts", "publish": { "exclude": ["!src", "./s3Types.ts", "./client.ts"] diff --git a/typescript-client/package.json b/typescript-client/package.json index ed36b757b9..aaf238c292 100644 --- a/typescript-client/package.json +++ b/typescript-client/package.json @@ -1,7 +1,7 @@ { "name": "windmill-client", "description": "Windmill SDK client for browsers and Node.js", - "version": "1.462.3", + "version": "1.463.0", "author": "Ruben Fiszel", "license": "Apache 2.0", "devDependencies": { diff --git a/version.txt b/version.txt index 7cce9443de..2b5a684cd4 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.462.3 +1.463.0 From 53f47bcfc84ed747b55d3a7d84ccf13ff1c43c97 Mon Sep 17 00:00:00 2001 From: pyranota <92104930+pyranota@users.noreply.github.com> Date: Sat, 15 Feb 2025 22:39:37 +0300 Subject: [PATCH 44/47] fix: not able to filter runs by schedule (#5302) --- backend/windmill-api/src/jobs.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/windmill-api/src/jobs.rs b/backend/windmill-api/src/jobs.rs index 092d6b69b1..ccb408c020 100644 --- a/backend/windmill-api/src/jobs.rs +++ b/backend/windmill-api/src/jobs.rs @@ -1319,7 +1319,7 @@ pub fn filter_list_queue_query( } if let Some(p) = &lq.schedule_path { sqlb.and_where_eq("trigger", "?".bind(p)); - sqlb.and_where_eq("trigger_kind", "schedule"); + sqlb.and_where_eq("trigger_kind", "'schedule'"); } if let Some(h) = &lq.script_hash { sqlb.and_where_eq("runnable_id", "?".bind(h)); From cad14c25f6a06c6592fb034722c4d2ae187d8694 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Sat, 15 Feb 2025 20:44:26 +0100 Subject: [PATCH 45/47] chore(main): release 1.463.1 (#5303) * chore(main): release 1.463.1 * Apply automatic changes --------- Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com> --- CHANGELOG.md | 7 ++ backend/Cargo.lock | 80 +++++++++---------- backend/Cargo.toml | 4 +- backend/windmill-api/openapi.yaml | 2 +- benchmarks/lib.ts | 2 +- cli/main.ts | 2 +- frontend/package-lock.json | 4 +- frontend/package.json | 2 +- lsp/Pipfile | 4 +- openflow.openapi.yaml | 2 +- .../WindmillClient/WindmillClient.psd1 | 2 +- python-client/wmill/pyproject.toml | 2 +- python-client/wmill_pg/pyproject.toml | 2 +- typescript-client/jsr.json | 2 +- typescript-client/package.json | 2 +- version.txt | 2 +- 16 files changed, 64 insertions(+), 57 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f1063c11aa..d1b0d4de92 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [1.463.1](https://github.com/windmill-labs/windmill/compare/v1.463.0...v1.463.1) (2025-02-15) + + +### Bug Fixes + +* not able to filter runs by schedule ([#5302](https://github.com/windmill-labs/windmill/issues/5302)) ([53f47bc](https://github.com/windmill-labs/windmill/commit/53f47bcfc84ed747b55d3a7d84ccf13ff1c43c97)) + ## [1.463.0](https://github.com/windmill-labs/windmill/compare/v1.462.1...v1.463.0) (2025-02-14) diff --git a/backend/Cargo.lock b/backend/Cargo.lock index edb01c756a..1a6859b98e 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -3209,9 +3209,9 @@ dependencies = [ [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" @@ -5776,9 +5776,9 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.70" +version = "0.10.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61cfb4e166a8bb8c9b55c500bc2308550148ece889be90f609377e58140f42c6" +checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd" dependencies = [ "bitflags 2.8.0", "cfg-if", @@ -5817,9 +5817,9 @@ dependencies = [ [[package]] name = "openssl-sys" -version = "0.9.105" +version = "0.9.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b22d5b84be05a8d6947c7cb71f7c849aa0f112acd4bf51c2a7c1c988ac0a9dc" +checksum = "8bb61ea9811cc39e3c2069f40b8b8e2e70d8569b361f879786cc7ed48b777cdd" dependencies = [ "cc", "libc", @@ -6796,7 +6796,7 @@ checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.0", - "zerocopy 0.8.17", + "zerocopy 0.8.18", ] [[package]] @@ -6854,7 +6854,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b08f3c9802962f7e1b25113931d94f43ed9725bebc59db9d0c3e9a23b67e15ff" dependencies = [ "getrandom 0.3.1", - "zerocopy 0.8.17", + "zerocopy 0.8.18", ] [[package]] @@ -8150,9 +8150,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.2" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" dependencies = [ "serde", ] @@ -10858,7 +10858,7 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windmill" -version = "1.463.0" +version = "1.463.1" dependencies = [ "anyhow", "axum", @@ -10901,7 +10901,7 @@ dependencies = [ [[package]] name = "windmill-api" -version = "1.463.0" +version = "1.463.1" dependencies = [ "anyhow", "argon2", @@ -10995,7 +10995,7 @@ dependencies = [ [[package]] name = "windmill-api-client" -version = "1.463.0" +version = "1.463.1" dependencies = [ "base64 0.22.1", "chrono", @@ -11013,7 +11013,7 @@ dependencies = [ [[package]] name = "windmill-audit" -version = "1.463.0" +version = "1.463.1" dependencies = [ "chrono", "serde", @@ -11026,7 +11026,7 @@ dependencies = [ [[package]] name = "windmill-autoscaling" -version = "1.463.0" +version = "1.463.1" dependencies = [ "anyhow", "serde", @@ -11040,7 +11040,7 @@ dependencies = [ [[package]] name = "windmill-common" -version = "1.463.0" +version = "1.463.1" dependencies = [ "anyhow", "async-stream", @@ -11099,7 +11099,7 @@ dependencies = [ [[package]] name = "windmill-git-sync" -version = "1.463.0" +version = "1.463.1" dependencies = [ "regex", "serde", @@ -11113,7 +11113,7 @@ dependencies = [ [[package]] name = "windmill-indexer" -version = "1.463.0" +version = "1.463.1" dependencies = [ "anyhow", "bytes", @@ -11136,7 +11136,7 @@ dependencies = [ [[package]] name = "windmill-macros" -version = "1.463.0" +version = "1.463.1" dependencies = [ "itertools 0.14.0", "lazy_static", @@ -11148,7 +11148,7 @@ dependencies = [ [[package]] name = "windmill-parser" -version = "1.463.0" +version = "1.463.1" dependencies = [ "convert_case 0.6.0", "serde", @@ -11157,7 +11157,7 @@ dependencies = [ [[package]] name = "windmill-parser-bash" -version = "1.463.0" +version = "1.463.1" dependencies = [ "anyhow", "lazy_static", @@ -11169,7 +11169,7 @@ dependencies = [ [[package]] name = "windmill-parser-csharp" -version = "1.463.0" +version = "1.463.1" dependencies = [ "anyhow", "serde_json", @@ -11181,7 +11181,7 @@ dependencies = [ [[package]] name = "windmill-parser-go" -version = "1.463.0" +version = "1.463.1" dependencies = [ "anyhow", "gosyn", @@ -11193,7 +11193,7 @@ dependencies = [ [[package]] name = "windmill-parser-graphql" -version = "1.463.0" +version = "1.463.1" dependencies = [ "anyhow", "lazy_static", @@ -11205,7 +11205,7 @@ dependencies = [ [[package]] name = "windmill-parser-php" -version = "1.463.0" +version = "1.463.1" dependencies = [ "anyhow", "itertools 0.14.0", @@ -11216,7 +11216,7 @@ dependencies = [ [[package]] name = "windmill-parser-py" -version = "1.463.0" +version = "1.463.1" dependencies = [ "anyhow", "itertools 0.14.0", @@ -11227,7 +11227,7 @@ dependencies = [ [[package]] name = "windmill-parser-py-imports" -version = "1.463.0" +version = "1.463.1" dependencies = [ "anyhow", "async-recursion", @@ -11247,7 +11247,7 @@ dependencies = [ [[package]] name = "windmill-parser-rust" -version = "1.463.0" +version = "1.463.1" dependencies = [ "anyhow", "convert_case 0.6.0", @@ -11264,7 +11264,7 @@ dependencies = [ [[package]] name = "windmill-parser-sql" -version = "1.463.0" +version = "1.463.1" dependencies = [ "anyhow", "lazy_static", @@ -11276,7 +11276,7 @@ dependencies = [ [[package]] name = "windmill-parser-ts" -version = "1.463.0" +version = "1.463.1" dependencies = [ "anyhow", "lazy_static", @@ -11294,7 +11294,7 @@ dependencies = [ [[package]] name = "windmill-parser-wasm" -version = "1.463.0" +version = "1.463.1" dependencies = [ "anyhow", "getrandom 0.2.15", @@ -11316,7 +11316,7 @@ dependencies = [ [[package]] name = "windmill-parser-yaml" -version = "1.463.0" +version = "1.463.1" dependencies = [ "anyhow", "serde_json", @@ -11326,7 +11326,7 @@ dependencies = [ [[package]] name = "windmill-queue" -version = "1.463.0" +version = "1.463.1" dependencies = [ "anyhow", "async-recursion", @@ -11359,7 +11359,7 @@ dependencies = [ [[package]] name = "windmill-sql-datatype-parser-wasm" -version = "1.463.0" +version = "1.463.1" dependencies = [ "wasm-bindgen", "wasm-bindgen-test", @@ -11369,7 +11369,7 @@ dependencies = [ [[package]] name = "windmill-worker" -version = "1.463.0" +version = "1.463.1" dependencies = [ "anyhow", "async-recursion", @@ -11783,11 +11783,11 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.17" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa91407dacce3a68c56de03abe2760159582b846c6a4acd2f456618087f12713" +checksum = "79386d31a42a4996e3336b0919ddb90f81112af416270cff95b5f5af22b839c2" dependencies = [ - "zerocopy-derive 0.8.17", + "zerocopy-derive 0.8.18", ] [[package]] @@ -11803,9 +11803,9 @@ dependencies = [ [[package]] name = "zerocopy-derive" -version = "0.8.17" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06718a168365cad3d5ff0bb133aad346959a2074bd4a85c121255a11304a8626" +checksum = "76331675d372f91bf8d17e13afbd5fe639200b73d01f0fc748bb059f9cca2db7" dependencies = [ "proc-macro2", "quote", diff --git a/backend/Cargo.toml b/backend/Cargo.toml index 3952f0b5c1..f9067b4361 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "windmill" -version = "1.463.0" +version = "1.463.1" authors.workspace = true edition.workspace = true @@ -30,7 +30,7 @@ members = [ ] [workspace.package] -version = "1.463.0" +version = "1.463.1" authors = ["Ruben Fiszel "] edition = "2021" diff --git a/backend/windmill-api/openapi.yaml b/backend/windmill-api/openapi.yaml index 87af4c763d..bc4043804f 100644 --- a/backend/windmill-api/openapi.yaml +++ b/backend/windmill-api/openapi.yaml @@ -1,7 +1,7 @@ openapi: "3.0.3" info: - version: 1.463.0 + version: 1.463.1 title: Windmill API contact: diff --git a/benchmarks/lib.ts b/benchmarks/lib.ts index 12d38c1797..68139f65e5 100644 --- a/benchmarks/lib.ts +++ b/benchmarks/lib.ts @@ -2,7 +2,7 @@ import { sleep } from "https://deno.land/x/sleep@v1.2.1/mod.ts"; import * as windmill from "https://deno.land/x/windmill@v1.174.0/mod.ts"; import * as api from "https://deno.land/x/windmill@v1.174.0/windmill-api/index.ts"; -export const VERSION = "v1.463.0"; +export const VERSION = "v1.463.1"; export async function login(email: string, password: string): Promise { return await windmill.UserService.login({ diff --git a/cli/main.ts b/cli/main.ts index 847d32c1d3..75029f10f2 100644 --- a/cli/main.ts +++ b/cli/main.ts @@ -62,7 +62,7 @@ export { // } // }); -export const VERSION = "1.463.0"; +export const VERSION = "1.463.1"; const command = new Command() .name("wmill") diff --git a/frontend/package-lock.json b/frontend/package-lock.json index bf535a2d6e..af7e3d1e84 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "windmill-components", - "version": "1.463.0", + "version": "1.463.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "windmill-components", - "version": "1.463.0", + "version": "1.463.1", "license": "AGPL-3.0", "dependencies": { "@anthropic-ai/sdk": "^0.32.1", diff --git a/frontend/package.json b/frontend/package.json index 1bb507930e..d482f1176b 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "windmill-components", - "version": "1.463.0", + "version": "1.463.1", "scripts": { "dev": "vite dev", "build": "vite build", diff --git a/lsp/Pipfile b/lsp/Pipfile index 0628a6f79a..b95612444b 100644 --- a/lsp/Pipfile +++ b/lsp/Pipfile @@ -4,8 +4,8 @@ verify_ssl = true name = "pypi" [packages] -wmill = ">=1.463.0" -wmill_pg = ">=1.463.0" +wmill = ">=1.463.1" +wmill_pg = ">=1.463.1" sendgrid = "*" mysql-connector-python = "*" pymongo = "*" diff --git a/openflow.openapi.yaml b/openflow.openapi.yaml index e48c92ac39..1d4d669e32 100644 --- a/openflow.openapi.yaml +++ b/openflow.openapi.yaml @@ -1,7 +1,7 @@ openapi: "3.0.3" info: - version: 1.463.0 + version: 1.463.1 title: OpenFlow Spec contact: name: Ruben Fiszel diff --git a/powershell-client/WindmillClient/WindmillClient.psd1 b/powershell-client/WindmillClient/WindmillClient.psd1 index 7c4e2f0fef..55789555ab 100644 --- a/powershell-client/WindmillClient/WindmillClient.psd1 +++ b/powershell-client/WindmillClient/WindmillClient.psd1 @@ -12,7 +12,7 @@ RootModule = 'WindmillClient.psm1' # Version number of this module. - ModuleVersion = '1.463.0' + ModuleVersion = '1.463.1' # Supported PSEditions # CompatiblePSEditions = @() diff --git a/python-client/wmill/pyproject.toml b/python-client/wmill/pyproject.toml index 402ecfad42..aa50fe4e23 100644 --- a/python-client/wmill/pyproject.toml +++ b/python-client/wmill/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "wmill" -version = "1.463.0" +version = "1.463.1" description = "A client library for accessing Windmill server wrapping the Windmill client API" license = "Apache-2.0" homepage = "https://windmill.dev" diff --git a/python-client/wmill_pg/pyproject.toml b/python-client/wmill_pg/pyproject.toml index e0de24be3b..1574c459c4 100644 --- a/python-client/wmill_pg/pyproject.toml +++ b/python-client/wmill_pg/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "wmill-pg" -version = "1.463.0" +version = "1.463.1" description = "An extension client for the wmill client library focused on pg" license = "Apache-2.0" homepage = "https://windmill.dev" diff --git a/typescript-client/jsr.json b/typescript-client/jsr.json index 2a86dfa9f7..d95c2d2258 100644 --- a/typescript-client/jsr.json +++ b/typescript-client/jsr.json @@ -1,6 +1,6 @@ { "name": "@windmill/windmill", - "version": "1.463.0", + "version": "1.463.1", "exports": "./src/index.ts", "publish": { "exclude": ["!src", "./s3Types.ts", "./client.ts"] diff --git a/typescript-client/package.json b/typescript-client/package.json index aaf238c292..792708174f 100644 --- a/typescript-client/package.json +++ b/typescript-client/package.json @@ -1,7 +1,7 @@ { "name": "windmill-client", "description": "Windmill SDK client for browsers and Node.js", - "version": "1.463.0", + "version": "1.463.1", "author": "Ruben Fiszel", "license": "Apache 2.0", "devDependencies": { diff --git a/version.txt b/version.txt index 2b5a684cd4..2d18b487c4 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.463.0 +1.463.1 From 062e6bc161b56215cb081209d37ad8e0cbd1dd99 Mon Sep 17 00:00:00 2001 From: Alexander Petric Date: Sat, 15 Feb 2025 20:03:25 -0500 Subject: [PATCH 46/47] fix: show skipped flows as success (#5304) --- backend/windmill-api/src/jobs.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/windmill-api/src/jobs.rs b/backend/windmill-api/src/jobs.rs index ccb408c020..405a12cd1a 100644 --- a/backend/windmill-api/src/jobs.rs +++ b/backend/windmill-api/src/jobs.rs @@ -2681,7 +2681,7 @@ const CJ_FIELDS: &[&str] = &[ "v2_job.runnable_path as script_path", "null as args", "v2_job_completed.duration_ms", - "v2_job_completed.status = 'success' as success", + "v2_job_completed.status = 'success' OR v2_job_completed.status = 'skipped' as success", "false as deleted", "v2_job_completed.status = 'canceled' as canceled", "v2_job_completed.canceled_by", @@ -5472,7 +5472,7 @@ async fn list_completed_jobs( "v2_job.created_at", "v2_job_completed.started_at", "v2_job_completed.duration_ms", - "v2_job_completed.status = 'success' as success", + "v2_job_completed.status = 'success' OR v2_job_completed.status = 'skipped' as success", "v2_job.runnable_id as script_hash", "v2_job.runnable_path as script_path", "false as deleted", From 449cbcf0c30d0c6046d48d388b8ed4fcdf5f02a3 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Sun, 16 Feb 2025 02:07:01 +0100 Subject: [PATCH 47/47] chore(main): release 1.463.2 (#5305) * chore(main): release 1.463.2 * Apply automatic changes --------- Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com> --- CHANGELOG.md | 7 +++ backend/Cargo.lock | 50 +++++++++---------- backend/Cargo.toml | 4 +- backend/windmill-api/openapi.yaml | 2 +- benchmarks/lib.ts | 2 +- cli/main.ts | 2 +- frontend/package-lock.json | 4 +- frontend/package.json | 2 +- lsp/Pipfile | 4 +- openflow.openapi.yaml | 2 +- .../WindmillClient/WindmillClient.psd1 | 2 +- python-client/wmill/pyproject.toml | 2 +- python-client/wmill_pg/pyproject.toml | 2 +- typescript-client/jsr.json | 2 +- typescript-client/package.json | 2 +- version.txt | 2 +- 16 files changed, 49 insertions(+), 42 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d1b0d4de92..897d3205a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [1.463.2](https://github.com/windmill-labs/windmill/compare/v1.463.1...v1.463.2) (2025-02-16) + + +### Bug Fixes + +* show skipped flows as success ([#5304](https://github.com/windmill-labs/windmill/issues/5304)) ([062e6bc](https://github.com/windmill-labs/windmill/commit/062e6bc161b56215cb081209d37ad8e0cbd1dd99)) + ## [1.463.1](https://github.com/windmill-labs/windmill/compare/v1.463.0...v1.463.1) (2025-02-15) diff --git a/backend/Cargo.lock b/backend/Cargo.lock index 1a6859b98e..f9b0598ab1 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -10858,7 +10858,7 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windmill" -version = "1.463.1" +version = "1.463.2" dependencies = [ "anyhow", "axum", @@ -10901,7 +10901,7 @@ dependencies = [ [[package]] name = "windmill-api" -version = "1.463.1" +version = "1.463.2" dependencies = [ "anyhow", "argon2", @@ -10995,7 +10995,7 @@ dependencies = [ [[package]] name = "windmill-api-client" -version = "1.463.1" +version = "1.463.2" dependencies = [ "base64 0.22.1", "chrono", @@ -11013,7 +11013,7 @@ dependencies = [ [[package]] name = "windmill-audit" -version = "1.463.1" +version = "1.463.2" dependencies = [ "chrono", "serde", @@ -11026,7 +11026,7 @@ dependencies = [ [[package]] name = "windmill-autoscaling" -version = "1.463.1" +version = "1.463.2" dependencies = [ "anyhow", "serde", @@ -11040,7 +11040,7 @@ dependencies = [ [[package]] name = "windmill-common" -version = "1.463.1" +version = "1.463.2" dependencies = [ "anyhow", "async-stream", @@ -11099,7 +11099,7 @@ dependencies = [ [[package]] name = "windmill-git-sync" -version = "1.463.1" +version = "1.463.2" dependencies = [ "regex", "serde", @@ -11113,7 +11113,7 @@ dependencies = [ [[package]] name = "windmill-indexer" -version = "1.463.1" +version = "1.463.2" dependencies = [ "anyhow", "bytes", @@ -11136,7 +11136,7 @@ dependencies = [ [[package]] name = "windmill-macros" -version = "1.463.1" +version = "1.463.2" dependencies = [ "itertools 0.14.0", "lazy_static", @@ -11148,7 +11148,7 @@ dependencies = [ [[package]] name = "windmill-parser" -version = "1.463.1" +version = "1.463.2" dependencies = [ "convert_case 0.6.0", "serde", @@ -11157,7 +11157,7 @@ dependencies = [ [[package]] name = "windmill-parser-bash" -version = "1.463.1" +version = "1.463.2" dependencies = [ "anyhow", "lazy_static", @@ -11169,7 +11169,7 @@ dependencies = [ [[package]] name = "windmill-parser-csharp" -version = "1.463.1" +version = "1.463.2" dependencies = [ "anyhow", "serde_json", @@ -11181,7 +11181,7 @@ dependencies = [ [[package]] name = "windmill-parser-go" -version = "1.463.1" +version = "1.463.2" dependencies = [ "anyhow", "gosyn", @@ -11193,7 +11193,7 @@ dependencies = [ [[package]] name = "windmill-parser-graphql" -version = "1.463.1" +version = "1.463.2" dependencies = [ "anyhow", "lazy_static", @@ -11205,7 +11205,7 @@ dependencies = [ [[package]] name = "windmill-parser-php" -version = "1.463.1" +version = "1.463.2" dependencies = [ "anyhow", "itertools 0.14.0", @@ -11216,7 +11216,7 @@ dependencies = [ [[package]] name = "windmill-parser-py" -version = "1.463.1" +version = "1.463.2" dependencies = [ "anyhow", "itertools 0.14.0", @@ -11227,7 +11227,7 @@ dependencies = [ [[package]] name = "windmill-parser-py-imports" -version = "1.463.1" +version = "1.463.2" dependencies = [ "anyhow", "async-recursion", @@ -11247,7 +11247,7 @@ dependencies = [ [[package]] name = "windmill-parser-rust" -version = "1.463.1" +version = "1.463.2" dependencies = [ "anyhow", "convert_case 0.6.0", @@ -11264,7 +11264,7 @@ dependencies = [ [[package]] name = "windmill-parser-sql" -version = "1.463.1" +version = "1.463.2" dependencies = [ "anyhow", "lazy_static", @@ -11276,7 +11276,7 @@ dependencies = [ [[package]] name = "windmill-parser-ts" -version = "1.463.1" +version = "1.463.2" dependencies = [ "anyhow", "lazy_static", @@ -11294,7 +11294,7 @@ dependencies = [ [[package]] name = "windmill-parser-wasm" -version = "1.463.1" +version = "1.463.2" dependencies = [ "anyhow", "getrandom 0.2.15", @@ -11316,7 +11316,7 @@ dependencies = [ [[package]] name = "windmill-parser-yaml" -version = "1.463.1" +version = "1.463.2" dependencies = [ "anyhow", "serde_json", @@ -11326,7 +11326,7 @@ dependencies = [ [[package]] name = "windmill-queue" -version = "1.463.1" +version = "1.463.2" dependencies = [ "anyhow", "async-recursion", @@ -11359,7 +11359,7 @@ dependencies = [ [[package]] name = "windmill-sql-datatype-parser-wasm" -version = "1.463.1" +version = "1.463.2" dependencies = [ "wasm-bindgen", "wasm-bindgen-test", @@ -11369,7 +11369,7 @@ dependencies = [ [[package]] name = "windmill-worker" -version = "1.463.1" +version = "1.463.2" dependencies = [ "anyhow", "async-recursion", diff --git a/backend/Cargo.toml b/backend/Cargo.toml index f9067b4361..69ae45d5ca 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "windmill" -version = "1.463.1" +version = "1.463.2" authors.workspace = true edition.workspace = true @@ -30,7 +30,7 @@ members = [ ] [workspace.package] -version = "1.463.1" +version = "1.463.2" authors = ["Ruben Fiszel "] edition = "2021" diff --git a/backend/windmill-api/openapi.yaml b/backend/windmill-api/openapi.yaml index bc4043804f..7be948a7a0 100644 --- a/backend/windmill-api/openapi.yaml +++ b/backend/windmill-api/openapi.yaml @@ -1,7 +1,7 @@ openapi: "3.0.3" info: - version: 1.463.1 + version: 1.463.2 title: Windmill API contact: diff --git a/benchmarks/lib.ts b/benchmarks/lib.ts index 68139f65e5..29292e5b21 100644 --- a/benchmarks/lib.ts +++ b/benchmarks/lib.ts @@ -2,7 +2,7 @@ import { sleep } from "https://deno.land/x/sleep@v1.2.1/mod.ts"; import * as windmill from "https://deno.land/x/windmill@v1.174.0/mod.ts"; import * as api from "https://deno.land/x/windmill@v1.174.0/windmill-api/index.ts"; -export const VERSION = "v1.463.1"; +export const VERSION = "v1.463.2"; export async function login(email: string, password: string): Promise { return await windmill.UserService.login({ diff --git a/cli/main.ts b/cli/main.ts index 75029f10f2..28a6436cc6 100644 --- a/cli/main.ts +++ b/cli/main.ts @@ -62,7 +62,7 @@ export { // } // }); -export const VERSION = "1.463.1"; +export const VERSION = "1.463.2"; const command = new Command() .name("wmill") diff --git a/frontend/package-lock.json b/frontend/package-lock.json index af7e3d1e84..39e870f751 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "windmill-components", - "version": "1.463.1", + "version": "1.463.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "windmill-components", - "version": "1.463.1", + "version": "1.463.2", "license": "AGPL-3.0", "dependencies": { "@anthropic-ai/sdk": "^0.32.1", diff --git a/frontend/package.json b/frontend/package.json index d482f1176b..b9d79dccd1 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "windmill-components", - "version": "1.463.1", + "version": "1.463.2", "scripts": { "dev": "vite dev", "build": "vite build", diff --git a/lsp/Pipfile b/lsp/Pipfile index b95612444b..c519e3a81c 100644 --- a/lsp/Pipfile +++ b/lsp/Pipfile @@ -4,8 +4,8 @@ verify_ssl = true name = "pypi" [packages] -wmill = ">=1.463.1" -wmill_pg = ">=1.463.1" +wmill = ">=1.463.2" +wmill_pg = ">=1.463.2" sendgrid = "*" mysql-connector-python = "*" pymongo = "*" diff --git a/openflow.openapi.yaml b/openflow.openapi.yaml index 1d4d669e32..a2e58e4261 100644 --- a/openflow.openapi.yaml +++ b/openflow.openapi.yaml @@ -1,7 +1,7 @@ openapi: "3.0.3" info: - version: 1.463.1 + version: 1.463.2 title: OpenFlow Spec contact: name: Ruben Fiszel diff --git a/powershell-client/WindmillClient/WindmillClient.psd1 b/powershell-client/WindmillClient/WindmillClient.psd1 index 55789555ab..f73febb17e 100644 --- a/powershell-client/WindmillClient/WindmillClient.psd1 +++ b/powershell-client/WindmillClient/WindmillClient.psd1 @@ -12,7 +12,7 @@ RootModule = 'WindmillClient.psm1' # Version number of this module. - ModuleVersion = '1.463.1' + ModuleVersion = '1.463.2' # Supported PSEditions # CompatiblePSEditions = @() diff --git a/python-client/wmill/pyproject.toml b/python-client/wmill/pyproject.toml index aa50fe4e23..fee5c46ce8 100644 --- a/python-client/wmill/pyproject.toml +++ b/python-client/wmill/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "wmill" -version = "1.463.1" +version = "1.463.2" description = "A client library for accessing Windmill server wrapping the Windmill client API" license = "Apache-2.0" homepage = "https://windmill.dev" diff --git a/python-client/wmill_pg/pyproject.toml b/python-client/wmill_pg/pyproject.toml index 1574c459c4..7df9b85b77 100644 --- a/python-client/wmill_pg/pyproject.toml +++ b/python-client/wmill_pg/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "wmill-pg" -version = "1.463.1" +version = "1.463.2" description = "An extension client for the wmill client library focused on pg" license = "Apache-2.0" homepage = "https://windmill.dev" diff --git a/typescript-client/jsr.json b/typescript-client/jsr.json index d95c2d2258..908d2f3417 100644 --- a/typescript-client/jsr.json +++ b/typescript-client/jsr.json @@ -1,6 +1,6 @@ { "name": "@windmill/windmill", - "version": "1.463.1", + "version": "1.463.2", "exports": "./src/index.ts", "publish": { "exclude": ["!src", "./s3Types.ts", "./client.ts"] diff --git a/typescript-client/package.json b/typescript-client/package.json index 792708174f..37b158cd14 100644 --- a/typescript-client/package.json +++ b/typescript-client/package.json @@ -1,7 +1,7 @@ { "name": "windmill-client", "description": "Windmill SDK client for browsers and Node.js", - "version": "1.463.1", + "version": "1.463.2", "author": "Ruben Fiszel", "license": "Apache 2.0", "devDependencies": { diff --git a/version.txt b/version.txt index 2d18b487c4..fbc30c990c 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.463.1 +1.463.2