CHANGELOG#

Note

The versions are synchronized between the Docker image versions of the daemon, the Python module olvid-bot and the Docker image bot-python-runner.

The versions follow the following semantics: MAJOR.MINOR.PATCH. All elements are assumed to work together as long as they share the same major and minor version. However, it is recommended to always use the same patch version.

Minor and/or major versions will be incremented at a minimum for each change in the gRPC-Protobuf API.

Latest version: 2.0.1#

Danger

Bot version 2 brings lots of changes and improvements but is NOT RETRO-COMPATIBLE. You might follow our migration process to update your existing code BEFORE updating your dependencies.

New Features#

  • Implemented new Olvid backups in anticipation of multi-device implementation in the daemon. To set up backups, see here.

  • Added parameters to configure the behavior of each identity on a daemon (invitations auto-accept, message cleanup, automatic addition of new Keycloak members).

  • Implementation of a new bot authentication mechanism in Keycloak that solves disconnection issues.

  • Performance and stability improvements.

  • Added the 📚️ Reference section in this documentation to describe and document all the possibilities of the daemon.

Added#

  • Daemon

    • SettingsCommandService: new service to change settings associated with a discussion or an identity.

    • BackupAdminService: new service for displaying and/or restoring backups.

    • DiscussionCommandService: added command DiscussionDownloadPhoto

    • ToolCommandService: new commands to check the version of the daemon and test client keys.

    • Invitation: addition of the optional field mediatorId containing the id of the contact who initiated the introduction.

  • Python Client

    • Improvements and simplification of the framework, see the migration guide.

  • N8N

    • Addition of the operation Send a message and wait for approval or response to add manual validation in Olvid (message or addition of reaction).

Deletions#

  • Python Client

    • tools: removal of AutoInvitationBot, DiscussionRetentionPolicyBot, SelfCleaningBot, KeycloakAutoInvitationBot classes. See the section Bonnes pratiques to replace them.

Fixes#

  • Daemon

    • MessageCommandService:

      • The “reaction” field is now optional for the MessageReact command in order to remove an existing reaction.

      • messageDelete: (v2.0.1) revision of the API behavior for the delete_everywhere field to reflect the reality of the implementation.

    • Addition of a database cleanup service to clean empty pages (VACUUM).

    • GroupNotificationService: (v2.0.1) solved many issues in notification filtering.

  • CLI

    • Improvement of the reliability of interactive commands (identity new, contact new, invitation send).

Version: 1.5.0#

New Features#

Three new modules are now officially supported :

  • @olvid/bot-node: a npm module written in TypeScript to develop amazing bots and scripts in TypeScript or Node.js. (cf: JavaScript Client)

  • @olvid/bot-web: a reworked version of the previous module that can run in a web browser to create web pages or business applications that interact Olvid. (cf: 🌐 Web Browser)

  • n8n-nodes-olvid: The Olvid node is now available in n8n as a community node. Easily integrate Olvid with external services in no-code workflow. (cf: 🟥 N8N)

Added#

  • Daemon

    • Addition of the tool service and the ping command. This is an unauthenticated endpoint that simply checks if a connection to the daemon is possible.

Fixes#

  • Daemon

    • The MessageDeletedNotification notification was sent twice when a message was remotely deleted.

    • MessageNotificationService: it was not possible to filter certain notifications by messageId for incoming messages. (messageBodyUpdated, messageReactionAdded, …)

    • MessageCommandService: It is no longer possible to respond to a message from another conversation


Version: 1.4.1#

Added#

  • Daemon

    • It is now possible to connect to a daemon using an HTTPS connection. The setup is documented here: Configuration SSL.

  • Python Client

    • tools.AutoInvitationBot: it is now possible to choose the types of invitations to accept (group invitation, introduction, …).

Fixes#

  • Daemon

    • TLS: Changed the JVM used in the Docker image. The previous one crashed during the setup of TLS encryption.

    • Miscellaneous fixes

Version: 1.4.0#

New Features#

  • Notification Filtering: It is now possible to use parameters when subscribing to a notification type. In this case, only notifications matching these parameters (filter, counter, etc.) will be sent to the client.

  • Minimalist call management: It is now possible to start calls with one or more contacts or in a discussion. You can als subscribe to events related to this call (someone picked up, someone is already on the phone, etc.)

