Status update 2026-03

2026-04-02 #imapgoose #khal #pimsync #status-update #sway

Pimsync

Pimsync 0.5.7 is out, with mostly minor improvements and bug fixes.

The pimsync sync command (which synchronises once and exits) now shows a human-readable summary of operations being performed. pimsync sync -i allows reviewing operations before they happen. This is especially useful during initial setup (to ensure that everything is working as intended) and for debugging unusual scenarios.

The sync command now exits with a non-zero status on error. An obvious behaviour, but I overlooked this previously since my main focus was the daemon command, which never exits.

I’ve made good progress with http_proxy support and rewriting the buggy Unix Domain Socket support to be much smoother. The previous implementation used a library which rewrote URL domains to include the socket path. This is quirky, and broke under conditions that are rather common. In Pimsync’s case, the socket path is declared in the configuration file and does not change. The new implementation uses a newly written code for this, since no existing library fit this (rather common) use case. I’d like to upstream this Unix Domain Socket support into hyper-util, but upstream is in an odd state of flux: the old HTTP client which we’re using is a legacy one, and the new one isn’t ready yet. Upstreaming support for legacy interfaces might not be the best time investment.

Sway

I implemented support for the ext-workspace-v1 protocol in sway, which will be released as part of sway 1.12. This will enable using a standard Wayland protocol to control workspaces, and should substantially improve interoperability of status bars and similar shell components.

I also fixed a small bug where fullscreen windows which didn’t draw a surface large enough didn’t cover the whole screen. This is a niche edge case which I only encountered once with an emulator, but the issue had been open for a long time and it was actually a pretty straightforward fix.

Khal

I’ve tagged a release of khal 0.14.0, with many fixes and improvements mostly made by contributors — I mostly reviewed, merged and tagged the release. Thanks to everyone who contributed for this release.

ImapGoose

I tackled a bug report in which the listener connection was not properly re-established after a network error. This led me to iron out the entire error handling for the listener connection. After applying the fixes, some paths to improving the surrounding code became obvious, and the code for handling disconnections is now much tidier, in essentially a single mini event loop which handles all possible failure modes for the listener.

ImapGoose now also handles a server resetting its MODSEQ, a niche scenario which isn’t even mentioned in the specification (and I guess, technically allowed). I did not expect this to actually happen, but the fix is the result of this actually happening to someone and them having to work around it.

Detection of non-existent mailboxes was not always accurate. Sometimes ImapGoose assumed an unrelated error, when in reality, the error was a missing mailbox. ImapGoose now unconditionally tries to create a mailbox, which succeeds if the mailbox does not exist, and will simply fail again if the error was something else. Regrettably, error detection in IMAP is not very clean, but this has no practical downsides.

That’s all for this last month. Better late than never!

Have comments or want to discuss this topic?
Send an email to my public inbox: ~whynothugo/public-inbox@lists.sr.ht.
Reply privately by email: hugo@whynothugo.nl.

— § —