Releases: remp2020/remp
Releases · remp2020/remp
2.2.1
[Mailer]
- Removed deleted mail types from dashboard stats. remp/remp#1269
- Added support for horizontal scroll in DataTable (parameter
scrollX
in table settings). remp/remp#1270 - Fixed mail click tracker to not modify URL in any way other than adding required query parameter. remp/remp#1270
- Changed
url
column type inmail_template_links
table fromstring
totext
to support longer URLs. remp/remp#1270 - Added Makefile target
make install
to run all commands required after new code is pulled. - Fixed "Mail click tracker" config. The default setting is now "disabled". remp/remp#1102
- Updated version of
@remp/js-commons
to 2.2 (contains fix for master search issue). remp/remp#1265
2.2.0
[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.
- If
- BREAKING: Added
context
parameter toIReplace::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 newcontext
parameter toreplace
method.
- Added list of subscribed variants to
/api/v1/users/subscribe
API response (parametersubscribed_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 addrtm_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
- Added
url
parameter with clicked URL tomailgun-event
Hermes event inv2/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
[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
configurationsARTICLE_TRAFFIC_GRAPH_SHOW_INTERVAL_7D
andARTICLE_TRAFFIC_GRAPH_SHOW_INTERVAL_30D
to disable possibility of choosing longer time intervals in the article histogram.
- Added optional
- 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 totrue
changes this behaviour - when last variant is unsubscribed, mail type subscription is retained.
- By default, when mail type has variants and user unsubscribe from all of them, mail type is automatically unsubscribed too. Parameter
- 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
2.0.0
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:
-
Find out what is the
UID
andGID
of your user:id -u # UID id -g # GID whoami # UNAME
-
Create new
.env
file in the root ofremp
project (based on the.env.example
):UID=1000 GID=1000 UNAME=docker
-
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 thechown
command. -
Rebuild the docker images, clear caches, and start them again:
docker compose stop docker compose build beam sso campaign mailer docker-compose up -d
-
- To make sure you use the same user/group within the docker images as in the host machine, follow these steps:
[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 ofLogsRepository::filterAlreadySentV2
. remp/remp#1242 - IMPORTANT: Changed primary key from
int
tobigint
forautologin_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 inmailer-module
README file for more information.
- This migration is a two-step process that requires your manual action - running
- 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.
- Generators used to remove
- 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.
- The check executed in the
- 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
tomail_logs
in mail Sender. remp/remp#1188 - Fixed
CreateNewMailLogsAndMailConversionsTable
migration to adduser_id
column and index if database table is empty. remp/remp#1188
1.2.0
[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
tobigint
formail_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.
- This migration is a two-step process that requires your manual action - running
- 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 mailerLogsHandler
. 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
Project
- Changed the way how PHP CodeSniffer scripts (
phpcbf
,phpcs
) is executed. Now they run fromvendor/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#1208max-age
- triggers rollover after the maximum elapsed time from index creation is reached (default value is31d
).max-size
- triggers rollover when the index reaches a certain size (default value is4gb
).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
variablePRIORITIZE_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
tobigint
. 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 themail_logs
table took ~15 hours to migrate. - The newly created
mail_logs
table also containsuser_id
, that will be used in the future release.
- This migration is a two-step process that requires your manual action - running
- BREAKING: Changed
DataRow
(which extended deprecatedNette\Database\Table\IRow
) toActiveRowFactory
(which returnsActiveRow
). remp/remp#1224- If you use
DataRow
, replace the use with$this->activeRowFactory->create()
.
- If you use
- 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. changeaddMailer(Remp\MailerModule\Models\Mailer\MailgunMailer(eu))
toaddMailer(Remp\MailerModule\Models\Mailer\MailgunMailer(code: eu))
.
- BREAKING: Updated
JsonMachine
library for parsing JSON streams. remp/remp#1224- If you extend Mailer and use
JsonMachine
to process the API response's JSON stream, please refer to the current version of documentation.
- If you extend Mailer and use
- 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 addssettings
andunsubscribe
params to mail templates. - Refactored
Sender
class to useServiceParamsProviderInterface
instead ofgenerateServiceParams
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) withzrange
withBYSCORE
andREV
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 toNewRelicModuleExtension
configuration. remp/remp#1180 - Added
getBool
method to MailerModuleEnvironmentConfig
, 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 fromint
tobigint
. remp/remp#1187
1.0.0
[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
0.34.0
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, useAllowedDomainManager::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.
- Removed
- 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