v8.6.0
pascalorg/editorv8.6.0May 24, 2026by aldinokemal
AI Summary
A minor release introducing persistent storage for WhatsApp message edits and reactions, forwarding label appstate events to webhooks, and adding pure-Go SQLite support for ARM cross-compilation to improve reliability.
Key Highlights
- Persist WhatsApp message edit history
- Persist chat message reactions
- Forward WhatsApp label appstate events to webhooks
- Add pure-Go SQLite builds for easy ARMv6/ARMv7 cross-compilation
New Features
- New `message_edits` table tracks message revisions
- New reaction storage with migration and chat/search hydration
- Label appstate events forwarded to configured webhooks
- Pure-Go SQLite support via build tags for Raspberry Pi
- Phone number inclusion in saved content for 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