Skip to content

Releases: outarde/remindrix

v1.3.0

Choose a tag to compare

@outarde outarde released this 30 Sep 19:11

A new settings command, enhancements for delegation, and numerous minor improvements!

Release Overview

🗄️ The highlight of this release is the introduction of individual settings for users (default time values) and rooms (language and time zone). We have updated the documentation, where you can read more about this. Consequently, the time zone configuration has moved from the standalone /tz command to the /settings tz subcommand.

Important

The tz_commands parameter in config.yaml has also been renamed to settings_commands and is used to customize the commands that trigger settings.

👥 Additionally, extra delegation parameters have been added to Pro mode. Instead of a single --to argument, you should now use two separate ones: --room for the room and --user for the user. You can read details on how delegation works in the CLI Mode section.

⚠️ Finally, this version includes a database migration that will run automatically, thanks to changes introduced in release 1.2.0. You can verify the migration results in the bot's startup logs.

🟢 You can now also monitor the bot's health via Docker Healthcheck. The config-example.yml file contains an example of the necessary code to add to your container's compose.yaml!

Wishing you nothing but pleasant reminders.

What's Changed

🚀 Features and Enhancements

  • 33e5226 An error occurring when creating a reminder with a time in the past now displays that time.
  • 4fd8bc0 A period (.) is now supported as a separator for time values.
  • 44d6c69, 414a0fd In Pro mode, the interval can now be set using --time and --date in addition to the separate --hour, --min, and --day arguments.
  • 691c568 Standard and Pro modes now support specifying time with AM/PM (ante meridiem/post meridiem) notation.
  • 5abc6c3 If a reminder has been delegated, the notification will indicate its creator.
  • 279d333 For a delegated reminder, the remaining time is not displayed, as the destination room's time zone cannot be determined. Short time designations (e.g., "morning") are also disabled.
  • 5ddd863 If only reminder minutes are specified, they are rounded to the nearest hour. In the rare but possible event of a date change resulting from this, or an "impossible" time due to time zone shifts: if the date wasn't specified manually (which is likely the case if the user only provided minutes), it will be automatically corrected if it falls in the past (via the is_auto parameter). However, if the date differs from the automatically determined "today", the result of crossing day boundaries will be incorrect. It would be better to remove this feature or treat specifying minutes without hours as an interval internally.
  • 9153807 Expansion of bot settings accessible via the /settings command.
  • 1e293bb Docker Healthcheck.
  • 8f79397 Renamed delegation parameters in Pro mode and added the ability to delegate tasks to a specific user (in the same room or a different one).
  • cf7a6d5 Default time can now be set via config.yaml using the default_time parameter.
  • 3eadf19 The week emoji for messages has been removed. The day emoji has been changed so that it differs from the month emoji.
  • e000285 Time zone settings have been moved under the settings command.

🐛 Bug Fixes

  • 98fb52d The bot now recognizes messages containing line breaks.
  • 5c5e882 Errors occurring while restoring reminders during bot startup no longer interrupt the bot's loading process.
  • aea19c4 Hours and minutes can now be specified using a single digit. Thanks to @Khvatov-Alexey for reporting the bug!
  • 380668a Fixed command hints in the auth.rs module.
  • 8d63aa0 Fixed an issue where the reminder creation command text was duplicated in the welcome message if the text was identical in both the config and the localization file (e.g., the default behavior for English localization).

🌐 Localization

  • 9b4da77, 15daa02 Settings localization.
  • 855b98f The settings command has been added to the welcome message.
  • c079c11 An example time with p.m. has been added to the welcome message.

📕 Documentation

  • 62a03de New use cases.
  • 5323925 New bot parameters.
  • 8455b44 A section on alternatives to my Remindrix bot has been added to README.md.
  • 56b8edb Details on how time and language settings and delegation work have been added to the bot's setup and usage guide.

💻 Code Refactoring

  • aa5e156 OutputError structure.
  • 035ba50 db.rs module evolving.
  • 7a1f75f, 1b7db00 SettingsService layer for settings in the Settings structure management.
  • d88fc41 Attempts to refactor fetch_room_tz in the settings pipeline.
  • fb28866 Simplified time zone and time parser methods.

