Files
windmill/backend/windmill-api
Ruben FiszelandClaude Opus 5.5 fe38a1d376 fix: share settings.yaml's git sync block between a fork and its parent (#11974)
* fix: keep a fork's own auto-pull settings when applying settings.yaml

The settings.yaml on a fork branch carries the parent's git_sync, so a
pull into a fork failed with "Auto-pull cannot be configured on a fork
workspace". The fork now keeps its own auto_pull and fork_open_prs and
a throwaway fork drops promotion repos, matching fork creation.

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

* fix: show the parent's git sync side in a fork's settings document

A fork's settings.yaml is the parent's file, so exporting the fork's own
git_sync (auto-pull off, no fork PRs, no promotion repos) and merging
the fork back would turn off the parent's auto-pull. The fork's document
now states the parent's values for the parts the parent owns, and
applying one keeps the fork's own: the two are inverses, so a round
trip is a no-op. Repos the fork does not carry are no longer added.

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

* fix: drop promotion repos on non-dev forks and keep the fork's repo order

A dev workspace detached from dev keeps its promotion repo, which the
validator refuses on a non-dev fork, so its pull still failed. And a
fork whose own repo came before a shared one saw its document reorder
the repos, so re-applying it was a change. The apply now drops
promotion repos unless the fork is a dev workspace and emits repos in
the fork's own order.

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

* fix: apply only a fork's synced git sync keys from settings.yaml

Taking the parent's repo entry and restoring a few fork-owned fields let
every unlisted field flow from the parent: a dev workspace lost its
promotion mode, and a malformed repository list emptied the fork. The
fork now starts from its own git_sync and takes only the item filters
(settings, exclude_types_override, group_by_folder) of the repos it
carries; the document is the parent's block with those keys from the
fork. The parent's block is folded down the ancestor chain, so a fork
of a dev workspace shows the root's auto-pull too.

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

* fix: sync a fork's legacy git sync filters and drop its stale promotion repos

Repos without their own settings filter by the workspace-level
include/exclude lists, which a fork now takes from settings.yaml while
it stores them. A non-dev fork's apply drops the promotion repos it
kept from a dev designation, so the write passes the save's check. An
unset and a null key no longer count as a difference, so settings.yaml
is not rewritten over the two spellings.

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

* fix: copy the filters a repo syncs by between a fork and settings.yaml

A fork on per-repo settings applying a file still on workspace-level
filters lost its repo settings and gained none, so it synced nothing.
The copy now goes between each side's effective filters, the repo's
settings with the workspace-level lists they fall back to filled in,
so either layout maps onto the other. The workspace-level keys are no
longer synced separately, and a null git_sync leaves them alone.

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

* fix: sync a fork's filters only between per-repo settings on both sides

The workspace-level filter layout reads an empty or missing per-repo
list as "use the workspace's", so it cannot state some filters the
per-repo layout can, and every mapping between the two widened or
emptied a fork's filters on some round trip. Filters now cross only
when neither the fork nor the file uses workspace-level filters;
otherwise the fork keeps its own and its document keeps the parent's.

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

* fix: detect the legacy git sync layout by its fallback filters only

exclude_path and extra_include_path are read only beside a fallback
include_path, and the save leaves them behind once every repo has
migrated, so they no longer mark a workspace as legacy. Rewraps the
comment on the synced keys to say when settings crosses.

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 17:47:13 +02:00
..
2024-04-08 01:42:43 +02:00

Windmill API

The API server, exposing functionality to other components and the frontend

This crate exposes both a library as well as a binary target.