- 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 only log WA connection state information at the DEBUG level,
to try and avoid spamming the logs every time the websocket drops
for whatever reason (which has become more frequent as of late)
- A new mechanism enables messages sent while offline to be queued
and sent once the connection is reestablished, making small drops
less of a pain.
- This in fact re-uses the ack tracker code, so the user also gets
alerted if the message doesn't send for a while.
- Contact nickname handling has been completely revamped, and now
properly deals with things like nick collisions.
- In addition, the source of nickname information is now recorded,
meaning that WhatsApp notify / contact name changes now propagate
to the nickname changing, if the relevant option is enabled.
- If `whatsapp.track_presence` is enabled, the bridge will request
presence updates for users after you send them a message.
- The `GHOST PRESUB` command was also added, which manually attempts
to subscribe to presence updates.
- 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.
- Contacts' notify / name values were just being discarded (!) on
contacts sync. This is now fixed.
- A new whatsapp.mark_read option can be used to control whether
new incoming messages are automatically marked as read.
This now defaults to off, as the old behaviour was somewhat
confusing.
- Instead of contacts/recipients potentially being created in like
three disparate places, there is now one and only one place
where this happens: the object responsible for the protocol,
i.e. the WhatsApp or modem manager.
- This makes everything far simpler, and means we can actually
keep track of things like contact names properly, instead of
wondering which part of the bridge will end up making the
contact in the end.
- All of the WhatsApp contacts we get on the initial burst, and
any added thereafter, are now translated into recipients.
- In addition, we keep track of their 'notify' property (i.e.
the ~tildename for each contact, or the contact name from the
user address book), and store that in the database.
- In future, the bridge will perhaps let you autoname people,
or display their notify in some meaningful way to allow you
to differentiate people amongst the sea of random numbers...
- A new macro, sink_outbox!, was added to deduplicate the same
"send messages into this futures sink from this outbox array"
behaviour used in multiple places now.
- We now have the beginnings of an IRC server / s2c protocol impl!
It handles client registration, and pretty much nothing else
after that at this stage - but it's getting along!
- 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.