* fix: ai button in inline script editor to open AI chat in flow builder
- Add openAiChat prop to ScriptGen component to control AI button behavior
- When openAiChat=true, AI button opens AI chat manager in script mode
- When openAiChat=false (default), AI button shows direct generation popover
- Update flow builder (FlowModuleComponent) to use openAiChat=true for inline scripts
- App builder continues using direct generation (openAiChat defaults to false)
- Import AIMode enum properly to fix TypeScript error
Resolves request from @HugoCasa to make flow AI button open chat instead of direct generation while keeping app builder unchanged.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-authored-by: Ruben Fiszel <rubenfiszel@users.noreply.github.com>
* refactor: extract repeated logic into reusable functions in ScriptGen.svelte
- Created determineModeFromEditor() to centralize mode setting logic
- Added callCopilot() to unify copilot function calls with proper typing
- Added handleAiButtonClick() as single handler for button click scenarios
- Created safeLocalStorageOperation() for generic localStorage error handling
- Added getPromptStorageKey() for centralized storage key generation
Reduces code duplication and improves maintainability.
Co-authored-by: HugoCasa <HugoCasa@users.noreply.github.com>
* refactor: extract duplicate determineModeFromEditor call in handleAiButtonClick
Remove code duplication by calling determineModeFromEditor() once at the
beginning of handleAiButtonClick() instead of in both conditional branches.
Co-authored-by: HugoCasa <HugoCasa@users.noreply.github.com>
* nits
* better color
---------
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: Ruben Fiszel <rubenfiszel@users.noreply.github.com>
Co-authored-by: HugoCasa <HugoCasa@users.noreply.github.com>
Co-authored-by: HugoCasa <hugo@casademont.ch>
Fixes#5991
- Add keydown event handlers with stopPropagation() to prevent SvelteFlow
from receiving keypress events from text inputs in decision tree config
- Applied at individual input level (summary field) and container level
(configuration panel) to catch all input types
- Prevents accidental node deletion when typing in configuration inputs
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: Ruben Fiszel <rubenfiszel@users.noreply.github.com>
* feat: allow devOps role to edit worker groups config
- Updated backend permission checks in configs.rs to use require_devops_role() instead of require_super_admin()
- Updated frontend UI in workers page to show worker group management for devOps users
- Updated WorkerGroup component to allow devOps role access to all configuration features
- Updated AssignableTagsInner component to allow devOps users to manage tags
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-authored-by: Ruben Fiszel <rubenfiszel@users.noreply.github.com>
* Update configs.rs
---------
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: Ruben Fiszel <rubenfiszel@users.noreply.github.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
* fix: correct $props generic syntax in Svelte 5 components
Replace incorrect `$props<T>()` syntax with correct `let x: T = $props()` syntax
to ensure proper TypeScript typing instead of falling back to `any` types.
This affects 11 Svelte 5 components throughout the frontend codebase.
Fixes#5974
Co-authored-by: Diego Imbert <diegoimbert@users.noreply.github.com>
* fix claude pr
---------
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: Diego Imbert <diegoimbert@users.noreply.github.com>
Co-authored-by: Diego Imbert <diego@windmill.dev>
Co-authored-by: Diego Imbert <70353967+diegoimbert@users.noreply.github.com>
* use open router of model lists
* draft
* allow get in ai proxy
* add fetch available models function
* use func
* fix for anthropic
* fix
* fetch on mount
* fix ai settings
* fix
* handle azure