Skip to content

Releases: mautrix/whatsapp

v0.8.0

16 Dec 19:16
Compare
Choose a tag to compare
  • Added support for bridging polls from WhatsApp and votes in both directions.
    • Votes are only bridged if MSC3381 polls are enabled (extev_polls in the config).
  • Added support for bridging WhatsApp communities as spaces.
  • Updated backfill logic to mark rooms as read if the only message is a notice about the disappearing message timer.
  • Updated Docker image to Alpine 3.17.
  • Fixed backfills starting at the wrong time and sending smaller batches than intended in some cases.
  • Switched SQLite config from sqlite3 to sqlite3-fk-wal to enforce foreign keys and WAL mode. Additionally, adding _txlock=immediate to the DB path is recommended, but not required.

v0.7.2

16 Nov 10:18
Compare
Choose a tag to compare
  • Added option to handle all transactions asynchronously.
    • This may be useful for large instances, but using it means messages are no longer guaranteed to be sent to WhatsApp in the same order as Matrix.
  • Fixed database error when backfilling disappearing messages on SQLite.
  • Fixed incoming events blocking handling of incoming encryption keys.

v0.7.1

16 Oct 14:26
Compare
Choose a tag to compare
  • Added support for wa.me/qr links in !wa resolve-link.
  • Added option to sync group members in parallel to speed up syncing large groups.
  • Added initial support for WhatsApp message editing.
    • Sending edits will be disabled by default until official WhatsApp clients start rendering edits.
  • Changed private_chat_portal_meta config option to be implicitly enabled in encrypted rooms, matching the behavior of other mautrix bridges.
  • Updated media bridging to check homeserver media size limit before downloading media to avoid running out of memory.
    • The bridge may still run out of ram when bridging files if your homeserver has a large media size limit and a low bridge memory limit.

v0.7.0

16 Sep 18:49
Compare
Choose a tag to compare
  • Bumped minimum Go version to 1.18.
  • Added hidden option to use appservice login for double puppeting.
    • This can be used by adding everyone to a non-exclusive namespace in the registration, and setting the login shared secret to the string appservice.
  • Enabled appservice ephemeral events by default for new installations.
    • Existing bridges can turn it on by enabling ephemeral_events and disabling sync_with_custom_puppets in the config, then regenerating the registration file.
  • Updated sticker bridging to send actual sticker messages to WhatsApp rather than sending as image. This includes converting stickers to webp and adding transparent padding to make the aspect ratio 1:1.
  • Added automatic webm -> mp4 conversion when sending videos to WhatsApp.
  • Started rejecting unsupported mime types when sending media to WhatsApp.
  • Added option to use MSC2409 and MSC3202 for end-to-bridge encryption. However, this may not work with the Synapse implementation as it hasn't been tested yet.
  • Added error notice if the bridge is started twice.

v0.6.1

16 Aug 17:34
Compare
Choose a tag to compare
  • Added support for "Delete for me" and deleting private chats from WhatsApp.
  • Added support for admin deletions in groups.
  • Document with caption messages should work with the bridge as soon as WhatsApp enables them in their apps.

v0.6.0

16 Jul 17:03
Compare
Choose a tag to compare
  • Started requiring homeservers to advertise Matrix v1.1 support.
    • This bumps up the minimum homeserver versions to Synapse 1.54 and Dendrite 0.8.7. Minimum Conduit version remains at 0.4.0.
    • The bridge will also refuse to start if backfilling is enabled in the config, but the homeserver isn't advertising support for MSC2716. Only Synapse supports backfilling at the moment.
  • Added options to make encryption more secure.
    • The encryption -> verification_levels config options can be used to make the bridge require encrypted messages to come from cross-signed devices, with trust-on-first-use validation of the cross-signing master key.
    • The encryption -> require option can be used to make the bridge ignore any unencrypted messages.
    • Key rotation settings can be configured with the encryption -> rotation config.
  • Added config validation to make the bridge refuse to start if critical fields like homeserver or database address haven't been changed from the defaults.
  • Added option to include captions in the same message as the media to implement MSC2530. Sending captions the same way is also supported and enabled by default.
  • Added basic support for fancy business messages (template and list messages).
  • Added periodic background sync of user and group avatars.
  • Added maximum message handling duration config options to prevent messages getting stuck and blocking everything.
  • Changed message send error notices to be replies to the errored message.
  • Changed dimensions of stickers bridged from WhatsApp to match WhatsApp web.
  • Changed attachment bridging to find the Matrix msgtype based on the WhatsApp message type instead of the file mimetype.
  • Updated Docker image to Alpine 3.16.
  • Fixed backfill queue on SQLite.

