Files
windmill/frontend/src/lib/components/flows/content/FlowModuleDebounce.svelte
T
5d1c54d9b3 feat: Debounce node (#8324)
* Debounce node works

* sqlx prepare

* sqlx prepare

* fix: address PR review issues for flow node debouncing

- Add sibling check in parent-walking loop to avoid killing branchall siblings
- Remove stale .sqlx cache files from earlier iterations
- Remove single-variant FlowNodeDebounceResult enum, use Result<()>
- Parse flow value once in version guard, recurse into nested modules
- Fix Svelte reactivity when switching selected flow modules
- Fix Tab indentation in FlowModuleComponent
- Use integer types in OpenAPI spec for debounce fields

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* ee repo ref

* nit sqlx

* add Debouncing: None

* ee repo ref

* ee repo

* sqlx update

* fix: reject node-level debouncing inside branches (branchall/branchone)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Revert "fix: reject node-level debouncing inside branches (branchall/branchone)"

This reverts commit fa4820dde2.

* ee repo

* sqlx prepare

* sqlx prepare

* feat: add MIN_VERSION_SUPPORTS_NODE_DEBOUNCING (1.658.0) version guard

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: mark node-level debouncing as EE only in openflow schema

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: guard node debouncing against parallel steps (len > 1)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* generate system prompts

* system prompts

* chore: update ee-repo-ref to c04f3851c03758662e4936ff4b6e71bc56dbae7e

This commit updates the EE repository reference after PR #451 was merged in windmill-ee-private.

Previous ee-repo-ref: d140bb8944dfe3efb23cf8c12f556eacf30e2f87

New ee-repo-ref: c04f3851c03758662e4936ff4b6e71bc56dbae7e

Automated by sync-ee-ref workflow.

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
2026-03-24 09:47:41 +00:00

60 lines
2.0 KiB
Svelte

<script lang="ts">
import type { FlowModule } from '$lib/gen'
import type { FlowEditorContext } from '../types'
import { getContext } from 'svelte'
import DebounceLimit from '../DebounceLimit.svelte'
let {
flowModule = $bindable(),
selectedId
}: {
flowModule: FlowModule
selectedId: string
} = $props()
const { flowStateStore } = getContext<FlowEditorContext>('FlowEditorContext')
let debounce_delay_s = $state(flowModule.debouncing?.debounce_delay_s)
let debounce_key = $state(flowModule.debouncing?.debounce_key)
let debounce_args_to_accumulate = $state(flowModule.debouncing?.debounce_args_to_accumulate)
let max_total_debouncing_time = $state(flowModule.debouncing?.max_total_debouncing_time)
let max_total_debounces_amount = $state(flowModule.debouncing?.max_total_debounces_amount)
// Re-sync local state when flowModule identity changes (e.g. switching selected module)
$effect(() => {
// Reading flowModule.id to track identity changes
flowModule.id
debounce_delay_s = flowModule.debouncing?.debounce_delay_s
debounce_key = flowModule.debouncing?.debounce_key
debounce_args_to_accumulate = flowModule.debouncing?.debounce_args_to_accumulate
max_total_debouncing_time = flowModule.debouncing?.max_total_debouncing_time
max_total_debounces_amount = flowModule.debouncing?.max_total_debounces_amount
})
// Write back to flowModule when local state changes
$effect(() => {
if (debounce_delay_s !== undefined && debounce_delay_s > 0) {
flowModule.debouncing = {
debounce_delay_s,
debounce_key,
debounce_args_to_accumulate,
max_total_debouncing_time,
max_total_debounces_amount
}
} else {
flowModule.debouncing = undefined
}
})
</script>
<DebounceLimit
bind:debounce_delay_s
bind:debounce_key
bind:debounce_args_to_accumulate
bind:max_total_debouncing_time
bind:max_total_debounces_amount
schema={flowStateStore.val[selectedId]?.schema}
placeholder={`$workspace/flow/<flow_path>-${flowModule.id}`}
size="xs"
/>