mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-09-05 16:03:47 +00:00
A retry resent the whole bundle. Everything that had already landed came back as "already exists" — nine failures over work that had succeeded, with no way to tell those from the ones that genuinely failed. The same thing happened importing into a workspace that already held some of the project. `installProject` now takes `alreadyPresent`, checked after retargeting because that is what the items will actually be called, and `probeImportedPaths` fills it from the destination on every run. On a workspace the run just created the answer is empty and nothing is skipped, so this costs four scoped reads and changes nothing about a first import. Skipping is not replacing. An item that is there is left exactly as it is — the same promise `updateIfExists: false` already makes for a resource whose value someone has since filled in. `InstallResult` gains `skipped`, because "already there" is neither an import nor a failure and reporting it as either is a lie. The checklist still lists every item the project ships; a skipped one shows as skipped and says why. The import row now counts the three outcomes separately — `8 already there` rather than a green tick over `2 apps, 4 scripts, 2 resources` it did not write. That last part needed the pre-run breakdown to stand down once the run has an outcome of its own, or it went on claiming the import had happened. Checked by removing the gate: two of the four new tests fail. Verified against a real backend by re-importing Calendly into a workspace that already had it — 0 failures, 0 create requests, and the row reads "8 already there", where the same run previously produced 9 conflicts. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Windmill frontend
The Windmill frontend written in Svelte 5 + Tailwind CSS
The frontend is under AGPL, see the LICENSE file at the root of this repo