We are ecstatic to announce that we have released the fifth experimental version of Pidgin 3.0!!! This is a pre-alpha release with an official version number of 2.94.0. We will continue releasing in this fashion until we are ready for 3.0.0 which will be the release we consider ready for end users.
The release can be found on SourceForge and should show up on Flathub Beta shortly.
If you don’t want to use the Flathub Beta method, there are build instructions in the README for building a flatpak locally or installing into a meson devenv. Both methods avoid installing directly to your OS installation which is the preferred method as there is no easy way to …
We are ecstatic to announce that we have released the fifth experimental version of Pidgin 3.0!!! This is a pre-alpha release with an official version number of 2.94.0. We will continue releasing in this fashion until we are ready for 3.0.0 which will be the release we consider ready for end users.
The release can be found on SourceForge and should show up on Flathub Beta shortly.
If you don’t want to use the Flathub Beta method, there are build instructions in the README for building a flatpak locally or installing into a meson devenv. Both methods avoid installing directly to your OS installation which is the preferred method as there is no easy way to uninstall.
About
Just like the previous experimental releases, this is a timed release. It is a snapshot of what we currently have and is something we think other tinkerers and developers may want to start playing with, but again, it is not meant for end users.
Most things are not implemented, the user interface has not been polished at all, and there are so so many bugs. As such we are asking that packagers please do not package this for your users yet as the potential support requests will be too much for us to handle at this time.
Unfortunately I was/am burned out for a large portion of this cycle so there wasn’t as much progress as might normally be expected. But there has still been a bunch of progress and that is something to celebrate regardless!
Looking forward, Experimental 6 is scheduled for 2026-03-31 and will have a version number of 2.95.0.
We have a bunch of tickets entered for Experimental 6, and you can keep an eye on the Burndown Chart for Experimental 6 to stay informed. As always, priorities and possibilities can and will change, so even if something is listed for this release that doesn’t mean it will be in the release until it’s actually completed.
If you would like monthly updates, be sure to check out the state-of-the-bird posts!
Highlights
There’s not a whole lot of highlights this release as most of the work was in libpurple and not really exciting.
Presence Chooser
We finally have a presence chooser!
This is all wired up and and will manage your away status on IRC and is reflected in the Demo protocol. We tried hard but were unable to get persistence of the status done before the release.
Besides persistence there’s still a lot to do here including an editor for the presences but those will be coming soon.
User Name Colors
We finally updated the algorithm we use for generating colors for users. This uses HSLuv as defined by XEP-0392. Even though this is from a XEP for XMPP, we’re using it throughout Pidgin.
KWallet Plugin
We did some testing and verified that KWallet does implement libsecret so we removed the KWallet plugin as it was redundant.
ChangeLog
As always the complete list of every change in this release is below.
General
- Clean up a number of things in the readme (RR 4192) (Gary Kramlich)
- Rename meson_options.text to meson.options (RR 4196) (Gary Kramlich)
- Fix a number of findings from scanbuild (RR 4195) (Gary Kramlich)
- Clean up the metainfo file a bit (RR 4193) (Gary Kramlich)
- Enable markdown in review requests by default (RR 4215) (Gary Kramlich)
- Add convey plans for debian forky and ubuntu questing (RR 4194) (Gary Kramlich)
- Pass
--quiettogi-docgen check(RR 4223) (Gary Kramlich) - Don’t pass a protocol when creating connections (RR 4224) (Gary Kramlich)
- Add a Fedora 43 convey plan (RR 4263) (Gary Kramlich)
- Add a codespell unit test (RR 4275) (Gary Kramlich)
- Only add the flatpak dependencies test when we’re building Pidgin (RR 4278) (Gary Kramlich)
- Require seagull 0.6.0 (RR 4281) (Gary Kramlich)
- Depend on birb 0.6.0 (RR 4290) (Gary Kramlich)
libpurple
- Fix a regression in the account_settings test (RR 4209) (Gary Kramlich)
- Update Person to use a
GSignalGroupfor the priority contact (RR 4214) (Gary Kramlich) - Add a Purple.Connection.set_presence virtual function (RR 4219) (Gary Kramlich)
- Merge Purple.WhiteboardOps into Purple.Whiteboard (RR 4220) (Gary Kramlich)
- Remove Purple.Connection:protocol (RR 4221) (Gary Kramlich)
- Update Purple.PresenceManager to track the active presence via index (RR 4226) (Gary Kramlich)
- A bunch of random cleanups to Purple.Connection (RR 4222) (Gary Kramlich)
- Move connection vfuncs from protocol to connection (PIDGIN-18131) (RR 4225) (Gary Kramlich)
- Add a badges property to Purple.Conversation (PIDGIN-18134) (RR 4231) (Gary Kramlich)
- Update the secret credential provider to use account id’s for lookups (RR 4238) (Gary Kramlich)
- Update the KeychainAccess credential provider to use account ids (RR 4239) (Gary Kramlich)
- Update the wincred credential provider to not use the username (RR 4240) (Gary Kramlich)
- Add Purple.Badges:not-empty so we can handle visibility in ui files more easily (RR 4234) (Gary Kramlich)
- Remove Purple.AccountManager.find (RR 4242) (Gary Kramlich)
- Remove the SqliteHistoryAdapter (RR 4243) (Gary Kramlich)
- Remove the Purple.Gio API (RR 4237) (Gary Kramlich)
- Remove the kwallet plugin (RR 4241) (Gary Kramlich)
- Make Purple.ConversationManagerSeagullBackend use strict tables (RR 4247) (Gary Kramlich)
- Add a disconnection message to all the disconnect methods (RR 4245) (Gary Kramlich)
- Create Purple.ContactManagerBackend (PIDGIN-17687) (RR 4264) (Gary Kramlich)
- Add a tags-changed signal to Purple.Conversation (RR 4280) (Gary Kramlich)
- Add an out of office presence primitive (PIDGIN-18137) (RR 4284) (Gary Kramlich)
- Create Purple.PresenceManagerBackend (RR 4279) (Gary Kramlich)
- Create Purple.PresenceManagerSeagullBackend (RR 4286) (Gary Kramlich)
- Add status-message and can-send-message properties to Purple.Conversation (PIDGIN-18124) (RR 4285) (Gary Kramlich)
- Add an error parameter to Purple.Ui.get_account_manager_backend (RR 4291) (Gary Kramlich)
- Migrate to the birb-check-license-headers script (RR 4296) (Gary Kramlich)
Pidgin
- Fix a number of issues in Pidgin.PresenceIcon (RR 4210) (Gary Kramlich)
- Don’t use a closure for Pidgin.ConversationMember’s label (RR 4212) (Gary Kramlich)
- Show the presence message if presence in Pidgin.ConversationMember (RR 4216) (Gary Kramlich)
- Update the color calculation stuff to fully implement XEP-0392 including tests (RR 4211) (Gary Kramlich)
- Add a tooltip to the search entry in the members list (RR 4217) (Gary Kramlich)
- Add an icon for the streaming presence primitive and set my demo status to it (RR 4218) (Gary Kramlich)
- Hide badges for Pidgin.ConversationMembers who don’t have any badges (RR 4233) (Gary Kramlich)
- Add a PidginBadges to PidginInfoPane and wire it up in PidginConversation (RR 4232) (Gary Kramlich)
- Create a basic presence chooser (PIDGIN-18133) (RR 4244) (Gary Kramlich)
- Update subtitles for conversations properly (RR 4262) (Gary Kramlich)
- Add a test to verify the pidgin license headers (RR 4297) (Gary Kramlich)
Windows
- Fix some issues that cropped up from the license header checks (RR 4306) (Gary Kramlich)
- Actually fix the incorrect license headers (RR 4307) (Gary Kramlich)
Bonjour
- Add a test to verify the bonjour protocol license headers (RR 4299) (Gary Kramlich)
Demo
- Add a test to verify the license headers for the demo protocol (RR 4298) (Gary Kramlich)
IRCv3
- Clear presence messages when setting the primitive to available (RR 4228) (Gary Kramlich)
- Send the quit command with a message when disconnecting (RR 4246) (Gary Kramlich)
- Use ibis_client_disconnect instead of doing it manually (RR 4261) (Gary Kramlich)
- Add a test to verify the ircv3 license headers (RR 4301) (Gary Kramlich)
- Depend on ibis-0.15.0 (RR 4310) (Gary Kramlich)
SIP
- Add a unit test to verify the license headers of the sip plugin (RR 4302) (Gary Kramlich)
XMPP
- Add a test to verify the license headers for the xmpp plugin (RR 4300) (Gary Kramlich)
Thank You!
Thank you everyone for your continued support of Pidgin, it means a lot to us!
If you’re interested in contributing, you can check out our Contributing Guide to get started.
Also be sure to check out our merch store!
And if you’re feeling generous, you can learn how to donate to the project on our Donation Page.