diff --git a/CHANGELOG.md b/CHANGELOG.md index 05b9c8d3acf..badc6d4a9d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -50,6 +50,9 @@ Docs: https://docs.openclaw.ai ### Fixes +- Tooling/check:changed: pass parent heavy-check lock markers to lint lanes so + `pnpm check:changed` no longer waits on its own `lint:extensions` child. + Thanks @steipete. - Plugins/Bonjour: stop the gateway from crash-looping on `CIAO PROBING CANCELLED` when the mDNS watchdog cancels a stuck probe. Restores the rejection-handler wiring dropped during the bonjour plugin migration and shares unhandled-rejection state across module instances so plugin-staged copies of `openclaw/plugin-sdk/runtime` register into the same handler set the host consults. Especially affects Docker on macOS, where mDNS probing reliably hits the watchdog. Thanks @troyhitch. - Google Meet: report pinned Chrome nodes as offline or missing capabilities in setup/join diagnostics, keep inaccessible nodes out of auto-selection, and diff --git a/scripts/check-changed.mjs b/scripts/check-changed.mjs index 33fa71162f1..4aeffbba6f2 100644 --- a/scripts/check-changed.mjs +++ b/scripts/check-changed.mjs @@ -68,6 +68,7 @@ export function createChangedCheckPlan(result, options = {}) { } }; const addTypecheck = (name, args) => add(name, args, createSparseTsgoSkipEnv(baseEnv)); + const addLint = (name, args) => add(name, args, baseEnv); add("conflict markers", ["check:no-conflict-markers"]); @@ -109,7 +110,7 @@ export function createChangedCheckPlan(result, options = {}) { if (runAll) { addTypecheck("typecheck all", ["tsgo:all"]); - add("lint", ["lint"]); + addLint("lint", ["lint"]); add("runtime import cycles", ["check:import-cycles"]); return { commands, @@ -135,16 +136,16 @@ export function createChangedCheckPlan(result, options = {}) { } if (lanes.core || lanes.coreTests) { - add("lint core", ["lint:core"]); + addLint("lint core", ["lint:core"]); } if (lanes.extensions || lanes.extensionTests) { - add("lint extensions", ["lint:extensions"]); + addLint("lint extensions", ["lint:extensions"]); } if (lanes.tooling) { - add("lint scripts", ["lint:scripts"]); + addLint("lint scripts", ["lint:scripts"]); } if (lanes.apps) { - add("lint apps", ["lint:apps"]); + addLint("lint apps", ["lint:apps"]); } if (lanes.core || lanes.extensions) { diff --git a/test/scripts/changed-lanes.test.ts b/test/scripts/changed-lanes.test.ts index 6c18d254ad7..213db462d32 100644 --- a/test/scripts/changed-lanes.test.ts +++ b/test/scripts/changed-lanes.test.ts @@ -122,6 +122,19 @@ describe("scripts/changed-lanes", () => { }); }); + it("runs changed-check lint lanes under the parent heavy-check lock", () => { + const result = detectChangedLanes(["extensions/discord/src/index.ts"]); + const plan = createChangedCheckPlan(result, { env: { PATH: "/usr/bin" } }); + const lintCommand = plan.commands.find((command) => command.args[0] === "lint:extensions"); + + expect(lintCommand?.env).toMatchObject({ + OPENCLAW_OXLINT_SKIP_LOCK: "1", + OPENCLAW_TEST_HEAVY_CHECK_LOCK_HELD: "1", + OPENCLAW_TSGO_HEAVY_CHECK_LOCK_HELD: "1", + PATH: "/usr/bin", + }); + }); + it("routes core test-only changes to core test lanes only", () => { const result = detectChangedLanes(["src/shared/string-normalization.test.ts"]);