New Contributors

Full Changelog: v1.2.1...v1.3.0

v.1.2.1

Choose a tag to compare

@outarde outarde released this 16 Sep 14:41

🪲 This hotfix squashes the bug that made it impossible to create a new database or perform a migration.

Important

Please read the release notes for v1.2.0 to rename your folder and database file.

Full Changelog: v1.2.0...v1.2.1

v1.2.0

Choose a tag to compare

@outarde outarde released this 16 Sep 13:43

Remindrix v1.2.0

This release makes a few improvements to how the bot works, but mainly focuses on important codebase changes and bug fixes.

Change it Before an Upgrade

Caution

The folder name that is bound to /app/data/reminder-bot inside the Docker container has been changed from reminder-bot to remindrix, and DB file has been renamed to remindrix.db, too.

It turned out that renaming the folder also affected internal files that store the path to the current account session's database. This means that simply renaming the folder is not enough.

Options for resolving the issue:

  • You can delete the entire folder (after first copying the database file), log in again, restore the database file to its original location, and restart the container. Your reminders will not be lost.
  • You can manually rename the folder inside /app/data to remindrix. Then, within that folder, update the db_path field in the session.json file by changing reminder_bot to remindrix. Don't forget to rename the database file itself to match. After that, start the bot. Your login session and reminders should remain intact.

We apologize for the unforeseen inconvenience caused.

Key Features for Users

  • 🫡 Failure to recognize a reminder is now marked with a ❌ reaction, rather than just causing a help message to be sent to chat.
  • 🛟 Added support for the --help command for CLI/Pro mode.
  • ✏️ Added typing indicator for the bot's messages.

Important Changes for Administrators

  • 🔧 Database migration has appeared! You no longer have to delete the database file or make changes manually. Make sure your database has name remindrix.db and was created in version 1.1.0 or later for the migration to work.
  • 🗓️ A new setting variable has appeared: remind_undated is responsible for allowing the creation of reminders without date and time, only with text (standard times values ​​for today, or if the time is in the past, for tomorrow will be used). Use it with caution: if you have the quick_remind option enabled, even the wrong date and time format will result in a reminder in a non-group rooms.
  • 🟢 The default time from the configuration is now checked when the bot starts. This makes the behavior more predictable, as an incorrect time format will no longer result in reminders being created with the application's default time instead of an error message.

Changes to the configuration file are already reflected in the manual page.

Roadmap

In future versions, we will focus on printing list of reminders, adding recurring reminders, and customizable settings for each user. There are also some nice little things in the plans, like a reaction-as-a-button 🐱.

What's Changed

🚀 Features and Enhancements

  • efe7595 If reminder is set as an interval, there will not be a digit reactions because of its redundancy.
  • 689280c remind_undated config option for create reminders in the natural pipeline without date or time.
  • de60c93, 855dc6d Support for the --help option for the CLI/Pro mode command.
  • db98e31 The bot validates default times on the startup.
  • ee84836 Typing indicator.
  • c6c655e Formatting CLI help page.

🐛 Bug Fixes

  • efe7595 Digits reaction can be sent only for numbers less than 100 (because previous validation for remainder from division by 11 is not compatible with numbers greater).
  • efe7595 Send destination room time zone when delegating reminder.
  • efe7595 Send delegated reminder in the language of the destination room.
  • 48492e6 Update reminder status instead of deleting it as it is sent in the summary
  • 48492e6 Check room availability in the summary and update reminder status to missed in case of room is unavailable.
  • 4db022f Fix an issue where the time was not recognized if the date was entered using digits followed by a space (due to the absence of a space option after the digits).
  • 6c2fbe1 Fixed an issue where, in certain cases, the application's default time was used instead of the default time from the configuration. Storage of the default time has been moved to the settings module.

🌐 Localization

  • 9e050dd Translations for the CLI mode.
  • 0617434 Simplification of translation keys.
  • 9197245 A line with the help command for CLI/Pro mode in the welcome message.

