- So the entity caps stuff didn't actually work, because we don't implement
XEP-0030 properly and don't honour the "node" attribute on the query.
- To hack around this, we misimplement XEP-0030 some more, and always return the
bridged user disco info list, even if they ask for the bare JID instead of the
full JID. That way, the caps stuff works as it should.
- The bridge should now support XEP-0115 Entity Capabilities, which actually
brings us into compliance with XEP-0085 Chat State Notifications (there were
clients, like Miranda NG, that wouldn't send to us without us actually doing
this XEP and advertising support in disco#info).
- We now handle the :disconnect message from whatscl, which lets us properly
deal with the connection being removed from the app or replaced with another
session. (Before, this would drop the connection, it'd loop and retry, and
then hit a status code error on login; this way is slightly cleaner and also
prevents the bridge getting into a war with another bridge.)
- The :ws-open whatscl event never existed. The bridge was doing just fine
not executing its handler, so it's just been removed. Future work might
improve the amount of spam sent to the user about the bridge state.
- We can now differentiate fatal login errors from other types of errors. For
non-fatal errors, we just send an informational warning message.
(Login errors kill the connection as before.)
- The child nodes of a given node can include both text nodes and
actual XML element nodes. Trying to pass a text node to something
like DOM:TAG-NAME signals an error condition.
- To avoid this, use DOM:ELEMENT-P and the CHILD-ELEMENTS helper
function to filter lists of nodes down to elements where elements
are expected.
- The user_contacts table contained an incorrect UNIQUE constraint
on wa_jid that meant only one user of the bridge could have any
given whatsapp user in their contacts.
- This is fixed in fixup_1.sql, which should be applied over schema.sql.
- Using tazjin's buildLisp.nix (you need the TVL Monorepo installed
as <depot>), we have a derivation for whatsxmpp and its million
dependencies.
- The derivation currently just assumes whatscl is in ../whatscl,
but we'll fix that eventually.
- Also there are tons of buildLisp derivations in here, and even
two instances where we had to vendor stuff in order to get it to
work with nix (usually because it had some data file).
- But yay, we can build via docker and it's not utter trash!