Breaking changes¶
Until a stable v1 release, consult this list for any changes when upgrading to a newer commit.
03/06/2023, 264f569¶
[Admins] Support for version 2.x of the _emoji_ dependency (used by a couple of the built-in plugs
to handle conversion between :+1:
emoji short codes and 👍 Unicode) has been added, which
means increasing the minimum supported version to 1.6.2 (1.2.1 for Sync).
Make sure to freshen up your dependencies when updating to IMMP 0.12.1 – installing with extras
(i.e. pip install immp[sync]==0.12.1
) will do this for you.
03/04/2022, f909492¶
[Admins] Output of the who
command from Identity lookup has been improved
to show per-identity links and roles.
[Developers] IdentityProvider.provider_name
is a new field that should be provided by any
hooks implementing this interface. It works the same as Plug.network_name
, and is used
by WhoIsHook
when attributing identity information to your provider.
03/06/2021, db11570¶
[Admins] Support for Socket Mode has been added to the Slack plug. If you’re using a classic app or legacy integration and wanting to upgrade, you can now use a modern app token along with a corresponding bot token. A Slack App manifest is also available.
As part of this, auto-detecting a workspace’s real name display setting is no longer possible, so a plug config option has been added in its place.
16/04/2021, 5e9b45a¶
[Developers] HTTPOpenable
is now a mixin that takes no initialisation arguments. When
used in conjunction with Plug
or Hook
, the base hook or plug class should
appear before the mixin (previously it would expect to appear after).
27/12/2020, 5a34d40¶
[Admins] immp.LocalFilter
, ShellHook
and DatabaseHook
have been deprecated. Log filtering can be done using the logging.loggers
config subsection,
whilst both the shell and database hooks have async variants that should be used instead.
25/12/2020, dce335a¶
[Developers] Plug.send()
should now return Receipt
instances rather than just the
message IDs. All built-in plugs have been updated, but you’ll need to update any custom plugs in
order to do the same.
20/09/2020, 5fc87cd¶
[Admins] A new database hook has been introduced, providing much better performance for connecting to databases over a network. All built-in hooks have been updated to use it – if you’re using any of Local identity, Notes, admins/hooks:Subscriptions or Sync, you need to add or replace your Database with the asynchronous variant.
If you’re using SQLite for your database, note also that the database URL protocol has changed:
instead of sqlite:///
or apsw:///
(with three or more slashes), use sqlite://
instead
(two slashes, followed by a relative path, or an absolute path starting with a third slash).
[Developers] Please migrate your database access to use the AsyncDatabaseHook
– the
synchronous DatabaseHook
variant will be removed in a future release.
07/09/2020, c3f5dc5¶
[Admins] A breaking change was discovered in the Hangouts APIs, fixed upstream. This commit pins hangups to a working version.
17/08/2020, 8e966df¶
[Developers] Each config dict
of a hook or plug is now observed for changes, and hooks are now
dispatched an Hook.on_config_change()
event to handle state changes (RunnerHook
will now save config files on change).
14/08/2020, b694b34¶
[Admins] The IRC plug has been significantly rewritten, with a more stable request/response handler and IRC puppeting support.
23/02/2020, d075ba5¶
[Admins] The Docker image has been refactored to use a data volume. Usage instructions are now documented under Using Docker.
12/08/2019, 0c2d70c¶
[Admins] __main__.LocalFilter
, used to restrict logging to internal messages whilst
excluding third-party libraries, has moved to immp.LocalFilter
.
[Developers] Most of the runner code has moved from __main__
into immp.hook.runner
.
11/08/2019, 7f30a24¶
[Admins] The preferred way to launch IMMP is now via the independent command immp
, rather than
running as a module.
28/07/2019, 643d601¶
[Developers] Schema validation now comes built-in for groups, plugs and hooks. Set the
schema
attribute on your class to automatically validate input
config against your schema. See Schema
for the available API.
08/07/2019, 519a91f¶
[Developers] Most built-in classes now make use of __slots__
to restrict
the attributes available. This should help with a lower memory footprint when a large number of
messages are being processed.
05/06/2019, 2e711bc¶
[Developers] Messages sent directly to a SyncPlug
are now correctly yielded back out of
the channel.
02/06/2019, 3957722¶
[Developers] As part of new support for static routes from the WebHook
, the order of
arguments to WebHook.context()
has changed – route prefix first, and an additional path
argument to locate static files on disk.
31/05/2019, d55e75e¶
[Developers] ConfigProperty
now takes the class spec first, and config key is optional
(derived from the attribute name if not provided).
23/05/2019, 0be494c¶
[Developers] The metadata around sent messages (ID, channel, timestamp etc.) is now handled by the
Receipt
class, where both this and Message
are now subclasses of
SentMessage
. This replaces SentMessage.empty
. Assorted hook logic has been
updated to accept Receipt
instances.
21/05/2019, f74efe1¶
[Admins] The AsyncShellHook
now defaults to not providing a message buffer. The
buffer
config value may be None
(no buffer), 0
(unlimited buffer), or an integer upper
bound.
14/05/2019, 677ee62¶
[Developers] Timestamps on messages are now timezone-aware across all built-in plugs, typically in UTC. Hooks working in local time should convert message timestamps to naïve representations first.
12/05/2019, 32b0541¶
[Admins] IdentityHook
was moved to LocalIdentityHook
, as part of a larger move
to create an identity framework. The new WhoIsHook
provides a who command to replace
id-show but across any identity providers.
[Developers] Other hooks may obtain identity information from any hook implementing
IdentityProvider
.