Conflicts were all additive on both sides:
- workspace_settings column lists (workspaces_extra.rs, summarized_schema.txt)
- feature usage disclosure copy (InstanceSettings.svelte)
- VariableForm/VariableEditor imports against the new operatingWorkspace helper
- utils_draft_deploy.test.ts: kept both the variable expiry and resource suites
- cli variable push rebased onto main's extra_perms split of localVariableBody
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Do7wJTnL6MG6ngFpCGW4DG
`wmill sync` carries `value_expires_at` on variables in both directions, and
pushes the workspace handler alongside the error and success handlers in the
grouped settings format. Dropping the key from a variable's yaml clears the
remote expiry, so the file stays canonical rather than accumulating fields that
can only ever be added.
The handler follows the same rule, with the caveat recorded where the type is
declared: an omitted handler only reaches the clear when some other setting
differs, because the push short-circuits on a comparison that walks the local
object's keys and so never sees a missing one. That gate is shared with the two
existing handlers and is left as it is here.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: prevent variable push from corrupting is_secret variables
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* test(cli): unit-test looksLikeWorkspaceCiphertext shape detection
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(cli): scope is_secret downgrade to single-file push, not sync push
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(cli): warn when variable push stores a secret value as already-encrypted
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(cli): route workspace-resolution and auth diagnostics to stderr
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* docs(cli): rephrase comments to describe current behavior, not history
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(cli): add --yes, --secret/--no-secret and --description to variable add
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* test(cli): cover variable add create/update flag semantics
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(cli): warn on secret downgrade in variable add and pin preserve semantics in test
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: only enable EE features in test backend when license key is available
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: skip EE tests without license key and exclude test-skills from test discovery
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: unskip passing tests and add duplicate (remote, workspaceId) check in addWorkspace
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor(cli): migrate from Deno APIs to Node.js/Bun-compatible APIs
Replace Deno-specific APIs with Node.js equivalents across the entire CLI
codebase to enable running on Node.js/Bun. Switch build system from dnt
to bun, update imports from jsr:/npm: prefixed to bare specifiers, and
add package.json/tsconfig.json for the Node.js ecosystem.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* all
* test(cli): expand test coverage with new integration and unit tests
Add standalone_commands.test.ts covering folder list, schedule list,
resource-type list/push/update, script show/run/bootstrap, and user
commands. Add unit tests for filePathExtensionFromContentType and
removeExtensionToPath. Add git_unit, local_encryption_unit,
resource_folders_unit, and settings_unit test files. Fix schedule
cron expressions (6-field format), add includeSchedules flag, improve
test setup with pre-build and auto-cleanup, and support TEST_CLI_RUNTIME=node.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(cli): replace Deno.readFile with node:fs in WASM loaders and add schema parsing tests
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* refactor(cli): switch WASM parsers from local files to npm packages
Use published windmill-parser-wasm-* npm packages instead of local
wasm/ files. A loadParser() helper uses createRequire to resolve the
.wasm binary from node_modules and passes it to init() via
readFileSync, avoiding fetch() and Deno.readFile() patches.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* test(cli): add coverage for --locks-required lint feature
Add 15 tests covering the lock-checking functionality merged from main:
- checkMissingLocks: standalone scripts (python, bun, bash), inline
lock file resolution (valid, empty, missing), flow inline rawscripts
(with/without locks, nested forloopflow), app inline scripts, raw
apps without backend folder
- runLint --locks-required integration: reports issues when locks
missing, skips checks when flag absent, passes when locks exist
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* ci(cli): replace Deno with Bun in CI workflows
- cli-tests.yml: remove Deno setup, use `bun test` instead of
`deno test`, add `bun install` step for dependency installation
- npm_on_release.yml: replace Deno setup with Bun setup for CLI
publishing
- build.sh: add `bun install` before building so CI has dependencies
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(cli): pre-start backend in test preload and remove Deno test leftovers
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(cli): normalize path separators for Windows compatibility
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* more tests + windows
* ci(cli): use Blacksmith runner for Windows tests
Switch test-windows job from windows-latest to blacksmith-16vcpu-windows-2025
for faster CI execution.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(cli): fix Windows path separator expectations in unit tests
buildMetadataPath and extractResourceName normalize to forward slashes
internally, so tests should not expect platform-specific separators in
their output.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(cli): fix Windows CI test failures for dev_server and script_run
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(cli): set BUN_PATH and NODE_BIN_PATH for backend worker on Windows
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* ci(cli): add SSH debug step on Windows test failure
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(cli): use native path separators for ignore check in dev mode on Windows
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>