* fix(plugins): keep metadata memo freshness
* fix(plugins): keep metadata memo freshness
* fix(plugins): resolve metadata memo review gaps
* fix(plugins): scope metadata memo watches to env
* fix(plugins): tighten metadata memo fingerprint return type
`resolvePersistedRegistryFastMemoFingerprint` was annotated `: unknown`
but always returns object literals (`{ disabled: true }` or
`{ index, npmPackageJson }`). Spreading the unknown-typed result on
line 478 (`...fastFingerprint`) was rejected by tsgo with TS2698, which
cascaded across every check that runs the project compile (build,
tsgo:prod, check:test-types, lint, all node test shards).
Tighten the return type to `Record<string, unknown>` to match the
function's actual return shapes and unblock the spread.
* test(gateway): tolerate ENOENT in sessions.list spy predicate
The `sessions.list configuredAgentsOnly hides disk-discovered
unregistered agent stores` test spies on `fsSync.readFileSync` and
predicates with `fsSync.realpathSync.native(file) === realDiskOnlyStorePath`
for every captured read. The native realpath call throws on missing
files, so any new readFileSync of a path that may not exist (e.g. the
persisted plugin install records probe added in this PR) crashes the
predicate before the assertion runs.
Wrap the predicate in ENOENT tolerance so the test stays robust against
any future readFileSync of files that may not exist on disk.
* fix(plugins): refresh memo from cached registry
* fix(plugins): use high resolution memo fingerprints
* test(plugins): stabilize memo freshness regression
* test(cli): satisfy config mutation mock hash contract
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com>
Fix the active Control UI WebChat composer path so mobile standalone PWA layouts keep the toolbar above the iOS home indicator even when safe-area insets under-report.
- apply the mobile safe-area composer margin in the later-loading chat layout stylesheet
- add a standalone PWA defensive floor for broken zero safe-area reports
- cover the CSS contract with focused regression coverage
Verification:
- corepack pnpm exec oxfmt --check --threads=1 CHANGELOG.md ui/src/styles/chat/layout.css ui/src/styles/chat/layout.test.ts
- git diff --check
- corepack pnpm test ui/src/styles/chat/layout.test.ts ui/src/ui/chat/chat-responsive.browser.test.ts -- --reporter=verbose
- corepack pnpm check:changed
- GitHub CI green on exact head b2b6007f43Fixes#77408.
Thanks @BunsDev.
Split generic channel config schema out of the provider schema barrel so OpenClawSchema no longer imports provider-specific channel schemas for generic channel defaults validation.
Co-authored-by: samzong <samzong.lu@gmail.com>
Harden Telegram HTML parse fallback so plain-text retries render readable labels and links instead of raw anchors.
Co-authored-by: Sam (OpenClaw) <sam.kpg5stars@gmail.com>
Route managed LaunchAgent package self-updates through the post-exit CLI handoff path and persist handoff helper failures through the update restart sentinel so agent-invoked updates cannot stay pending indefinitely.
Add handoff ownership guards for stale helpers, atomic helper sentinel writes, and regression coverage for unrelated and newer pending sentinels.
Fixes#81894.
Co-authored-by: B.K. <bandark@mac.com>