Merge branch 'glm/replace_menuV2' into glm/use_melt_menu

# Conflicts:
#	frontend/src/lib/components/meltComponents/Menu.svelte
This commit is contained in:
Guilhem
2025-02-19 08:00:05 +00:00
23 changed files with 133 additions and 83 deletions
+8
View File
@@ -1,5 +1,13 @@
# Changelog
## [1.463.6](https://github.com/windmill-labs/windmill/compare/v1.463.5...v1.463.6) (2025-02-18)
### Bug Fixes
* fix reactivity issue on loading live flow on runs page ([52e12d1](https://github.com/windmill-labs/windmill/commit/52e12d1021831adc2ce9b7b0946a93562038017e))
* improve v2 migration finalizer to avoid deadlocks ([1069ad3](https://github.com/windmill-labs/windmill/commit/1069ad39992940e32e5d8566ef2283970525be1a))
## [1.463.5](https://github.com/windmill-labs/windmill/compare/v1.463.4...v1.463.5) (2025-02-18)
+27 -27
View File
@@ -1007,9 +1007,9 @@ dependencies = [
[[package]]
name = "backon"
version = "1.3.0"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba5289ec98f68f28dd809fd601059e6aa908bb8f6108620930828283d4ee23d7"
checksum = "49fef586913a57ff189f25c9b3d034356a5bf6b3fa9a7f067588fe1698ba1f5d"
dependencies = [
"fastrand 2.3.0",
"gloo-timers",
@@ -10859,7 +10859,7 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "windmill"
version = "1.463.5"
version = "1.463.6"
dependencies = [
"anyhow",
"axum",
@@ -10902,7 +10902,7 @@ dependencies = [
[[package]]
name = "windmill-api"
version = "1.463.5"
version = "1.463.6"
dependencies = [
"anyhow",
"argon2",
@@ -10996,7 +10996,7 @@ dependencies = [
[[package]]
name = "windmill-api-client"
version = "1.463.5"
version = "1.463.6"
dependencies = [
"base64 0.22.1",
"chrono",
@@ -11014,7 +11014,7 @@ dependencies = [
[[package]]
name = "windmill-audit"
version = "1.463.5"
version = "1.463.6"
dependencies = [
"chrono",
"serde",
@@ -11027,7 +11027,7 @@ dependencies = [
[[package]]
name = "windmill-autoscaling"
version = "1.463.5"
version = "1.463.6"
dependencies = [
"anyhow",
"serde",
@@ -11041,7 +11041,7 @@ dependencies = [
[[package]]
name = "windmill-common"
version = "1.463.5"
version = "1.463.6"
dependencies = [
"anyhow",
"async-stream",
@@ -11100,7 +11100,7 @@ dependencies = [
[[package]]
name = "windmill-git-sync"
version = "1.463.5"
version = "1.463.6"
dependencies = [
"regex",
"serde",
@@ -11114,7 +11114,7 @@ dependencies = [
[[package]]
name = "windmill-indexer"
version = "1.463.5"
version = "1.463.6"
dependencies = [
"anyhow",
"bytes",
@@ -11137,7 +11137,7 @@ dependencies = [
[[package]]
name = "windmill-macros"
version = "1.463.5"
version = "1.463.6"
dependencies = [
"itertools 0.14.0",
"lazy_static",
@@ -11149,7 +11149,7 @@ dependencies = [
[[package]]
name = "windmill-parser"
version = "1.463.5"
version = "1.463.6"
dependencies = [
"convert_case 0.6.0",
"serde",
@@ -11158,7 +11158,7 @@ dependencies = [
[[package]]
name = "windmill-parser-bash"
version = "1.463.5"
version = "1.463.6"
dependencies = [
"anyhow",
"lazy_static",
@@ -11170,7 +11170,7 @@ dependencies = [
[[package]]
name = "windmill-parser-csharp"
version = "1.463.5"
version = "1.463.6"
dependencies = [
"anyhow",
"serde_json",
@@ -11182,7 +11182,7 @@ dependencies = [
[[package]]
name = "windmill-parser-go"
version = "1.463.5"
version = "1.463.6"
dependencies = [
"anyhow",
"gosyn",
@@ -11194,7 +11194,7 @@ dependencies = [
[[package]]
name = "windmill-parser-graphql"
version = "1.463.5"
version = "1.463.6"
dependencies = [
"anyhow",
"lazy_static",
@@ -11206,7 +11206,7 @@ dependencies = [
[[package]]
name = "windmill-parser-php"
version = "1.463.5"
version = "1.463.6"
dependencies = [
"anyhow",
"itertools 0.14.0",
@@ -11217,7 +11217,7 @@ dependencies = [
[[package]]
name = "windmill-parser-py"
version = "1.463.5"
version = "1.463.6"
dependencies = [
"anyhow",
"itertools 0.14.0",
@@ -11228,7 +11228,7 @@ dependencies = [
[[package]]
name = "windmill-parser-py-imports"
version = "1.463.5"
version = "1.463.6"
dependencies = [
"anyhow",
"async-recursion",
@@ -11248,7 +11248,7 @@ dependencies = [
[[package]]
name = "windmill-parser-rust"
version = "1.463.5"
version = "1.463.6"
dependencies = [
"anyhow",
"convert_case 0.6.0",
@@ -11265,7 +11265,7 @@ dependencies = [
[[package]]
name = "windmill-parser-sql"
version = "1.463.5"
version = "1.463.6"
dependencies = [
"anyhow",
"lazy_static",
@@ -11277,7 +11277,7 @@ dependencies = [
[[package]]
name = "windmill-parser-ts"
version = "1.463.5"
version = "1.463.6"
dependencies = [
"anyhow",
"lazy_static",
@@ -11295,7 +11295,7 @@ dependencies = [
[[package]]
name = "windmill-parser-wasm"
version = "1.463.5"
version = "1.463.6"
dependencies = [
"anyhow",
"getrandom 0.2.15",
@@ -11317,7 +11317,7 @@ dependencies = [
[[package]]
name = "windmill-parser-yaml"
version = "1.463.5"
version = "1.463.6"
dependencies = [
"anyhow",
"serde_json",
@@ -11327,7 +11327,7 @@ dependencies = [
[[package]]
name = "windmill-queue"
version = "1.463.5"
version = "1.463.6"
dependencies = [
"anyhow",
"async-recursion",
@@ -11360,7 +11360,7 @@ dependencies = [
[[package]]
name = "windmill-sql-datatype-parser-wasm"
version = "1.463.5"
version = "1.463.6"
dependencies = [
"wasm-bindgen",
"wasm-bindgen-test",
@@ -11370,7 +11370,7 @@ dependencies = [
[[package]]
name = "windmill-worker"
version = "1.463.5"
version = "1.463.6"
dependencies = [
"anyhow",
"async-recursion",
+2 -2
View File
@@ -1,6 +1,6 @@
[package]
name = "windmill"
version = "1.463.5"
version = "1.463.6"
authors.workspace = true
edition.workspace = true
@@ -30,7 +30,7 @@ members = [
]
[workspace.package]
version = "1.463.5"
version = "1.463.6"
authors = ["Ruben Fiszel <ruben@windmill.dev>"]
edition = "2021"
+1 -1
View File
@@ -1,7 +1,7 @@
openapi: "3.0.3"
info:
version: 1.463.5
version: 1.463.6
title: Windmill API
contact:
@@ -21,10 +21,24 @@ mount {
is_bind: true
}
mount {
src: "/proc/self/fd"
dst: "/dev/fd"
is_symlink: true
mandatory: false
}
mount {
src: "/bin"
dst: "/bin"
is_bind: true
}
mount {
src: "/opt/microsoft"
dst: "/opt/microsoft"
is_bind: true
mandatory: false
}
mount {
@@ -21,6 +21,13 @@ mount {
is_bind: true
}
mount {
src: "/proc/self/fd"
dst: "/dev/fd"
is_symlink: true
mandatory: false
}
mount {
src: "/opt/microsoft"
dst: "/opt/microsoft"
+3 -9
View File
@@ -97,7 +97,7 @@ cleanup() {{
trap '' SIGTERM SIGINT
# Kill the process group of the script (negative PID value)
pkill -P $$
pkill -P $$ 2>/dev/null || true
exit
}}
@@ -105,14 +105,9 @@ cleanup() {{
# Trap SIGTERM (or other signals) and call cleanup function
trap cleanup SIGTERM SIGINT
# Create a named pipe
mkfifo bp
# Start background processes
cat bp | tail -1 >> ./result2.out &
# Run main.sh in the same process group
{bash} ./main.sh "$@" 2>&1 | tee bp &
{bash} ./main.sh "$@" 2>&1 | tee >(tail -1 >> ./result2.out) &
pid=$!
@@ -121,7 +116,6 @@ wait $pid
exit_status=$?
# Clean up the named pipe and background processes
rm -f bp
pkill -P $$ || true
# Exit with the captured status
@@ -624,7 +618,7 @@ $env:PSModulePath = \"{};$PSModulePathBackup\"",
write_file(
job_dir,
"wrapper.sh",
&format!("set -o pipefail\nset -e\nmkfifo bp\ncat bp | tail -1 > ./result2.out &\n{} -F ./main.ps1 \"$@\" 2>&1 | tee bp\nwait $!", POWERSHELL_PATH.as_str()),
&format!("set -o pipefail\nset -e\n{} -F ./main.ps1 \"$@\" 2>&1 | tee >(tail -1 >> ./result2.out) &\nwait $!", POWERSHELL_PATH.as_str()),
)?;
#[cfg(windows)]
+1 -1
View File
@@ -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.5";
export const VERSION = "v1.463.6";
export async function login(email: string, password: string): Promise<string> {
return await windmill.UserService.login({
+1 -1
View File
@@ -62,7 +62,7 @@ export {
// }
// });
export const VERSION = "1.463.5";
export const VERSION = "1.463.6";
const command = new Command()
.name("wmill")
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "windmill-components",
"version": "1.463.5",
"version": "1.463.6",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "windmill-components",
"version": "1.463.5",
"version": "1.463.6",
"license": "AGPL-3.0",
"dependencies": {
"@anthropic-ai/sdk": "^0.32.1",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "windmill-components",
"version": "1.463.5",
"version": "1.463.6",
"scripts": {
"dev": "vite dev",
"build": "vite build",
@@ -2,6 +2,7 @@
import { melt, createSync } from '@melt-ui/svelte'
import type { Placement } from '@floating-ui/core'
import { pointerDownOutside } from '$lib/utils'
import { zIndexes } from '$lib/zIndexes'
import { twMerge } from 'tailwind-merge'
import ResolveOpen from '$lib/components/common/menu/ResolveOpen.svelte'
@@ -40,6 +41,8 @@
async function getMenuElements(): Promise<HTMLElement[]> {
return Array.from(document.querySelectorAll('[data-menu]')) as HTMLElement[]
}
const zIndex = zIndexes.contextMenu
</script>
<div class={twMerge('w-full h-8', $$props.class)}>
@@ -64,16 +67,16 @@
<slot name="trigger" trigger={$trigger} />
</button>
<div
class={twMerge(
'z-[6000] border w-56 origin-top-right rounded-md shadow-md focus:outline-none overflow-y-auto py-1',
lightMode ? 'bg-surface-inverse' : 'bg-surface',
invisible ? 'opacity-0' : ''
)}
style="max-height: {maxHeight}px;"
use:melt={$menuElement}
data-menu
>
<slot item={$item} />
<div use:melt={$menuElement} data-menu class={`z-[${zIndex}]`}>
<div
class={twMerge(
'border w-56 origin-top-right rounded-md shadow-md focus:outline-none overflow-y-auto py-1',
lightMode ? 'bg-surface-inverse' : 'bg-surface',
invisible ? 'opacity-0' : ''
)}
style="max-height: {maxHeight}px; "
>
<slot item={$item} />
</div>
</div>
</div>
@@ -112,6 +112,16 @@
})
let moreOpen = false
let moreOpenTimeout: NodeJS.Timeout | undefined
function debouncedSetMoreOpen(value: boolean) {
if (moreOpenTimeout) {
clearTimeout(moreOpenTimeout)
}
moreOpenTimeout = setTimeout(() => {
moreOpen = value
}, 150) // 150ms debounce
}
</script>
<Menubar let:createMenu>
@@ -248,14 +258,14 @@
</button>
</div>
<div
on:mouseenter={() => (moreOpen = true)}
on:mouseleave={() => (moreOpen = false)}
on:mouseenter={() => debouncedSetMoreOpen(true)}
on:mouseleave={() => debouncedSetMoreOpen(false)}
role="none"
>
<div
use:melt={item}
on:m-focusin={() => (moreOpen = true)}
on:m-focusout={() => (moreOpen = false)}
on:m-focusin={() => debouncedSetMoreOpen(true)}
on:m-focusout={() => debouncedSetMoreOpen(false)}
>
{#if !moreOpen || secondMenuLinks.length === 0}
<div class="px-2 py-2 text-tertiary text-2xs">More...</div>
@@ -271,8 +281,8 @@
'data-[highlighted]:bg-surface-hover data-[highlighted]:text-primary'
)}
use:melt={item}
on:m-focusin={() => (moreOpen = true)}
on:m-focusout={() => (moreOpen = false)}
on:m-focusin={() => debouncedSetMoreOpen(true)}
on:m-focusout={() => debouncedSetMoreOpen(false)}
>
{menuLink.label}
</a>
@@ -283,8 +293,8 @@
</div>
{#if $enterpriseLicense}
<div
on:mouseenter={() => (moreOpen = true)}
on:mouseleave={() => (moreOpen = false)}
on:mouseenter={() => debouncedSetMoreOpen(true)}
on:mouseleave={() => debouncedSetMoreOpen(false)}
role="none"
>
<MultiplayerMenu />
+8
View File
@@ -1100,6 +1100,14 @@ export function isFlowPreview(job_kind: Job['job_kind'] | undefined) {
return !!job_kind && (job_kind === 'flowpreview' || job_kind === 'flownode')
}
export function isNotFlow(job_kind: Job['job_kind'] | undefined) {
return (
job_kind !== 'flow' &&
job_kind !== 'singlescriptflow' &&
!isFlowPreview(job_kind)
)
}
export function isScriptPreview(job_kind: Job['job_kind'] | undefined) {
return (
!!job_kind && (job_kind === 'preview' || job_kind === 'flowscript' || job_kind === 'appscript')
@@ -20,6 +20,7 @@
emptyString,
encodeState,
isFlowPreview,
isNotFlow,
isScriptPreview,
truncateHash,
truncateRev
@@ -110,7 +111,7 @@
let showExplicitProgressTip: boolean =
(localStorage.getItem('hideExplicitProgressTip') ?? 'false') == 'false'
$: job?.logs == undefined && job && viewTab == 'logs' && getLogs?.()
$: job?.logs == undefined && job && viewTab == 'logs' && isNotFlow(job?.job_kind) && getLogs?.()
let lastJobId: string | undefined = undefined
let concurrencyKey: string | undefined = undefined
@@ -213,15 +214,19 @@
})
}
if (job === undefined || job.job_kind !== 'script' || job.script_hash === undefined) {
return
}
const script = await ScriptService.getScriptByHash({
workspace: $workspaceStore!,
hash: job.script_hash
})
if (script.restart_unless_cancelled ?? false) {
persistentScriptDefinition = script
if (
job &&
job.job_kind === 'script' &&
job.script_hash &&
persistentScriptDefinition === undefined
) {
const script = await ScriptService.getScriptByHash({
workspace: $workspaceStore!,
hash: job.script_hash
})
if (script.restart_unless_cancelled ?? false) {
persistentScriptDefinition = script
}
}
}
@@ -232,6 +237,7 @@
function onRunsPageChange() {
job = undefined
persistentScriptDefinition = undefined
}
$: $workspaceStore && $page.params.run && onRunsPageChange()
$: $workspaceStore && $page.params.run && testJobLoader && onRunsPageChangeWithLoader()
@@ -851,7 +857,7 @@
<h2 class="mt-10">Scheduled to be executed later: {displayDate(job?.['scheduled_for'])}</h2>
</div>
{/if}
{#if job?.job_kind !== 'flow' && job?.job_kind !== 'singlescriptflow' && !isFlowPreview(job?.job_kind)}
{#if isNotFlow(job?.job_kind)}
{#if ['python3', 'bun', 'deno'].includes(job?.language ?? '') && (job?.job_kind == 'script' || isScriptPreview(job?.job_kind))}
<ExecutionDuration bind:job bind:longRunning={currentJobIsLongRunning} />
{/if}
+2 -2
View File
@@ -4,8 +4,8 @@ verify_ssl = true
name = "pypi"
[packages]
wmill = ">=1.463.5"
wmill_pg = ">=1.463.5"
wmill = ">=1.463.6"
wmill_pg = ">=1.463.6"
sendgrid = "*"
mysql-connector-python = "*"
pymongo = "*"
+1 -1
View File
@@ -1,7 +1,7 @@
openapi: "3.0.3"
info:
version: 1.463.5
version: 1.463.6
title: OpenFlow Spec
contact:
name: Ruben Fiszel
@@ -12,7 +12,7 @@
RootModule = 'WindmillClient.psm1'
# Version number of this module.
ModuleVersion = '1.463.5'
ModuleVersion = '1.463.6'
# Supported PSEditions
# CompatiblePSEditions = @()
+1 -1
View File
@@ -1,6 +1,6 @@
[tool.poetry]
name = "wmill"
version = "1.463.5"
version = "1.463.6"
description = "A client library for accessing Windmill server wrapping the Windmill client API"
license = "Apache-2.0"
homepage = "https://windmill.dev"
+1 -1
View File
@@ -1,6 +1,6 @@
[tool.poetry]
name = "wmill-pg"
version = "1.463.5"
version = "1.463.6"
description = "An extension client for the wmill client library focused on pg"
license = "Apache-2.0"
homepage = "https://windmill.dev"
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@windmill/windmill",
"version": "1.463.5",
"version": "1.463.6",
"exports": "./src/index.ts",
"publish": {
"exclude": ["!src", "./s3Types.ts", "./client.ts"]
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "windmill-client",
"description": "Windmill SDK client for browsers and Node.js",
"version": "1.463.5",
"version": "1.463.6",
"author": "Ruben Fiszel",
"license": "Apache 2.0",
"devDependencies": {
+1 -1
View File
@@ -1 +1 @@
1.463.5
1.463.6