You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Removed built-in image server: Completely removed image-server.ts and qqbot-cli.js. A standalone image hosting server is no longer needed to send images. Media sending now uses QQ's rich media API for direct upload, simplifying deployment and removing ~950 lines of code.
Unified rich media tag: All outbound images/voice/video/files now use a unified <qqmedia> tag, replacing the previously scattered <image>/<file> formats for cleaner logic and easier maintenance.
✨ New
C2C typing indicator heartbeat (PR #171 by @xiaokui-bot): In private chat, the "typing" notification is now resent every 5 seconds to prevent the typing bubble from disappearing when the user switches apps or reopens the chat. For long-running AI tasks (tool calls, voice generation, etc.), users can always see that the AI is working.
Enhanced media type detection: Added Content-Type sniffing and file extension dual detection when sending rich media. Automatically falls back to GET URL mode when the QQ rich media POST upload fails, improving image/file send success rates.
🐛 Fixes
CLI message send missing markdown config (PR #175 by @gsskk): Fixed potential errors caused by missing markdown config object when sending messages via CLI.
Fixed QQ media download path to framework-allowed directory (Issue #195): QQ-downloaded images are now saved to ~/.openclaw/media/qqbot/downloads (under OpenClaw's media security whitelist) instead of ~/.openclaw/qqbot/downloads, resolving "Local media path is not under an allowed directory" errors when the Agent uses the image tool to analyze QQ images.
Typing heartbeat timer leak: Ensured the typing indicator heartbeat timer is properly cleared on all code paths (including exceptions and early returns) to prevent timer leaks.