📕 Documentation

  • 5eb8503, 8a9cbe1 Update Readme, add CLI mode section on usage.md.
  • 801efa6 New examples of the usage on the usage.md.
  • f28117b Update configuration page with new settings.
  • 84efb14 Update config.example.yaml and example.env.

💻 Code Refactoring and Changes

  • 624333c Migration to jiff crate from the chrono.
  • bb7d36e Change build name from reminder-bot to remindrix.
  • efe7595 Split handlers.rs into parsers.rs, reactions.rs.
  • 689280c Split natural pipeline from handlers.rs to natural.rs.
  • 689280c ReminderError structure.
  • 921b43a Move to thiserror crate for ReminderErrors. Better error tracing in the handle_remind. New lightweight ReminderSettings structure for schedule_reminder method. Enhance get_setting method for the settings of the whole room. Complete transition to Reminder and ReminderData structures instead of ReminderUtc.
  • 4604cfc Logging for DB erros.
  • 870f8de New db.rs module with the simple migration mechanism.
  • f8c3166 Repository pattern for reminders.
  • 56f2653 context.rs module.

Full Changelog: v1.1.0...v1.2.0

v1.1.0 + Remindrix

Choose a tag to compare

@outarde outarde released this 31 Aug 20:57

We present the new name of the project - Remindrix. The name change symbolizes the connection with the Matrix protocol and also repositions the bot as a smart and silent assistant for your reminders. This version also includes several exciting new features and bug fixes.

Warning

This version includes database deletion or manual migration.

Features

🟢 Reaction responses. Instead of "Reminder scheduled" and other messages, the bot can now respond to commands with message reactions. For example, it will mark a new reminder with a timer reaction (⏲️), and a successful settings change with a checkmark (✅). Furthermore, the bot can mark new reminders with numeric reactions, which can be weeks, days, or hours before the reminder time (for example: 2️⃣🕒).

💻 Pro mode or CLI. If you're familiar with the terminal interface, you'll appreciate that you can now set reminders with precise commands without guessing the correct word order or conjugations of the word "morning" in natural language mode. The new mode supports setting the date and time, as well as the day, month, year, hour, and minute separately. The -i flag converts the specified time to an interval from the current time!

📩 Reminder Delegation. A draft feature is available that allows you to create reminders for other rooms. To do this, you need to know the room ID. This feature is only supported in the CLI and currently has no privacy settings, so it may create a spam risk on large servers.

Important

CLI and reminder delegation are experimental features that may not work as expected.

Database Migration

To ensure the bot can continue creating reminders, you will need to recreate your database or add a new column, created_by, to the reminders table. Run this SQL in any SQLite editor: ALTER TABLE reminders ADD COLUMN created_by TEXT.

31.08

The celebration of the Japanese pop diva's birthday left us no time to write docs for the new features, but in the coming days a guide to the pro/CLI mode will be published.

What's Changed

🚀 Features and Enhancements

  • a6155f5 Add bot's reactions to messages for commands tz and remind. New config variables send_reactions and send_digits_reactions.
  • 72eccb6 Add CLI/Pro mode for commands. New settings on_command_group (the same as on_command but for group rooms) and quick_remind (allows you to create reminders if the command at the beginning is not recognized, rather than issuing a greeting message). The logic of the variables has been split: the first one is now responsible for whether there is a slash at the beginning of the message to the bot, the second one is responsible for how to act when the first word is not recognized as a command.
  • ae84afe CLI processing pipeline is splitted from natural language processing.
  • 9de8ff6 Draft for reminders delegation.

🐛 Bug Fixes

  • 6b3932c Fix a bug where if there was no time, the default time was used entirely for the hour value, causing its format to be incorrect and a reminder not being created.
  • 72eccb6 I18nManager now is available at the BotCommand parse function to recognize localized commands.
  • 72eccb6 Add super-greedy quantifier to regular expression in the natural language pipeline to prevent creating reminders with time instead of text and default time when no exact time is specified.
  • 9de8ff6 When sending a digit reaction, the bot will no longer send a reaction with the next positive number from the list of intervals before the date if the first positive number was divisible by eleven without a remainder.
  • 9de8ff6 Switch to CLI command mode only if at least one parameter is specified. Update reminder status to missed if the room it was dedicated can not be found.
  • 92b5bd5 When changing settings, the user's user_id is saved, not the bot's. Save user_id as created_by when add reminder for delegation purposes.
  • 33d7919 Fix invalid YAML format in the translations for new features.

