* feat(cli): add GitHub Actions CI and raw app sync tests
- Add CLI tests GitHub Action that runs on Linux and Windows
- Add build check job that runs on CLI and openapi.yaml changes
- Uses Rust cargo backend instead of Docker for better CI compatibility
- Add cargo_backend.ts and test_backend.ts for test infrastructure
- Fix Windows path separator bug in raw_apps.ts (use "/" for relative paths)
- Fix PostgreSQL URL parsing in cargo_backend.ts
- Update tests to use gitBranches format instead of deprecated overrides
- Add raw_app_sync.test.ts for raw app sync workflow testing (ignored for now - needs EE)
- Skip tests that require EE features (git sync settings, raw apps)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(cli): Fix Windows path compatibility issues in tests
- Use fromFileUrl() in cargo_backend.ts for proper Windows path handling
- Normalize path separators to forward slashes in resource_folders.ts
- Fix readDirRecursive to return normalized paths in test helper
- Use forward slashes consistently in buildMetadataPath and detection functions
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(cli): Use SEP in test assertions instead of modifying logic
- Revert resource_folders.ts to use SEP as intended
- Update test assertions to use SEP for platform-specific paths
- Keep readDirRecursive normalization for consistent test comparisons
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(cli): Use SEP for all path separators in test assertions
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(cli): Use resolve() for proper cross-platform path handling in cargo_backend
String concatenation with path separators creates malformed paths on Windows.
Use path.resolve() instead for proper cross-platform path resolution.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(backend): Add cfg attributes for Windows compatibility
- Add #[cfg(unix)] to anyhow::anyhow import (only used in unix cfg block)
- Add #[cfg(not(windows))] to parse_file function (uses cat, only for cgroups)
- Remove unused std::io import, use std::io::Result directly
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix: Windows compilation + convert integration tests to withTestBackend
- Fix unused import SYSTEM_ROOT in csharp_executor.rs on Windows by
requiring both windows and csharp feature
- Fix unused variable id in handle_child.rs on Windows by adding
#[allow(unused_variables)] since id is only used in cfg(unix) code
- Convert all RUN_INTEGRATION_TESTS dependent tests in sync_pull_push.test.ts
to use withTestBackend pattern for automatic backend setup
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: configurable test features with CI_MINIMAL_FEATURES env var
- Default: full features (zip, private, enterprise) for local development
- CI mode: minimal features (zip only) when CI_MINIMAL_FEATURES=true
- Add shouldSkipOnCI() helper for tests requiring EE features
- Update EE-dependent tests to use shouldSkipOnCI()
- Add test instructions to cli/README.md
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix: enable raw app tests (not EE-dependent)
Raw apps work with minimal features. 2 tests pass, 2 have test logic
bugs to investigate separately:
- "delete file and push" - file deletion not syncing correctly
- "dry-run push shows expected changes" - JSON output parsing issue
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix: gate cgroups module to Linux only
cgroups are Linux-specific, the module was causing dead_code warnings
on Windows compilation.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(ci): add CI_MINIMAL_FEATURES env var to CLI tests workflow
Set CI_MINIMAL_FEATURES=true in both Linux and Windows test jobs so
the backend compiles with minimal features (zip only) and EE-dependent
tests self-skip via shouldSkipOnCI().
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(cli): raw app tests and backend startup timing
- Add 5s delay after backend ready for migrations to complete
- Fix dry-run JSON output parsing (handle pretty-printed JSON)
- Temporarily ignore "delete file" test (needs isSuperset fix)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(cli): raw app file deletion sync
- Add deepEqual check for files in raw_apps.ts isSuperset comparison
- Handle raw_app file deletions in sync.ts by re-pushing the entire app
- Fix test to remove CSS import before deleting the file
When deleting a file from a raw app, the sync now properly updates
the backend with the new file list (excluding the deleted file).
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(cli): Windows path separators in tests
Normalize paths for cross-platform comparison by converting
backslashes to forward slashes before path assertions.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(cli): normalize featurePaths in multi_instance_workspace test
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* test(cli): add mixed case paths sync tests for Windows compatibility
Add comprehensive tests for sync pull/push with capitalized folder paths
to catch Windows case-insensitivity issues:
- Scripts in f/MyFolder/MyScript
- Flows in f/MyFlows/DataProcessor
- Apps in f/MyApps/Dashboard
- Variables in f/MyVars/ApiKey
- Deeply nested paths with mixed case
- Multiple resources in same capitalized folder
- CamelCase folder names with numbers
Each test verifies the full pull -> modify -> push -> verify cycle.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* test(cli): add idempotency check to mixed case paths tests
After each push, pull again with --dry-run --json-output and verify
that no changes are detected. This ensures the sync is stable and
catches issues where pull/push cycles cause spurious diffs.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* feat: add workspace setting to disable error handler for u/ scripts/flows
Add a new workspace setting `error_handler_muted_on_user_path` that allows
disabling the error handler for jobs related to scripts/flows that start
with the "u/" prefix (user scripts/flows).
Changes:
- Add migration to add `error_handler_muted_on_user_path` column to workspace_settings
- Update WorkspaceSettings struct and get_settings query
- Update EditErrorHandler struct and edit_error_handler API endpoint
- Update error handler cache to include the new setting
- Add skip logic in send_error_to_workspace_handler for u/ paths
- Add toggle in workspace settings UI
The implementation uses the existing cached settings to avoid additional
database queries, making it efficient.
Closes#7633
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
* all
* update ee private
* combine migrations
* sqlx
* fix: migration fixes for auto_invite JSONB column
- Fix TEXT[] to JSONB conversion using to_jsonb()
- Add GIN index on auto_invite for efficient ? operator queries
- Add index cleanup to down migration
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* sqlx
* all
* all
* all
---------
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>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* feat: add cache-rt command and SYNC_CACHED_RT env variable for resource types
Add a new CLI command `cache-rt` that fetches resource types from the hub
and caches them locally. This command is run during Docker image build to
pre-populate the cache.
Add `SYNC_CACHED_RT` environment variable that, when set to true, syncs
cached resource types to the admins workspace's resource_type table on
server startup. The sync is incremental - it only updates resource types
that have changed.
Changes:
- Add HUB_RT_CACHE_DIR constant for resource type cache location
- Add cache-rt CLI command to fetch and cache resource types from hub
- Add sync_cached_resource_types() to sync cached types to database
- Update all Dockerfiles to run cache-rt during image build
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix: parse schema string from hub into proper JSONB
The hub API returns schema as a JSON string that needs to be parsed
into a proper JSON value before inserting into the database.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* use pgoptions
* fix: use pgoptions for iam rds connection
* ee ref
* chore: update ee-repo-ref to 1549849fadc4e5634334a384bfe52343eb1e93f0
This commit updates the EE repository reference after PR #388 was merged in windmill-ee-private.
Previous ee-repo-ref: ffc1de1498a8018a9cbc2daba846e6c57d500a1c
New ee-repo-ref: 1549849fadc4e5634334a384bfe52343eb1e93f0
Automated by sync-ee-ref workflow.
---------
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
* fix(ci): switch RHEL9 build from Depot to native arm64 buildx
* fix: sync frontend package-lock.json with package.json
* refactor(ci): use Depot multi-arch + crane for RHEL9 build
- Single multi-arch image (no -arm64/-amd64 suffixes)
- Use crane export to extract binaries directly from registry
- Avoids disk space issues by streaming instead of pulling full image
- Extracts both arm64 and amd64 binaries and libraries
* fix(ci): extract release/ directory to resolve hard links
* clean plate
* npm i
* log in e2e
* global setup login
* set license key
* Revert "set license key"
This reverts commit 86d5db2c48.
* create datatable test
* fix wrong pg_creds
* data table + db manager e2e test
* DbManagerPage class
* small refactor
* create resource test + improvements
* text db manager in resources
* Factor test logic in classes
* refactoring
* refacto
* alter table test
* alter table e2e test
* set schema in test
* nits
* fix wrong schema var
* Correct setup and parallelization
* reducedMotion
* tests passing headless !
* bigger timeout
* start e2e docker compose
* e2e runs on all databases
* nit test uid fix
* refactp
* stash
* Better Workspace Storage settings
* minio setup
* nit
* nit
* super nit
* Permission settings in modal
* badge indicator
* Fetch alter table metadata much faster
* Upgrade duckdb to 1.4.3
* Ducklake tests
* Disable transactional DDL for Ducklake (bug on their side)
* git ignore env
* bigquery tests passes
* getJsonEnv
* load coldef in parallel
* Make Bigquery schema fetching much faster
* makeLoadTableMetaDataQuery for entire db in bigquery
* refactor getDbSchemas to avoid assignment side effect
* fix col def
* Better loading state mgmt
* snowflake
* fix snowflake primary keys
* Test CI
* fix setTimeout type
* remove type node
* test e2e ci
* Revert "test e2e ci"
This reverts commit bf98a755dc.
* remove ci
* fix snowflake pk query in alternate schemas
* nit wait for coldefs
* nit snowflake
* Snowflake fk fix
* UNPROCESSABLE_ENTITY instead of INTERNAL_ERROR
* nits
* fix alter pk in snowflake
* yet other fixes
* snowflake tests pass
* nits
* ee
* chore: update ee-repo-ref to dcc281b036fa4fcaa59c42ec3e93991e1eb8a536
This commit updates the EE repository reference after PR #384 was merged in windmill-ee-private.
Previous ee-repo-ref: 804789f22833b7b30ca06cfc98f9aa18714ee30f
New ee-repo-ref: dcc281b036fa4fcaa59c42ec3e93991e1eb8a536
Automated by sync-ee-ref workflow.
---------
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
* fix for codestral
* enable codestral
* fim with completion
* reduce context when using completion
* refactor: extract model detection utilities for Codestral/Mistral
Consolidate duplicated model detection logic into shared utilities
in copilot/utils.ts to improve maintainability and ensure consistency
across autocomplete support checks and Mistral-specific configurations.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix: add cursor marker to FIM-to-chat transformation prompt
Add explicit <CURSOR/> marker between prefix and suffix in the
FIM-to-chat transformation to help chat models better understand
where the completion should be inserted.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Paths in wmill-lock.yaml are now normalized to use forward slashes,
ensuring the lockfile is portable between Windows and Linux. This also
applies to paths used in hash computation for flows and apps.
- Add normalizeLockPath() helper function
- Update v2LockPath() to normalize path and subpath
- Normalize paths in generateFlowHash() and generateAppHash()
- Add comprehensive tests for path normalization
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
When a type (folders, settings, variables, resources, triggers) is NOT
configured in specificItems, branch-specific files of that type should
be ignored and only base files used.
Added isItemTypeConfigured() function to distinguish between:
- Type not configured → skip branch-specific file, use base file
- Type configured but doesn't match pattern → skip branch-specific file
- Type configured and matches → use branch-specific file
Added comprehensive tests to prevent regression.
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* nit create role
* ee repo ref
* chore: update ee-repo-ref to cfed5d823884d9c8235ac4d8aeed0b71d5a53592
This commit updates the EE repository reference after PR #382 was merged in windmill-ee-private.
Previous ee-repo-ref: 5dc1b80d07653f873a3a27de352e9e4d13270efa
New ee-repo-ref: cfed5d823884d9c8235ac4d8aeed0b71d5a53592
Automated by sync-ee-ref workflow.
---------
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
Split SvelteKit-specific code into separate files to allow
windmill-components to be used as a library in non-SvelteKit
contexts (e.g., windmill-react-sdk):
- Split logout.ts into logout.ts and logoutKit.ts
- Split svelte5Utils.svelte.ts into svelte5Utils.svelte.ts and
svelte5UtilsKit.svelte.ts (for runed/kit useSearchParams)
- Fix triggers/utils.ts type-only import resolution
- Update FlowRestartButton to use callback instead of direct navigation
- Update all route files to import from logoutKit
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* audit_author
* Fix S3 Permissions
* ee
* chore: update ee-repo-ref to e8605e72a6c93c9cf43737ebea74dd28e1f00e83
This commit updates the EE repository reference after PR #381 was merged in windmill-ee-private.
Previous ee-repo-ref: 0c8638d3895a1ead9422fc8e428e3e0405e3a060
New ee-repo-ref: e8605e72a6c93c9cf43737ebea74dd28e1f00e83
Automated by sync-ee-ref workflow.
---------
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
Extends the getTypeStrFromPath function to recognize branch-specific
variants of settings.yaml and encryption_key.yaml (e.g., settings.main.yaml,
encryption_key.dev.yaml). Previously, only base filenames were recognized,
causing branch-specific files to throw "Could not infer type of path" errors.
This follows the same fix pattern applied to folder.meta files.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The function only matched `folder.meta` but not branch-specific variants
like `folder.main.meta` or `folder.dev.meta`. This caused branch-specific
folder files to be skipped during sync operations with --branch flag.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* set default font size to 13.5
* fix(frontend): update FakeMonacoPlaceHolder default font size to match Editor
Co-authored-by: Ruben Fiszel <rubenfiszel@users.noreply.github.com>
---------
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Ruben Fiszel <rubenfiszel@users.noreply.github.com>
* fix raw app header overflow
* update ui-builder hash
* Make monaco default size match brand guidelines
* nit
* Move run button to test panel
* wip improve history
* add current checkout point
* fix logic to switch wetween history state
* improve history visualisation
* improve animations
* nit
* remove test page
* fix timing issue when selecty history entries
* update ui_builder hash
* remove dev file
* nit
* revert setting editor font to 13.5 px
* update ui builder
---------
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
* feat(raw-apps): add public URL and custom path support for raw apps
- Enable public URL UI in raw app editor by removing hideSecretUrl prop
- Add bundle_secret field to AppWithLastVersion for raw app rendering
- Compute bundle_secret in get_public_app_by_secret endpoint
- Update PublicApp.svelte to render RawAppPreview for raw apps
- Make get_data endpoint accessible without auth for anonymous raw apps
- Use /apps_u/ endpoint for bundle loading to support anonymous access
This allows raw apps to use the same public URL and custom path features
as regular apps, with proper support for anonymous (no login required)
execution mode.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* refactor: compute bundle_secret only once in get_public_app_by_secret
Move bundle_secret computation after all authorization checks to avoid
duplication between anonymous and authenticated code paths.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix: add explicit error state for raw apps missing workspace
Show a clear error message instead of silently falling through to
render AppPreview when a raw app is loaded without workspace info.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* update sqlx
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Convert from Svelte event dispatcher pattern to callback prop for onSuccess,
aligning with Svelte 5 best practices. Also add initialConfig prop to
ResolveConfig to support onDemandOnly functionality.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>