Breaking changes

Until a stable v1 release, consult this list for any changes when upgrading to a newer commit.

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.