🌐 Localization

  • c2fdb39 Add periods to the ends of the sentences in the welcome message.

💻 Code Refactoring and Dependencies

  • a6155f5 Use strum crate for ReminderDateError and MessageReaction.
  • 9de8ff6 Draft for splitting processing of reminders to natural and CLI pipelines.
  • edc29ae Early draft for individual users settings and universal settings getter method.
  • 72eccb6 Update clap crate to 4.6.6.

Full Changelog: v1.0.1...v1.1.0

v1.0.1

Choose a tag to compare

@outarde outarde released this 24 Aug 19:39

v1.0.1

🪲 b468934, 7fce91c This release contains a fix to save room time zone not only in the database but also as a Matrix state event.

📕 23a8acb The documentation has been expanded with pages usage.md and matrix.md.

Full Changelog: https://github.com/outarde/reminder-bot/compare/v1.0.0...v1.0.1

v1.0.0

Choose a tag to compare

@outarde outarde released this 24 Aug 18:11

v1.0.0

This is a meaningful update! There are three main new features:

  • Individual time zones for rooms.
  • Creating reminders without a command at the beginning of a message and only by mention in group chats.
  • Uploading your translation files.

Warning

This is a major release, so it contains breaking changes:

  • Switch to UTC time format in the database. Database migration is not provided. Delete the database file from the bot data folder. After restart it will create a new one.
  • Switch to the configuration file config.yml for all bot settings not related to connecting to the Matrix server. Read about the new settings and interactive configurator.

Setup Checklist

  • Create a settings file config.yml in the folder associated with the bot container.
  • Set the default time zone in the settings for all users of your server. To change the time zone in a room, send to the bot a command /tz <timezone-code>. For time zone codes, use the TZ identifier database.
  • Remove all previous settings with the BOT_ prefix from .env and the database file, if any.

🚀 Features and Enhancements

  • 7d05ab9 New settings file config.yml.
  • 1856af0 Aliases for commands.
  • 371c9c6 Options on_command and on_mention to activate bot only by command and by mention in group rooms.
  • 0f56295 Interactive setup for config with config-setup command.
  • cd0cbac Ability to load external localizatiion file.
  • 69d14c1 New slash / prefix for commands.
  • ccd0844 Reminders are stored with UTC time.
  • a9bcfab Room time zone.
  • 3249fe6 Send welcome message when bot receives an invitation to the room.

🐛 Bug Fixes

  • d173569 Save config file with interactive setup.
  • f5cf941, 0281850 Default times and timezone validation for config setup.
  • 9872681 MATRIX_HOMESERVER now is optional for starting bot CLI and will cause an error only if bot has no saved session in sessions folder
  • 5a502da Seasonal time changes error handling.

🌐 Localization

  • 35fbd5f Some of localization keys are updated.
  • 9c43dd9 Multilingual prepositions.
  • b95b983 New, extended welcome message.
  • 64f69ec New translations for time zone settings.

📕 Documentation

💻 Code Refactoring

  • 371c9c6, 0f56295 New main.rs state-architecture with AppConfig, BotRuntime and BotContext.
  • 371c9c6 Use text_markdown method instead of pulldown-cmark crate parser.
  • 47c6872, e949257 MonthManager and then I18nManager.
  • 3249fe6 SettingsManager.

Full Changelog: https://github.com/outarde/reminder-bot/compare/v0.4.0...v1.0.0

v0.4.0

Choose a tag to compare

@outarde outarde released this 12 Aug 13:08

v0.4.0

This update adds support for 11 new languages ​​and improves natural language recognition in bot commands! Our bot was also featured in last week's This Week In Matrix digest. Read it in the Bots Department section.

Warning

