Today I’ve finally gotten the plugin to a point where I’m fairly happy with the result. It works well in Pidgin, it also works well over SSH with Finch. Chatting, PM’ing, and logging in and out are all fully supported (as far as I can tell).
The biggest issue in getting it done was the userlist handling. My original concept was “Cho sends us a userlist, we clear the chat users and fill it in again”. It worked well enough in Pidgin. In Finch however, the entire userlist was sent to the chat every time that it was updated. Considering that one person logging on generates two userlist refreshes, it got pretty annoying and made conversation difficult.
My new concept used a diff method, and also tried to guess when users changed their names. CyanChat doesn’t have an actual rename command, so it displays it as a new link in… The headaches and random bugs that came along with guessing at renaming users were quite fun, and quite annoying to debug. With Nadnerb’s help, I finally found a better method of handling renames and implemented it.
So, currently there is a source build, and a build for Ubuntu i386. I’m working on getting a good method to cross compile for Windows and x64.
Oh, did I mention that Pidgin 2.5.0 is out? Finally got some good MSN support (albeit somewhat buggy and crash-prone) :P