I’ve been a long-time user of Pidgin2, but it does show its age and I have found myself having to open native/web clients more often than I would like to, or write python scripts to fix issues.
Below is a non-exhaustive list of suggestions and requests that I would like to see in Pidgin3. I understand that some of them will be up to individual plugins, but still the core Pidgin needs to provide the infrastructure to make them possible.
One of the big advantages of Pidgin over the native clients is the ability to keep local history outside of the server’s control. Pidgin2’s handling of history is limited (especially if written to HTML files), but I assume Pidgin3 will use a proper DB.
* Many servers allow rewriting of history by editing or deleting messages. I would like Pidgin to support this functionality but implement it using versioning, so that previous versions of a message are preserved in the DB and are easily accessible by the user.
* The message store should allow downloading full or partial history from the server, while still supporting versioning even if the server does not include a modification timestamp. This can be done by keeping a message hash as a part of the message record. The actual synchronization is protocol-dependent and will likely be handled by plugins.
* Some protocols support message attachments. I’d like Pidgin to allow storing those attachments locally (either in the DB or file system) or as URLs pointing to the server-side artifacts (user choice per connection). having it support versioning as well would be best.
* The DB schema should allow for merging and/or synchronizing between different instances. For example, I use Pidgin both on my desktop and my laptop (when travelling) and would like the ability to have the same history on both, even if a manual step is involved. I don’t mind writing SQL scripts if the schema is documented.
* Pidgin2 supports a 2-level hierarchy: groups and contacts/room. I’d like Pidgin3 to support a multi-level tree for more flexible organization. It is sorely needed for organizing channels of Discord servers.
* Support custom badges for messages, to indicate various statuses (for example: edited/deleted message) and custom context menus (invocable from the badge or the message). Operations can include: displaying previous versions of edited/deleted messages, quoting the message, reacting to the message, or other operations registered by plugins.
* Similarly allow plugins to register operations on context menus of conversations, hotkeys in the input field, server-specific “slash commands”, etc.
* Better formatting support. Currently formatting is an all or nothing proposition. Some protocols support subsets or supersets of the formatting options.
* Better emoji support. Themes are great, but almost all platforms support searching in the emoji input popups.
More to come…