Pidgin 3.0 Alpha 3 2.97.0 has been released!

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.

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.

Highlights

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

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:

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.

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.

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.

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.

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

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.

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.

2 Likes

Congratulations on the release!