Releases: mautrix/whatsapp
Releases Β· mautrix/whatsapp
v0.8.0
- 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).
- Votes are only bridged if MSC3381 polls are enabled (
- 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
tosqlite3-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
- 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
- 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
- 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
.
- This can be used by adding everyone to a non-exclusive namespace in the registration, and setting the login shared secret to the string
- Enabled appservice ephemeral events by default for new installations.
- Existing bridges can turn it on by enabling
ephemeral_events
and disablingsync_with_custom_puppets
in the config, then regenerating the registration file.
- Existing bridges can turn it on by enabling
- 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
v0.6.0
- 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.
- The
- 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
- 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
- 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.
- The new
- 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
v0.3.0
- 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 setfile_name_format
to something non-empty (the default is{{.Date}}-{{.Index}}.log
).
- 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