mautrix-whatsapp/CHANGELOG.md
2022-02-23 14:34:05 +02:00

305 lines
14 KiB
Markdown

# unreleased
* 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 and start DMs.
* Exposed maximum database connection idle time and lifetime options.
# v0.2.4 (2022-02-16)
* Added tracking for incoming events from the primary device to warn the user
if their phone is offline for too long.
* (Re-)Added support for setting group avatar from Matrix.
* Added initial support for re-fetching old media from phone.
* Added support for bridging audio message waveforms in both directions.
* Added support for sending URL previews to WhatsApp (both custom and autogenerated).
* Updated formatter to get Matrix user displayname when converting WhatsApp mentions.
* Fixed some issues with read receipt bridging.
* Fixed `!wa open` not working with new-style group IDs.
* Fixed panic in disappearing message handling code if a portal is deleted with
messages still inside.
* Fixed disappearing message timer not being stored in post-login history sync.
* Fixed formatting not being parsed in most incoming WhatsApp messages.
# v0.2.3 (2022-01-16)
* Added support for bridging incoming broadcast list messages.
* Added overrides for mime type -> file extension mapping as some OSes have
very obscure extensions in their mime type database.
* Added support for personal filtering spaces (started by [@HelderFSFerreira] and [@clmnin] in [#413]).
* Added support for multi-contact messages.
* Added support for disappearing messages.
* Fixed avatar remove events from WhatsApp being ignored.
* Fixed the bridge using the wrong Olm session if a client established a new
one due to corruption.
* Fixed more issues with app state syncing not working (especially related to contacts).
[@HelderFSFerreira]: https://github.com/HelderFSFerreira
[@clmnin]: https://github.com/clmnin
[#413]: https://github.com/mautrix/whatsapp/pull/413
# v0.2.2 (2021-12-16)
**This release includes a fix for a moderate severity security issue that
affects all versions since v0.1.4.** If your bridge allows untrusted users to
run commands in bridged rooms (`user` permission level), you should update the
bridge or demote untrusted users to the `relay` level. If all whitelisted users
are trusted, then you're not affected.
* Added proper thumbnail generation when sending images to WhatsApp.
* Added support for the stable version of [MSC2778].
* Added support for receiving ephemeral events via [MSC2409]
(previously only possible via double puppeting).
* Added option to mute status broadcast room and move it to low priority by default.
* Added command to search your contact list and joined groups
(thanks to [@abmantis] in [#387]).
* Added support for automatically re-requesting Megolm keys if they don't
arrive, and automatically recreating Olm sessions if an incoming message
fails to decrypt.
* Added support for passing through media dimensions in image/video messages
from WhatsApp.
* Switched double puppeted messages to use `"fi.mau.double_puppet_source": "mautrix-whatsapp"`
instead of `"net.maunium.whatsapp.puppet": true` as the indicator.
* Renamed `!wa check-invite` to `!wa resolve-link` and added support for
WhatsApp business DM links (`https://wa.me/message/...`).
* Improved read receipt handling to mark all unread messages as read on
WhatsApp instead of only marking the last message as read.
* Updated Docker image to Alpine 3.15.
* Fixed some issues with app state syncing not working
(especially related to contacts).
* Fixed responding to retry receipts not working correctly.
[MSC2409]: https://github.com/matrix-org/matrix-doc/pull/2409
[#387]: https://github.com/mautrix/whatsapp/pull/387
# v0.2.1 (2021-11-10)
* Added support for double puppeting from other servers
(started by [@abmantis] in [#368]).
* This does not apply to post-login backfilling, as it's not possible to use
MSC2716's `/batch_send` with users from other servers.
* Added config updater similar to mautrix-python bridges.
* Added support for responding to retry receipts (to automatically resolve
other devices not being able to decrypt messages from the bridge).
* Added `sync` command to resync contact and group info to Matrix (not to be
confused with the pre-v0.2.0 `sync` command which also did backfill and other
such things).
* Added warning when reacting to messages in portal rooms
(thanks to [@abmantis] in [#373]).
* Can be disabled with the `reaction_notices` config option.
* Fixed WhatsApp encryption failing if other user reinstalled the app.
* New identities will now be auto-trusted, and if `identity_change_notices`
is set to true, a notice about the change will be sent to the private chat
portal.
* Fixed contact info sync at login racing with portal/puppet creation and
therefore not being synced properly.
* Fixed read receipts from WhatsApp on iOS that mark multiple messages as read
not being handled properly.
* Fixed backfilling not working when double puppeting was not enabled at all.
* Fixed portals not being saved on SQLite.
* Fixed relay mode using old name for users after displayname change.
* Fixed displayname not being HTML-escaped in relay mode message templates.
[@abmantis]: https://github.com/abmantis
[#368]: https://github.com/mautrix/whatsapp/pull/368
[#373]: https://github.com/mautrix/whatsapp/pull/373
# v0.2.0 (2021-11-05)
**N.B.** The minimum Go version is now 1.17. Also note that Docker image paths
have changed as mentioned in the [v0.1.8](#v018-2021-08-07) release notes.
* Switched to WhatsApp multidevice API. All users will have to log into the
bridge again.
* Initial backfilling now uses [MSC2716]'s batch send endpoint.
* MSC2716 support is behind a feature flag in Synapse, so initial backfilling
is disabled by default. See the `history_sync` section in the example
config for more details.
* Missed message backfilling (e.g. after bridge downtime) still sends the
messages normally and is always enabled.
* Replaced old relaybot system with a portal-specific relay user option like in mautrix-signal.
* You will have to re-setup the relaybot with the new system
(see [docs](https://docs.mau.fi/bridges/general/relay-mode.html)).
* Many config fields have been changed/renamed/removed, so it is recommended to
look through the example config and update your config.
[MSC2716]: https://github.com/matrix-org/matrix-doc/pull/2716
# v0.1.10 (2021-11-02)
This release just disables SQLite foreign keys, since some people already have
invalid rows in the database, which caused issues when SQLite re-checked the
rows during database migrations (#360). The invalid rows shouldn't cause any
actual issues, since the bridge uses foreign keys primarily for cascade delete
purposes.
If you're using Postgres, this update is not necessary.
# v0.1.9 (2021-10-28)
This is the final release targeting the legacy WhatsApp web API that requires a
phone connection. v0.2.0 will switch to the new multidevice API.
* Added support for bridging ephemeral and view-once messages.
* Added custom flag to invite events that will be auto-accepted using double
puppeting.
* Added proper error message when trying to log in with multidevice enabled.
* Added automatic conversion of webp images to png when sending to WhatsApp
(thanks to [@apmechev] in [#346]).
* Added support for customizing bridge bot welcome message
(thanks to [@justinbot] and [@Half-Shot] in [#355]).
* Fixed MetricsHandler causing panics on heavy traffic instances
(thanks to [@tadzik] in [#359]).
* Removed message content from database.
[@apmechev]: https://github.com/apmechev
[@justinbot]: https://github.com/justinbot
[@Half-Shot]: https://github.com/Half-Shot
[@tadzik]: https://github.com/tadzik
[#346]: https://github.com/mautrix/whatsapp/pull/346
[#355]: https://github.com/mautrix/whatsapp/pull/355
[#359]: https://github.com/mautrix/whatsapp/pull/359
# v0.1.8 (2021-08-07)
**N.B.** Docker images have moved from `dock.mau.dev/tulir/mautrix-whatsapp`
to `dock.mau.dev/mautrix/whatsapp`. New versions are only available at the new
path.
* Added very basic support for bridging [MSC3245] voice messages into
push-to-talk messages on WhatsApp.
* Added support for Matrix->WhatsApp location messages.
* Renamed `whatsapp_message_age` and `whatsapp_message` prometheus metrics to
`remote_event_age` and `remote_event` respectively.
* Fixed handling sticker gifs from Matrix.
* Fixed bridging audio/video duration from/to WhatsApp.
* Fixed messages not going through until restart if initial room creation
attempt fails.
* Fixed issues where some WhatsApp protocol message in new chats prevented the
first actual message from being bridged.
* Fixed some media from WhatsApp not being bridged due to file length or
checksum mismatches. WhatsApp clients don't seem to care, so the bridge also
ignores those errors now.
[MSC3245]: https://github.com/matrix-org/matrix-doc/pull/3245
# v0.1.7 (2021-06-15)
* Added option to disable creating WhatsApp status broadcast rooms.
* Added option to bridge chat archive, pin and mute statuses from WhatsApp.
* Moved Matrix HTTP request retrying to mautrix-go (which now retries all
requests instead of only send message requests).
* Made bridge status reporting more generic (now takes an arbitrary HTTP
endpoint to push bridge status to instead of requiring mautrix-asmux).
* Updated error messages sent to Matrix to be more understandable if WhatsApp
returns status code 400 or 599.
* Fixed encryption getting messed up after receiving inbound olm sessions if
using SQLite.
* Fixed bridge sending old messages after new ones if initial backfill limit is
low and bridge gets restarted.
* Fixed read receipt bridging sometimes marking too many messages as read on
Matrix (and then echoing it back to WhatsApp).
* Fixed false-positive message send error that showed up on WhatsApp mobile for
messages sent from Matrix.
* Fixed ghost user displaynames for newly added group members never getting set
if `chat_meta_sync` is `false`.
# v0.1.6 (2021-04-01)
* Added support for broadcast lists.
* Added automatic re-login-matrix using login shared secret if `/sync` returns `M_UNKNOWN_TOKEN`.
* Added syncing of contact info when syncing room members to ensure that
WhatsApp ghost users have displaynames before the Matrix user sees them for
the first time.
* Added bridging of own WhatsApp read receipts after backfilling.
* Added option not to re-sync chat info and user avatars on startup to avoid
WhatsApp rate limits (error 599).
* When resync is disabled, chat info changes will still come through by
backfilling messages. However, user avatars will currently not update after
being synced once.
* Improved automatic reconnection to work more like WhatsApp Web.
* The bridge no longer disconnects the websocket if the phone stops
responding. Instead it sends periodic pings until the phone responds.
* Outgoing messages will be queued and resent automatically when the phone
responds again.
* Added option to disable bridging messages where the `msgtype` is `m.notice`
(thanks to [@hramirezf] in [#259]).
* Fixed backfilling failing in some cases due to 404 errors.
* Merged the whatsapp-ext module into [go-whatsapp].
* Disabled personal filtering communities by default.
* Updated Docker image to Alpine 3.13.
[@hramirezf]: https://github.com/hramirezf
[#259]: https://github.com/mautrix/whatsapp/pull/259
[go-whatsapp]: https://github.com/tulir/go-whatsapp
# v0.1.5 (2020-12-28)
* Renamed device name fields in config from `device_name` and `short_name` to
`os_name` and `browser_name` respectively.
* Replaced shared secret login with appservice login ([MSC2778]) when logging
into bridge bot for e2be.
* Removed webp conversion for WhatsApp→Matrix stickers.
* Added short wait if encrypted message arrives before decryption keys.
* Added bridge error notices if messages fail to decrypt.
* Added command to discard the bridge's Megolm session in a room.
* Added retrying for Matrix message sending if server returns 502.
* Added browser-compatible authentication to login API websocket.
* Fixed creating new WhatsApp groups for unencrypted Matrix rooms.
* Changed provisioning API to automatically delete session if logout request fails.
* Changed CI to statically compile olm into the bridge executable.
* Fixed bridging changes to group read-only status to Matrix (thanks to [@rreuvekamp] in [#232]).
* Fixed bridging names of files that were sent from another bridge.
* Fixed handling empty commands.
[MSC2778]: https://github.com/matrix-org/matrix-doc/pull/2778
[@rreuvekamp]: https://github.com/rreuvekamp
[#232]: https://github.com/mautrix/whatsapp/pull/232
# v0.1.4 (2020-09-04)
* Added better error reporting for media bridging errors.
* Added bridging for own read receipts from WhatsApp mobile when using double
puppeting.
* Added build tag to disable crypto without disabling SQLite.
* Added support for automatic key sharing.
* Added option to update `m.direct` when using double puppeting.
* Made read receipt bridging toggleable separately from presence bridging.
* Fixed the formatter bridging all numbers starting with `@` on WhatsApp into
pills on Matrix (now it only bridges actual mentions into pills).
* Fixed handling new contacts and receiving names of non-contacts in groups
when they send a message.
# v0.1.3 (2020-07-10)
* Added command to create WhatsApp groups.
* Added command to disable bridging presence and read receipts.
* Added full group member syncing (including kicking of users who left before).
* Allowed creating private chat portal by inviting WhatsApp puppet.
* Fixed bug where inaccessible private chat portals couldn't be recreated with
`pm` command.
# v0.1.2 (2020-07-04)
* Added option to disable notifications during initial backfill.
* Added bridging of contact and location messages.
* Added support for leaving chats and kicking/inviting WhatsApp users from Matrix.
* Added bridging of leaves/kicks/invites from WhatsApp to Matrix.
* Added config option to re-send bridge info state event to all existing portals.
* Added basic prometheus metrics.
* Added low phone battery warning messages.
* Added command to join groups with invite link.
* Fixed media not being encrypted when sending to encrypted portal rooms.
# v0.1.1 (2020-06-04)
* Updated mautrix-go to fix new OTK generation for end-to-bridge encryption.
* Added missing `v` to version command output.
* Fixed creating docker tags for releases.
# v0.1.0 (2020-06-03)
Initial release.