Skip to content

Releases: remp2020/remp

2.2.0

25 May 05:02
4684f3b
Compare
Choose a tag to compare

[Mailer]

  • BREAKING: Changed behavior when subscribing mail_type with variants (mail_type.is_multi_variant = true) without specified variant. remp/crm#2723
    • If mail_type.default_variant_id is set, such variant is subscribed (this didn't change).
    • BREAKING: If mail_type.default_variant_id is not set, all variants are subscribed.
  • BREAKING: Added context parameter to IReplace::replace() interface method. remp/remp#1102
    • Use context to pass additional information to replacers.
    • If you have own implementation of IReplace interface, you should add new context parameter to replace method.
  • Added list of subscribed variants to /api/v1/users/subscribe API response (parameter subscribed_variants). remp/crm#2723
  • Fixed broken master search, which was hitting deprecated search URL. remp/remp#1265
  • Added clicked links tracking in sent emails. remp/remp#1102
    • Added RtmClickReplace to add rtm_click query parameter with computed link hash to email links. Hash is then used to identify clicked link in email.
    • Added table with link clicks count to /template/show page.
    • You can enable/disable email link clicks tracking in Settings with Mail click tracker toggle.
    • Do not forget to seed your database with new config (Run make install after every update).
  • Added url parameter with clicked URL to mailgun-event Hermes event in v2/MailgunEventsHandler. remp/remp#1102
  • IMPORTANT: Fixed inconsistent behavior of missing translations for layouts and snippets which didn't default to the primary locale variant. remp/remp#1260
    • This fix might affect you if you are using multiple locales in Mailer, and if you rely on the behavior that empty snippet/layout is included for locales which were not filled.
    • Our intention (also communicated by the UI) was always the same: Use the translation if it's present, or fallback to the default language if it is not. Unfortunately layouts and snippets always created empty translations and used them instead. That was a bug. If you want to preserve this behavior, you need to explictly save something into the translation (e.g. space or HTML comment).

2.1.0

25 Apr 08:34
1ebe9d4
Compare
Choose a tag to compare

[Beam]

  • Added an optimizations to speed up the statistics of articles on dashboard. remp/remp#1250
  • Added an optimization /api/articles API call to eager load necessary relationships. remp/remp#1254
  • Added an optimization /articles/conversions view to use article pageviews to calculate conversion rate instead of unique browsers from Journal API which can be slow. This may change the resulting values in conversion rate column. remp/remp#1253
  • Added an optimizations for dashboard view to reduce obsolete database calls and speed up the filtering by property. remp/remp#1251
    • Added optional env configurations ARTICLE_TRAFFIC_GRAPH_SHOW_INTERVAL_7D and ARTICLE_TRAFFIC_GRAPH_SHOW_INTERVAL_30D to disable possibility of choosing longer time intervals in the article histogram.
  • Added an optimization for /authors, /sections and /tags views by removing redundant join from datatable query and removing datatable count queries. remp/remp#1255
    • Changed pagination in datatable to use displayed data length instead of executing count query.
  • Added an optimization for API call /api/v2/articles/top. remp/remp#1252
  • Added new optional parameter published_from to filter out older articles from the counted data. Recommended to use for longer time periods, significantly speed up calls. remp/remp#1252

[Mailer]

  • Added code attribute in response in /api/v1/mailers/mail-type-categories API. remp/crm#2723
  • Added default_variant_id attribute in response in /api/v1/mailers/mail-types API (same for "v2" and "v3"). remp/crm#2723
  • Added keep_list_subscription parameter in /api/v1/users/un-subscribe API. remp/crm#2723
    • By default, when mail type has variants and user unsubscribe from all of them, mail type is automatically unsubscribed too. Parameter keep_list_subscription set to true changes this behaviour - when last variant is unsubscribed, mail type subscription is retained.
  • Added API endpoint /api/v3/mailers/mail-types, which works similarly to v2, but returns more variant details in API response. remp/crm#2723
  • Added API endpoint /api/v1/users/is-subscribed checking if user is subscribed to particular mail type (and variant). remp/crm#2723
  • Added ability to specify variant in Job form. remp/crm#2723
  • Added support for variant in unsubscribe URL generated by DefaultServiceParamsProvider. remp/crm#2723

2.0.3

28 Mar 06:37
cd7893c
Compare
Choose a tag to compare
  • Fixed issue with access rights of Docker user in the Composer's cache folder.
  • Fixed issue with installing Mailer skeleton JS dependencies due to missing bump of JS module version.

2.0.0

24 Mar 14:03
e5acd2f
Compare
Choose a tag to compare

This version bumps minimal version of required dependencies and expects that both mail:migrate-mail-logs-and-conversions and mail:migrate-user-subscriptions-and-variants were already executed. Update to this version only if you meet the criteria.

Project

  • BREAKING: Raised minimal version of PHP to v8.1. remp/remp#2091
  • BREAKING: Raised minimal version of Node.js to v18. Older versions are already after its end-of-life and not supported anymore, v16 ends its life in couple of months. remp/remp#2091
  • IMPORTANT: Updated configuration of Docker Compose to use non-root users. remp/remp#2091
    • To make sure you use the same user/group within the docker images as in the host machine, follow these steps:
      1. Find out what is the UID and GID of your user:

        id -u # UID
        id -g # GID
        whoami # UNAME
        
      2. Create new .env file in the root of remp project (based on the .env.example):

        UID=1000
        GID=1000
        UNAME=docker
        
      3. Transfer owner of generated files created by previous version of image (owned by root user) to user who will use them from now on:

        sudo chown -R 1000:1000 Beam Campaign Mailer Package Sso
        

        If you changed the default UID / GID to something different, use that in the chown command.

      4. Rebuild the docker images, clear caches, and start them again:

        docker compose stop
        docker compose build beam sso campaign mailer
        docker-compose up -d
        

[Beam]

  • Fixed possible performance issues if bigger amount of aggregation data need to be compressed. remp/remp#1246

[Campaign]

  • Fixed issue with enforced Javascript in Variable form. remp/remp#1256
    • We unintentionally started to enforce JS in Variables without realizing that any value can be stored there. We keep the syntax highlighting for now, but it's not enforced.

[Mailer]

  • BREAKING: Added support for external module routes (/<module>/<presenter>/<action>). remp/remp#1220
    • This new route map changed the default routes and breaks anything linking to the Mailer directly; primarily bookmarks. APIs are not affected by this change.
  • DEPRECATED: Deprecated method LogsRepository::filterAlreadySent in favor of LogsRepository::filterAlreadySentV2. remp/remp#1242
  • IMPORTANT: Changed primary key from int to bigint for autologin_tokens table. remp/remp#1187
    • This migration is a two-step process that requires your manual action - running mail:migrate-autologin-tokens in the off-peak hours. Since some tables are very exposed and cannot be locked for more than a couple of seconds, we decided to migrate the data into the new table manually and keep the old and new table in sync. Based on the amount of your data, the migration can anywhere from couple of minutes to hours.
    • Check Database tables migration section in mailer-module README file for more information.
  • Removed php-amqplib/php-amqplib from the direct Mailer dependencies. remp/remp#1244
  • Changed <p> tag formatting in generators. remp#remp1215
    • Generators used to remove <p> tags from input to then create new <p> tags and then add desired styling.
    • Now <p> tags are not removed but just changed to desired styling.
  • Fixed possible performance issue when sending emails. remp/remp#1242
    • The check executed in the mail:worker command didn't perform well under certain DB settings and caused unnecessary hold-ups.
  • Fixed worker:mail healthcheck not correctly working if worker was occupied with big batch. remp/remp#1240
  • Added support for include and exclude segments in mail jobs. Now you can select multiple include and exclude segments for mail job. remp/remp#1216
  • Added log user_id to mail_logs in mail Sender. remp/remp#1188
  • Fixed CreateNewMailLogsAndMailConversionsTable migration to add user_id column and index if database table is empty. remp/remp#1188

1.2.0

23 Feb 20:24
9ece626
Compare
Choose a tag to compare

[Mailer]

  • BREAKING: Added explicit types to RedisClientTrait.
    • If you use the trait in your own extensions, you might encounter type incompatibility issues of your constructors and class properties. Make the necessary changes based on the error messages.
  • IMPORTANT: Changed primary key from int to bigint for mail_user_subscriptions table. remp/remp#1187
    • This migration is a two-step process that requires your manual action - running mail:migrate-user-subscriptions-and-variants in the off-peak hours. Since some tables are very exposed and cannot be locked for more than a couple of seconds, we decided to migrate the data into the new table manually and keep the old and new table in sync. Based on the amount of your data, the migration can take hours.
  • Added the soft delete of mail type variants. remp/crm#2721
  • Added ability to log apple bots use in Mailgun "opened" events via standalone Hermes handler (disabled by default). remp/analytika#137
  • Added TrackSubscribeUnsubscribeHandler hermes handler, which sends event to Tracker after user subscribes/unsubscribes from mail type. remp/remp#1226
  • Added ability to track RTM parameters in the /api/v1/users/subscribe API. remp/remp#1237
  • Added support for standalone HTTP webhook signing key. remp/remp#1232
    • Mailgun used to use domains API key to sign the requests, however it currently is a separate signing key.
  • Added filter by user_id support to mailer LogsHandler. remp/remp#1188

[Campaign]

  • Fixed increasing pageviews for campaigns which banners were not displayed due to the priority rules for banners on the same position. remp/remp#1213
  • Added syntax highlighting to Variables section. remp/remp#1214
  • Added support for new banner rules in campaign. Now you can determine if campaign should display after user clicked or closed the banner. remp/remp#960
  • Added storing of collapse state for collapsible banner. remp/remp#960
    • If user collapses campaign banner then it displays collapsed on the next display.
    • In collapsible banner settings there is a new toggle to override this behaviour and display banner always in initial state.

1.1.0

27 Jan 12:54
247f846
Compare
Choose a tag to compare

Project

  • Changed the way how PHP CodeSniffer scripts (phpcbf, phpcs) is executed. Now they run from vendor/bin and so will reflect actual version of PHP.
  • The resolved composer dependencies are now generated against PHP 8.1.

[Beam]

  • Added optional parameters for command service:elastic-write-alias-rollover to allow customization of search options for rollover. remp/remp#1208
    • max-age - triggers rollover after the maximum elapsed time from index creation is reached (default value is 31d).
    • max-size - triggers rollover when the index reaches a certain size (default value is 4gb).
    • max-primary-shard-size - triggers rollover when the largest primary shard in the index reaches a certain size. Option introduced from elasticsearch version 7.13.

[Campaign]

  • Added dimensions of banner into required inputs during the creation of custom HTML banner. remp/remp#1165
  • Added operator is not for the pageview attributes of campaign settings. remp/remp#1177
  • Added the configurable option to prioritize banners on same position. To enable the feature set env variable PRIORITIZE_BANNERS_ON_SAME_POSITION. remp/remp#1167
  • Added information about where to display to the detail page of campaign. remp/remp#1009
  • Changed the form of editing banner's custom JS - now JS code is displayed formatted and linted in separate window. remp/remp#1171
  • Added support for the inline editing of variables in the custom JS of banner. remp/remp#1172
  • Replaced Laravel's internal SerializableClosure with the separate forked implementation to avoid deprecation. remp/remp#1160

[Mailer]

  • IMPORTANT: Changed primary keys of exposed tables from int to bigint. remp/remp#1187
    • This migration is a two-step process that requires your manual action - running mail:migrate-mail-logs-and-conversions in the off-peak hours. Since some tables are very exposed and cannot be locked for more than a couple of seconds, we decided to migrate the data into the new table manually and keep the old and new table in sync. Based on the amount of your data, the migration can take hours. Our production data with 200M+ records in the mail_logs table took ~15 hours to migrate.
    • The newly created mail_logs table also contains user_id, that will be used in the future release.
  • BREAKING: Changed DataRow (which extended deprecated Nette\Database\Table\IRow) to ActiveRowFactory (which returns ActiveRow). remp/remp#1224
    • If you use DataRow, replace the use with $this->activeRowFactory->create().
  • BREAKING: Added types to the properties of Remp\MailerModule\Models\Mailer\Mailer. remp/remp#1224
    • If you extend this class (implement your own mailer), make sure you align your extended property definitions with the parent class.
  • BREAKING: Changed order of constructor parameters of Remp\MailerModule\Models\Mailer\Mailer. remp/remp#1224
    • If you implement your own mailer, align your constructor with the parent class.
    • The registration of mailer in config.neon should use named parameter - e.g. change addMailer(Remp\MailerModule\Models\Mailer\MailgunMailer(eu)) to addMailer(Remp\MailerModule\Models\Mailer\MailgunMailer(code: eu)).
  • BREAKING: Updated JsonMachine library for parsing JSON streams. remp/remp#1224
  • IMPORTANT: Fixed description of "priority" field in the newsletter list form. remp/remp#1195
    • The newsletter form incorrectly stated the information about newsletter list priority. Mailer always prioritized newsletters with higher "priority" field, but the form stated otherwise.
  • Removed debugMode from CLI executions on non-production environments. remp/remp#1224
  • Added ServiceParamsProviderInterface which implements adding custom parameters to mail templates. remp/remp#1175
  • Added DefaultServiceParamsProvider which adds settings and unsubscribe params to mail templates.
  • Refactored Sender class to use ServiceParamsProviderInterface instead of generateServiceParams method.
  • Fixed UnreadArticlesResolver which crashed job processing in case of an uncaught (invalid URL) exception. remp/remp#1017
    • This could happen if an article was unpublished, but remained in the stats and was selected for personalized newsletter. Mailer wouldn't be able to fetch meta for article.
  • Replaced use of zrevrangebyscore Redis call (deprecated) with zrange with BYSCORE and REV options. remp/remp#1195
  • Changed required parameter sorting to optional in /api/v1/mailers/mail-type-variants API endpoint. remp/mnt#114
  • Added logRequestListenerErrors option to NewRelicModuleExtension configuration. remp/remp#1180
  • Added getBool method to MailerModule EnvironmentConfig, which provides support for getting boolean values from .env files. remp/remp#1180
  • Fixed removal of template (Twig) variables in HTML email template when switching from text to WYSIWYG editor and back. remp/remp#719
  • Fixed possibly slow view of job detail caused by missing index. remp/remp#1209
  • Fixed mail preview when WYSIWYG editor was used. WYSIWYG editor changes structure of inserted HTML (removes html, head and body tags). We need to preserve these tags to preview mail. remp/remp#1194
  • Added migration to change mail_job_queue id column type from int to bigint. remp/remp#1187

1.0.0

26 Sep 15:02
Compare
Choose a tag to compare

[Beam]

  • IMPORTANT: Updated required PHP version to 8.0. remp/remp#1160

[Campaign]

  • IMPORTANT: Updated required PHP version to 8.0. remp/remp#1160

[Mailer]

  • IMPORTANT: Updated required PHP version to 8.0. remp/remp#1160

[Sso]

  • IMPORTANT: Updated required PHP version to 8.0. remp/remp#1160

0.34.1

23 Sep 13:47
Compare
Choose a tag to compare

[Mailer]

  • Fixed issue with Twig syntax failsave which shouldn't allow user to save template with invalid syntax. It wasn't working correctly and allowed such scenario. remp/remp#1190

0.34.0

23 Sep 11:38
Compare
Choose a tag to compare

Project

  • Updated Docker Adminer to the latest version.

[Beam]

  • Fixed edge case error in Newsletter sending when there are no articles matching the condition. remp/remp#1182
  • Fixed broken newsletter form caused by unprocessable recurrent rules. remp/remp#1182

[Campaign]

  • Fixed incorrect links for schedules edit. remp/remp#1181
  • Fixed banner custom css styles loading in preview. remp/remp#1183

[Mailer]

  • BREAKING: Changed allowed domains registration for content generator replacers. remp/remp#1176
    • Removed addHost public methods from replacers implementations (e.g. UrlRtmReplace::addHost) which served as a whitelist for hosts where RTM parameters should be added. Instead, use AllowedDomainManager::addDomain so the configuration is shared among all replacers. See README for more information.
    • Added allowed domains check to AnchorRtmReplace content generator replacer to have allowed domains check in all replacers.
  • Added TextUrlRtmReplace content generator replacer to add RTM parameters to links in the text version of the email. remp/remp#1176
  • Fixed crashing Newsfilter generator if articlelink tag pointed to the article that doesn't exist. remp/remp#1066
  • Refactored mail generators wordpress article links parsing. remp/remp#1166
  • Added context to job create/detail pages. remp/remp#1185
    • Context is a parameter, that maintains that user doesn't receive contextually similar emails multiple times. Each user can receive an email with a specific context only once.
  • Fixed bug where template parameters used in URLs would not be correctly replaced if Mailgun sender was used in batch mode. hiking.sk/web#92
  • Fixed issue with worker:mail getting stuck in an infinite "no longer top priority, switching" message. remp/remp#1189

0.33.0

08 Aug 06:12
b5b864a
Compare
Choose a tag to compare

Project

  • IMPORTANT: This is the last version supporting PHP 7.4. Future versions will require upgrade to PHP 8.0.
  • Added support for number and text DataTables renderers. remp/remp#852

[Beam]

  • Added support for group in options for ButtonSwitcher. Groups allow to visually separate options. remp/remp#1110
  • Added First day, First 7 days and First 14 days options to PageLoadsGraph. remp/remp#1110
  • [Tracker]: Added support for SASL Kafka authentication in Tracker. remp/remp#971
  • Added overall internal pageviews count to article title ab testing histogram. remp/remp#1125
  • Changed commands called in pageviews:aggregate command to aggregate pageviews into 20-minute intervals. remp/remp#652
    • Due to the interval change, duplicates may arise in article_pageviews. We recommend running data:delete-duplicate-pageviews command after migration to clean up data.
  • Added pageviews data source to load data for time histogram for specific article. remp/remp#652
  • Added option to switch between pageviews, snapshots and journal data sources in article page loads graph on article detail page. remp/remp#652
  • Fixed site layout on mobile.

[Campaign]

  • Added option to toggle between mobile and desktop banner preview on banner edit page. remp/remp#1071
  • Fixed bar banner close text display. remp/crm#1068
  • Fixed site layout on mobile.

[Mailer]

  • IMPORTANT: Added soft delete for emails, layouts, newsletter lists and generator templates. remp/remp#1075
    • The database migration is blocking to maintain consistency and might take 5-10 minutes for bigger instances. Please schedule the release to the off-peak hours.
  • IMPORTANT: Fixed mail type priority can't be 0. remp/remp#1134
    • Added validation to add/edit newsletter list form and JobPresenter::handleSetBatchReadyToSend, JobPresenter::handleSetBatchSend methods.
    • Added migration to update mail_types with priority 0 to default value.
  • Fixed logs subject not storing the translated version of sent email. remp/remp#1130
  • Fixed mixed up columns "Locked" and "Publicly listed" in Newsletter lists table. remp/remp#1131
  • Fixed deprecated warning because of using Latte#addFilter() method. remp/remp#1135
  • Fixed the filter loading issue. remp/remp#1135
  • Fixed Latte deprecation issues introduced in the latest version of the templating engine. remp/remp#1136
  • Removed captions from the submit buttons in favor of HTML content with icons. remp/remp#1138
  • Fixed fallback for non-batch sending in mail:worker command. remp/remp#1139
    • If the worker was run with --batch flag and the configured mailer didn't support batch sending, the fallback would execute incorrect branch and the sending would end up with error.
  • Changed the hash function generating Sender-ID header.
  • Added trait for processing dates to the application's default timezone before they're used in the selection or insertion. remp/remp#1144
  • Fixed bug possibly causing conversions happening early after the job was created not to be attributed to the job correctly. remp/remp#1144
  • Fixed "Invalid datetime format" bug with hermes error logging to the database. remp/remp#1145
  • Fixed Mailgun API error with wrong recipient-variables parameter. remp/remp#1146
  • Fixed API triggering unnecessary session initiation. remp/remp#1149
  • Fixed possibility of stuck MySQL query when removing unsubscribed users from the mail job queue. remp/remp#1148
  • Added mail generator for Napunk to overide default slovak email lock message. remp/remp#1129
  • Changed the behaviour of mail template form - template content is editable after general information is saved. remp/remp#1122
  • Refactored mailer batches to allow templates from only one mail type. remp/remp#1140
    • Fixed decide sending mailer in MailWorkerCommand depending on template mail type.
  • Fixed type error authentication issue when Mailer uses REMP SSO for authentication. remp/remp#1161
  • Fixed internal content parsers which could throw notices if parsed URL doesn't contain JSON schema. remp/remp#1162
  • Added support for allow listing emails in Mailer. remp/remp#1150
    • Added tests for application Sender and EmailAllowList classes.
  • Fixed site layout on mobile.
  • Fixed snippets in text versions of emails (HTML versions were inserted instead of text). remp/remp#1164
  • Changed the batch form action buttons to improve users experience. remp/remp#1157