Commit Graph
13834 Commits
Author SHA1 Message Date
Diego Imbert e9775afbd3 Merge branch 'main' into change-68b704f7 2026-07-04 00:36:55 +02:00
Diego Imbert 79b265e11a fix: handle datatable migration renames on push and dedupe timestamps 2026-07-04 00:35:50 +02:00
Diego Imbert a3c553c6a6 nit 2026-07-04 00:26:29 +02:00
Diego Imbert aba8e66df8 nit 2026-07-04 00:21:51 +02:00
Diego ImbertandClaude Opus 4.8 89d5cf7bcb chore(frontend): use windmill-utils-internal 1.8.2 for migration diff drawer
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 00:19:18 +02:00
Diego ImbertandClaude Opus 4.8 260d0c2d56 fix: return datatable migration SQL from getItemValue for the diff drawer
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 00:17:33 +02:00
Diego ImbertandClaude Opus 4.8 fcf8629f92 refactor: drop unreleased _wm_migrations legacy-upgrade handling
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 00:12:16 +02:00
Diego ImbertandClaude Opus 4.8 1555ea0df9 fix(system_prompts): resolve nested local command groups in CLI docs generator
The CLI docs generator anchored on the first `new Command()` in a file and
never resolved locally-defined command groups passed as
`.command("name", localCmd)`. For datatable this flattened the nested
`migrate` group: it emitted `datatable new/up/down` plus a bare
`datatable migrate`, and mislabeled the datatable command with the migrate
group's description. jobs was broken the same way (its description was pull's,
and pull/push rendered empty).

