Pidgin 3.0 Alpha 3 2.97.0 has been released!

discourse.imfreedom.org · 2026-10-01 · by Long Nguyen ·generic
We are ecstatic to announce that we have released the third alpha version of Pidgin 3.0!!! This release has an official version number of 2.97.0. We will continue releasing in this fashion until we are ready for 3.0.0 wh…

Pidgin 3.0 Alpha 3 2.97.0 has been released!

Pidgin 3.0 Alpha 3 2.97.0 has been released!

Applications Pidgin

release

grim October 1, 2026, 3:56am 1

We are ecstatic to announce that we have released the third alpha version of Pidgin 3.0!!! This release has an official version number of 2.97.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 still be found on SourceForge but we have a new CDN thanks to Fastly and the release can be found at fastly.imfreedom.org. It will also show up on Flathub Beta shortly.

If you don’t want to use the Flathub Beta method, there are build instructions in the `README.md` 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 the application at this time.

[](https://discourse.imfreedom.org/t/pidgin-3-0-alpha-3-2-97-0-has-been-released/436#p-1160-about-1)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 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 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.

[](https://discourse.imfreedom.org/t/pidgin-3-0-alpha-3-2-97-0-has-been-released/436#p-1160-highlights-2)Highlights

This cycle has seen a lot of maintenance and not so many user facing changes, but there are a few to highlight!

[](https://discourse.imfreedom.org/t/pidgin-3-0-alpha-3-2-97-0-has-been-released/436#p-1160-new-presence-icons-3)New Presence Icons

The one and only Hylke Bons has graciously provided a new set of presence/status icons for us. You can see them in the contact list screenshot below. Sorry I forgot to include the offline user :cry:

contacts list showing all presence icons as emblemscontacts list showing all presence icons as emblems1000×500 53.8 KB

[](https://discourse.imfreedom.org/t/pidgin-3-0-alpha-3-2-97-0-has-been-released/436#p-1160-account-reconnection-4)Account Reconnection

Accounts will now automatically be reconnected after they get disconnected. This works on a simple static 1 minute timer between attempts right now and will probably be enhanced in the future. Unlike Pidgin 2 reconnection attempts will be made forever.

One of the cooler parts, is that this is now visible in the scheduler, which has not been polished at all as you can see below.

the scheduler window showing that demoing account is scheduled to be reconnected at a specific timethe scheduler window showing that demoing account is scheduled to be reconnected at a specific time444×530 12.7 KB

[](https://discourse.imfreedom.org/t/pidgin-3-0-alpha-3-2-97-0-has-been-released/436#p-1160-message-history-5)Message History

We finally created the PurpleHistory class which is how we represent messages in a conversation now. There is still a lot of work to do here, but protocols can now access this via the Purple.Conversation:history property to find messages as well as add additional.

There will be API in the future for the user interface to ask the protocol to load messages, but we aren’t quite there yet.

[](https://discourse.imfreedom.org/t/pidgin-3-0-alpha-3-2-97-0-has-been-released/436#p-1160-plugins-dialog-6)Plugins Dialog

We moved the plugins back to a separate dialog. It will probably get updated after some changes in GPlugin but you can take a look at it below.

the new plugin dialogthe new plugin dialog486×530 34.4 KB

[](https://discourse.imfreedom.org/t/pidgin-3-0-alpha-3-2-97-0-has-been-released/436#p-1160-zulip-7)Zulip

We removed the `in-development` tag from the Zulip protocol plugin. There is still a long way to go there, including adding support for channels, but DM’s have been stable enough that we felt comfortable removing the tag.

This means that it now shows up in the protocol list when creating a new account by default.

[](https://discourse.imfreedom.org/t/pidgin-3-0-alpha-3-2-97-0-has-been-released/436#p-1160-changelog-8)ChangeLog

The full list of change can be found below.

Full ChangeLog

  • Purple: Add a Conversation:notify-level property
  • Gary Kramlich, RR 4669, PIDGIN-18176
  • Pidgin: Only notify new messages if the conversation is marked as such
  • Gary Kramlich, RR 4670, PIDGIN-18177
  • Purple: Add notify-level support to ConversationManagerSeagullBackend
  • Gary Kramlich, RR 4671, PIDGIN-18178
  • Purple: Remove Connection.connect
  • Gary Kramlich, RR 4674
  • Purple: Fix a missed documentation update in CredentialManager
  • Gary Kramlich, RR 4678
  • Purple: Make ProtocolConversation.refresh an async pair
  • Gary Kramlich, RR 4676
  • Purple: replace PROTOCOL\_CONVERSATION\_DOMAIN with PROTOCOL\_CONVERSATION\_ERROR
  • Gary Kramlich, RR 4677
  • Purple: Replace PROTOCOL\_CONTACTS\_DOMAIN with PROTOCOL\_CONTACTS\_ERROR
  • Gary Kramlich, RR 4679
  • Purple: Convert PROTOCOL\_MANAGER\_DOMAIN to PROTOCOL\_MANAGER\_ERROR
  • Gary Kramlich, RR 4680
  • Purple: Convert WHITEBOARD\_MANAGER\_DOMAIN to WHITEBOARD\_MANAGER\_ERROR
  • Gary Kramlich, RR 4681
  • Purple: Make Connection.disconnect an async pair
  • Gary Kramlich, RR 4675
  • General: Put developer-related tests in a ‘dev’ suite
  • Elliott Sales de Andrade, RR 4708
  • Zulip: fix some potential remote crash bugs
  • Gary Kramlich, RR 4711, SEC-11
  • Purple: replace all uses of g\_new with g\_new0
  • Gary Kramlich, RR 4712
  • Demo: replace g\_new with g\_new0
  • Gary Kramlich, RR 4713
  • Purple: Add a History object
  • Gary Kramlich, RR 4710, PIDGIN-18181
  • Purple: Update conversation to use the new history object
  • Gary Kramlich, RR 4721, PIDGIN-18182
  • Purple: The start of ProtocolConversation.query\_history API
  • Gary Kramlich
  • Purple: remove strreplace
  • Gary Kramlich, RR 4726
  • Purple: Add History.lookup\_message\_async and History.lookup\_message\_finish
  • Gary Kramlich, RR 4725, PIDGIN-18179
  • Purple: Remove the menu API
  • Gary Kramlich, RR 4728
  • Pidgin: Add the plugins menu back
  • Gary Kramlich, RR 4729
  • Pidgin: Create a basic plugins dialog
  • Gary Kramlich, RR 4733
  • Pidgin: Remove the plugins display item from the display window
  • Gary Kramlich, RR 4734
  • Pidgin: Remove a bunch of unused menus
  • Gary Kramlich, RR 4730
  • Pidgin: Remove the whiteboard implementation
  • Gary Kramlich, RR 4731
  • Purple: Remove the whiteboard API
  • Gary Kramlich, RR 4732
  • Pidgin: Fix invalid read when quitting the application
  • Markus Fischer, RR 4737
  • Purple remove util\_init and util\_uninit
  • Gary Kramlich, RR 4739
  • Purple: Add History.remove\_message\_async and History.remove\_message\_finish
  • Gary Kramlich, RR 4740, PIDGIN-18180
  • Purple: Rename History.add\_async to History.add\_message\_async
  • Gary Kramlich, RR 4741
  • Purple: Overhauled the Message documentation
  • Gary Kramlich, RR 4743
  • IRCv3: Use the Ibis.Client::stopped signal to detect disconnections
  • Gary Kramlich, RR 4746
  • Purple: depend on birb 0.9.0 and remove the util API
  • Gary Kramlich, RR 4747
  • Purple: Don’t have contact manager backends load all contacts
  • Gary Kramlich
  • Purple: Clean up ContactInfo
  • Gary Kramlich, RR 4749
  • Purple: Additional cleanups for ContactInfo
  • Gary Kramlich, RR 4750
  • Purple: Add a last-updated property to ContactInfo
  • Gary Kramlich, RR 4751
  • Purple: The start of vfuncs for members
  • Gary Kramlich
  • Pidgin: Remove the old voice and video stuff
  • Gary Kramlich, RR 4754
  • Pidgin: Remove the startup presence preference ui
  • Gary Kramlich, RR 4755
  • Purple: Remove the startup presence settings
  • Gary Kramlich, RR 4756
  • Purple: Create a proper error domain for Contact
  • Gary Kramlich, RR 4757
  • General: Skip looking for gi-docgen if documentation is disabled
  • Elliott Sales de Andrade, RR 4762
  • General: Update libspelling wrap to 0.4.10
  • Elliott Sales de Andrade, RR 4763
  • Purple: Update ContactManagerSeagullBackend to handle the last-updated property
  • Gary Kramlich, RR 4752
  • Purple: Organize the code in purpleconversation.\[ch\]
  • Gary Kramlich, RR 4758
  • Purple: Remove some unused and stubbed out API from Conversation
  • Gary Kramlich, RR 4759
  • Purple: Add a has-password property to Conversation
  • Gary Kramlich, RR 4760, PIDGIN-18144
  • Purple: Update the Seagull Conversation backend for the has-password property
  • Gary Kramlich, RR 4761, PIDGIN-18144
  • General: use the python version that meson is using for the postconf script
  • Gary Kramlich, RR 4764
  • Purple: Pass all public headers to glib-mkenums
  • Gary Kramlich, RR 4769
  • Purple: Make a real error domain for conversation errors
  • Gary Kramlich, RR 4770
  • Purple: Move the plugins error domain to a proper error domain
  • Gary Kramlich, RR 4771
  • KeyChainAccess: Return NULL when a password isn’t found
  • Gary Kramlich, RR 4773, PIDGIN-18187
  • Zulip: Remove the in-development tag from the protocol
  • Gary Kramlich, RR 4775
  • Purple: Clear up some documentation on CredentialProvider.read\_password\_finish
  • Gary Kramlich, RR 4776
  • Dependencies: Depend on Seagull 0.8.2
  • Gary Kramlich, RR 4779
  • Purple: Remove a stray character from a doc comment in History
  • Gary Kramlich, RR 4780
  • Purple: Add a collection for handling conversation threads
  • Gary Kramlich, RR 4781
  • Purple: Have Conversation propagate the signals from Threads
  • Gary Kramlich, RR 4782
  • General: Disable i18n.merge\_file on netbsd
  • Gary Kramlich, RR 4783
  • General: Remove DigitalOcean as a sponsor
  • Gary Kramlich, RR 4789
  • Purple: Make AccountManager automatically reconnect accounts
  • Gary Kramlich, RR 4787, PIDGIN-18086
  • General: Mark gschemas with the runtime tag
  • Elliott Sales de Andrade, RR 4790
  • Purple: Use UTC time everywhere
  • Gary Kramlich, RR 4793
  • Purple: Clear typing timeout at beginning of callback
  • Elliott Sales de Andrade, RR 4796
  • Purple: Add archived properties to Conversation
  • Gary Kramlich, RR 4792, PIDGIN-18188
  • Purple: Add the Conversation archive properties to the seagull backend
  • Gary Kramlich
  • IRCv3: Depend on Ibis 0.16.1
  • Gary Kramlich, RR 4798
  • General: Depend on HASL 0.6.0
  • Gary Kramlich, RR 4800
  • Convey: mark ubuntu-resolute for cleaning
  • Gary Kramlich, RR 4803
  • Purple: Remove the Threads collection
  • Gary Kramlich, RR 4808, PIDGIN-18193
  • Purple: Cleanup the ConversationManager Seagull Schema
  • Gary Kramlich, RR 4810
  • Flatpak: Use GNOME 51 and remove KWallet
  • Gary Kramlich, RR 4809
  • Purple: Cleanup the schema for ContactManagerSeagullBackend
  • Gary Kramlich, RR 4811
  • Purple: Generate Account:id during construction
  • Gary Kramlich, RR 4816
  • Purple: Make ContactInfo:id not nullable
  • Gary Kramlich, RR 4817
  • Purple: Restore the NOT NULL constraints to ContactManagerSeagullBackend
  • Gary Kramlich, RR 4818
  • Purple: Restore the NOT NULL constraints to ConversationManagerSeagullBackend
  • Gary Kramlich, RR 4819
  • General: Depend on Birb 0.11.0
  • Gary Kramlich, RR 4824
  • General: move our subprojects to the Fastly URLs
  • Gary Kramlich, RR 4827
  • Pidgin: Make the content of a message selectable
  • Gary Kramlich, RR 4825
  • Purple: Clean up and modernize Contact
  • Gary Kramlich, RR 4826
  • Pidgin: Add the status icon to the contact list
  • Gary Kramlich, RR 4829
  • Pidgin: Import the new status icons from Hylke Bons
  • Gary Kramlich, RR 4828
  • Pidgin: Make the contact list remember if it should show offline contacts
Gary Kramlich, RR 4830

[](https://discourse.imfreedom.org/t/pidgin-3-0-alpha-3-2-97-0-has-been-released/436#p-1160-looking-forward-9)Looking Forward

Alpha 4 is scheduled for 2026-10-29 and will have a version number of 2.98.0. We are moving from quarterly to monthly releases as we get closer and closer to a final release and 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 4 and you can keep an eye on the Burn down Chart for Alpha 4 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.

[](https://discourse.imfreedom.org/t/pidgin-3-0-alpha-3-2-97-0-has-been-released/436#p-1160-thank-you-10)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 donate to the project from our Donation Page.

1 Like

discourse.imfreedom.org · 3 images · 31 links

Comments (0)

No comments yet