* Start workspace onboarding
* Add pictures to tutorial steps
* Remove unecessary step
* Continue tutorial by creating a flow together
* Add image into the Create Flow tutorial pop up
* Generate flow from frontend
* Set pause between each node
* Add automatic scripts overview
* Simplify tutorial, and add step to show the code
* Add input step
* Autoremove last step after 5 seconds
* Add flow typing when opening code editor
* Remove lock field from json file
* Add Guides tab on left menu
* Add /guides page
* Add tutorial card in Guides tab
* Add step to show data connector
* Add second text input to show 2 types of inputs and fill them dynamically
* Improve tutorial chronology
* Add flow input connexion with first sctript
* Improve overlay
* Improve wording
* Add new tutorial step to show node b
* Add test step
* Add cursor to pick typescript
* Improve end of tutorial
* Refactor
* Highlight bottom right corner for 5 and 6
* Fix last step overlay
* change home tutorial button
* guidelines nits
* Automate onNext() trigger on step 3
* Improve fakr cursor for Test this step button
* Improve overlay transitions
* Merge data connectors and test step steps
* Improve live code writing in step 3
* Add a step to complete the flow
* Improve the step where we generate remaining scripts
* Refactor
* Add blocking behavior on step 3
* nit about delay
* Prevent clicking on Next while code not generated
* Sharpen wordings
* Remove Svelte 4 and migrate to Svelte 5
* Remove unecesary helper function
* Add toast if the user clicks on Next button before code finished generating
* Add toasts to each step
* Improve tutorial trigger timing
* Improve delays
* Add cursor movement to Test Flow button
* Block previous on certain steps to prevent bug
* Fix for github npm check
* Fix for github npm check
* Unlike workspace onboarding and flow tutorial
* Rename flow tutorial with better name
* Remove the automatic trigger for flow previous and broken tutorial
* Push tutorials to Help sectionof the sidebar
* Fix redirection t /tutorials page
* Add tutorials page and update workspace onboarding flow
- Rename guides to tutorials page (/tutorials)
- Add workspace onboarding tutorial to tutorials page
- Remove Tutorial button from homepage
- Add welcome cards for empty workspace with 3 tutorial options
- Update workspace onboarding to redirect to homepage before starting
- Clean up URL parameter after tutorial completion
- Move Tutorials to Help menu in sidebar
- Remove automatic "action" tutorial trigger for new flows
- Add flow-live-tutorial (renamed from workspace-onboarding-continue)
- Add Previous button blocking with toast notifications in flow tutorial
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Add tutorials to workspace homepage
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Start tutorials for Run/logs section
* Fix data connector
* Add flow execution graph from Run drawer
* Add tabs highlighting in drawer
* Improve tutorial on run drawer
* Add mouse cursor moving from graph tab
* Add cursor click on script in Drawer Graph tabs
* Add troubleshooting flow in tutorial
* Add step to show logs of failed step
* add step 7 to invite the user to fix by himself and se the new results
* Improve wording
* Nit improvements
* Nits
* Refactor
* Refactor
* Rename the tutorial
* Remove deleted file
* Improve wording
* Improve first step of troubleshooting flow tutorial
* Add tutorials to /tutorials page and create component
* Remove previous Flow tutorials
* Fixes, and improve tutorial button design
* Improve status in Tutorial button
* Align tutorial button to brand guidelines
* Add skip all to onboarding workspace tutorial
* Add skipped_all to tutorial_progress
* Connect backend and frontend for tutorial progress
* Add store and helper to display or not Tutorials from left menu
* Add reminder at the end of each tutorial
* Add tutorial banner
* Remove tutorials from elpty workspace
* Improve Tutorials page
* Align banner to guidelines
* Add reset tutorials buttons
* Refactor
* Refactor to make it easy to add new tutorials and tabs
* Improve tutorial config to make it easy to add new tutorials
* Refactor and remove hardcoded indexes
* Add getTutorialIndex in tutorial config file
* Nit
* Add Mark all as complete button in tutorial page
* Add skip tutorial button in banner toast
* Replace if else in tutorials router by map to make it easier to maintain and scale
* Delete broken simple app tutorial
* Add Guide flow guide buttons inside the Create Flow page
* Add flow editor tutorials into flow builder page
* Update existing app tutorials with new tutorial system
* Create a dedicated tutorial category for app editor
* Add global progress bar
* Add Reset & Skip at tutorial category level
* Add progress to tab title
* Nits on design
* Make progress bar a props and design nits
* Add active props for Tutorial Category
* Display tutorials according to the user role
* Adapt progress bar to the user role
* Add roles array for each tutorial
* Add Tutorials tab in Operator menu
* Edge case if no Category and no Tutorial available for my role
* Allow the user to reset a single tutorial
* Allow a user to mark as completed a single tutorial
* Nit on hoovering tutorial status
* Allow admins to see which tutorials are available per role
* Create utils that allow admins to see which tutorials can access other roles of their organization
* Refactor resetSingleTutorial and completeSingleTutorial into one function
* Improve role system
* Remove hardcoded MAX_TUTORIAL_ID
* Fix type assertion
* Remove console log
* Reduce recalculations when unrelated state changes
* Add console.error
* Remove unused function
* Add tutorial wrapper and better router
* Nits to pass npm checks
* Fix typescripts and lint errors
* Add SQLx query cache for tutorial_progress queries
* Improve wording for workspace tutorial
---------
Co-authored-by: Diego Imbert <diego@windmill.dev>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
* data tables settings ui
* install runed
* zod 4 fixes
* use new toJSONSchema
* Migrate ducklake catalogs to more generic custom instance databases
* fix compilation
* Safety conversion for old duckdb ffi
* data tables settings
* ts client basis
* inline run works
* datatables work
* Revert "datatables work"
This reverts commit 6e1588d59e.
* datatables work (without leaking pg credentials)
* println
* separate sqlUtils.ts
* nit
* Separate custom instance db Select and Wizard components
* nit
* nit wording
* add tags to custom instance dbs
* error when trying to use ducklake as datatable or opposite
* show status in dropdown
* data table instance setup works
* sqk function for ducklake
* factorize logic
* fix temp reactivity
* Data table assetexplore
* Migrate S3 permissions to modal
* Revert "Migrate S3 permissions to modal"
This reverts commit 0631d03cb0.
* nit query -> fetch
* Custom instance setup new look
* run_language_executor separate fn
* run_inline param
* nit wording
* Better typed client
* Data tables display as assets in frontend
* asset db icon
* nit
* cleaner errors
* nit
* Fix sed calls in mac
* run_inline_script_preview in python client
* basic python datatable client
* datatable and datalake parser in python
* ducklake client python
* nit fix
* Fix migration producing NULL instead of {} when no custom databases
* merge conflict fail
* python ducklake client arg fix
* parse or infer sql types in ts client
* ts asset parser, detect datatable & ducklake R/W
* fix sql repl for other read ops than select
* export type SqlTemplateFunction
* rename list_custom_instance_pg_databases
* typecheck datatable and ducklake name in Typescript
* Fix typecheck datatable and ducklake in TS
* declare module overriding instead of extending
* infer_sql_type in python client
* SqlQuery object in python
* fix merge conflicts
* update const_format
* CI fix
* factor out to var_identifiers
* sqlx prepare
* unnecessary security (admin is required)
* clearer comment
* ee repo ref
* nit snake case
* claude step 1: detect var declarations
* move detect_sql_access_type to common mod
* claude step 2: detect when saved vars are queried
* Revert "claude step 2: detect when saved vars are queried"
This reverts commit 1e1f930568.
* Revert "claude step 1: detect var declarations"
This reverts commit f866f4819d.
* remove ducklake/datatable and default
* detect data table assigns in var_identifiers
* Python parser successfully infers R/W/RW from ducklake / datatable
* still register ducklake/datatable if not used as unknown R/W
* Go to settings button in Assets Dropdown on not found
* nit
* sqlx prepare fail
* manual fix, somehow sqlx prepare won't do it
* fix frontend ci
* ee repo ref
* ducklake_user doesnt exist in unit tests
* nit fix
* ui nit
* nit
* nit missing clone
* fork ducklakes and datatables
* fix surface hover bug
* stupid mistake
* better deeply reactive mutable derived
* Ducklake picker
* Editor bar data tables
* DuckDB supports datatables
* datatable in duckdb asset parser
* duckdb asset parser var_identifiers
* Revert "duckdb asset parser var_identifiers"
This reverts commit 88068b1a77.
* sqlx prepare
* Box pin in test_workflow_as_code to fix stack overflow
* go to settings button
* ee repo ref
* fix compilation
* wording nit
* feat: show related job when deployment is in progress
- Added job_id column to deployment_metadata table to track current deployment jobs
- Updated backend to store job_id when creating dependency jobs for scripts and flows
- Modified deployment status API endpoints to include job_id in responses
- Updated frontend to display clickable job link in "Deployment in progress" badge
- Added OpenAPI schema updates for new job_id field
Resolves#7293🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
* update
---------
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
* add toggle option + chat interface
* backend impl
* draft
* put info in schema
* Revert "backend impl"
This reverts commit c534eeb49986424e2c12e2c5642be4e17ba380d1.
* chat interface in flow input
* cleaning
* add logic for running flow + styling
* handle historic args
* fix frontend changes
* add tables
* add conv list
* add endpoints
* adapt frontend
* list message logic
* save message in db
* save response in db
* cleaning
* better migrations
* refresh on new conv
* better logic for messages
* nit
* genere conversation uuid from frontend
* store chat mode info in flow status
* better ui for chat
* collapse chat
* ui
* infinite scroll on convs
* infinite scroll on messages
* fix ui
* new chat entry on new
* cleaning
* change setting logic
* fix test logic from flow input
* move toggle to input
* add warning modal when enabling chat mode
* add summary and explanation on inline script
* add hint for chat mode on user_message desc
* show chat message instead of input in graph
* add warning for triggers
* one logo when not expanded
* use infinitelist for conversations
* add warning when deployment in progress
* full width button
* better icon for menu
* better input + nits
* put toggle in action
* use waitjob
* cleaning
* cleaning
* scroll on new + cleaning
* use enum
* fix logic
* full screen
* cleaning
* exit on updatesqlx error
* Update SQLx metadata
* fix
* cleaning
* add for wait result endpoint
* add missing drop
* delete cascade
* fix: use macro version of query_as in flow_conversations.rs
Use sqlx::query_as! macro instead of query_as function for compile-time
SQL validation and better type safety
Co-authored-by: centdix <centdix@users.noreply.github.com>
* fix: update comment to clarify conversation message update condition
The comment now accurately reflects that the update happens when
it's a flow and it's done (flow_is_done)
Co-authored-by: centdix <centdix@users.noreply.github.com>
* fix: only parse chat_input_enabled if conditions are met
Move the parse_chat_input_enabled() call inside the condition check
to avoid unnecessary parsing when the flow is not done or unsuccessful
Co-authored-by: centdix <centdix@users.noreply.github.com>
* fix: use the same transaction for conversation creation
Pass transaction to get_or_create_conversation_with_id instead of
creating a new one, ensuring all operations are atomic
Co-authored-by: centdix <centdix@users.noreply.github.com>
* fix: remove update trigger and handle updated_at in application code
Remove the database trigger that automatically updates conversation
timestamp and instead update it explicitly when creating messages.
This gives better control and consistency.
Co-authored-by: centdix <centdix@users.noreply.github.com>
* Update SQLx metadata
* cleaning
* feat(aiagent): handle memory (#6719)
* implement memory
* s3 logic for memory
* fix typo
* much cleaner
* cleaning
* cleaning
* only if chat
* display nit
* nit
* fix stack overflow
* cleaning
* use len arg from input
* cleaning
* change order
* delete memory when conv deleted
* cleaning
* nit
* show description in expr mode
* opti
* opti
* updatee ref
* store string as simple string
* use markdown
* do not wait for deletion
* add delete loading
* fix logic
* fix markdown
* Update ee-repo-ref.txt
* Update SQLx metadata
* fix in test interface
* nit
* nit
* fix layout
* use memory_id to store memory
* shorter description
* rls + grant
* fix text overflow
* extract output from res
* cleaning
* handle streaming
* cleaning
* fix tool error
* nit
* update ref
* fix
* Update SQLx metadata
* nit
---------
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: centdix <centdix@users.noreply.github.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
* feat(backend): job result stream optimization
* get offset locally instead of from db
* fix: agent worker result stream
* update ref
* nit
* remove foreign key on job
* fix build
* Add create_ephemeral workspace endpoint
* Add cli devShell
* List ephemeral workspaces + improve endpoint
* Add postgres function to clone a workspace (to be revisited)
* Clone workspace using the postgres function
* Add first iteration of ephemeral workspaces command
* Update display of forked workspaces
* Remove SQLX_OFFLINE
* Add UI to create ephemeral workspace
* Add option to exclude repository from being inherited to forks
* WIP: reworking cloning logic
* Fix cloning
* Fix redirect after creating fork
* Clean up cloning behaviour
* Rename ephemeral to fork
* emove ephemeral_workspaces table in favour of columns in workspaces
* Fix display of forked workspaces
* Fix skip inherit git sync repo setting
* Fix fork invite display + creating fork as user
* Fix SideMenu bug
* Fix alignment
* Simplify migrations
* Update deletion of workspaces
* Delete forked workspace from cli
* Deleting fork workspaces from the UI as non-admin
* Update cli sync and fork creation to adapt to branches and forks
* Update fork prefix
* Remove skip tracking toggle
* Fix npm check warnings
* Fix last npm check
* fix: force stdin to Stdio::null for all user code execution (#6575)
Set stdin to Stdio::null for all Commands that execute user code across all supported languages to prevent unwanted input consumption. This affects Python, Deno, Bash, PowerShell, Go, Rust, PHP, Ruby, Java, C#, Ansible, Nu, and Bun executors.
The dedicated worker handler was intentionally left unchanged as it requires stdin for inter-process communication.
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
* Update ee-repo ref
* Update SQLx metadata
* Fix typos
---------
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
* feat: add worker_group_job_stats table for job metrics aggregation
- Add new table with hour timestamp, worker group, script lang, workspace_id, job count and total duration
- Workers accumulate stats in memory and update hourly via sum aggregation
- Monitor.rs cleans up rows older than 60 days periodically
- Stats are flushed on worker shutdown to prevent data loss
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
* all
* all
* ee-repo-ref
* nits
* nits
---------
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
* feat: add 60-second cache for variables and resources with PostgreSQL invalidation
- Add new var_resource_cache module with 60-second TTL
- Implement PostgreSQL NOTIFY/LISTEN for immediate cache invalidation
- Cache get_variable() for non-secret, non-encrypted reads
- Cache get_resource_value() for all read operations
- Add database triggers on variable/resource table changes
- Initialize cache system in main.rs after database connection
- Add Clone derive to ListableVariable for cache compatibility
Performance benefits:
- Avoids database queries on cache hits
- Immediate invalidation ensures data consistency
- Selective caching respects security constraints
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* refactor: move cache to API layer with allow_cache query param
- Move variable/resource cache from windmill-common to windmill-api
- Add allow_cache query parameter to variables and resources endpoints
- Follow raw script cache pattern with timestamp + value structure
- Create proper database migration for notification triggers
- Include encrypted values in cache when appropriate
- Only activate caching when explicitly requested
Co-authored-by: Ruben Fiszel <rubenfiszel@users.noreply.github.com>
* refactor: move cache to API layer with allow_cache query param
Move PostgreSQL LISTEN logic to main.rs following established pattern
- Remove custom listener initialization from cache module
- Add cache invalidation channels to centralized notification handler
- Simplified cache module to only handle cache operations
- Follow raw script cache pattern for notification handling
Co-authored-by: Ruben Fiszel <rubenfiszel@users.noreply.github.com>
---------
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Ruben Fiszel <rubenfiszel@users.noreply.github.com>
* feat: add 60-second cache for workspace key retrieval
This implements a cache with 60-second staleness for the get_workspace_key
function to reduce database queries for workspace encryption keys. The cache
follows the same pattern as the existing CUSTOM_ENVS_CACHE but with a
shorter expiration time.
Requested by @rubenfiszel
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
* Extend cache staleness from 60 to 300 seconds
* feat: add cache invalidation notifications for workspace keys
Add PostgreSQL LISTEN/NOTIFY mechanism to invalidate workspace key cache
across all servers and workers when workspace keys change.
- Add database migration with trigger function for workspace_key changes
- Add notification handler in main.rs to remove from WORKSPACE_KEY_CACHE
- Follow same pattern as existing workspace environment cache invalidation
- Ensures distributed cache consistency for workspace encryption keys
Co-authored-by: Ruben Fiszel <rubenfiszel@users.noreply.github.com>
* finish
---------
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
Co-authored-by: Ruben Fiszel <rubenfiszel@users.noreply.github.com>
* feat: ai agent steps base
* better backend and graph
* feat: anthropic, log viewer
* nit
* fix(frontend): hide tool nodes from timeline
* move ai agent actions from flow status to flow status module
* nits and workspace/hub scripts support
* tmp ref
* fix merge
* feat: display agent tools status in the graph
* fix reactivity
* fix flow status
* nit