$git log --oneline
2026.3.1MINOR⚠ BREAKINGReleased: 2026-02-28

OpenAI WebSocket-First + Android Nodes + Discord Thread Bindings

/** OpenAI Responses API goes WebSocket-first. Android gets device/notification APIs. Docker gets health check endpoints. */

⚠ BREAKING: Node exec approval payloads now require systemRunPlan. Node system.run pins path-token commands to canonical executable paths.

#OpenAI#WebSocket#Android#Discord#Telegram#Feishu
whats_new.md

✨ What's New

OpenAI WebSocket-First Transport

openai Responses API is now WebSocket-first by default (transport: 'auto' with SSE fallback). Shared OpenAI WS stream/connection runtime wiring with per-session cleanup.

Gateway Health Check Endpoints

Built-in HTTP liveness/readiness endpoints (/health, /healthz, /ready, /readyz) for Docker/Kubernetes health checks. Existing handlers are not shadowed.

Android Nodes Expansion

New node commands: camera.list, device.permissions, device.health, and notifications.actions (open/dismiss/reply) on Android nodes.

Discord Thread Bindings

Replace fixed TTL lifecycle with inactivity (idleHours, default 24h) plus optional hard maxAgeHours controls. New /session idle + /session max-age commands.

Telegram DM Topics

Per-DM direct + topic config (allowlists, dmPolicy, skills, systemPrompt, requireTopic). Routes DM topics as distinct inbound/outbound sessions.

German (de) Locale

Added German locale support across the web UI. Language options now auto-render from supported locale constants in Overview settings.

breaking_changes.md

⚠ Breaking Changes

⚠Node exec approval payloads now require systemRunPlan β€” host=node approval requests without that plan are rejected
⚠Node system.run execution now pins path-token commands to canonical executable path (realpath) β€” integrations asserting token-form argv must now accept canonical paths
fixes.md

⚑ Improvements & Fixes

βœ“Feishu streaming card text fidelity β€” merging throttled/fragmented partial updates without dropping content
βœ“Security: bounded unauthenticated webhook rate-limit state with stale-window pruning
βœ“Windows plugin install: avoided spawn EINVAL on npm/npx invocations via PATH resolution
βœ“Gateway macOS supervised restart: actively kickstart -k during intentional restarts to bypass ThrottleInterval
βœ“NO_REPLY token stripped from mixed-content messages before delivery
upgrade.sh

πŸ“¦ Upgrade to 2026.3.1

$ npm install -g openclaw@2026.3.1
# or
$ openclaw update