This is the first post of a news series about Gajim’s development. In these posts I (wurstsalat) will try to summarize a month of development around Gajim. Sometimes these posts will also cover python-nbxmpp and XMPP in general. Obtober’s development brought improvements to MacOS, Jingle File Transfer, Delivery Receipts, and more. Feel free to join email@example.com to discuss with us.
Changes in Gajim
The journey of bringing Gajim to MacOS continues: Thanks to sebastiaanlokhorst we now use PyInstaller to build the app (see #9713), which brings us one step closer to a Gajim release for MacOS. Efforts are made to automate the build process, so that there can be automated MacOS builds similar to how Windows builds are generated.
While Dino received Jingle File Transfer support during GSoC (thanks to hrxi), some interoperability tests were performed between Dino, Conversations, and Gajim. The feedback provided by hrxi lead to some Jingle File Transfer bug fixes (#9692, #9784) contributed by asterix.
Gajim has been displaying delivery receipts for a long time now. Delivery receipts are displayed by a small check mark icon at the end of a message in the chat window. lovetox has made some changes to how these icons are displayed. This also involved a lot of code refactoring and bug fixing around how message receipts are processed. As a result, a display bug where corrected messages would show two message receipt icons (#9278) was fixed. On top of that, the new icon displaying logic enables Gajim to show message errors directly in the tooltip of the corresponding message icon (#8527). Previously, message errors were simply printed to the chat window without message context.
The new group chat roster makes use of some PyGObject functions requiring at least PyGObject (that is python3-gi) 3.32.0. This version is not yet available in some distributions (e.g. Debian 10). Adding PyGObject >=3.32.0 as a requirement also resulted in a refactoring of Gajim’s dependency checks.
What else happened:
- Chat: FuzzyClock feature has been removed
- XML console: Account selector for sending XML has been added
- History window: pressing Escape will now close any open search results before closing the window
- Type ‘normal’ messages (e.g. single messages) will now always be treated like regular chat messages
- Bug fix for auto-scroll with encrypted messages (#9443)
- Bug fix for message correction when no ChatControl is open
Changes in python-nbxmpp:
In a constant effort to separate GUI and protocol/library tasks, lovetox continued to refactor both Gajim and python-nbxmpp. In this process, a lot of code is moved from Gajim to python-nbxmpp and vice versa. The goal is to modularize code for future developments and to simplify communication between the two.
In this month, python-nbxmpp received support for the following XEPs. Note: These were already supported by Gajim, but now python-nbxmpp is able to handle these on its own.
- Chat State Notifications (XEP-0085)
- Security Labels in XMPP (XEP-0258)
- Attention (XEP-0224)
- Last Message Correction (XEP-0308)
- Out of Band Data (XEP-0066)
- Message Delivery Receipts (XEP-0184)
- Chat Markers (XEP-0333)
Furthermore, python-nbxmpp received a bug fix for invalid JIDs in incoming messages (#85).