Originally the next version on the roadmap was 1.0, but I don’t feel like giving a 1.0 tag to the current state of things; so, without further ado: I am pleased to announce that poezio 0.10 has just been released!
Poezio is a terminal-based XMPP client which aims to replicate the feeling of terminal-based IRC clients such as irssi or weechat; to this end, poezio originally only supported multi-user chats.
Link Mauve spent a sizeable chunk of time to make poezio faster, which makes it nicer and lighter to use in low-powered environments with many contacts and many rooms with many people in it.
A lot of time was spent profiling and cursing python, then writing micro(or not-so-micro)-optimizations. His final goal is to make everything cythonizable, to get even better performance. Thanks a lot to him!
Stream Management (XEP-0198)
Together with fixing the slixmpp plugin for XEP-0198, it was implemented in poezio. It is not enabled by default because it adds overhead and isn’t useful in most poezio use cases (i.e. long-running sessions in a tmux window somewhere on a server), but it can be easily enabled through a config option.
Stream Management (which requires server support) allows a client to restore a session after a disconnection, as long as the server has a sufficiently high timeout value configured. It also allows for more reliability inside a stream, by having acks and sequence numbers interlaced with the stream of normal activity. If sequence numbers don’t match, the entity which sent the missing messages will send it again.
It was an oversight, but a big one; carbon copies (XEP-0280) are now enabled by default in poezio 0.10. Carbons allow for a more seamless transition in a multi-device environment by replicating messages sent and received to each device connected.
Poezio log files adopted a log format close to the mcabber one a long time ago. However, reading logs within poezio is sub-par at best; and while there are plans to remedy to this, it’s still good to be able to read logs without having the custom format cruft around.
So the poezio_logs tool takes a log file path as a parameter and outputs the cleaned-up result to stdout, with some coloration. It can take parameters to remove color, timestamps, or info messages as well.
HTTP Verification (XEP-0070)
The surprise of this release is the arrival of an HTTP Verification tab, which implements XEP-0070 to authenticate HTTP requests using only your JID.
A mediawiki plugin is in the writings, and a wordpress plugin already exists. Because components such as this one talk HTTP, there is no need to add any kind of XMPP support in the application that needs an identity validation; just enter your JID, accept the request on your client, and voilà.
New warning prompt
The previous way of handling a certificate change was really inconvenient, so with HTTP verification implemented, it was easy to just re-use the same tab with a different color scheme in order to have an more user-friendly way to interact (especially since we moved from SHA-1 to SHA-512, which increased the size of the hash by a lot).
Fun with message corrections
It’s more abuse of the protocol than anything else, but since we like writing funny plugins, here are two new ones:
- marquee, to replicate the behavior of the <marquee/> tag by moving text from left to right in a loop, all in the same message using corrections
- dice, to roll a number of unicode dice for a time interval, once again using message corrections.
Client State Indication
CSI (XEP-0352) is a mobile-oriented extension that requires both client and server support, and lets the client tell the server that it’s "off" (for example, a mobile client while the screen is off and the phone is in the pocket).
It surprisingly applies well to poezio, thanks to the screen_detach plugin, which is either in attached or detached state.
Toggling this active or inactive state leaves the server free to enable a number of filters to reduce data transfer between the client and server. For example, it could filter all presences received while the client was off.
A "csi" plugin was also added with explicit commands to set or unset that status.
VCard-Temp (XEP-0054) support is still a desirable thing, and this version adds a plugin to view vcard information from remote entities. It’s still a little rough because it only implements a subset of the elements in a vcard, and re-uses a poezio tab that wasn’t designed for readonly data, but it’s getting there.
Of course, once vcard-temp is really done, vcard4 (XEP-0292) support is next.
Bits of Binary
While we still have no real file transfer abilities, we now have a Bits of Binary (XEP-0231) plugin, which allows for small in-band file transfers between clients. Considering stream bandwidth is often limited to a few kilobytes per second for good reasons, it should be used sparingly, but it’s perfect for sending small files.
And many more
Of course, there are many more commits for new features or bug fixes, with a big refactor that removed an ugly python path manipulation hack, minor UI fixes that save some screen space and provide better consistency with themes, no instant reconnect loops on specific error conditions, etc… You can check the CHANGELOG or the git history for more reasons to upgrade.
Beside myself (mathieui), louiz’, and Link Mauve, I want to thanks the other contributors, eijebong, Lasse Aagren, Frédéric Meynadier, Nicolas Braud-Santoni, Lancelot SIX, Luke Marlin, for their contributed features and fixes.
As always, if you notice an unreported bug still unfixed in latest master, please report it, thank you.