Repository navigation
v1.4.0
@agent-wechat/cli 1.4.0
Minor Changes
-
#352
498bd4eThanks @thisnick! - Add disabled-by-default direct voice calling: authenticated control/media WebSockets, single-call ownership, PCM SDK connections, CLI monitor/dial/answer controls, and an optional OpenClaw OpenAI audio bridge with separate calling allowlists. Add the opt-in native worker and internal call-media/audio libraries. Expose direct/conference kind and voice/video call type in call metadata, including same-account observer snapshots without ownership or audio access. Select call type when dialing and accept offers by identity/revision; remove redundant media flags and the unimplemented resume command. Advertise available calling capabilities only; missing flags mean unavailable. Use onecallsAPI token scope for call state, control and owner-bound audio; messaging grants do not permit calls. Isolated live tests cover personal voice negotiation, duplex PCM and terminal handling. An accepted owner hangup completes known cleanup when it fences an unsent poll before the queued backend stop runs. Media security lifetime and physical device validation remain incomplete; the native worker is restricted to expiring isolated tests. Video and conference calling remain unavailable.Exchange raw PCM samples on media sockets with JSON stream setup; buffer, frame and pace client audio in the daemon instead of requiring CLI or OpenClaw clients to construct custom binary headers.
Keep active direct voice calls connected across peer microphone mute and unmute updates without replacing their admitted media context.
Report verified peer microphone mute/unmute as typed control events and current-call snapshots. Use WebSocket liveness for owner cleanup, attempt graceful call shutdown, and locally end abandoned sessions on restart while preserving uncertain network receipts.
Configure voice and video permissions separately in OpenClaw. Group realtime speech settings, OpenAI SecretRef credentials and independent consultation model/timeouts under the voice configuration; keep unavailable video calls unclaimed.
-
#366
76c3ac5Thanks @thisnick! - Show readable CLI results by default, including tables for chats and message history. The message table shows the sender, a preview, the timestamp and a shortened ID. Use--jsonfor full results, event streams and daemon startup records in scripts.
Patch Changes
-
#363
476a041Thanks @thisnick! - Include local microphone/speaker support in released executables, add local audio-device discovery, and show live signal-level meters during interactive calls. Keep passive/JSON output free of terminal meters and retain separate daemon calling permissions and native transmission guards. Linux executables now require libpulse0; daemon operation does not require audio devices or a sound server.Include the call API, native worker, codec and device adapters in normal Cargo builds. Use the same complete default features for development, CI and release artifacts, without feature-selection flags. Verify calling routes and a passive control connection in the packaged executable and image; runtime calling authorization remains separate.
-
#382
13000edThanks @thisnick! - Reduce the time message sync holds the account lock on profiles with many conversations by checking the target conversation table's schema directly. -
#368
8c93201Thanks @thisnick! - Install the CLI audio runtime dependency before verifying executables during Linux image publication. -
#374
bbb5f92Thanks @thisnick! - Show incoming calls after the ringing acknowledgment and let an accepted answer interrupt a pending pre-answer poll. Reduce account lock contention by starting read workers before taking the lock and releasing it during plain-text message exchanges. -
#379
443f3bdThanks @thisnick! - Keep direct voice calls connected when the legacy WeChat relay audio path reuses a nonce across senders. Derive each sender's starting sequence from room media material and sender identity to reduce early overlap. Continue to reject replay and conflicting packets from the same sender, and stop before the local counter wraps. -
#380
3077cf7Thanks @thisnick! - Show a phone confirmation prompt whilewx auth loginwaits for approval. With--json, report the waiting state on stderr and return the final result as JSON on stdout. -
#370
998830dThanks @thisnick! - Register the native call backend during normal daemon startup for authenticated accounts. Remove the separate test-startup flag and optional daemon/CLI calling/audio branches, retaining call ownership, credential, cleanup and media safety checks. -
#364
821eeb6Thanks @thisnick! - Fix group creation, member additions, and pin/mute preferences for contacts whose saved deletion flag is NULL. New contacts created by sparse updates default to a zero deletion flag while existing deletion state is preserved. -
#366
76c3ac5Thanks @thisnick! - Useaccounts,profilesandconfig serversas the canonical CLI groups andselectto save account, profile and server choices. Keep previous singular names and selection verbs as hidden compatibility aliases. Alphabetize subcommands at every help level and add command descriptions, selection guidance and examples. Update bundled instructions and repository callers to use the canonical names.Use
wx auth logout --localto sign out on the daemon and keep saved credentials without contacting WeChat. The oldlogout-localcommand remains available as a hidden alias.Use
wx chats listto list chats. The previouswx threadscommand remains available as a hidden compatibility command.Use
wx contacts lookupandwx groups lookupfor lookups by ID. The previous top-level lookup commands remain available as hidden compatibility commands.Contact lookup skips blank remarks and nicknames when choosing a display name.
-
#362
b82cf37Thanks @thisnick! - Keep an incoming call's actor available when an accepted reject fences an unsent poll before the reject command reaches the backend. Send the reject once, without resending the poll, and retain uncertain rejection receipts. -
#382
13000edThanks @thisnick! - Skip repeated message database schema scans when inserting a message into a conversation table already validated in the same transaction. -
#366
76c3ac5Thanks @thisnick! - Shorten the interactive call prompts by removing the audio device startup message and the microphone status from the waiting prompt. Show which call controls require Enter and let users redisplay the keys with?.Set
WX_CALL_DEBUG=1to trace call events, audio frame writes and WebSocket closure details on stderr.
@agent-wechat/agent-wechat 1.4.0
Minor Changes
-
#352
498bd4eThanks @thisnick! - Add disabled-by-default direct voice calling: authenticated control/media WebSockets, single-call ownership, PCM SDK connections, CLI monitor/dial/answer controls, and an optional OpenClaw OpenAI audio bridge with separate calling allowlists. Add the opt-in native worker and internal call-media/audio libraries. Expose direct/conference kind and voice/video call type in call metadata, including same-account observer snapshots without ownership or audio access. Select call type when dialing and accept offers by identity/revision; remove redundant media flags and the unimplemented resume command. Advertise available calling capabilities only; missing flags mean unavailable. Use onecallsAPI token scope for call state, control and owner-bound audio; messaging grants do not permit calls. Isolated live tests cover personal voice negotiation, duplex PCM and terminal handling. An accepted owner hangup completes known cleanup when it fences an unsent poll before the queued backend stop runs. Media security lifetime and physical device validation remain incomplete; the native worker is restricted to expiring isolated tests. Video and conference calling remain unavailable.Exchange raw PCM samples on media sockets with JSON stream setup; buffer, frame and pace client audio in the daemon instead of requiring CLI or OpenClaw clients to construct custom binary headers.
Keep active direct voice calls connected across peer microphone mute and unmute updates without replacing their admitted media context.
Report verified peer microphone mute/unmute as typed control events and current-call snapshots. Use WebSocket liveness for owner cleanup, attempt graceful call shutdown, and locally end abandoned sessions on restart while preserving uncertain network receipts.
Configure voice and video permissions separately in OpenClaw. Group realtime speech settings, OpenAI SecretRef credentials and independent consultation model/timeouts under the voice configuration; keep unavailable video calls unclaimed.
Patch Changes
- #359
b32fce8Thanks @thisnick! - Validate the OpenClaw integration against 2026.10.9. No plugin changes were needed; the pinned Gateway and model-handoff smokes pass unchanged.
@agent-wechat/desktop 1.4.0
Minor Changes
- #366
76c3ac5Thanks @thisnick! - Show readable CLI results by default, including tables for chats and message history. The message table shows the sender, a preview, the timestamp and a shortened ID. Use--jsonfor full results, event streams and daemon startup records in scripts.
Patch Changes
-
#363
476a041Thanks @thisnick! - Include local microphone/speaker support in released executables, add local audio-device discovery, and show live signal-level meters during interactive calls. Keep passive/JSON output free of terminal meters and retain separate daemon calling permissions and native transmission guards. Linux executables now require libpulse0; daemon operation does not require audio devices or a sound server.Include the call API, native worker, codec and device adapters in normal Cargo builds. Use the same complete default features for development, CI and release artifacts, without feature-selection flags. Verify calling routes and a passive control connection in the packaged executable and image; runtime calling authorization remains separate.
-
#366
76c3ac5Thanks @thisnick! - Useaccounts,profilesandconfig serversas the canonical CLI groups andselectto save account, profile and server choices. Keep previous singular names and selection verbs as hidden compatibility aliases. Alphabetize subcommands at every help level and add command descriptions, selection guidance and examples. Update bundled instructions and repository callers to use the canonical names.Use
wx auth logout --localto sign out on the daemon and keep saved credentials without contacting WeChat. The oldlogout-localcommand remains available as a hidden alias.Use
wx chats listto list chats. The previouswx threadscommand remains available as a hidden compatibility command.Use
wx contacts lookupandwx groups lookupfor lookups by ID. The previous top-level lookup commands remain available as hidden compatibility commands.Contact lookup skips blank remarks and nicknames when choosing a display name.
-
#366
76c3ac5Thanks @thisnick! - Shorten the interactive call prompts by removing the audio device startup message and the microphone status from the waiting prompt. Show which call controls require Enter and let users redisplay the keys with?.Set
WX_CALL_DEBUG=1to trace call events, audio frame writes and WebSocket closure details on stderr.
Native assets and desktop installers are published on GitHub; npm publication and deployment are separate release steps.