v0.5.0

16 Jun 14:48
Compare
Choose a tag to compare
  • Moved a lot of code to mautrix-go.
  • Improved handling edge cases in backfill system.
  • Improved handling errors in Matrix->WhatsApp message bridging.
  • Disallowed sending status broadcast messages by default, as it breaks with big contact lists. Sending can be re-enabled in the config.
  • Fixed some cases where the first outgoing message was undecryptable for WhatsApp users.
  • Fixed chats not being marked as read when sending a message from another WhatsApp client after receiving a call.
  • Fixed other bridge users being added to status broadcasts rooms through double puppeting.
  • Fixed edge cases in the deferred backfill queue.

v0.4.0

16 May 17:40
Compare
Choose a tag to compare
  • Switched from /r0 to /v3 paths everywhere.
    • The new v3 paths are implemented since Synapse 1.48, Dendrite 0.6.5, and Conduit 0.4.0. Servers older than these are no longer supported.
  • Added new deferred backfill system to allow backfilling historical messages later instead of doing everything at login.
  • Added option to automatically request old media from phone after backfilling.
  • Added experimental provisioning API to check if a phone number is registered on WhatsApp.
  • Added automatic retrying if the websocket dies while sending a message.
  • Added experimental support for sending status broadcast messages.
  • Added command to change disappearing message timer in chats.
  • Improved error handling if Postgres dies while the bridge is running.
  • Fixed bridging stickers sent from WhatsApp web.
  • Fixed registration generation not regex-escaping user ID namespaces.

v0.3.1

16 Apr 20:42
Compare
Choose a tag to compare
  • Added emoji normalization for reactions in both directions to add/remove variation selector 16 as appropriate.
  • Added option to use MSC2246 async media uploads.
  • Fixed custom fields in messages being unencrypted in history syncs.

v0.3.0

16 Mar 14:37
Compare
Choose a tag to compare
  • Added reaction bridging in both directions.
  • Added automatic sending of hidden messages to primary device to prevent false-positive disconnection warnings if there have been no messages sent or received in >12 days.
  • Added proper error message when WhatsApp rejects the connection due to the bridge being out of date.
  • Added experimental provisioning API to list contacts/groups, start DMs and open group portals. Note that these APIs are subject to change at any time.
  • Added option to always send "active" delivery receipts (two gray ticks), even if presence bridging is disabled. By default, WhatsApp web only sends those receipts when it's in the foreground (i.e. showing online status).
  • Added option to send online presence on typing notifications (thanks to @abmantis in #452). This can be used to enable incoming typing notifications without enabling Matrix presence (WhatsApp only sends typing notifications if you're online).
  • Added checks to prevent sharing the database with unrelated software.
  • Exposed maximum database connection idle time and lifetime options.
  • Fixed syncing group topics. To get topics into existing portals on Matrix, you can use !wa sync groups.
  • Fixed sticker events on Matrix including a redundant msgtype field.
  • Disabled file logging in Docker image by default.
    • To enable it, mount a directory for the logs that's writable for the user inside the container (1337 by default), then point the bridge at it using the logging -> directory field, and finally set file_name_format to something non-empty (the default is {{.Date}}-{{.Index}}.log).