mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-20 09:31:54 -06:00
4fac990321
* fix(test): run the shared Control UI lane on the cross-file cleanup runner ui/vitest.config.ts drives CI's checks-ui job (pnpm --dir ui test). Its unit project sets isolate:false but never wired runner: nonIsolatedRunnerPath, so the per-file cleanup in test/non-isolated-runner.ts — module-graph reset, repo-owned custom element dropping, DOM body reset, timer and spy restoration — never ran in the lane CI actually uses. Only the repo-root lane behind scripts/run-vitest.mjs loaded it. Files sharing a worker therefore kept the previous file's evaluated modules, so whichever file imported a component first pinned it to the real dependency and a later file's vi.mock factory never reached production code, surfacing as "expected 0 to be 1" in whichever sibling the size sequencer happened to pack alongside it. This is the class PR #123512 diagnosed and fixed at the runner; the fix never reached this lane, so the repo kept absorbing it one uiIsolatedTestFiles entry at a time. browser stays exempt (the runner imports node:fs and server modules that cannot load in browser mode) and unit-node stays exempt (it carries the Playwright-driven layout tests whose browser lives in module scope, which per-file module resets churn). The config test asserted runner was undefined for every project, pinning the broken wiring; it now asserts the invariant and fails on the pre-fix config. * fix(agents): stop passing an ignored resolver to instance-bound announce dispatch check-prod-types is red on main: #126062 threaded resolveGatewayContext into the announce dispatch call, but that call now goes through dispatchGatewayLifecycleMethod, whose options type does not carry the field. The type checker is right that it does not belong there. That dispatcher hands work to runtime.dispatchAgent, which resolves context from the Gateway instance it is bound to and forwards a fixed option allowlist, so a caller-supplied resolver was already being ignored. Dropping it is behavior-preserving. The delivery test asserted the resolver was forwarded, but production now binds to the instance dispatcher while the test injects a mock, so that assertion only proved the mock. It now asserts the resolver is deliberately not forwarded. Left for the owner of #126062: sendSubagentAnnounceDirectly and its callers still accept and thread resolveGatewayContext, which is now vestigial on this path. Deleting that chain or teaching the instance runtime to honor the resolver is a design call on a just-landed change.