v0.9.2
upstash/context7v0.9.2May 17, 2026by github-actions[bot]
AI Summary
v0.9.2 adds WhatsApp status broadcast support with separate storage, improves security by blocking link previews from private networks and validating webhook URLs, and fixes numerous issues related to account handling, CLI output, media limits, message deletion, polling, and chat synchronization.
Key Highlights
- WhatsApp status broadcasts with separate storage
- Security improvements: blocked link previews from private addresses, webhook URL validation
- Fixed account config serialization with config lock
- Fixed CLI output to strip terminal control characters
- Fixed message history to show edited text instead of placeholders
New Features
- Send: add `wacli send status` for WhatsApp status broadcasts
- Store: persist synced and locally sent status broadcasts separately in `status_messages`
- Security: block automatic link previews from fetching private addresses
- Security: add `--webhook-allow-private` for trusted local endpoints
- Fixed: unwrap edited WhatsApp messages during history sync
Full Release Notes
## Changelog ### Added - Send: add `wacli send status` for WhatsApp status broadcasts, including text statuses with optional background/font and media statuses with captions. (#247 - thanks @dovocoder) - Store: persist synced and locally sent status broadcasts separately in `status_messages` instead of mixing them into normal chat messages. ### Security - CI: pin GitHub Actions and Docker base images to immutable refs and pin GoReleaser to an exact version. - Send: block automatic link previews from fetching localhost, private, link-local, multicast, and other non-public addresses. - Sync: validate webhook URLs, redact webhook errors, disable private-network webhook targets by default, and add `--webhook-allow-private` for trusted local endpoints. ### Fixed - Accounts: serialize account config mutations with a config lock and save through unique temporary files. - CLI: strip terminal control characters from human/table/error output. - CLI: open the local store through SQLite read-only mode for `--read-only` commands instead of initializing writer state. - Media: enforce regular-file and size limits for sends, stickers, voice notes, profile pictures, contacts imports, thumbnails, and unknown-length downloads. - Messages: make `--delete-media --for-me` remove the stored local media file when present. - Store: count all chats and groups in `store stats` instead of the first 50 entries. - Sync: warn when bootstrap contact/group/channel refresh fails instead of silently ignoring it. - Sync: bound each webhook delivery request so shutdown is not stuck behind a slow endpoint. - History: unwrap edited WhatsApp messages during history sync and backfill so stored/searchable text shows the edited body instead of `(message)`. (#246 - thanks @hiasinho) - Polls: use WhatsApp's single-select poll creation field for outbound single-select polls and preserve unmatched poll vote hashes in `poll show --json`. (#248 - thanks @dovocoder) - Sync: canonicalize `@lid` chat JIDs before enqueuing media downloads so `sync --follow --download-media` finds the correct DB row for live one-to-one messages. (#244 - thanks @Daniel1of1)