Commit Graph

12199 Commits

Author SHA1 Message Date
Diego Imbert
e671aaedf9 Runs page nits (#8084)
* nit warning toast

* timeframe as URL param

* all workspaces filter only in admins workspace

* nit bold todays date
2026-02-26 17:41:59 +00:00
hugocasa
7d44ff4346 feat: add force_branch parameter to git sync settings (#8089)
* feat: add force branch param to git sync settings

* update hub path

* chore: update ee-repo-ref to a797dd4d619cdab737e133ce593f2f8582ba21de

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

Previous ee-repo-ref: 373c5870ae5499c8c8a22cb92b2fd3a64a651183

New ee-repo-ref: a797dd4d619cdab737e133ce593f2f8582ba21de

Automated by sync-ee-ref workflow.

* UI nits

* nit

---------

Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
2026-02-26 18:23:44 +01:00
centdix
d12850d52e feat: add wmill docs CLI command for querying documentation (#8114)
* feat: add wmill docs CLI command for querying documentation

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

* fix: show loading message before fetch, include error body, clarify --json description

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

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-26 17:05:29 +00:00
wendrul
14b6aab902 add button to edit in workspace fork (#8119)
* Add button to edit in workspace fork

* Remove old fork from script row

* Remove fork button from approw

* fix frontend check
2026-02-26 16:43:30 +00:00
wendrul
82c31e2c30 Add on behaklft of selector for script flow apps (#8117) 2026-02-26 16:30:11 +00:00
centdix
3d480ad562 chore: add mermaid CLI to sandbox image with usage instructions (#8104)
* chore: add mermaid CLI to sandbox image with usage instructions

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

* chore: mount host ~/.ssh into sandbox and install openssh-client

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

* chore: remove sample diagram

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

* chore: address PR review comments on mermaid CLI setup

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

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-26 14:04:05 +00:00
Diego Imbert
34844e5091 feat: Broad filters for search (#8112)
* Default filters

* nit style

* Nit fixes

* broadFilter for runs

* unused param

* Remove debounce from assets page

* Escape ILIKE patterns

* fix pg enum cast to text for ILIKE

* nit error
2026-02-26 14:03:46 +00:00
wendrul
82a574a980 feat: change on behalf selector to allow picking any user + select value in target by default if possible (#8113)
* Make modal for on behalf of selector

* Auto-select target

* Show name of selected OnBehalfOfSelector

* Fix frontend check
2026-02-26 14:02:11 +00:00
Ruben Fiszel
6b8ae5578d chore(main): release 1.645.0 (#8083)
* chore(main): release 1.645.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2026-02-26 14:31:41 +01:00
hugocasa
8f7d467ef4 fix(backend): fix skip check crash when flow-level skip_expr triggers on first module with skip_if (#8111)
When a flow has a flow-level `skip_expr` (or `no_flow_overlap`) and the first
module has `skip_if` defined, the flow-level condition returns `UpdateFlow`
before any identity job is created. The `UpdateFlow` path passes `Uuid::nil()`
as `job_id_for_status`, causing `fetch_one` to fail with "no rows returned".

- Change `fetch_one` to `fetch_optional` so a missing row returns false
- Short-circuit the DB query with `stop_early && skip_if_stop_early` so both
  skip mechanisms (identity job check and early-stop skip flag) are considered
- Also fixes the logical gap where a module with both `skip_if` and
  `stop_after_if` would only check the identity job, ignoring the early-stop
  skip signal

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 11:34:18 +00:00
Diego Imbert
c2ca61c754 Update duckdb (#8110)
* Update duckdb

* nit
2026-02-26 10:34:10 +00:00
Ruben Fiszel
3e1fbb436e feat: per-worktree database isolation and Claude Code auto-trust
Create a dedicated PostgreSQL database for each worktree during
workmux post_create, run sqlx migrations, and drop it on cleanup.
Also auto-trust the worktree directory in ~/.claude.json.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 10:31:08 +00:00
Diego Imbert
690d125685 Delete filters instead of setting undefined (#8108) 2026-02-26 09:38:57 +00:00
Ruben Fiszel
b32d791a1c fix: use main runtime handle in QuickJS eval to prevent connection pool poisoning (#8106)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-26 08:45:37 +00:00
Ruben Fiszel
aa2f47390c fix: remove duplicate num_columns in test_parse_relation test
The num_columns i16 was written twice, causing the parser to read
the second copy as column data and misparse the column name.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 08:36:10 +00:00
Ruben Fiszel
1973ba7d18 fix: improve Anthropic API proxy handling and update default models (#8105)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 08:45:21 +01:00
Ruben Fiszel
b889274400 sqlx 2026-02-26 00:01:17 +00:00
Ruben Fiszel
5d314e6923 fix: optimize slow list_assets query for recents loading (#8103)
* fix: optimize slow list_assets query with covering index and v2_job join fix

Add a covering index on asset(workspace_id, path, kind, created_at DESC, id DESC)
with INCLUDE(usage_kind, usage_path) to enable index-only scans for the CTE aggregation.
Fix v2_job join to cast asset.usage_path::uuid instead of job.id::text, allowing
PostgreSQL to use the job_pkey primary key index instead of seq scanning the entire table.

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

* fix: drop redundant asset indexes subsumed by new covering index

idx_asset_workspace_created_id and idx_asset_kind_path are fully covered
by the new idx_asset_ws_path_kind_recent + the primary key. Verified all
asset table queries still have optimal index coverage. Reduces write
amplification on inserts.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 00:39:15 +01:00
Ruben Fiszel
e825640f05 fix: resolve Vite dependency pre-bundling errors (#8102)
Exclude `windmill-client` from optimizeDeps (only appears in template
strings, not an actual frontend dependency) and remove uninstalled
`monaco-editor-wrapper` from optimizeDeps.include.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 00:23:55 +01:00
Ruben Fiszel
7e223985dd fix: use @-prefixed LIKE pattern for email domain matching (#8101)
* fix: use @-prefixed LIKE pattern for email domain matching in auto-invite

The SQL queries for auto-add and auto-invite used `LIKE CONCAT('%', domain)`
which could match emails from unrelated domains (e.g., `user@barfoo.com`
matching domain `foo.com`). Changed to `LIKE CONCAT('%@', domain)` so only
exact domain suffixes match.

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

* chore: update ee-repo-ref.txt

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 22:53:31 +00:00
Ruben Fiszel
741446a606 chore: bump Svelte ecosystem to latest Vite 7-compatible versions (#8099)
* update: bump Svelte ecosystem to latest Vite 7-compatible versions

Bump svelte (5.39→5.53), @sveltejs/kit (2.49→2.53), vite-plugin-svelte
(6.2.1→6.2.4), svelte-check (4.3→4.4), @sveltejs/package (2.5.4→2.5.7).
Stays on vite-plugin-svelte 6.x to avoid requiring Vite 8.

Fix DucklakeSettings.svelte missing lang="ts" on instance script tag
(new compiler rejects import type syntax in plain JS blocks).

Fix getCurrentModel race condition where changeMode was called reactively
before copilot info loaded, causing "No model selected" error on init.

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

* fix: move early return guard before mode assignment in changeMode

Avoid inconsistent state where this.mode is set to SCRIPT but
systemMessage/tools/helpers are stale from the previous mode.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 21:51:47 +00:00
centdix
5eb25b0bcd internal: wmdev config (#8096)
* use gemini

* linked repos
2026-02-25 18:47:59 +00:00
hugocasa
444415c6ce feat: add resume and cancel button text options to Slack approval API + formatted args + typo (#8095) 2026-02-25 17:28:06 +00:00
wendrul
a8bf3c840e feat: show triggers in fork deploy to parent UI. (#8094)
* Add rudimentary trigger display in WorkspaceCOmparison

* Trigger display

* Add email specification

* Add link to trigger page

* fix typo

* fix frontend check
2026-02-25 17:23:38 +00:00
Guilhem
99d0b6c78c fix: correct asset node x offset inside loops and branches (#8093)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 15:48:09 +00:00
Diego Imbert
a3ed9f2607 feat: Data table as pg resource / trigger (#8088)
* Enable running pg scripts with datatable database input

* Postgres triggers for data tables

* REPLICATION attribute on custom_instance_user

* disable edit for datatables

* Update backend/windmill-trigger-postgres/src/replication_message.rs

Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>

---------

Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
2026-02-25 15:06:12 +00:00
HugoCasa
b1bbf2cf97 workmux better ee cleanup + cursor wrapper autocompletion and open-ee 2026-02-25 15:44:42 +01:00
wendrul
96b5b3e8bb feat: option to preserve on_behalf_of and edited_by for admins and users in the new wm_deployers group (#8079) 2026-02-25 12:05:22 +00:00
Diego Imbert
382b27bbbc Register sub components in aggrid modal (#8087) 2026-02-25 11:04:38 +00:00
Ruben Fiszel
812419b2bf fix: delete non-session tokens on workspace archive and reject token creation for archived workspaces (#8082)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 09:04:05 +00:00
hugocasa
a7d1e34619 fix(backend): pass parent_path for trigger renames in git sync (#8059)
* fix(backend): pass parent_path for trigger renames in git sync

When renaming/moving a trigger path, the old path was not included in
the deployment metadata, so git sync never deleted the old file. This
adds parent_path to all 9 trigger DeployedObject variants and computes
it in update_trigger when the path changes.

Fixes #8014

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

* fix path change with common prefix issue

* update ref

* chore: update ee-repo-ref to cb25312072c15c0e9cc375ebc824d41995a52898

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

Previous ee-repo-ref: 7225f7423311f58015a2fab61248c9d89888aef6

New ee-repo-ref: cb25312072c15c0e9cc375ebc824d41995a52898

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-02-25 09:01:59 +00:00
HugoCasa
0d5851cbf7 expose flow recording replay types 2026-02-25 09:41:34 +01:00
centdix
966997bf22 internal: nit workmux sandbox 2026-02-24 19:57:07 +00:00
Roderik-WU
73e9220d98 Clarrify documentation in the tooltip for flow for/while loop error handling when "Skip failures" enabled (#8077)
* Update FlowLoop.svelte

Made it clear that only flow level error handlers are triggerd for a failure inside a flow loop with "skip failures" enabled.

* Update FlowWhileLoop.svelte
2026-02-24 19:56:22 +00:00
hugocasa
1f0e2b32b4 add flow recording and offline replay (#8080)
Add the ability to record a flow test execution and replay it offline
without any API calls. This is useful for debugging, sharing, and
reviewing flow executions outside of a running Windmill instance.

Recording:
- "Test flow & record" option in the flow editor three-dots menu
  opens the test drawer in recording mode
- While in recording mode, running a test captures all job events
  (SSE streams, sub-job completions, flow status transitions) along
  with the flow definition into a downloadable JSON file
- Recording state module (flowRecording.svelte.ts) manages active
  recording/replay instances at the module level

Replay:
- Standalone /replay page where users upload a recording JSON file
  and watch the flow execute with real-time status transitions
- FlowRecordingReplay component handles timestamp rebasing, event
  ordering fixes, and drives FlowStatusViewer with recorded data
- JobLoader intercepts replay mode to feed recorded events via
  timed callbacks instead of real SSE/polling
- FlowStatusViewerInner and FlowLogViewer guard all API call sites
  to prevent network requests during replay
- Job links, log downloads, and resource lookups are suppressed
  in replay mode

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 19:55:20 +00:00
hugocasa
bb03497967 Improve workmux dev workflow scripts and docs (#8078)
- Add CARGO_FEATURES passthrough: backend pane reads from .env.local,
  wm-cursor supports --features flag on add/open commands
- Fix node_modules copy in worktrees: use cp -a to preserve .bin/
  symlinks that cp -r would dereference (fixes openapi-ts errors)
- Fix EE repo discovery from worktrees: resolve main repo root via
  git-common-dir, search multiple candidate paths
- Add cursor session cleanup to worktree-cleanup (pre_remove hook)
- Use workmux -b flag in wmc add, remove npm install from frontend pane
- Change openBrowserOnce for Cursor port forwarding
- Document cargo features usage and fix stale files.symlink reference
  in README

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 16:34:00 +00:00
centdix
a60da3a33f internal: workmux (#8072)
* config

* nit

* add wmdev config

* remove playwright mcp

* add asciicinema

* custom image

* mistake
2026-02-24 15:33:37 +00:00
Ruben Fiszel
cf3bd7b483 chore(main): release 1.644.0 (#8068)
* chore(main): release 1.644.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2026-02-24 09:35:33 +00:00
Ruben Fiszel
83bfd91e0e sqlx 2026-02-24 09:32:30 +00:00
Ruben Fiszel
9352e74eb2 add x-go-name to resolve duplicate JobTriggerKind typename in Go codegen (#8071)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-24 09:26:44 +00:00
Ruben Fiszel
ef10be1dab add schedule and future jobs icon toggles to runs page (#8070) 2026-02-24 09:24:02 +00:00
Ruben Fiszel
006f49363b nit workmux 2026-02-24 09:10:16 +00:00
Ruben Fiszel
3ae4cb183a nit workmux 2026-02-24 09:07:22 +00:00
Ruben Fiszel
011f1f2e6e fix: prevent concurrent index migrations from re-running on every startup (#8069)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 09:00:48 +00:00
centdix
0ace9cba99 feat(cli): detect missing folders on sync push and add 'wmill folder add-missing' (#8011)
* fix: auto-create missing folders during sync push for non-admin users

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

* fix: show missing folders in sync push summary before confirmation

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

* fix: improve sync push folder auto-creation error handling and json output

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

* fix: only treat 404 as missing folder in getFolder check

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

* chore: remove obsolete Deno compatibility layer from yaml-validator

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

* chore(cli): add @types/bun dev dependency

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

* feat(cli): replace auto-create folders with `wmill folder add-missing` command

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

* fix(cli): improve folder commands with summary field and simpler push API

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

* feat(cli): add confirmation prompt to folder add-missing command

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

* refactor(cli): simplify missing folder check to use local stat instead of remote API

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

* update skills

* feat(cli): warn admins but block non-admins on missing folder.meta.yaml

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

* cleaning

* cleaning

* test(cli): add tests for missing folder detection and folder commands

- Add tests for `folder new`, `folder push`, `folder add-missing` commands
- Add tests for sync push missing folder.meta.yaml detection (admin warning, non-admin block)
- Fix getBasePostgresUrl to strip query params (e.g. ?sslmode=disable) from DATABASE_URL
- Add createNonAdminUser and runCLIWithToken test utilities to test_backend.ts

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

* refactor(cli): unify runCLICommand with optional token parameter

Replace separate runCLIWithToken utility with an optional { workspace?, token? }
options object on the existing runCLICommand across all backends.

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

* own workspace

* test(cli): isolate folder_missing_meta tests with per-test workspace

* test(cli): shorten isolated workspace id/name for workspace limits

* test(cli): archive temp isolated workspaces after each folder test

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-24 08:38:17 +00:00
Ruben Fiszel
678b910398 chore(main): release 1.643.0 (#8053)
* chore(main): release 1.643.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2026-02-24 08:33:56 +00:00
Ruben Fiszel
8fdd970a7e ci improvement 2026-02-24 08:33:42 +00:00
Ruben Fiszel
bf99eb17fc disable Reset Code and Apply Changes buttons when no YAML changes (#8067)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-24 08:12:19 +00:00
Ruben Fiszel
305470a81e fix: use correct column name completed_at instead of ended_at in count_completed_jobs_detail (#8066)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-24 08:03:52 +00:00
centdix
07275ed795 internal: workmux config (#8065)
* config

* nit

* add wmdev config

* remove playwright mcp

* add asciicinema
2026-02-24 07:09:49 +00:00