This file describes the new features in each poezio release. * Poezio 0.14 - dev # Configuration changes: - ADDED: `mam_sync`, `mam_sync_limit`. - ADDED: `autocolor_tab_names`. - CHANGED: `ca_cert_path` is commented out. Poezio will attempt to guess common CA bundle paths. The option can be used to overwrite this behaviour. - REMOVED: `force_remote_bookmarks`. - REMOVED: options related to activity, mood, gaming, tune: `enable_user_activity`, `enable_user_mood`, `enable_user_gaming`, `enable_user_tune`, `display_activity_notifications`, `display_mood_notifications`, `display_gaming_notifications`, `display_tune_notifications`. - REMOVED: `deterministic_muc_colors`. # Changes - DEPRECATION: /leave is deprecated. Use /part or /close instead. - REMOVED: rich presence (activity, mood, gaming, tune) from poezio, alongside with configuration options and commands: /activity, /mood, and /gaming. These are moved to the new user_extras plugin. - REMOVED: non-deterministic nick colors in MUC. - REMOVED: XEP-0319 support removed for privacy and performance. - ADDED: New /request_voice command for moderated rooms - ADDED: /join: support using an XMPP URI (xmpp:...?join) - ADDED: /destroy_room: new optional reason and altroom arguments - ADDED: Newlines now considered as word separator in input manipulation (#3411) - ADDED: Colored tab names or number using Consistent Color Generation behind `autocolor_tab_names` (thanks jonas!) - Stop highlighting on MUC history messages just because they're delayed - Stop displaying the traceback in debug log when /xhtml fails - Ensure launch.sh can be use outside the repository (Thanks kaliko) - Detect `/set option = value` pattern and do as it `/set option value` was called. (#3517) - Newlines taken into account on completion (#3385) - Allow resizing certificate confirmation window (#3371) - Make theming more configurable around nicks - Log MUC payload in the information buffer - impromptu: wait for room subject before configuring and inviting - Impromptu: rooms now have pronouceable short names - impromptu: ensure a room is empty before joining - impromptu: now uses mediated invites - Fetch from MAM by default when use_log is False. - xhtml: Add a new line after a blockquote ## Bug fixes - Ensure bookmark is present before removing it in /close. - Ensure bookmarks are saved correctly on method config change, and on /close. - Ensure nick is added to bookmark when specified - Do not crash on bookmark without a nickname (Thanks Ge0rG) - Ensure the correct tab is bookmarked on /bookmark and /join - /bookmark: treat empty nick as no nick to avoid failing on empty resource - Fix closing a tab not in bookmarks - Disco barejid instead of domains on sent carbons. Follow-up of 5e40437. (Thanks Ge0rG) - Only use JID internally when handling affiliations. Add nick if present. (#3536) - /last_activity: prevent traceback - Fix bad error handling when checking bookmarks storage - `/join / password` works again - Report available presence in tabs correctly - /display_correction: now reports the correct time for private messages (#3532) - Fix composing indicators not showing (#3527) - Fix pasting text in data forms and bookmarkstab (#3519) - Fix /me logging (#3432) - Retrieve nick colors from the correct section - Do not scroll right by default in dataforms/bookmark text - Hack around the time limit for topic messages - Ensure MUC-PM logging filenames are generated as expected (Thanks Ge0rG, southerntofu) - Fix poezio displaying many times the same participant in the user list. - Fix default dataform field handling (#3554) - Fix MUCListTab not joining selected MUCs (#3553) - Fix /color completion (Thanks eijebong) - /info: Don't display comma before status message if not available ## Plugins - ADDED: untrackme plugin. based on remove_get_trackers. - ADDED: user_extras plugin. /activity, /mood and /gaming moved from core. - ADDED: sticker plugin. - DEPRECATED: remove_get_trackers - Reorder: Prevent GapTabs from being serialized and ignore when serialized as they're recreated automatically. - Code: prevent traceback when not enough arguments - Link: Add support for aesgcm, gemini and gopher URIs - Contact: iterate all data forms (Thanks Ge0rG) - Fix plugins (embed, lastlog, otr, quote, time_marker) to use poezio.ui.types - Disco: Added error handling ## API - BREAKING: E2EEPlugin.decrypt's `tab` parameter is now of type Optional[ChatTab] instead of ChatTab. - BREAKING: E2EEPlugin.supported_tab_types is now required - BREAKING: decrypt method is now async - E2EEPlugin decrypts encrypted messages even when they have no body. - E2EEPlugin lets through already encrypted messages without giving them to the user lib (poezio-omemo, for example). - Correctly pass realjid to decrypt call for MUC messages - /_fingerprint command is added. Plugins can implement `get_fingerprints` and `format_fingerprint` for it to return a (formatted) value. # Under the hood - Moved development from 'master' to 'main' branch - Lots of type hints added (decorators, multiuserchat, shlex, common, muctab, etc.) fixing many bugs - Lots of event handlers and calls are now async in poezio. Many callbacks removed. - Lots of refactoring - Performance improvements: - Trim all messages by 24 bytes on 64-bit systems - Reduce log parsing by a lot - No more safeJID calls. (#3457) - Rework some features to use slixmpp's API instead of custom poezio code (i.e., muc's set_subject, set_role, set_affiliation, destroy_room, cancel_config, set_room_config, and most events) - Split commands from Core - Require typing_extensions package for python - Require setuptools package explicitly because of pkg_resources' import (Thanks Thomas) - Replace asyncio.ensure_future with asyncio.create_task # Meta - Improve README, badges, new text, more links - Update install.txt with instructions for guix (Thanks Raghav) - Remove references to dev.louiz.org. Everything is happening at lab.louiz.org. * Poezio 0.13.1 # Bug fixes - Contacts won’t be seen playing games or music when they actually stop doing so. - /leave now toggles off the autojoin flag instead of removing the bookmark. - Only add auotjoin on new bookmarks for synchronise_open_rooms on /join - /affiliation displays things in the info win instead of directly in the room, and additionally displays which room it refers to. - List the correct required versions for package maintainers. - Fix the AppStream manifest to get Flathub to accept it. - Add a warning when the terminal doesn’t support 256color mode. - Display our own nick properly in messages received from MAM. - Only send an unavailable presence on closing a room if we are joined. - Don’t display the current date for history messages received today. - Fix marquee and dice plugin to use newer Last Message Correction format. - Bookmarks tab properly displays bookmarks method (local/remote) and allows to switch between them again. - Updated manpages and added manpages built from the doc in the setup process. Packagers need to run setup.py build_man to have them built. # Forgotten additions - Add a clean theme for light terminals, thanks Armael! * Poezio 0.13 # Thanks - madhur for the MAM code and various other fixes (GSoC 2019) - Ge0rG for fixes in the reconnect and carbons code - fiaxh for the nice SVG logo Zash, PS Le Stang, Karthikeyan Singaravelan, Jonas Schäfer, Célestin Matte, Andrey Utkin, root. # Meta changes - Packages: poezio is now packaged for Gentoo and Debian buster (poezio v0.12.1) - Source: the repository is now hosted at https://lab.louiz.org/poezio/poezio # Breaking changes - BREAKING: requires python3.7 (previously python 3.5) - DEPRECATION: `load_log` configuration was removed - DEPRECATION: `bookmark_on_join` configuration option was renamed `synchronise_open_rooms`, and now defaults to true. This makes /join automatically create a bookmark, use /leave to remove it # New features and plugins - `/impromptu [jid ..]` command to create a new chat with these persons - `/scrollback` to scroll back to a specific line/message in the current window - `/invite [jid ..]` command in single user chat does like `/impromptu` creating a new MUC - `/affiliation` command now returns the list of privileged users on the current MUC when no argument is supplied - `default_muc_service` configuration for replacing the server's default MUC - `unique_prefix_tab_names` display option to show the shorter tab name prefixes in the tab list - `/list` defaults to `default_muc_service` when no argument is specified - XEP-0392 support - New Plugin: OMEMO (experimental) - lives as an external plugin at https://lab.louiz.org/poezio/poezio-omemo - New Plugin: Contact - queries an entity for contact addresses (XEP-0157) - New Plugin: Upload - adds a `/upload ` command in chats for HTTP upload - New Plugin: remove_get_trackers - Remove GET trackers from URLs in sent messages. - New Plugin: QR # Under the hood - Plugin API: `E2EEPlugin` is a new experimental API for message encryption (used by the OMEMO plugin) - Plugin API: plugins can now declare a string list of dependencies - Plugin API: plugins can now be setup using a well-known setuptools entrypoint - Reworked Tab handling - Split Message rendering - Typing improvements # Minor changes (bugfixes) - Properly advertize gaming status - Improve error reporting to users - Add SVG support for avatars - Plugin: Disco - allow node to be specified - Don't always treat carbons from biboumi as MUC-PMs (#3705) - Read newer Last Message Correction rules while still reading older ones (#3462) - Allow /block and /unblock in ConversationTab (#3346) - Experimental: Fetch archives (MAM) on scroll up in MUC (#3052) - Allow /add in ConversationTab (#3395) - Prevent Chat State Notifications from being stored in the archive (#3518) - Rework MUC-PM Carbons handling (#3294) - /scrollback (#3481) - Read in (#3451) - Only use MUC in specific cases (#3452) - Allow /reconnect in all tabs (#3471) - Allow /embed in chat tabs (#3449) - Allow /upload in chat tabs - Properly identify MUC-PMs for normal messages and chatstates (#3491) - /server_cycle: stricly match specified domain (#3412) - Breaking: -v/--version previously for internal purposes now returns version as expected (#3429) - Improve highlighting regex (#3433) - Generate static resource at first launch (#3400) * Poezio 0.12 - Require Python 3.5, to add support for Python 3.7, use proper async functions, use typing, italics formatting, FIXME - Added support for XEP-0392 (Consistent Color Generation) - Added support for XEP-0153 (vCard-Based Avatars) and XEP-0084 (User Avatar) in the roster tab - Added support for XEP-0363 (HTTP File Upload) for easy file transfer, in the upload plugin with /upload - Added support for XEP-0066 (Out of Band Data) for Conversations compatibility when sharing images, in the embed plugin with /embed - Removed support for XEP-0296 (Best Practices for Resource Locking), to use all features available no matter what our contact’s current clients support - Check for usable Unicode support on start - Generate a device id on first start, and use it for our resource - Display the public key hash instead of the certificate’s - Handle carbons properly for private messages in rooms - /bookmarks can now be used to rename tabs as you want - Remove unexpected command completion based on command prefix - Add an irssi theme - Add a code plugin, which requires pygments - Fix resource duplication on reconnect - Misc fixes and improvements * Poezio 0.11 - Implementation of XEP-0380 - Docker images - Improved documentation - GPG plugin fixes - Added manpages for the utility scripts - Misc fixes * Poezio 0.10 - A lot of cleanup and refactor in order to use cython on the codebase more easily. - A new poezio_logs script to make logfiles more human-readable - Substantial performance improvements - Added a new confirmation tab and used it for cert warnings and XEP-0070 - Added support for XEP-0070 (HTTP request verification) - Enabled carbons (XEP-0280) by default - Added support for XEP-0198 (stream management) - Added support for XEP-0352 (client state indication) - Added support for XEP-0319 (last user interaction in presence) - Add an 'eval_password' config option - Add a marquee and dice plugins - Add a bob plugin - simple_notify plugin works in MUC too - The reorder plugin can now /save_order - Minor ui changes - Many Bugfixes * Poezio 0.9 - Use slixmpp instead of sleekxmpp, remove threads and locks - Require python 3.4 for the input handling, event loop, xml parser, and ssl API - Due to the slixmpp move, /reconnect now works (ecf22cb) - Add a check for broken python ncurses (1c5589b) - Add a /reload command to reload the config (71f3848) - Add a /color command to permanently set the color a nick (f7e7836) - Add a /closeall command with a plugin, to cleanup the open tabs (ed7fe69) - Add a /reorder command with a plugin to order the tabs based on a static layout (8afbb44) - Add a /set_default command which sets the value of an option back to its default (9caa992) - Use a deterministic algorithm to set the nickname colors by default (2452706) - The user’s JID is now shown in the roster (a0a00d5) - The screen_detach plugin now also detects tmux (21d8a3e) - The autocorrect plugin now supports regular expressions (067ad58) - Improve the XML tab with coloration, better filters, and filter chaining (1cd0b4d) - Allow the use of client X.509 certificates for authentication, and add /certs, /cert_{add,disable,revoke,fetch} commands (00396c1) - Stream errors are now displayed, which is more helpful to the user than 'connection failed' (5cd854f) - The (system-wide) launch script is now a setuptools entry point that checks dependencies (22f9b7a) - XHTML-IM base64 embedded images are now extracted by default (a9f642f) - New open_all_bookmarks option to let the user choose what to do with bookmarks without autojoin (5a5d581) - Store the server certificate fingerprint with SHA-512 (8d2408c) - pipe_cmd plugin that allows simple remote control of poezio (4b0d9a2, dc46286) - /link now uses xdg-open (ba32d74) - Display information about the XMPP features the contact supports (a1f86720, 2dafd6d5) - make the data forms tab better (3858273, 7378ea9) - Implement ad-hoc commands (bbc55fa) - A change_title plugin changes the title of the terminal depending on the current tab. Also, poezio is now "poezio" and not "python3" (c1d19fa, 48e59d3) - The OTR plugin now implements SMP (96442e9) - The OTR plugin now tries to interpret html by default (4e4ab56) - The OTR plugin also has nicer and more informative messages (71ae29df, f782516e, d7bbf339c, a0c5f95, 25e91b0) - The interface will adapt if the terminal is too small (0caf941) - Implement XEP-0184 (message delivery receipts) (5999b71) - Better timezone handling (02d9fd9) - Better alias plugin, with permanent alias storage (e80a90) - poezio_gpg_export script to generate a config for the gpg plugin (8ec5671) - improvements to dynamic tabs, information about jid lock/unlock (f7294b2, 5c9dd44, fba511e) - irc plugin to use with biboumi (cf752c2) - implementation of XEP-0012 - last activity (65c2473) - errors.log contains a lot less stuff (695877b) - tabs where the input is not empty will not be considered as "normal" (52e6334, fe072a8) - /bookmark * now preserves the order of the tabs (38061a6) - /list on big servers should be much faster (7b446d9) - /load and /unload can handle several plugins at once (0847643) - nicks are no longer highlighted if they are inside another word (f58dfe2) - /invite will now use the “direct” invitations of XEP-0249 when supported (3221534) - tabs where the other party is currently composing will have a particular state (a784216) - Implementation of room destruction (1f0ff4f) - running theming.py and keyboard.py will be nicer and not pollute the output afterwards (5012611, 1bd9f78) - Bugfixes * Poezio 0.8.1 - fix compilation with python 3.4 * Poezio 0.8 - Allow in-band password changing with /password - Force c2s encryption until configured otherwise - Allow users to set their cipher suites and ship one by default - Autocorrect plugin that sends sed-like corrections - /invite in a MUCTab now has the behavior one could expect (inviting a specific JID to this MUC) - Themes and plugins are now loaded using a set of paths instead of only a specific directory. - The OTR plugin has been completly rewritten - The completion can now complete the current argument in the input, instead of only the last one. - Poezio now periodically pings the server to detect connection loss - Improve the roster and the input (^R search, weechat-like behaviour with long lines) - Add a way to send text with multiple styles at the same time. - Background colors in themes are now fully supported (it wasn’t for information text and nick colors, mostly) - The logs now use the mcabber format in order to improve tool reuse (plus, our old log format wasn’t parsable). - The documentation now uses Sphinx/reST instead of AsciiDoc - Add User Tune/Nickname/Mood/Activity/Gaming support - More theming options - Add xml:lang support - Move to upstream sleekxmpp - Add support for XEP-0296 (best practices for resource locking) - Move the “config reload” signal to SIGUSR1 instead of SIGHUP - Add a /disconnect command - New style and API for /help - Add a visual indicator of s2s errors in the roster - Add an option (show_timestamps) to show message timestamps. - Add an option (hide_user_list) to hide the user list in MUCs. - Add a "reverse" theme option for highlight nicks that displays the nick in reverse mode on highlight messages. - Use get_wch() if available (introduced in python3.3) instead of our custom way to read unicode input. - Add an option to preload last logs into the conversation when opening a new tab. - Introduce support for XEP 308, Last message correction (http://xmpp.org/extensions/xep-0308.html). - Rewrite the Executor class to make remote execution more reliable, and command easier to write (without a lot of escaping to do). - Increase roster speed a lot. - Add option to sort the roster more precisely. - Add an option to avoid gap in the tab numbering when closing a tab. - Add a /move_tab command, to move tabs. - Add simple communication blocking support (http://xmpp.org/extensions/xep-0191.html). - Add last activity support (http://xmpp.org/extensions/xep-0012.html). - Add a /self command. - Add a /runkey command. - Support underlined text in the input with C-c u. - Add support for /set