v8.6.0

supertone-oss-archive/supertonicv8.6.0May 24, 2026by aldinokemal

AI Summary

WhatsApp Web Multidevice v8.6.0 persists message edits and reactions, forwards label appstate events to webhooks, and adds pure-Go SQLite builds for ARM support.

Key Highlights

  • Persisted message edit history in a new table
  • Persisted chat message reactions
  • Forwarded WhatsApp label appstate events to webhooks
  • Added pure-Go SQLite support for ARMv6/ARMv7 cross-compilation

New Features

  • Message edit and reaction storage
  • Label webhook forwarding
  • Pure-Go SQLite with tuned pragmas for microSD cards
  • Phone number storage in contact messages

Full Release Notes

## What's New in v8.6.0

๐Ÿš€ **Minor Release: Message Edit History, Message Reactions, Label Webhooks & Pure-Go SQLite Builds**

This release persists WhatsApp message edits and reactions into chat history, forwards label appstate events to webhooks, adds pure-Go SQLite builds for easy ARMv6/ARMv7 cross-compilation, and ships several reliability fixes around message sending and chat list scoping.

---

## โœจ New Features

### Persist WhatsApp Message Edit History (#679)
- New `message_edits` table tracks every `MESSAGE_EDIT` event as an append-only history
- The original message content is updated in-place while previous revisions remain queryable
- Existing edit webhook payload behavior is preserved

### Persist Chat Message Reactions
- New reaction storage with migration and chat/search hydration
- Inbound and history-sync reaction events are persisted separately from messages
- Reactions exposed in chat responses and documented in OpenAPI, with regression coverage

### Forward WhatsApp Label Appstate Events to Webhooks (#659)
- Label edits and chatโ€“label association changes are now forwarded to configured webhooks
- Reuses existing webhook forwarding, event filtering, and LID normalization behavior
- Payloads include label metadata, label state, `chat_id`, and `chat_lid` when applicable

### Pure-Go SQLite Support via Build Tags (#677)
- New `pkg/sqlite` abstraction switches between CGO-based `mattn/go-sqlite3` (default) and pure-Go `modernc.org/sqlite` (with `-tags purego`)
- Enables easy cross-compilation for Raspberry Pi (ARMv6/ARMv7) and other platforms without a C toolchain
- Pure-Go path applies tuned pragmas (`busy_timeout=30s`, WAL, `synchronous=NORMAL`) to prevent `SQLITE_BUSY` on slow MicroSD cards
- Default build behavior is unchanged โ€” fully backward compatible
- README includes a Raspberry Pi cross-compilation guide

### Phone Number in Contact Messages (#646)
- Outgoing contact messages now store name + phone number together in saved content
- Contact message text extraction includes the phone number from the vCard
- Added unit tests for proto and event contact text formatting
- Closes #645

### Gowa Favicon (#672)
- Web client now shows the Gowa favicon in the browser tab using the existing `gowa.svg` asset

---

## ๐Ÿ› Bug Fixes

### API-Sent Messages Missing from Chat List (#683, PR #687)
- `wrapSendMessage` previously used `context.Background()` for async storage, which dropped the device instance attached by `ContextWithDevice`
- This caused rows to be stored with an empty `device_id` while queries used the logged-in JID โ€” a device scoping mismatch surfacing as `total_messages=0`
- Fix uses `context.WithoutCancel(ctx)` so device context survives after the HTTP request completes
- `StoreSentMessageWithContext` now returns an explicit error when `device_id` cannot be resolved (no more silent bad data)
- `deviceChatStorage.StoreSentMessageWithContext` injects device scope when context lacks one (defense in depth)
- Note: messages previously stored with empty `device_id` will not appear until re-sent or re-synced via history

### Mitigate WhatsApp Server Error 463 on Send
- Privacy token storage is kept on the primary WhatsApp database while the optional keys cache is used only for encryption and session data
- WhatsApp server error 463 is mapped to a `WA_REACHOUT_TIMELOCK` response so API callers get actionable retry guidance
- Documented safer `DB_KEYS_URI` usage with regression coverage for the store and send-error behavior

---

## ๐Ÿ”ง Technical Improvements

### CI / Docker
- Publish the `latest` Docker manifest on each release

### Dependency Updates
- `go.mau.fi/whatsmeow`: updated to latest
- All Go dependencies kept up-to-date

---

## What's Changed

* Add Gowa favicon by @juliomuhlbauer in https://github.com/aldinokemal/go-whatsapp-web-multidevice/pull/672
* Add pure-go sqlite support with build tags for easy armv6/armv7 cross-compilation by @danihidayatx in https://github.com/aldinokemal/go-whatsapp-web-multidevice/pull/677
* Forward WhatsApp label appstate events to webhooks by @zayedadel in https://github.com/aldinokemal/go-whatsapp-web-multidevice/pull/659
* fix: API-sent messages missing from chat message list (#683) by @aldinokemal in https://github.com/aldinokemal/go-whatsapp-web-multidevice/pull/687
* feat: persist whatsapp message edit history by @juliomuhlbauer in https://github.com/aldinokemal/go-whatsapp-web-multidevice/pull/679
* Show phone number when sending a contact in messages by @juliomuhlbauer in https://github.com/aldinokemal/go-whatsapp-web-multidevice/pull/646
* feat: persist chat message reactions by @aldinokemal
* fix: mitigate WhatsApp 463 send failures by @aldinokemal
* ci: publish latest docker manifest on release by @aldinokemal
* chore: upgrade version by @aldinokemal

## New Contributors

* @danihidayatx made their first contribution in https://github.com/aldinokemal/go-whatsapp-web-multidevice/pull/677
* @zayedadel made their first contribution in https://github.com/aldinokemal/go-whatsapp-web-multidevice/pull/659

**Full Changelog**: https://github.com/aldinokemal/go-whatsapp-web-multidevice/compare/v8.5.1...v8.6.0