This file describes the new features in each poezio release.
* Poezio 0.14 - dev
# Configuration changes:
- ADDED: `mam_sync`, `mam_sync_limit`.
- 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)
- 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)
## 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