Anchor block extraction on the `export default`ed command, recurse into
locally-defined `const x = new Command()` groups mounted as subcommands, and
render nested sub-subcommands. Regenerated docs now show
`datatable migrate new/up/down` and `jobs pull/push` with their real
options.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 00:11:34 +02:00
Ruben FiszelandClaude Fable 5 af36498432 feat(pipelines): record upstream snapshot ids on cascade-dispatched jobs (#9910)
* feat(pipelines): record upstream snapshot ids on cascade-dispatched jobs

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* refactor: batch upstream-snapshot lookup and memoize per subscriber

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 00:10:18 +02:00
Diego ImbertandClaude Opus 4.8 12b9811e3c fix: scope datatable _wm_migrations by data table and cascade renames/deletes
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 00:07:32 +02:00
Diego ImbertandClaude Opus 4.8 e75a2f8711 fix(datatable-migrations): validate persisted data table names as path segments
edit_datatable_config only validated rename segments, not the actual
settings.datatables keys, so a data table could be saved directly under a name
like '..' or one containing '/'. Since new tables default to
migrations_enabled = true, generate_initial_datatable_migration would then
insert a migration row and the sync export would build
migrations/datatable/<name>/... paths from that name, producing malformed or
directory-escaping export paths.

Validate every persisted data table name in edit_datatable_config (alongside
the existing rename checks) and add validate_datatable_path_segment to
generate_initial_datatable_migration for defense in depth.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 23:52:46 +02:00
Diego Imbert a84aaffea3 prevent initial_datatable_migration if migrations already exist 2026-07-03 23:40:48 +02:00
Diego Imbert 0f78a202fc nit CI emnapi/core version 2026-07-03 23:39:29 +02:00
Diego Imbert 4b040b1097 fix: fail closed on migrations-status error in fork schema merge 2026-07-03 23:33:59 +02:00
Diego Imbert 50a75d042f nit npm publish 2026-07-03 23:28:16 +02:00
Diego Imbert 1684f6cf28 Merge branch 'main' into change-68b704f7 2026-07-03 23:17:30 +02:00
Diego ImbertandClaude Opus 4.8 2919efef62 fix(frontend): sync package-lock with npm 11 peer-dep resolution
npm ci failed with 'Missing: @emnapi/core@1.11.2 / @emnapi/runtime@1.11.2 from
lock file'. @napi-rs/wasm-runtime declares @emnapi/core|runtime ^1.7.1 as
peerDependencies while @rolldown/binding-wasm32-wasi pins them to exactly
1.10.0. Newer npm (bundled with node 24 in CI) installs the peer deps at the
highest match (1.11.2) alongside rolldown's nested 1.10.0, so the ideal tree
needs both versions; the committed lock only had 1.10.0.

Regenerate the lock with npm 11.18 so it carries both 1.11.2 (top-level, for
the peer deps) and 1.10.0 (nested, for rolldown's pin). Verified npm ci passes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 22:18:37 +02:00
Diego Imbert f68e4882e4 feat: deploy datatable migrations on merge with explicit opt-in error 2026-07-03 21:29:36 +02:00
Diego Imbert 150a96363d fix: handle dollar-quoting and comments when splitting SQL statements 2026-07-03 21:18:14 +02:00
Diego Imbert 38d4446be3 nit 2026-07-03 21:15:48 +02:00
Diego ImbertandClaude Opus 4.8 e3b36fcead fix(datatable-migrations): never resolve instance credentials into migration job args
datatable_database_arg eagerly resolved instance data-table credentials
(including the shared instance-wide Postgres password) and passed them as the
migration job's plaintext `database` arg, landing in v2_job.args. Since the
run route has no admin gate, a non-admin could run a migration and read
args.database to recover the password, granting cross-workspace psql access to
all instance data-table DBs.

Pass a `datatable://<name>` reference for both resource-backed and instance
data tables instead; the pg executor already resolves it to real credentials
server-side at run time, so nothing sensitive is ever stored in the job args.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 20:08:38 +02:00
Diego ImbertandClaude Opus 4.8 54ed70000d chore(frontend): sync package-lock with package.json (@emnapi deps)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 20:03:42 +02:00
Ruben Fiszelandrubenfiszel df6e511763 chore(main): release 1.747.0 (#9901)
* chore(main): release 1.747.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
v1.747.0
2026-07-03 19:40:01 +02:00
Diego Imbert 12a27c3e6e Merge remote-tracking branch 'origin/main' into change-68b704f7 2026-07-03 19:19:32 +02:00
Diego Imbert c4c75f3270 ee-repo-ref 2026-07-03 19:19:24 +02:00
Diego Imbert ec88990fec split 2026-07-03 19:17:46 +02:00
1b6065fa92 fix(kafka): set https.ca.location=probe for OAUTHBEARER OIDC token endpoint (#9897)
* fix(kafka): set https.ca.location=probe for OAUTHBEARER OIDC token endpoint

Bump EE ref to pull in the mod_ee.rs change that sets https.ca.location for
the Kafka OAUTHBEARER (OIDC) token endpoint HTTPS request.

EE companion: windmill-labs/windmill-ee-private#642

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* chore: update ee-repo-ref to 81d8a449effdc540a6e8810668dd5d4aea0c485a

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

Previous ee-repo-ref: a6761c3cbbf788c7273296f49bb0c39eef85afb9

New ee-repo-ref: 81d8a449effdc540a6e8810668dd5d4aea0c485a

Automated by sync-ee-ref workflow.

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
2026-07-03 18:38:09 +02:00
GuilhemandClaude Fable 5 4ba17d0f9c fix: prevent truncated tool call args from bricking AI chat sessions (#9902)
* fix(frontend): prevent truncated ai chat tool-call arguments from bricking the session

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix: heal empty tool-call arguments when replaying chat history

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* docs: state sanitize invariant without drafting history

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 18:26:30 +02:00
hugocasaandClaude Opus 4.8 d600c7ecfe fix(ai): route Azure Foundry Claude models via Anthropic Messages API (#9908)
* fix(ai): route Azure Foundry Claude models via Anthropic Messages API

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(ai): keep explicit Azure OpenAI deployment base URLs intact

build_azure_openai_url only appends /openai/v1 for a bare resource root; any base with an explicit path (e.g. .../openai/deployments/<id>) is preserved. Adds a regression test and a unit test for usesAnthropicMessagesApi.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* feat(ai): enable Claude extended thinking on Azure Foundry

Route azure_foundry+Claude through the Anthropic reasoning branch (adaptive thinking + output_config.effort) instead of the gpt/o gate, and recognize claude-sonnet-5. Live-verified: sonnet-5 and opus-4-8 on Foundry accept the low/medium/high/xhigh/max ladder and render summarized thinking.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 18:26:12 +02:00
Ruben FiszelandClaude Fable 5 ae85d27437 feat(frontend): add federatedTokenFile field to instance object storage Azure config (#9904)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 18:05:50 +02:00
Diego ImbertandClaude Opus 4.8 afe025b886 fix: run DDL migration guard on the script editor Test button
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 18:00:54 +02:00
Diego ImbertandClaude Opus 4.8 072f2bf053 chore(datatable-migrations): remove unused update_datatable_migrations endpoint
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 17:52:45 +02:00
Diego Imbert f8c216d301 docs: fix generate_initial migration ordering comment to match code 2026-07-03 17:45:58 +02:00
Diego ImbertandClaude Opus 4.8 fc006e7294 fix(db-manager): fail closed when migrations-status check errors on DDL apply
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 17:44:42 +02:00
Diego ImbertandClaude Opus 4.8 91021816e7 fix(datatable-migrations): serialize run/rollback with a per-db advisory lock
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 17:41:19 +02:00
Diego Imbert 12b682ef13 windmill-utils-internal 2026-07-03 17:38:10 +02:00
Ruben FiszelandClaude Opus 4.8 3ec1f164be fix: strip NUL characters from app values at save time (#9903)
App values are persisted to a json column, which permits the JSON NUL
escape (backslash-u-0000), but are later converted to jsonb (e.g. a
workspace fork clone_apps, search indexing), which rejects it with
"unsupported Unicode escape sequence" -- silently making the app
un-forkable. The usual source is a binary file such as .DS_Store
accidentally bundled into a raw app file map.

A real NUL is unstorable in jsonb either way, and frontend code that
needs the character writes it as the source escape (which JSON-encodes
to an escaped backslash + literal u0000 and is left untouched), so rather
than hard-failing the save we strip genuine NULs and warn.

Add strip_null_chars and apply it at both app_version insert sites
(create_app_internal and update_app_internal, covering the regular and
raw create/update routes). It removes a genuine NUL escape (odd run of
backslashes before u0000) while preserving an even run. Returns a
borrowed Cow (no allocation) when the value is already clean. Covered by
unit tests.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 15:58:56 +02:00
Diego Imbert 2113e87495 Merge remote-tracking branch 'origin/main' into change-68b704f7
# Conflicts:
#	backend/ee-repo-ref.txt
#	frontend/src/lib/components/CompareWorkspaces.svelte
2026-07-03 14:41:46 +02:00
Diego Imbert 154f31a054 clone migrations on fork 2026-07-03 14:10:30 +02:00
Diego Imbert 7612d7b712 nit 2026-07-03 14:05:43 +02:00
Diego Imbert 7eac2577b6 feat: record fork merge as a migration when target datatable opts in 2026-07-03 14:00:59 +02:00
Diego ImbertandClaude Opus 4.8 477ba39372 feat: offer revert-and-delete when deleting an installed migration
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 13:45:21 +02:00
Diego ImbertandClaude Opus 4.8 05bf5b88b0 refactor: drop random slug from auto-generated migration names
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 13:35:30 +02:00
Diego ImbertandClaude Opus 4.8 bc53ca49fc feat: flag invalid migration name with red border, not just empty
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 13:32:09 +02:00
Diego ImbertandClaude Opus 4.8 54aed77ab7 feat(cli): push local datatable migrations before running on migrate up
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 13:29:52 +02:00
hugocasaandClaude Opus 4.8 5c521d808a fix(forks): clone only the current raw-app bundle, via server-side copy (#9899)
* fix(forks): clone only the current raw-app bundle, via server-side copy

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(forks): fall back to get+put when object-store copy is unsupported

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 12:53:16 +02:00
Diego Imbert a3f0b82f70 BEGIN/END scaffold in CLI 2026-07-03 12:13:48 +02:00
Diego Imbert 42a7c70dd4 refresh db manager schema on migrations 2026-07-03 11:52:21 +02:00
Ruben Fiszel bcb4dd8d27 docs link 2026-07-03 11:40:34 +02:00
Diego Imbert 8470066599 border nits 2026-07-03 11:03:27 +02:00