- Message stubs are now actually handled instead of being dropped on the
floor, and are either converted into a warning or an actual message.
- As a side-effect of this work, missed calls are now properly
announced! Yay!
- More work probably needs doing around notifying the user about
ciphertext messages (in a non-spammy fashion)
- When messages are lacking in ciphertext (it needs to be reencoded for
us), WA will send us a message stub (which we don't process, and need
to).
- This then leads to us getting an empty message content, eating it
to avoid saying something useless, storing the msgid, and then not
sending the real message content later!
- This fixes that by checking we're actually sending something before
storing.
(It's only a short-term fix really though.)
- The version number was changed to 0.2.0, purely because rpm doesn't
like '0.2.0-pre' and I got tired of switching it around.
- We now use the Unidecode library to produce ASCII representations of
non-ASCII names, making life easier for people with umlauts and such
in their contact names.
- We now use the fancy new improved WhatsApp connection logic
in ww-rs-eta 0.5.0-pre1, which is nice.
- As a result, the handling of failed and superseded connections
should be vastly improved; no more random QR code requests from
lingering connections!
- In addition, the user now gets notified whenever they *remove*
the connection from their mobile app (although it could also
conceivably remove the state from the DB as well)
- History fetching was removed, as it never worked.
- The `ignore_other_libraries` config key now doesn't ignore
whatsappweb_eta, because it's useful to have that in there
for debugging as well.
- Some `dyn`s were dotted about the place to satisfy Rust 2018 lints.
- Messages now have timestamps stored in the database, so messages
sent while the admin was away should be sent with timestamps now.
- There's an undocumented history fetch feature which doesn't quite
work yet.
- whatsappweb-eta has now been hacked up to support PendingSend and
Sent ack types, making our ack tracking actually worthwhile!
- We now additionally warn if a message has been in the PendingSend
state for too long, indicating the phone might be disconnected.
- We now store each WhatsApp message ID we've received in the database,
so we can determine whether an incoming message has already been
delivered or not.
- 'Old' messages (those without the 'new' flag) are now delivered,
instead of merely being thrown away, with a timestamp prepended to
indicate that they're part of the backlog.
- A new config option `backlog_start` under the [whatsapp] section
enables users to hide backlog messages before a given timestamp, specified
in ISO 8601 format. This is useful if you're migrating to this version
and don't want a million copies of all your messages to be sent.
- The `ignore_other_libraries` config flag was fixed to actually work.
- We now track the MessageAcks received for each WA message we send.
- If we don't receive acks for a given message, the user gets warned
about this and can configure the bridge to auto-resend the message
after a given delay.
- ReportFailure now generates a less ignorable PRIVMSG that mentions
the admin, instead of a NOTICE.
- Log levels for things like contacts being changed or chat actions
have been toned down somewhat, to avoid spamming the logs.
- Instead of using heavyweight log4rs, which didn't really get us
much, we now just implement a logger with the log crate directly.
- Logging is configurable via three parameters:
* stdout log level
* IRC channel log level
* whether to log messages from other libraries, or not
- Logging configuration now has its own section in the config.
- Contact cards are now handled nicely, and can be downloaded.
- More message types, like redactions and location messages, are now
printed nicely.
- Quoted messages are now handled!
- We have a new fancy command interface that works more like NickServ
and less like people yelling random !commands into the admin channel.
- Hacky /NOTICEs to ghosts are gone and replaced with "GHOST nick
command", which should be friendlier to people trying to run the
bridge on things like Matrix!
- Commands actually have help!
- Currently, commands just do the same thing they always did (i.e.
send some backend message). In the future, the backend components will
handle user commands directly, in order to provide better UX.
- You can now configure a `autocreate_prefix` in the top-level config.
If this is set, messages sent to unbridged or new WA groups will
automatically trigger the creation of a new channel, autogenerated
based off the group's subject.
- You can also set `ensure_joined` in s2s config to issue a SVSJOIN
before every message sent to a group's bridged channel, to ensure that
your admin user is joined to the channel and can receive the message.
(Currently this just spams SVSJOIN a lot, which doesn't seem to have
any negative consequences, although this isn't exactly ideal.)
- huawei-modem and whatsappweb-rs are now the latest git versions
(now served from git.theta.eu.org!).
- We now use std TryFrom, seeing as it's stabilized, in line with
what huawei-modem now uses.
- We now bridge WA group subjects over to IRC channel topics, if
configured in the config.
- In addition, group user changes (promote/demote/add/remove) are now
nicely bridged to ACTIONs.
- Picture and status changes are also bridged.
- We now actually handle group metadata changes well.
- Plus, we bridge admin status (via +o) in s2s mode.
- We don't mark our own messages as read any more (;_;), and we
don't spam the admin with self-messages either.