Pidgin 3.0 Alpha 4 2.98.0 has been released
We are ecstatic to announce that we have released the fourth alpha version of Pidgin 3.0!!! This release has an official version number of 2.98.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. You can read more about our development phases here.
The release can be found on Fastly but is also available on SourceForge. It will show up on Flathub Beta after awhile.
If you don’t want to use the Flathub Beta method, there are build instructions in the
README.mdfor building a Flatpak locally or installing into a meson devenv. Both methods avoid installing directly to your Operating System installation which is the preferred method as there is no easy way to uninstall the application at this time.
About
Just like the previous releases, this is a timed release. It is a snapshot of what we currently have and is something we think developers and other tinkerers may want to start playing with. But it is not meant for end users.
Most things are not implemented, the user interface has had little to no polish, and there are so, so many bugs. As such we are asking packagers to please not package this for your users at this time as the potential support requests will be too much for us to handle.
Highlights
This has been a much shorter cycle but we still managed to knock quite a few things out!
User Interface Tweaks
We’ve made a number of tweaks to the user interface this release including but not limited to formatting usernames in the contact list and the account manager.
We’ve also added a default avatar if one is not set. We’re still far from fully supporting avatars, but this step was necessary before everything else.
I just realized that this is actually a bug because the Echo user has an avatar in the contact list..
![]()
Also we fixed searching in the preferences which is very handy!
IRCv3
Now that account setting strings can have multiple lines, we finally added an often requested feature of a list of commands to run after connecting to an IRC server, but before any channels are joined. We didn’t get to the user interface part of this yet, but were able to test by manually setting the account setting.
This is useful for setting user modes, maybe identifying to
nickserv, and so on. But sensitive information should be avoid for now as it’ll be stored in the clear.
soju
We created a new protocol plugin named soju that implements the
soju.im/bouncer-networksspecification from the soju IRC bouncer. This protocol plugin connects to the “bouncer network” of a soju bouncer and then discovers your upstream connections and create them as IRCv3 accounts in Pidgin and routes them through your soju bouncer.
This also led to us starting to add properties to accounts to keep track of who is managing them. This will most likely make the managed accounts read-only, but that could change. We’re also hoping that this management API will make it easy to integrate with GNOME Accounts to help get users started more easily.
Maintenance
We also did a lot of random maintenance this release. Nothing too interesting. However, we did start working out the API to handle threads so we can support Zulip channels and in the process realized we could use it for conversation folders and even conversation spaces (groups of conversations), so those will be getting worked on in the near future!
ChangeLog
The full list of change can be found below.
Full ChangeLog
- Purple: Add Account:managed and Account:managed-by properties
Gary Kramlich, RR 4835, PIDGIN-18202 - Purple: Add collection and space conversation types
Gary Kramlich, RR 4842, PIDGIN-18194 - Purple: Create Purple.Conversations
Gary Kramlich, RR 4843, PIDGIN-18195 - Pidgin: Rework ConversationMember to only display the badges and name
Gary Kramlich, RR 4844 - Pidgin: color names in the contact list
Gary Kramlich, RR 4845 - Purple: Clean up ConversationMember
Gary Kramlich, RR 4846 - Purple: Use a signal group to monitor the ContactInfo in ConversationMember
Gary Kramlich, RR 4847 - Purple: Migrate ConversationMembers to use GSignalGroup
Gary Kramlich, RR 4849 - Purple: Add a color-for-display property to ConversationMember
Gary Kramlich, RR 4848, PIDGIN-18205 - Purple: Clean up Person
Gary Kramlich, RR 4850 - Purple: Use GObject.SignalGroup for managing signals on ContactInfo in Person
Gary Kramlich, RR 4851 - Purple: Add a children property to Conversation
Gary Kramlich, RR 4852, PIDGIN-18196 - Purple: Add a multiline property to AccountSettingString
Gary Kramlich, RR 4853 - Soju: The start of the Soju protocol plugin
Gary Kramlich, RR 4856 - IRCv3: Add an account setting for startup commands
Gary Kramlich, RR 4854 - Purple: Add support for Account:managed-by to AccountManagerSeagullBackend
Gary Kramlich, RR 4857, PIDGIN-18203 - Pidgin: Strip down Avatar and use a default image for everything
Gary Kramlich, RR 4858 - Pidgin: Add an image property to Avatar and wire everything up to it
Gary Kramlich, RR 4859 - Pidgin: Clean up the contact list a bit
Gary Kramlich, RR 4860 - Soju: Implement basic connecting
Gary Kramlich, RR 4861 - Pidgin: make preferences searchable again
Markus Fischer, RR 4866, PIDGIN-18204 - General: Update our branding colors
Gary Kramlich, RR 4870 - Purple: add Account:color and Account:color-for-display properties
Gary Kramlich, RR 4871, PIDGIN-18206 - Pidgin: Rework the account manager window a bit
Gary Kramlich, RR 4872 - Soju: Rework the way messages are echoed
Gary Kramlich, RR 4875 - General: depend on Ibis 0.18.1
Gary Kramlich, RR 4874 - IRCv3: Add an account setting to not validate TLS certificates
Gary Kramlich, RR 4879, PIDGIN-18149 - Soju: Add an account setting to skip certificate verification
Gary Kramlich, RR 4880 - Soju: Simplify bouncer-networks negotiation
Gary Kramlich, RR 4882 - Purple: Remove some unused properties from Account
Gary Kramlich, RR 4891 - Purple: Clean up some removed properties from AccountManagerSeagullBackend
Gary Kramlich, RR 4892 - Purple: Clean up the style of the SQL states for AccountManagerSeagullBackend
Gary Kramlich, RR 4893 - Purple: Add the missing color property to AccountManagerSeagullBackend
Gary Kramlich, RR 4894 - Purple: Clean up Account
Gary Kramlich, RR 4895 - Purple: Make Account.set_connection private
Gary Kramlich, RR 4896 - Purple: Add a note property to Account
Gary Kramlich, RR 4897 - IRCv3: Add support for binding to a soju.im/bouncer-networks network
Gary Kramlich, RR 4908 - Update to ibis 0.20.0
Gary Kramlich, RR 4913 - Soju: Add support for creating accounts
Gary Kramlich, RR 4914
Looking Forward
Alpha 5 is scheduled for 2026-11-26 and will have a version number of 2.99.0.
This cycle we moved from quarterly to monthly releases on the last Thursday of the month. We have chosen the last Thursday of the month to be our release dates as historically Thursday night was our release night.
We have a bunch of tickets entered for Alpha 5 and you can keep an eye on the Burn down Chart for Alpha 5 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 that release until it’s actually completed.
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 merchandise store and if you’re feeling generous, you can donate to the project from our Donation Page.