Added#

  • Daemon

    • Notification Filtering: addition of parameters to all methods of the notification service, including filters and a counter. These parameters are all optional and therefore backward compatible.

    • Minimalist call management: Addition of gRPC services CallCommandService and CallNotificationService

      • commands: CallStartDiscussionCall, CallStartCustomCall

      • notifications: AppelEntrant, AppelSonnerie, AppelAccepte, AppelRefuse, LigneOccupee, AppelTermine.

      • datatypes: Call

  • CLI:

    • addition of the call start command to begin a call using the new calling API (the message voip command is now deprecated).

    • addition of the -i option to the identity get and contact get commands to display the identifier in bytes.

Fixes#

  • Daemon

    • Change in sending notifications

      • ContactNewNotification: is now sent the first time a contact is added (regardless of their one-to-one status). The notification is sent after a secure channel has been established and the contact’s capabilities have been downloaded.

      • DiscussionNewNotification: is always sent when a discussion is created or changes from the Locked to Unlocked status (returning to a group, transitioning a contact to one-to-one).

      • MessageReceivedNotification and AttachmentReceivedNotification: are now sent at the same time, when the message and all attachments have been correctly written to the database. (Resolves issues with listing newly arrived attachments).

      • Various corrections of notifications that could be sent twice

    • datatypes.ReactionFilter: field renamed, reaction becomes has_reaction

  • CLI

    • identity get -l: this command always returned the invitation link of the first identity.

  • Python Client

    • tools.SelfCleaningBot: messages could have been wrongly deleted when the function is_message_for_cleaning was provided.

Version: 1.3.0#

New Features#

It is now possible to send continuous location sharing messages 🗺️!

Added#

  • Daemon

    • Addition of location sharing in the MessageCommand service, with the methods MessageStartLocationSharing, MessageUpdateLocationSharing and MessageEndLocationSharing.

    • Addition of the MessageLocationSent notification in the MessageNotification service to harmonize the API.

    • Modification of the behavior of methods MessageLocationSharingStart, MessageLocationSharingUpdate, and MessageLocationSharingEnd, which are now also emitted for outbound messages.

  • CLI

    • Addition of the message location command group with commands:

      • message location send

      • message location start

      • message location update

      • message location end

    • Addition of the contact reset command (use with caution!) to resolve some blockages involving an identity and its contacts.

    • Addition of the storage reset command to remove all entries from storage (in global storage, and all discussion storages).

Fix#

  • Python Client

    • tools.ChatBot: help messages were sent twice in certain conditions.

    • tools.SelfCleaningBot: all messages were deleted on start when the function is_message_for_cleaning was provided.

Version 1.2.0#

Added#

  • Daemon

    • Addition of the service KeycloakCommand with methods KeycloakUserList and KeycloakAddUserAsContact to list users present on Keycloak and add them as contacts. (⚠️ Requires version 4.1 or higher of the Olvid plugin for Keycloak)

    • Addition of the downloadPhoto command for identities, contacts and groups.

    • Addition of photoUpdated notifications for contacts and groups.

    • Addition of the getBytesIdentifier commands for identities, contacts, groups and conversations. This allows them to be uniquely identified in the long term, even in case of backup restoration.

    • Addition of the getInvitationLink command for identities and contacts (datatypes.Identity.invitation_link is now marked as deprecated).

    • Addition of the fields editedBody and forwarded in the message datatypes.Message

  • Python Client

    • Addition of the class tools.KeycloakAutoInvitationBot to automatically add all new Keycloak users to its contacts.

  • CLI

    • Implementation of new entry points for the daemon in the following commands:

      • contact kc get/add : KeycloakCommandService

      • identity/contact/group photo save : downloadPhoto

      • identity/contact get -l : getInvitationLink

Fixes#

  • Daemon

    • The fields has_a_photo were not filled in correctly for contacts and groups.

  • CLI

    • storage get -f: the option was not handled properly.

    • olvid-cli -k was displaying an unnecessary error.

    • group get -f: formatting fix.

Version 1.1.0#

Added#

  • Daemon

    • It is now possible to send location messages using the new gRPC method messageSendLocation (implemented in clients and CLI).

    • added the ability to encrypt communications between the daemon and clients using TLS. (Configuration TLS)

    • it is now possible to set custom options to the JVM and specifically to set up an HTTP proxy. (Configuration JVM)

  • Python Client

    • added subpackage olvid.errors to handle exceptions in a simpler way.

Modifications#

  • Python Client:

    • replaced environment variables DAEMON_HOSTNAME and DAEMON_PORT by DAEMON_TARGET.

    • .client_key and .admin_client_key files are deprecated, use a .env file instead.

    • OlvidBot class is now deprecated, please use the class OlvidClient instead.

  • Docker:

Fixes#

  • Python Client:

    • tools.SelfCleaningBot: the parameters clean_inbound_messages and clean_outbound_messages are now properly handled.


Version 1.0.0#

Initial version of the project.