This version requires changing the environment variable LANG_APP to BOT_LANG. There is no backward compatibility with the old variable.

New Languages

Added translations for bot messages in chats, as well as the remind command and the expressions today, tomorrow, morning, afternoon, and evening for the following languages:

  • en English 🇬🇧
  • de German 🇩🇪
  • fr French 🇫🇷
  • it Italian 🇮🇹
  • es Spanish 🇪🇸
  • sv Swedish, aka IKEAish 🇸🇪
  • pl Polish 🇵🇱
  • cs Czech 🇨🇿
  • fi Finnish 🇫🇮
  • ja Japanese 🇯🇵
  • zh Chinese Simplified 🇨🇳
  • ru Russian 🇷🇺
  • uk Ukrainian 🇺🇦

Important

Currently, keywords and month names may not take declension and case into account. A temporary solution is to use three-letter month abbreviations. Translation is ongoing, and any contributions are welcome!

New Parameters

New optional parameters have been added to the BOT_ prefix:

  • BOT_LANG and BOT_COMMAND - correspond to the old LANG_APP and LANG_BOT_COMMAND.
  • BOT_ON_COMMAND and BOT_ON_MENTION - control whether the bot is activated by command or only by mention in general chats. Currently inactive, they will be available in the next release.
  • BOT_MORNING_TIME, BOT_AFTERNOON_TIME, BOT_EVENING_TIME - standard times for morning, afternoon, and evening in the %H:%M format like: BOT_MORNING_TIME=08:00. To create reminders, you can now write: !remind today morning fly on an airplane.

Roadmap for Next Releases

The next minor releases will fix bugs and refactor the code. Then, we plan to add a setting for activating the bot without a command in private chats and by mention in group chats. We'll also be changing the functionality for creating reminders without specifying a time: they will be created an hour later, rather than at 09:00. Finally, we'll add alternative commands - a list of all reminders and settings - to pave the way for the long-awaited custom time zone feature.

What's Changed

⚠️ Breaking Changes

  • Environment Variable: Change LANG_APP variable to BOT_LANG and LANG_BOT_COMMAND to BOT_COMMAND if you used them.

🚀 Features and Enhancements

  • 7ab28a2 Welcome message from the bot is formatted to HTML to highlight commands examples
  • 6889265 Time validation for new reminder
  • 4a24e33 Three-letter abbreviation for months

🐛 Bug Fixes

  • 3b0602c Fix regular expression bug in parsing months and year undivided when reminder time is not specified
  • 3e29b95 One more fix for time validation and new format for default morning, afternoon, evening times
  • 3884d70 Month in success message has %M format

🌐 Translations

🏗️ Building and Refactoring

Full Changelog: https://github.com/outarde/reminder-bot/compare/v0.3.1...v0.4.0

v0.3.1

Choose a tag to compare

@outarde outarde released this 06 Aug 19:34

This release fixes a bug where omitting a preposition would cause the reminder to be set to the default time.

Full Changelog: https://github.com/outarde/reminder-bot/compare/v0.3.0...v0.3.1

v0.3.0

Choose a tag to compare

@outarde outarde released this 05 Aug 00:10

v0.3.0

This version now allows you to set your own alternative bot activation command.

What's changed

🚀 Features and Enhancements

  • 406f451 feat: Alternative commands multilanguage support
  • bd8347c Add constants for default values
  • d9cb9b6 refactor: Regular expression in hadlers.rs
  • 5061588 Add caching to workflow

🐛 Bug fixes

  • 824591c fix: Saved message text anchor

🌐 Translations

  • 5061588 Update commands to activate bot
  • 5061588 Update summary messages text

Full Changelog: https://github.com/outarde/reminder-bot/compare/v0.2.2...v0.3.0

v0.2.2

Choose a tag to compare

@outarde outarde released this 03 Aug 22:29
770e464

This version fixes a bug where the bot would not start without specifying LANG_APP, even though this variable was described as optional.

🎉 Also this is no longer a pre-release version.

Full Changelog: https://github.com/outarde/reminder-bot/compare/v0.2.1...v0.2.2