openclaw/CHANGELOG/2026.1.20.md
Hannes Rudolph 2227743f74
refactor: split release changelogs and synchronize docs mirrors (#145464)
* refactor: split release changelogs and synchronize docs mirrors

* fix: complete split changelog instructions and validation wiring

* fix: complete release changelog mirror integration

Regenerate existing docs mirrors within the docs-agent publication boundary, preserve one HTML release heading, and package links for oversized mirrors without changing frozen records. Update release publisher and test-routing fixtures for the shared changelog resolver.

* test: align docs agent Git ownership fixtures

Keep failure injection aligned with staged-index validation and mirror staging. Preserve native Git producer exit codes and verify both cached-index producers without weakening process-drain assertions.

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-09-11 21:19:18 -07:00

17 KiB

2026.1.20

Changes

Fixes

  • Discovery: shorten Bonjour DNS-SD service type to _moltbot-gw._tcp and update discovery clients/docs.
  • Diagnostics: export OTLP logs, correct queue depth tracking, and document message-flow telemetry.
  • Diagnostics: emit message-flow diagnostics across channels via shared dispatch. (#1244).
  • Diagnostics: gate heartbeat/webhook logging. (#1244).
  • Gateway: strip inbound envelope headers from chat history messages to keep clients clean.
  • Gateway: clarify unauthorized handshake responses with token/password mismatch guidance.
  • Gateway: allow mobile node client ids for iOS + Android handshake validation. (#1354).
  • Gateway: clarify connect/validation errors for gateway params. (#1347).
  • Gateway: preserve restart wake routing + thread replies across restarts. (#1337).
  • Gateway: reschedule per-agent heartbeats on config hot reload without restarting the runner.
  • Gateway: require authorized restarts for SIGUSR1 (restart/apply/update) so config gating can't be bypassed.
  • Cron: auto-deliver isolated agent output to explicit targets without tool calls. (#1285).
  • Agents: preserve subagent announce thread/topic routing + queued replies across channels. (#1241).
  • Agents: propagate accountId into embedded runs so sub-agent announce routing honors the originating account. (#1058).
  • Agents: avoid treating timeout errors with "aborted" messages as user aborts, so model fallback still runs. (#1137).
  • Agents: sanitize oversized image payloads before send and surface image-dimension errors.
  • Sessions: fall back to session labels when listing display names. (#1124).
  • Compaction: include tool failure summaries in safeguard compaction to prevent retry loops. (#1084).
  • Config: log invalid config issues once per run and keep invalid-config errors stackless.
  • Config: allow Perplexity as a web_search provider in config validation. (#1230).
  • Config: allow custom fields under skills.entries.<name>.config for skill credentials/config. (#1226).
  • Doctor: clarify plugin auto-enable hint text in the startup banner.
  • Doctor: canonicalize legacy session keys in session stores to prevent stale metadata. (#1169).
  • Docs: make docs:list fail fast with a clear error if the docs directory is missing.
  • Plugins: add Nextcloud Talk manifest for plugin config validation. (#1297).
  • Plugins: surface plugin load/register/config errors in gateway logs with plugin/source context.
  • CLI: preserve cron delivery settings when editing message payloads. (#1322).
  • CLI: keep openclaw logs output resilient to broken pipes while preserving progress output.
  • CLI: avoid duplicating --profile/--dev flags when formatting commands.
  • CLI: centralize CLI command registration to keep fast-path routing and program wiring in sync. (#1207).
  • CLI: keep banners on routed commands, restore config guarding outside fast-path routing, and tighten fast-path flag parsing while skipping console capture for extra speed. (#1195).
  • CLI: skip runner rebuilds when dist is fresh. (#1231).
  • CLI: add WSL2/systemd unavailable hints in daemon status/doctor output.
  • Status: route native /status to the active agent so model selection reflects the correct profile. (#1301).
  • Status: show both usage windows with reset hints when usage data is available. (#1101).
  • UI: keep config form enums typed, preserve empty strings, protect sensitive defaults, and deepen config search. (#1315).
  • UI: preserve ordered list numbering in chat markdown. (#1341).
  • UI: allow Control UI to read gatewayUrl from URL params for remote WebSocket targets. (#1342).
  • UI: prevent double-scroll in Control UI chat by locking chat layout to the viewport. (#1283).
  • UI: enable shell mode for sync Windows spawns to avoid pnpm ui:build EINVAL. (#1212).
  • TUI: keep thinking blocks ordered before content during streaming and isolate per-run assembly. (#1202).
  • TUI: align custom editor initialization with the latest pi-tui API. (#1298).
  • TUI: show generic empty-state text for searchable pickers. (#1201).
  • TUI: highlight model search matches and stabilize search ordering.
  • Configure: hide OpenRouter auto routing model from the model picker. (#1182).
  • Memory: show total file counts + scan issues in openclaw memory status.
  • Memory: fall back to non-batch embeddings after repeated batch failures.
  • Memory: apply OpenAI batch defaults even without explicit remote config.
  • Memory: index atomically so failed reindex preserves the previous memory database. (#1151).
  • Memory: avoid sqlite-vec unique constraint failures when reindexing duplicate chunk ids. (#1151).
  • Memory: retry transient 5xx errors (Cloudflare) during embedding indexing.
  • Memory: parallelize embedding indexing with rate-limit retries.
  • Memory: split overly long lines to keep embeddings under token limits.
  • Memory: skip empty chunks to avoid invalid embedding inputs.
  • Memory: split embedding batches to avoid OpenAI token limits during indexing.
  • Memory: probe sqlite-vec availability in openclaw memory status.
  • Exec approvals: enforce allowlist when ask is off.
  • Exec approvals: prefer raw command for node approvals/events.
  • Tools: show exec elevated flag before the command and keep it outside markdown in tool summaries.
  • Tools: return a companion-app-required message when node exec is requested with no paired node.
  • Tools: return a companion-app-required message when system.run is requested without a supporting node.
  • Exec: default gateway/node exec security to allowlist when unset (sandbox stays deny).
  • Exec: prefer bash when fish is default shell, falling back to sh if bash is missing. (#1297).
  • Exec: merge login-shell PATH for host=gateway exec while keeping daemon PATH minimal. (#1304).
  • Streaming: emit assistant deltas for OpenAI-compatible SSE chunks. (#1147).
  • Discord: make resolve warnings avoid raw JSON payloads on rate limits.
  • Discord: process message handlers in parallel across sessions to avoid event queue blocking. (#1295).
  • Discord: stop reconnecting the gateway after aborts to prevent duplicate listeners.
  • Discord: only emit slow listener warnings after 30s.
  • Discord: inherit parent channel allowlists for thread slash commands and reactions. (#1123).
  • Telegram: honor pairing allowlists for native slash commands.
  • Telegram: preserve hidden text_link URLs by expanding entities in inbound text. (#1118).
  • Slack: resolve Bolt import interop for Bun + Node. (#1191).
  • Web search: infer Perplexity base URL from API key source (direct vs OpenRouter).
  • Web fetch: harden SSRF protection with shared hostname checks and redirect limits. (#1346).
  • Browser: register AI snapshot refs for act commands. (#1282).
  • Voice call: include request query in Twilio webhook verification when publicUrl is set. (#864).
  • Anthropic: default API prompt caching to 1h with configurable TTL override.
  • Anthropic: ignore TTL for OAuth.
  • Auth profiles: keep auto-pinned preference while allowing rotation on failover. (#1138).
  • Auth profiles: user pins stay locked. (#1138).
  • Model catalog: avoid caching import failures, log transient discovery errors, and keep partial results. (#1332).
  • Tests: stabilize Windows gateway/CLI tests by skipping sidecars, normalizing argv, and extending timeouts.
  • Tests: stabilize plugin SDK resolution and embedded agent timeouts.
  • Windows: install gateway scheduled task as the current user.
  • Windows: show friendly guidance instead of failing on access denied.
  • macOS: load menu session previews asynchronously so items populate while the menu is open.
  • macOS: use label colors for session preview text so previews render in menu subviews.
  • macOS: suppress usage error text in the menubar cost view.
  • macOS: Doctor repairs LaunchAgent bootstrap issues for Gateway + Node when listed but not loaded. (#1166).
  • macOS: avoid touching launchd in Remote over SSH so quitting the app no longer disables the remote gateway. (#1105).
  • macOS: bundle Textual resources in packaged app builds to avoid code block crashes. (#1006).
  • Daemon: include HOME in service environments to avoid missing HOME errors. (#1214).

Thanks @AlexMikhalev, @CoreyH, @John-Rood, @KrauseFx, @MaudeBot, @Nachx639, @NicholaiVogel, @RyanLisse, @ThePickle31, @VACInc, @Whoaa512, @YuriNachos, @aaronveklabs, @abdaraxus, @alauppe, @ameno-, @artuskg, @austinm911, @bradleypriest, @cheeeee, @dougvk, @fogboots, @gnarco, @gumadeiras, @jdrhyne, @joelklabo, @longmaba, @mukhtharcm, @odysseus0, @oscargavin, @rhjoh, @sebslight, @sibbl, @sleontenko, @suminhthanh, @thewilloftheshadow, @tyler6204, @vignesh07, @visionik, @ysqander, @zerone0x.

Breaking

  • BREAKING: Reject invalid/unknown config entries and refuse to start the gateway for safety. Run openclaw doctor --fix to repair, then update plugins (openclaw plugins update) if you use any.