Releases: evolution-foundation/evolution-go
Releases · evolution-foundation/evolution-go
Release list
v0.7.2
v0.7.2
Docker: evoapicloud/evolution-go:0.7.2
🆕 New Features
- Passkey (WebAuthn) pairing — support for linking accounts that the WhatsApp
server locks behind a passkey (the Shortcake / CRSC flow). When the
server demands a passkey, whatsmeow'sPairPasskeyRequestis surfaced through a
new ceremony flow: the backend mints a short-lived ceremony token, and a bundled
browser extension (passkey-helper) runs the WebAuthn assertion on the
web.whatsapp.comorigin and posts it back. Three public endpoints drive it:
GET /passkey-ceremony/{token},POST .../response,POST .../confirm. The
manager detects the passkey stage and shows an "Abrir WhatsApp Web" button.
Confirmation is always manual (never auto-confirm onSkipHandoffUX).
Configure the public API base viaPASSKEY_PUBLIC_URL. Full guide:
docs/wiki/guias-api/passkey-pairing.md. Note: there is no headless bypass —
the ceremony requires the account owner's real authenticator; the extension is
web-only. - Headless license auto-activation — set
EVOLUTION_OPERATOR_EMAILto the
email used in your first manual license registration; on startup the service
silently calls/v1/register/autoand skips the browser flow (falls back to the
manual flow if the email isn't registered yet). - Button message media support — additional media handling for interactive
button messages.
🔧 Improvements / CI
- Dropped the whatsmeow fork — now uses official
go.mau.fi/whatsmeow. The
project previously vendored a fork (whatsmeow-libsubmodule) to carry a
PostgreSQL pool patch; upstream rejected that patch in favor ofNewWithDB
(app-side config). Removing the fork also pulled in upstream's native passkey
support. Pinned to the commit that adds passkeys
(v0.0.0-20260630180629-b572e5bcb92b). Thesync-releasesworkflow no longer
re-adds the submodule. - QR pairing consumes
events.QRdirectly instead ofGetQRChannel. The QR
channel auto-confirms passkey onSkipHandoffUXand disconnects the socket when
codes run out — both break an in-flight passkey ceremony. Connecting without it
keeps the socket alive for as long as pairing (QR or passkey) needs. QR rotation
now pauses while a passkey ceremony is active. - Public sync fixes — the release workflow drops the obsolete whatsmeow-lib
step, targetsevolution-foundation/*, and now ships thepasskey-helper
extension to the public repo.
🐛 Bug Fixes
POST /instance/pairreturned an emptyPairingCode— the handler
swallowedPairPhoneerrors and returned HTTP 200 withPairingCode: "", and
the client wasn't connected/awaiting-auth beforePairPhone. Now starts the
instance, waits for the websocket, and surfaces real errors (#21).GET /instance/statusreturned 400 after a manual disconnect — now returns
200 with the disconnected status instead of erroring until a container restart
(#20).
🏷️ Org rename
- Repository references updated from EvolutionAPI to evolution-foundation
(module path, imports, GitHub URLs, submodule URLs).
v0.7.1
Docker: evoapicloud/evolution-go:0.7.1
🆕 New Features
- Test-send modal in Manager — new modal in the embedded manager UI to test message sending directly from the panel, covering text, media and interactive message types. Useful for validating an instance right after pairing without leaving the manager.
🔧 Improvements / CI
- whatsmeow-lib SHA now pinned in the public sync — the
sync-releasesworkflow previously re-cloned whatsmeowmainon every run, so the SHA listed in the CHANGELOG could drift from what the public repos actually built against. The workflow now captures the SHA from the dev submodule and checks out that exact commit in the target, restoring release reproducibility. - Docker
:latesttag gated to stable releases — the sharedpublish_docker_image.ymltemplate was previously tagging:latestfrom both stable and beta builds, so each beta push overwrote the stable:latestwith obfuscated beta code.:latestnow only moves forward on non-beta releases. - Repository cleanup — dropped tracked binaries (
evolution-go,build/server), IDE config (.idea/) and scratch files (DIFF-COMPLETO.txt,API-INTERACTIVE-DOCS.txt,carousel-sender.html). Expanded.gitignoreto prevent reincidence.
📝 Docs
- Postman collection — added
Set Proxyrequest and multipart hints on/send/media; collection file renamed fromEvolution GO.postman_collection (2).jsontoEvolution GO.postman_collection.json. - Interactive messages docs — additional examples and corrections.
v0.7.0
Docker: evoapicloud/evolution-go:0.7.0
🆕 New Features
- Multi-platform interactive messages — Buttons, lists and carousel working on Android, iOS and WhatsApp Web/Desktop
- SendButton: removed
ViewOnceMessagewrapper that blocked rendering on iOS and WhatsApp Web;FooterandHeaderare now conditional - SendList: migrated from
InteractiveMessage/NativeFlowMessageto legacyListMessage(native protobuf) for broad compatibility - SendCarousel: new endpoint
POST /send/carouselwith cards (image, text, footer, buttons) and automatic JPEG thumbnail generation for instant image loading whatsmeow-lib: addedbiznode forInteractiveMessageand pinnedproduct_listtype on thebiznode forListMessage
- SendButton: removed
- Base64 media support on
/send/media— Theurlfield onPOST /send/medianow also accepts base64-encoded media. When the value does not start withhttp://orhttps://, it is treated as base64 and decoded; reuses the existingSendMediaFileflow - WhatsApp status endpoints — new
POST /send/status/textandPOST /send/status/mediapublish text/image/video status tostatus@broadcast. Media endpoint supports both JSON (with URL) and multipart/form-data (file upload). Thanks @Eduardo-gato (#15) - Webhook routing for GROUP / NEWSLETTER — when the primary
MESSAGE/SEND_MESSAGE/READ_RECEIPTsubscription is absent, events from@g.uschats are forwarded toGROUPsubscribers and events from@newsletterchats toNEWSLETTERsubscribers. Thanks @oismaelash (#18)
🔧 Improvements
- Proxy protocol — new optional
protocolfield (andPROXY_PROTOCOLenv) supportinghttp,https,socks5. Replaces the hardcoded SOCKS5 dialer withclient.SetProxyAddress, fixing HTTP-proxy QR pairing (#12). Thanks @TBDevMaster (#13) - WhatsApp Web version cache —
fetchWhatsAppWebVersionnow caches the result for 1 hour with a mutex instead of issuing one request per instance startup. Thanks @VitorS0uza (#24) - Manager flicker fix — instance page no longer replaces the list with skeleton cards on every 5s polling cycle (
hasLoadedflag). Thanks @TBDevMaster (#14), closes #11 WEBHOOKFILES→WEBHOOK_FILES—.env.example, docker-compose and docs aligned with the env var the runtime actually reads. Thanks @VitorS0uza (#22)- Dependency cleanup — removed unused
github.com/EvolutionAPI/evo-gatefromgo.mod - whatsmeow-lib bumped to
0923702fb - Telemetry removed — dropped legacy
pkg/telemetry
🐛 Bug Fixes
/message/edit— was silently ignored because the edit payload usedConversationwhile the original message was sent asExtendedTextMessage. WhatsApp requires matching types; now the edit usesExtendedTextMessageand the response returns the actual server timestamp instead of the zero value. Closes #16- Sticker upload to S3/MinIO — when
webp.Decodeorpng.Encodefailed, the whole media pipeline aborted and the sticker was lost from the webhook. Now we log a warning and keep the raw.webpbytes so the sticker still reaches the bucket. Closes #5 - Multipart
/send/media— the binary-upload branch silently droppedmentionAll,mentionedJidandquoted. These fields now parse from the form (withmentionedJidaccepting repeated or comma-separated values) and reach the send service. Closes #2
⚠️ Breaking changes
- Proxy — previously all proxies were forced through SOCKS5. If you run SOCKS5 on a non-standard port (anything outside 1080/2080/42000-43000), set
PROXY_PROTOCOL=socks5in the env or pass"protocol": "socks5"in the proxy body explicitly — otherwise the new protocol inference will fall back to HTTP.
📝 Docs
- README — updated WhatsApp support number and issue templates
- Interactive messages guide — new
docs/wiki/guias-api/api-interactive.md - Proxy docs — environment variables, configuration guide and API reference updated with the new
protocolfield
🙏 Community contributors
Big thanks to everyone who sent PRs and issues that shaped this release:
- @moothz (#7, #8, #9)
- @VitorS0uza (#22, #24)
- @TBDevMaster (#13, #14)
- @Eduardo-gato (#15)
- @oismaelash (#18)
- @brunobeise (#16)
- @GleisonOliveiraAds (#5)
- @ruben18salazar3 (#2)
- @wendell-sr (#11)