$git log --oneline
2026.2.24MINOR⚠ BREAKINGReleased: 2026-02-23

Native Android App Onboarding + Heartbeat Routing + Talk Config

/** Brand-new native Android app with four-step onboarding. Heartbeat routing hardened. Provider-agnostic Talk/TTS configuration. */

BREAKING: Heartbeat now BLOCKS direct/DM delivery by default. Set agents.defaults.heartbeat.directPolicy: 'allow' to restore previous behavior.

whats_new.md

✨ What's New

Native Android App Onboarding

Shipped a native four-step onboarding flow. Post-onboarding now has a five-tab shell (Connect, Chat, Voice, Screen, Settings). Includes a full Connect setup/manual mode screen.

Provider-agnostic Talk Configuration

Provider-agnostic Talk configuration with legacy compatibility. Exposed gateway Talk ElevenLabs config metadata for setup/status surfaces.

Expanded Stop Phrases

Expanded standalone stop phrases (stop openclaw, stop action, stop run, please stop, etc). Added multilingual stop keywords including ES/FR/ZH/HI/AR/JP/DE/PT/RU forms.

Security Audit Tooling

Added security.trust_model.multi_user_heuristic to flag likely shared-user ingress. Clarified personal-assistant trust model with hardening guidance for intentional multi-user setups.

breaking_changes.md

⚠ Breaking Changes

⚠Heartbeat delivery now BLOCKS direct/DM targets when destination parsing identifies a direct chat. Heartbeat runs still execute, but DM delivery is skipped.
⚠BREAKING: sandbox Docker network: 'container:' namespace-join mode blocked by default. Set agents.defaults.sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true to allow.
fixes.md

⚑ Fixes

βœ“Heartbeat routing: prevented leakage into Discord and direct-message destinations
βœ“Heartbeat defaults: switched implicit heartbeat delivery target from 'last' to 'none'
βœ“Cron/Heartbeat delivery: stopped inheriting cached session lastThreadId for heartbeat target resolution
βœ“Auto-reply/Heartbeat queueing: dropped heartbeat runs when session already has active run
βœ“Discord voice reliability: restored DAVE dependency, added configurable DAVE join options
βœ“Telegram replies: fixed empty HTML markdown chunk delivery with plain-text retry
βœ“Providers/Google reasoning: sanitized invalid negative thinkingBudget payloads for Gemini 3.1
upgrade.sh

πŸ“¦ Upgrade to 2026.2.24

$ npm install -g openclaw@2026.2.24