- 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.
- 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.
- 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...
- 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.