~nicoco/slidge

chore: update poetry.lock
feat: use URIs for adhoc command nodes

As requested by edhelas, to provide themed icons.
docs: mention raver's docker hub page
feat: option to strip leading emojis in adhoc command names

A request from edhelas, because movim favors themed icons in its UI.
fix: compatibility with postgresql

Alembic:
- does not always create the appropriate enums for postgresql.
- makes altering constraints easier with postgresql, so some of the hacks we
  introduced for sqlite unnamed constraints (which we should not have had in
  the first place, but…) are now unnecessary.
test: un-hardcode avatar hash and size in one test case

Without this change, the test fails on Fedora with python3.12. It is unclear
why, but the change guarantees that the stanza value matches whatever PIL
does on the platform the test is run on, which is reasonable.
fix: "title" before "instructions" in data forms

Most clients will automatically re-order that, but movim needs it,
probably because php and JS are not a real programming languages.
fix(mam): update instead of adding message with same legacy ID

References: https://todo.sr.ht/~nicoco/slidge-whatsapp/36
fix: remove bogus unique constraints on room table, for good
fix: remove group from DB after IBR remove
fix: remove group from DB after leave group command
fix: crash on leave group adhoc command

Fixes: https://todo.sr.ht/~nicoco/slidge/216
fix: data URI of thumbhashes

Fixes: https://todo.sr.ht/~nicoco/slidge/214
fix: correction of messages with attachments

For compatibility with most XMPP clients, we follow the 1 message = 1
attachment rule. In this context, corrections of "a single legacy that became
several XMPP messages" are tricky to handle and mostly broken.
As a workaround, this commit treats correction of such messages by first
retracting them, then sending new ones.

Fixes: https://todo.sr.ht/~nicoco/slidgram/28
refactor: inheritance between ContentMessageMixin and AttachmentMixin

This makes more sense this way.
fix: use specific XMPPError raised in update_info()

If LegacyMUC.update_info() or LegacyContact.update_info()
raises a specific XMPPError, raise it directly instead
of turning it into a generic "internal-server-error".
fix: destroy locks when exception is thrown

I stumbled upon that while debugging a slidgram issue,
turns out we were accumulating locks because of the
missing try/finally block. Maybe this will solve
memory leak issues, and maybe some deadlocks?

References: https://todo.sr.ht/~nicoco/slidgram/19
References: https://todo.sr.ht/~nicoco/slidge-whatsapp/4
test: catch iq timeout on slow platforms

References: https://todo.sr.ht/~nicoco/slidge/212
feat: delete group from the DB

References: https://todo.sr.ht/~nicoco/slidgram/19
test: improve console output

With this change, pytest should only output the logs
of the failed tests, which should makes them easier
to parse for our mortal brains in case of failure(s).

References: https://todo.sr.ht/~nicoco/slidge/212
Next