Commit Graph

12230 Commits

Author SHA1 Message Date
Ruben Fiszel 608e97a46e fix: sync flow on_behalf_of_email on load (#8149) 2026-02-28 22:30:15 +00:00
Ruben Fiszel 36151a770f fix: validate tarball URL host against registry to prevent SSRF and token exfiltration (#8153)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-28 22:03:19 +00:00
Ruben Fiszel 7cc6508e44 bun-types 2026-02-28 21:47:41 +00:00
Ruben Fiszel 002ecb8fb6 fix: restore email domain (MX) setting in instance settings UI (#8152)
The email_domain setting was accidentally removed from the frontend
instance settings in a recent onboarding cleanup. The backend still
fully supports it. This restores the setting in the Core section.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 21:46:01 +00:00
Ruben Fiszel b5170f2d33 nit claude settings 2026-02-28 21:39:15 +00:00
Ruben Fiszel 65f0070fc0 fix: add partial index for fast failure filtering on runs page (#8150)
When failures are sparse (<1%), filtering by failure status on the runs
page required scanning millions of success rows. Add a partial index on
v2_job_completed (workspace_id, completed_at DESC) WHERE status IN
('failure', 'canceled') and switch ORDER BY to completed_at when
filtering failures, so Postgres walks the small partial index directly.

Benchmarked at 5.2M rows / 1% failure rate:
- LIMIT 30:   800ms -> 0.4ms (2000x faster)
- LIMIT 1000: 550ms -> 21ms  (26x faster)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 18:18:34 +00:00
Ruben Fiszel 716d16b4ed nit workmux cli 2026-02-28 18:06:39 +00:00
Ruben Fiszel efabba474f fix: process deletes before adds in CLI sync push to avoid conflicts (#8148)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 18:05:33 +00:00
Ruben Fiszel 88eb6ac12e .npmrc nit 2026-02-28 09:16:55 +00:00
Ruben Fiszel fcafc3b133 perf: lazy-load heavy deps (graphql, openapi-parser, sha256) (#8145)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 09:11:00 +00:00
Ruben Fiszel 3daf79efad copy .npmrc in Dockerfiles so npm ci resolves legacy-peer-deps (#8146)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 09:08:03 +00:00
Ruben Fiszel 2ef8f32383 perf: lazy-load markdown in Tooltip components (#8143)
* perf: lazy-load markdown in Tooltip to reduce stores2 chunk by 335KB

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

* refactor: migrate TooltipInner to Svelte 5 runes

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

* perf: remove markdown rendering from Tooltip components

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

* fix: use HTML tables for date format tooltips to preserve formatting

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 08:52:10 +00:00
Ruben Fiszel 12c140c3a2 chore: update vite to 8, vite-plugin-svelte to 7 (#8141)
* chore: update vite to 8 beta, vite-plugin-svelte to 7, vitest to 4.1 beta

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

* chore: add .npmrc with legacy-peer-deps for vite 8 beta

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 07:50:31 +00:00
Ruben Fiszel bc3284959e fix: copy deps and remove user auto-add on workspace fork (#8142)
* fix: copy deps and remove user auto-add on workspace fork

Clone workspace_dependencies to forked workspaces and remove
automatic workspace_invite creation for parent workspace users.

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

* chore: update sqlx offline cache

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 07:39:27 +00:00
Diego Imbert 50b64df92a Fix python datatable client requiring explicit types (#8086)
* Support arg type decl in postgres

* Python datatable client no longer requires explicit arg typing

* compilation fix

* Set correct type in statement exec

* reset to main

* Explicit pg arg types

* remove code duplication

* update parser js

* FLOAT8 doesn't have space

---------

Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
2026-02-28 07:08:02 +00:00
claude[bot] aa09e6fe9f add Google triggers doc link in workspace native triggers settings (#8091)
Add docsUrl to the Google service config in WorkspaceIntegrations so a
"Docs" button appears next to the Google integration, linking to
https://www.windmill.dev/docs/core_concepts/native_triggers#google-triggers.
This follows the same pattern already used for Nextcloud.

Closes #8090

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: Henri Courdent <122811744+hcourdent@users.noreply.github.com>
2026-02-28 07:04:40 +00:00
Diego Imbert fb9bca7c8f fix: Handle CTEs and local tables in SQL asset parser (#8131)
* Handle CTEs and local tables in SQL asset parser

* also handle CREATE VIEW

* Update package regex version
2026-02-28 07:04:19 +00:00
claude[bot] 455801f157 prevent dropdown from switching to top when less space is available above (#8126) 2026-02-28 07:03:44 +00:00
hugocasa 9815dd11b1 feat: populate baseUrl and userId in Nextcloud resource from OAuth (#8132)
When connecting Nextcloud via workspace integration OAuth, the resource
now includes baseUrl (from OAuth config) and userId (fetched from
Nextcloud OCS API) alongside the token, making it immediately usable
by scripts. Falls back to token + baseUrl if user info fetch fails.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 07:03:15 +00:00
Diego Imbert 774f35b120 fix: fix custom TS Monaco worker not reloading on file uri change (#8130) 2026-02-28 07:01:23 +00:00
centdix bd5239fb7e refactor: slim down claude instructions for lean context and fast iteration (#8136)
* refactor: slim down claude instructions for lean context and fast iteration

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

* fix: add private and license feature flags to enterprise validation docs

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

* feat: add /refine skill for end-of-session doc evolution

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

* refactor: remove architecture.md overview doc per research findings

General codebase overviews distract agents and trigger unnecessary
exploration. Keep only operational docs (validation, enterprise).

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

* feat: add autonomous mode doc for bypass permission workflows

Covers: plan-first requirement, tmux pane usage for checking
backend/frontend logs, manual testing via Playwright MCP,
Playwright gotchas, and end-of-task summary expectations.

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

* feat: add mermaid, playwright, and asciinema tools to autonomous mode doc

Claude should use mmdc for diagrams during planning, playwright CLI for
screenshots of frontend changes, and asciinema for terminal recordings
of CLI changes. All attached to the PR.

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

* fix: use pastebin for screenshot/recording uploads

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

* fix: address PR review findings

- Remove stale docs/architecture.md reference from /refine skill
- Fix script name: ./update-sqlx -> ./update_sqlx.sh
- Remove .claude/settings.local.json mention from enterprise doc

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 07:00:19 +00:00
centdix 33036baca2 refactor: rewrite flake.nix for clarity and modularity (#8137)
* refactor: rewrite flake.nix from scratch for clarity and modularity

Rewrite the Nix flake with clean separation of concerns, organized
let-bindings, and 4 purpose-specific devShells instead of a monolithic
default shell with broken package outputs.

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

* feat: add CLI tools to default devShell (gh, aws, playwright, mermaid, asciinema)

Add tools needed for AI agent workflows and dev tooling:
- gh (GitHub CLI)
- awscli2
- asciinema (terminal recording)
- playwright-driver with Nix-managed browsers
- mermaid-cli (diagram generation)

Playwright browsers are provided via nixpkgs' playwright-driver.browsers.
Mermaid/Puppeteer reuses the headless_shell from the same browser set.

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

* fix: move wm-minio scripts to default devShell

MinIO (local S3) is needed for regular development, not just the full
profile.

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

* fix: use playwright wrapper + chromium for browser tools

Replace playwright-driver (library, no CLI) with:
- A `playwright` wrapper script that calls the Nix playwright-core CLI
  (version-matched to its own Nix-provided browsers)
- pkgs.chromium for Mermaid/Puppeteer (which respects PUPPETEER_EXECUTABLE_PATH)

This fixes playwright screenshot and mermaid diagram generation.

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

* feat: auto-load .env.local from main worktree in all devShells

Gitignored files like .env.local don't exist in git worktrees.
Add a shared shellHook that resolves back to the main tree via
git-common-dir and sources .env.local if present. This ensures
AWS credentials and other secrets are available in worktrees.

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

* fix: replace deprecated pkgs.hostPlatform with stdenv.hostPlatform

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

* chore: remove AWS CLI from flake and sandbox images

Pastebin is sufficient for screenshot sharing; AWS credentials
add unnecessary complexity.

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

* fix: address PR review — ruby mismatch, quoting, shell dedup

- Fix pkgs.ruby → pkgs.ruby_3_4 in extraRuntimeVars to match extraRuntimes
- Replace $* with "$@" in all helper scripts (wm, wm-build, wm-caddy,
  wm-bench, wm-cli) to correctly preserve argument boundaries
- Extract coreBuildInputs, browserVars, and playwrightWrapper as shared
  let-bindings to eliminate duplication between default and full shells

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

* chore: remove .env.local auto-loading from devShells

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 06:51:02 +00:00
Diego Imbert d1d7757b00 feat: runScript inline for path and hash (#8019)
* runScript inline for path and hash

* Update backend/windmill-api/src/jobs.rs

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

* refactor: unify inline script param structs and deduplicate closures

- Replace RunInlineScriptByPathFnParams and RunInlineScriptByHashFnParams
  with a single RunInlineScriptFnParams using InlineScriptTarget enum
- Collapse two nearly-identical closures in worker.rs into one
- Merge duplicate InlineByPath/InlineByHash into InlineScriptArgs
- Extract shared run_inline_script_inner helper in API handler
- Add missing check_scopes to run_inline_script_by_hash endpoint
- Fix duplicate lines from prior commit in run_inline_script_by_path
- Change tag from "inline_preview" to "inline" for deployed scripts

Co-authored-by: Diego Imbert <diegoimbert@users.noreply.github.com>

* Integration tests

* rm

* rename feature to run_inline

* Run inline integration tests

* Fix tests

* check path scope

* openapi fix

* nits

* remove register_potential_assets_on_inline_execution

* unused variable

* refactor

* Pass user_db to check script permission

---------

Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Diego Imbert <diegoimbert@users.noreply.github.com>
2026-02-27 13:59:14 +01:00
HugoCasa 22b47b64c0 fix: remove review comments from discord notifications and support comment edits
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 13:32:12 +01:00
HugoCasa 9a2cbcc77a fix: prevent wm-cursor from hanging on stale cursor IPC sockets
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-27 13:09:30 +01:00
HugoCasa 503bda2bb7 nit button text override slack interactive approval request 2026-02-27 09:59:46 +01:00
Ruben Fiszel 0f101ab799 replace SELECT * with explicit columns in teams command query (#8129)
* fix: replace SELECT * with explicit columns in teams command query

- Update sqlx offline cache for the changed query
- Fix write_latest_ee_ref.sh to prefer matching EE worktree branch
- Update ee-repo-ref.txt

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

* chore: update ee-repo-ref to 8ffae1f43b31dc8136714fa612d22b6301773e27

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

Previous ee-repo-ref: da1f8bf8676f85cac2b6fa2705246e1819d4b6f0

New ee-repo-ref: 8ffae1f43b31dc8136714fa612d22b6301773e27

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-27 06:54:33 +00:00
claude[bot] 9b6df6b542 fix:: persist show schedules and show future jobs toggles in local storage (#8125)
Store the runs page 'show schedules' and 'show future jobs' filter toggles
in local storage using useLocalStorageValue so they persist across page
navigations. URL parameters remain dominant - local storage values are only
applied when URL params are undefined.

Closes #8123

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>
2026-02-27 06:24:49 +00:00
Ruben Fiszel 8073cd0b7b chore(main): release 1.646.0 (#8116)
* chore(main): release 1.646.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2026-02-26 18:42:50 +00:00
Ruben Fiszel 95fa363445 fix: remove duplicate job loading on chart zoom (#8121)
- Remove explicit loadJobs(true) calls from onZoom handlers in RunChart
  and ConcurrentJobsChart — setting _timeframe.val already triggers the
  effect which calls onParamChanges
- Fix debounce by hoisting promise ref outside effect closure so cleanup
  can properly cancel in-flight requests

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 18:32:36 +00:00
Ruben Fiszel 515bc2a93f fix: runs page date picker query parameter handling (#8120)
* fix: runs page date picker query parameter handling

- Route query params by job status: queue-only statuses (running/suspended/waiting)
  use createdBeforeQueue/createdAfterQueue, completed-only statuses (success/failure)
  skip queue params, and no filter uses both
- Pass completedAfter (extendedMinTs) on initial load to avoid overfetching
- Skip auto-refresh syncer for manual timeframes (fixed past date ranges)
- Debounce param change effect to prevent double API calls
- Remove redundant timeframe dependency from effect (already tracked via filters)

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

* fix: only show Load more when jobs count >= perPage

- Default lastFetchWentToEnd to true so Load more is hidden until a
  full page is confirmed
- Set lastFetchWentToEnd after initial load, not just after loadExtra
- Add jobs.length >= perPage guard in template to prevent flicker

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 18:24:19 +00:00
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