Releases: remp2020/remp
Releases · remp2020/remp
0.30.0
Project
- Bumped reference version of Elasticsearch and Kibana to 7.17.0.
[Beam]
- Fixed possibly too broad scope of IOTA requests. remp/remp#1050
- If the articleSelector didn't match any articles, request was made without an
article_id
filter which could cause temporary Elastic unavailability.
- If the articleSelector didn't match any articles, request was made without an
- Added option to configure
--step=
ofpageviews:aggregate-articles-views
command to avoid Elasticsearch's "Trying to create too many buckets" error. remp/remp#1050
[Campaign]
- BREAKING: Removed loading
Noto Sans
andNoto Sans Serif
fonts from campaign banner previews and use default system serif and sans-serif fonts. remp/remp#1041- You can change used fonts by adding
font-face
style to.remp-banner .serif
and.remp-banner .sans-serif
classes.
- You can change used fonts by adding
- Added custom configuration for
CampaignController::showtime
Sentry sample rate. remp/remp#1029
[Mailer]
- BREAKING: The
/api/v1/mailers/send-email
API now validates context separately for each email address. This is a bugfix, but we label it as breaking because someone could depend on this behavior. remp/crm#2226- Previously the handler validated context globally, which was not intentional. It could have prevented a notification with the same context to be sent to different users. This change unifies the behavior with jobs - they checked the email-context pair since the beginning.
- BREAKING: Removed obsolete column
is_public
frommail_types
table also from related code and API call. remp/remp#1061- Check your usage of
is_public
column - replace withpublic_listing
column or remove. - The signature of method
ListsRepository::add()
changed. Check your usages of the method and incorporate the changes.
- Check your usage of
- Fixed inconsistent
PageMeta
use where constructor allowed to enter nullable values if they weren't present, but getter didn't allow to return them. remp/remp#1055 - Fixed incorrect handling of return values (null vs bool) caused by Nette 3.0 upgrade. remp/remp#1057
- Added checkbox for hiding newsletter from public newsletter settings. remp/remp#1025
- Fixed WP-based generator issue causing unnecessary
<br />
tags being appended to the<a>
links. remp/remp#1065 - Fixed error in
ArticleUrlParserGenerator
caused by invalid URL. Mailer would crash instead of displaying error to the user. remp/remp#1066 - Added migration to add index on
email
column inautologin_tokens
table. remp/remp#1067 - Added options to specify
variant_code
in the subscribe/unsubscribe APIs to complement subscription throughvariant_id
. remp/crm#2212
0.29.0
Project
- Removed obsolete
python-minimal
from Dockerfile to fix build error. remp/remp#1012
[Beam]
- Added article content type filter to authors. remp/remp#1001
- Fixed missing search bar on mobile devices. remp/remp#932
- Added support for Redis Sentinel cluster in the app configuration. remp/remp#1035
- Added new
REDIS_SENTINEL_SERVICE
environment variable to configure name of the Sentinel service. If used, sentinel hosts are expected to be configured in comma-separatedREDIS_URL
environment variable.
- Added new
- Added
article_external_id
into response of API call/api/conversions
. remp/remp#1031 - Added information about article's tags, authors and sections into API call
/api/articles
. remp/remp#1031 - Property filter now correctly filters all sections of Beam, not just the main dashboard data. remp/remp#987
[Mailer]
- BREAKING: Changed mail job batch status
STATUS_READY
toSTATUS_READY_TO_PROCESS_AND_SEND
inBatchesRepository
. remp/remp#995- If you use
STATUS_READY
in your implementation, replace it withSTATUS_READY_TO_PROCESS_AND_SEND
.
- If you use
- BREAKING: Added parameter for
code
attribute of mail type category intoListCategoriesRepository::add()
method. remp/remp#675- The signature of method changed from
(string $title, int $sorting)
to(string $title, string $code, int $sorting)
. Check your usages of the method and incorporate the changes.
- The signature of method changed from
- BREAKING: Changed initialization of DI services using Redis. If you use any of the following services, please amend your initialization in your
config.neon
. remp/remp#1035- Change
Tomaj\Hermes\Shutdown\PredisShutdown(@redisCache::client())
toTomaj\Hermes\Shutdown\PredisShutdown(@redisClientFactory::getClient())
- Change
Remp\MailerModule\Hermes\HermesTasksQueue(%redis.host%, %redis.port%, %redis.db%)
toRemp\MailerModule\Hermes\HermesTasksQueue
- Change
Remp\MailerModule\Models\Job\MailCache(%redis.host%, %redis.port%, %redis.db%)
toRemp\MailerModule\Models\Job\MailCache
- Change
Remp\MailerModule\Models\HealthChecker(%redis.host%, %redis.port%, %redis.db%)
toRemp\MailerModule\Models\HealthChecker
- Change
- BREAKING: Removed class
Remp\MailerModule\Models\RedisCache
in favor ofRemp\MailerModule\Models\RedisClientFactory
. remp/remp#1035- If you used
RedisCache
in your extensions, replace it with the use ofRedisTrait
andRedisClientFactory
.
- If you used
- BREAKING: Added flag to include deactivated users into interface method
Remp\MailerModule\Models\Users\IUser::list()
. remp/crm#1392- Default state is same as before (returned only active users).
- This is breaking change because now interface suggests that only active users are returned.
- If you have own implementation of interface
IUser
, you should add new flag$includeDeactivated
and handle it accordingly.
- Added new mail job batch status
STATUS_READY_TO_PROCESS
. remp/remp#995 - Added option to process mail job batch and get number of emails that will be sent in that batch. New button added to every mail job batch available when mail job batch is in
created
status. remp/remp#995 - Added
mail:remove-old-batches
command that removes mail job batches inprocessed
status older than 24 hours. This prevents from using outdated emails set to send emails. remp/remp#995 - Added the prefilling of from field into ArticleUrlParserWidget after email's type is selected. remp/remp#999
- Fixed Article URL parser generator to ignore blank lines causing NULL requests to parse the URLs. remp/remp#1014
- Removed obsolete RTM campaign parameter from Article URL parser generator.
- Added support for configuration of welcome email for new newsletter subscription. remp/remp#675
- Added
subscribe_mail_template_id
into themail_types
table. - Added
subscribe_mail_template_code
parameter to the/api/v1/mailers/mail-type-upsert
API to configure the welcome email. - Added new field for the subscription welcome email in the newsletter edit/create form that provides system emails for selection.
- Changed signature of
UserSubscriptionsRepository::subscribeUser()
- new$sendWelcomeEmail
argument was added.
- Added
- Added
code
column into themail_type_categories
table. Migration will take care of adding codes into the already existing categories. remp/remp#675- Added respective
code
attributes for mail type categories inDatabaseSeedCommand
.
- Added respective
- Added new emit of
user-subscribed
hermes event when user subscribes to the newsletter. remp/remp#675 - Added optional boolean
send_accompanying_emails
parameter into the/api/v1/users/subscribe
and/api/v1/users/bulk-subscribe
API endpoints. remp/remp#675- This parameter configures whether the subscription of newsletter should also trigger the welcome (and in the future goodbye) email for the newsletter.
- Changed Hermes
RedisDriver
sleep time from 5 seconds to 1 second. This should speed up some asynchronous operations. remp/crm#2046 - Fixed possible notice caused by missing
source_template_id
in theArticleUrlParserTemplateFormFactory
. remp/remp#1024 - Changed implementation of deprecated
Tomaj\NetteApi\Misc\BearerTokenRepositoryInterface
in favor ofTomaj\NetteApi\Misc\TokenRepositoryInterface
. remp/crm#2052 - Added possibility to send B version of subject from
ArticleUrlParser
. remp/remp#982 - Changed how unique template code is acquired - instead od suffixing numbers, Mailer now appends random string to the end of mail template code. remp/remp#1027
- All internal parts of Mailer which didn't use this feature and tried to get the code their own way now use provided
TemplatesRepository::getUniqueTemplateCode()
method.
- All internal parts of Mailer which didn't use this feature and tried to get the code their own way now use provided
- Removed unused repositories
LogEventsRepository
andUsersRepository
(leftovers after separation from CRM). - Added API endpoint
/api/v1/users/delete
to remove all user data for provided email. remp/crm#1392- Added helper class
UserManager
with methoddeleteUser()
to manage user deletion. remp/crm#1392
- Added helper class
- Search bar can be toggled on mobile devices. remp/remp#932
- Improved memory footprint of
Remp\MailerModule\Models\Users\Crm::list
method by decoding JSON in stream. remp/remp#1040 - Added new command
mail:sync-deleted-users
(SyncDeletedUsersCommand
) to handle deletion of emails which are not present in CRM (loads users from implementation ofRemp\MailerModule\Models\Users\IUser
interface). remp/crm#1392
[Campaign]
- Fixed missing search bar on mobile devices. remp/remp#932
- Fixed sorting issues on campaigns listing for multi-value columns (sorting was disabled). remp/remp#1034
- Added banner variant and segment filter to campaigns listing. remp/remp#1034
- Added support for Redis Sentinel cluster in the app configuration. remp/remp#1035
- Added new
REDIS_SENTINEL_SERVICE
environment variable to configure name of the Sentinel service. If used, sentinel hosts are expected to be configured in comma-separatedREDIS_URL
environment variable.
- Added new
- Fixed banner and campaign listings search. Grid was not able to search within campaign names (which is the main point of this search). remp/remp#1038
- Added
SENTRY_SHOWTIME_SAMPLERATE
env variable to configure sample rate of showtime logs/errors. remp/remp#1029
[Sso]
- Fixed missing search bar on mobile devices. remp/remp#9322
- Added support for Redis Sentinel cluster in the app configuration. remp/remp#1035
- Added new
REDIS_SENTINEL_SERVICE
environment variable to configure name of the Sentinel service. If used, sentinel hosts are expected to be configured in comma-separatedREDIS_URL
environment variable.
- Added new
0.28.0
[Beam]
- BREAKING: Removed auto-enabling of AIRBRAKE error logging in case
AIRBRAKE_ENABLED
is missing. remp/remp#994 - remplib.js - added option to track article's
contentType
when tracking pageviews. remp/remp#988- Breaking: Derived parameter
is_article
in Elastic storage is set totrue
only if value ofcontentType
is set to'article'
. Previously, all tracked articles hadis_article
value set totrue
- this may affect Beam segments that worked witharticle: true
rule or users processingis_article
parameter in raw Elastic data.
- Breaking: Derived parameter
- Refactored beam
CompressAggregations
command to run in chunks because of colliding database transactions withAggregatePageviewLoadJob
command, which caused deadlock. remp/remp#944 - Added
content_type
filter to theapi/articles/unread
API to exclude unwanted content types. remp/remp#973 - Added support for remplib.js reinitialization, necessary for correct execution in single-page apps. See README for more information. remp/remp#968
- Fixed broken
ArticleSeeder
andEntitySeeder
. - Fixed possibility of an error on the articles grids if filter matched too many articles. remp/remp#977
- Added
SameSite=Lax
attribute to all cookies set byremplib.js
. Missing attribute could possibly lead to issues on Safari, which doesn't defaults toLax
like other browsers. remp/remp#957 - [Tracker] Added option to limit tracked time spent for one pageview. Set tracker's ENV variable
TRACKER_TIMESPENT_LIMIT
to desired pageview tracking threshold (in seconds). Helps to filter out tracking of articles opened for too long (forgotten browser window on different workspace/monitor acts as active in some browsers). remp/remp#242 - [Tracker] Added support for canonical URL tracking to complement full URL tracking. If it's not found in the HTML, no canonical URL is stored and only regular URL is tracked. remp/remp#988
- Added tooltip to the user path chart. remp/remp#551
- Updated Docker Telegraf configuration to include
canonical_url
in the concurrents data. This will be necessary in the future to correctly display non-article traffic on the main dashboard. remp/remp#472 - Changed output of
service:elastic-data-retention
Beam command to correctly reflect if index was deleted or not. remp/remp#940 - [Segments] Fixed ignoring of segment's
active
flag in user/browser segment presence API check. remp/remp#1007- The bug caused that it was possible to check presence of users/browsers in segments even if the segment was not active.
- Property filter now correctly filters all sections of Beam, not just the main dashboard data. remp/remp#987
[Campaign]
- BREAKING: Removed auto-enabling of AIRBRAKE error logging in case
AIRBRAKE_ENABLED
is missing. remp/remp#994 - Fixed caching of Newsletter rectangle banner, which broke after the recent framework updates and caused configuration not to be available at the time of banner rendering. remp/remp#959
- Changed default stats view to include 30 days of data instead of 2 to allow bigger picture in campaign evaluation by default. remp/remp#969
- Added support for remplib.js reinitialization, necessary for correct execution in single-page apps. See README for more information. remp/remp#968
- Fixed unnecessary storing of empty URL/referer filters of "Where to display" section in campaign configuration. remp/remp#975
- Added
SameSite=Lax
attribute to all cookies set byremplib.js
. Missing attribute could possibly lead to issues on Safari, which doesn't defaults toLax
like other browsers. remp/remp#957 - Added
rtmSource
to campaign's custom JS params, so clients can correctly track events without hardcoding thertmSource
to some arbitrary value. - Added support for global campaign/banner variables. See README for more information. remp/remp#972
- Fixed missing
variables
template param inBannerController->copy
method. remp/remp#991 - Fixed inefficient querying of campaign active status on campaign listing. remp/remp#1000
- Added support for pageview attributes to showtime request and added ui for configuring pageview attributes to campaign form. See README for more information. remp/remp#986
- Added error logging from showtime experiment
showtime.php
intolaravel.log
. remp/remp#994 - Added support for Sentry error logging from showtime experiment
showtime.php
. remp/remp#994
[Mailer]
- BREAKING: Renamed
UrlParserGenerator
toArticleUrlParserGenerator
. remp/remp#949- Check your configuration if you are registering this generator.
- BREAKING: Finalized refactoring of
Remp\MailerModule\Repositories\IConversionsRepository
interface, removed obsolete methods. remp/remp#907- Methods
getBatchTemplatesConversions
andgetNonBatchTemplateConversions
were removed, because they encouraged suboptimal (non-time-constrained) implementation. - In your implementation replace them with newly added
getBatchTemplatesConversionsSince
andgetNonBatchTemplatesConversionsSince
respectively.
- Methods
- BREAKING: Removed public preview URL specified by template code. remp/remp#581
- IMPORTANT: The database migration can take up to 5-10 minutes, depending on the number of mail templates you currently have. Our testing migration with 100K templates took around 10 minutes.
- Use replacement public preview URL specified by random string (so it's not guessable).
- If you need to obtain HTML of email via template code, you can use newly added
/api/v1/mailers/render-template
API.
- Changed encoding of
mail_logs.subject
column touft8mb4_unicode_ci
to match encoding ofmail_templates.subject
. remp/remp#984- IMPORTANT: If you have more then 50M records in the
mail_logs
table, theMailLogsSubjectEncoding
migration can be time-consuming. Consider raising your deploy timeout limits or mark the migration as complete and run the queries manually. Our testing migration with ~20M records took 3 minutes.
- IMPORTANT: If you have more then 50M records in the
- Added email generator
ShopUrlParserGenerator
to get informations about products. remp/remp#949 - Fixed broken new email template page when no layout or newsletter list was defined.
- Added
SimpleAuthenticator
, which keeps plain list of emails and passwords that are valid to log in. Mailer can use this authenticator (instead of e.g. SsoAuthenticator
) to make it work without an external authentication system. - Added support for
ignore_content_types
parameter inUnreadArticlesResolver
used in generated/personalized e-mails. Parameter excludes articles of certain content types and avoids their use in generated e-mails. remp/remp#973 - Added public preview for emails (templates), accessible without authentication. Preview link is accessible in each email detail eg.: (http://mailer.remp.press/template/show/1). remp/remp#581
- Added API endpoint
/api/v1/mailers/render-template
. Returns a rendered HTML email. remp/remp#581 - Added widget for
ArticleUrlParserGenerator
. remp/remp#946 - Added demo user subscriptions in
demo:seed
command. - Added the check of cache to prevent display campaigns to users excluded from campaigns. remp/remp#833
- Fixed job unsubscribe stats inconsistency. remp/remp#993
- Job detail (left panel) could display unsubscribes for non-related newsletter lists unsubscribed along with the sent newsletter.
- Added
ApplicationStatus
component, displaying online/offline status of Mailer workers. As follow up,MissingConfiguration
component was removed and its functionality was merged intoApplicationStatus
component. remp/remp#985
0.27.1
[Beam]
- Fixed search issues on the author detail page. remp/remp#965
- Fixed missing journal dependency in the
/api/articles/unread
API. remp/remp#966
[Campaign]
- Fixed type error issue in Campaign's showtime request if they were hit directly without any parameters. App now returns correct JSON error. remp/remp#964
- Fixed yarn lockfile issue causing installations with
--frozen-lockfile
option to fail.
[Mailer]
- Added
page_url
to the response resources of the/api/v1/mailers/mail-types
API. remp/crm#1946
0.27.0
Project
- Added
--explicit_defaults_for_timestamp
switch to the MySQL docker command to avoid unpredictable behavior when creating database tables - MySQL would set the defaultCURRENT_TIMESTAMP
to the first date column of each table. Make sure your production settings match to avoid issues.
[Beam]
- BREAKING: Remplib.js is not automatically storing any query param to storage anymore. Only
rtm_*
keys and keys explicitly specified inrempConfig.storageExpiration
are allowed. remp/remp#950- This only affects you if you rely on this behavior and expect to find any query parameters in the cookie/local_storage during the visit.
- Changed scheduled commands to run in background. remp/remp#942
- Added
AggregatePageviews
command which groups article timespent/load commands. remp/remp#942 - Fixed possibly invalid aggregation of conversion data which caused time columns to be off due to the timezone issues. remp/remp#464
- We decided to truncate all of the aggregations (they're temporary, they would be removed eventually) and trigger the aggregation internally again. You might see higher load after the release caused by
conversions:aggregate-events
andconversions:process-sources
commands.
- We decided to truncate all of the aggregations (they're temporary, they would be removed eventually) and trigger the aggregation internally again. You might see higher load after the release caused by
- Added
/api/pageviews/histogram
API endpoint to get pageviews histogram for selected date range. See README.md for more details. remp/remp#953 - [Segments]: Fixed "Trying to create too many scroll contexts" error caused by the amount of opened scrolls in Elastic and loose close timeouts which could happen on selected queries. remp/remp#464
- Fixed issue with API calls generating PHP sessions on each request, causing session store to be overloaded with records. remp/remp#954
- Added support for article external ID in the global search. remp/remp#955
- Fixed account listing broken in the latest release. remp/remp#958
[Campaign]
- Introduced
public_id
row to reach unique identifications with shorter string. remp/remp#916 - Replaced
uuid
campaign's identification with shorterpublic_id
in cookies and local storage. remp/remp#916 - Fixed issue with API calls generating PHP sessions on each request, causing session store to be overloaded with records. remp/remp#954
[Mailer]
- BREAKING: Extended
IConversionsRepository
interface withgetBatchTemplatesConversionsSince()
function. remp/remp#907 - BREAKING: Proprietary Mailer classes' namespace was changed from
Remp/MailerModule
prefix toRemp/Mailer
. In the future, these classes may be completely removed from the repository. If you have previously relied on their functionality, make sure you reflect on this change and ideally copy the functionality into your own code. remp/remp#924- List of affected widgets:
DennikeWidget
,MediaBriefingWidget
,MMSWidget
,NewsfilterWidget
,NovydenikNewsfilterWidget
,TldrWidget
- List of affected form factories:
DennikeTemplateFormFactory
,MediaBriefingTemplateFormFactory
,MMSTemplateFormFactory
,NewsfilterTemplateFormFactory
,NovydenikNewsfilterTemplateFormFactory
,TldrTemplateFormFactory
- List of affected generators:
DailyNewsletterGenerator
,DennikeGenerator
,DennikNBestPerformingArticlesGenerator
,MediaBriefingGenerator
,MinutaAlertGenerator
,MinutaDigestGenerator
,MMSGenerator
,NewsfilterGenerator
,NovydenikNewsfilterGenerator
,TldrGenerator
ContentInterface
implementations:DenniknContent
,NovydenikContent
,TyzdenContent
- List of affected widgets:
- BREAKING: Handler confirming CRM user
Remp\MailerModule\Hermes\ConfirmCrmUserHandler
is replaced withRemp\MailerModule\Hermes\ValidateCrmEmailHandler
. remp/crm#1740- This conforms with the latest changes in the CRM which splits user confirmation and email validation flagging. If you used this handler in your
config.local.neon
, please replace it with the new one. - This version requires CRM 0.32.0+, otherwise the confirmation APIs would return HTTP 404. After the upgrade, make sure the API key used to communicate with CRM has access to the
Users:EmailValidationApi
API by visiting/api/api-access-admin/
in the CRM.
- This conforms with the latest changes in the CRM which splits user confirmation and email validation flagging. If you used this handler in your
- Added missing login error messages if REMP CRM is used to authenticate the user.
- Added option to identify source template by code in
MailGeneratorPreprocessHandler
. remp/remp#941 - Fixed
ProcessConversionStatsCommand
to process all conversions occurred after selected time, not only for mail job batch templates created after selected time. remp/remp#907 - Added
mail_from
into email's type options to make easier the mail composition. remp/remp#952 - Added
twig/intl-extra
extension to allow using more filters asformat_currency
etc. See https://github.com/twigphp/intl-extra for another filters. remp/remp#829
[Sso]
- Fixed issue with API calls generating PHP sessions on each request, causing session store to be overloaded with records. remp/remp#954
0.26.1
0.26.0
[Beam]
- BREAKING: Upgraded to Laravel 8. remp/remp#491
- Make sure that when including
remplib
library (built with production settings), your HTML document has defined character encoding, otherwiseremplib
might not be initialized correctly. Character encoding can be specified usingmeta
tag, e.g.<meta charset="UTF-8" />
.
- Make sure that when including
- Fixed sorting of referer stats in the article detail. The default sorting is now again Visits count. remp/remp#934
- Changed default order sequence for numeric columns to be descending first. remp/remp#934
- Fixed incorrect pageviews count bug in
/top
APIs when using filters. remp/remp#937 - Added optional
APP_TRUSTED_PROXIES
environmental variable. IP/HTTP related headers will only be allowed from trusted proxy. All proxies are trusted by default. - Added v2 of
/top
APIs. See README.md for more details. remp/remp#938
[Campaign]
- Upgraded to Laravel 8. remp/remp#491
- Changed showtime experiment to be enabled by default. This should change make showtime requests much faster by bypassing Laravel in very exposed endpoint. remp/remp#939
- If you want to fallback to the original implementation, use
rempConfig.campaign.showtimExperiment = false
in the remplib JS configuration.
- If you want to fallback to the original implementation, use
- Added optional
APP_TRUSTED_PROXIES
environmental variable. IP/HTTP related headers will only be allowed from trusted proxy. All proxies are trusted by default.
[Mailer]
- Removed deprecated column in
mail_user_subscriptions
table. - Added new hermes event
batch-status-change
to emit when mail job batch status is changed. remp/remp#660 - Added
TrackNewsletterArticlesHandler
to track articles sent in newsletters. remp/remp#660 - Fixed slow processing of batches if the target segment was bigger - added missing index. remp/remp#947
[Sso]
- Upgraded to Laravel 8. remp/remp#491
- Added optional
APP_TRUSTED_PROXIES
environmental variable. IP/HTTP related headers will only be allowed from trusted proxy. All proxies are trusted by default.
0.25.1
0.25.0
[Beam]
- BREAKING: Upgraded to Laravel 7. remp/remp#491
- All API endpoints now return dates in ISO-8601 compatible format. Make sure all code consuming the Beam API is accustomed to this change. For example, previously, date would serialized like the following:
2019-12-02 20:01:00
. Now it is serialized like2019-12-02T20:01:00.283041Z
(always in UTC). - Environment variable
APP_SESSION_EXPIRATION
was renamed toSESSION_LIFETIME
.
- All API endpoints now return dates in ISO-8601 compatible format. Make sure all code consuming the Beam API is accustomed to this change. For example, previously, date would serialized like the following:
- Added
/api/articles
list articles info api endpoint. remp/remp#909
[Campaign]
- BREAKING: Upgraded to Laravel 7. remp/remp#491
- All API endpoints now return dates in ISO-8601 compatible format. Make sure all code consuming the Campaign API is accustomed to this change. For example, previously, date would serialized like the following:
2019-12-02 20:01:00
. Now it is serialized like2019-12-02T20:01:00.283041Z
(always in UTC). - Environment variable
APP_SESSION_EXPIRATION
was renamed toSESSION_LIFETIME
.
- All API endpoints now return dates in ISO-8601 compatible format. Make sure all code consuming the Campaign API is accustomed to this change. For example, previously, date would serialized like the following:
- Fixed broken campaign comparison. remp/remp#926
- Fixed broken campaign copying. remp/remp#927
[Mailer]
- Changed calculation of subscriber values for newsletter list dashboard and detail charts. Instead of the latest value of each day, max value of the day is now used. This significantly improved the dashboard performance. remp/remp#928
- Added newsletter subscribers list into the newsletter detail section. remp/remp#873
- Changed email filter to use fulltext search for
mail_body_html
. remp/remp#595- WARNING: The migration adding the fulltext index to speed up the search can take longer than usual. Testing migration lasted ~5 minutes for 1GB of
mail_templates
MySQL table data (~100K rows). The table is locked for writes during the migration and Mailer will not be able to create/update emails during the migration period. Please release this version in less exposed time.
- WARNING: The migration adding the fulltext index to speed up the search can take longer than usual. Testing migration lasted ~5 minutes for 1GB of
- Added sorting inputs to mail source template form and use ascending sorting. remp/remp#918
- Added
code
to mail layouts. Code of existing layout was generated based their ID and name. remp/remp#917 - Added unique index to
mail_type.code
column and add unique validation toListFormFactory
. remp/remp#919
[Sso]
- Upgraded to Laravel 7. remp/remp#491
0.24.0
[Beam]
- Added
TagCategory
filter option to/top
APIs. remp/remp#898 - Fixed issue with article scroll progress tracking if
article.elementFn
callback wasn't set or didn't return any element. - Upgraded to Laravel 6. remp/remp#491
- Added UI for
TagCategory
. remp/remp#898 - Fixed filter bugs in article datatable. remp/remp#921
- Fixed fulltext search bug in datatables. remp/remp#923
[Campaign]
- BREAKING: Moved key used for segment caching from
CacheSegmentJob
intoSegmentAggregator
. remp/crm#1765- If you use
CacheSegmentJob::key()
, replace it withSegmentAggregator::cacheKey($campaignSegment)
.
- If you use
- Added API to temporary override user's presence in cached segment (next scheduled cache job loads list against segment query). remp/crm#1765
- Changed the format of stored tracking parameters in cookies and local storage. remp/remp#889
- Added option to set timeout for Beam and Pythia segments. remp/remp#899
- Removed API's throttle (rate limiting). APIs
SegmentCacheController@addUserToCache
andSegmentCacheController@removeUserFromCache
have to receive more requests than predefined limit. Will be enabled back with Laravel 8. remp/remp#913 - Upgraded to Laravel 6. remp/remp#491
[Mailer]
- Converted database to UTF8mb4 encoding. Migration can take some time according to the volume of data in the database. remp/remp#895
- Removed unused table
hermes_tasks_old
created as backup when Hermes was updated to v2.1 (seeHermesRetry
migration; commit 5fcd07ff). - Added mail job stats updating to
MailgunEventHandler
. Every suitable Mailgun event is processed and corresponding column inmail_job_batch_templates
updated. remp/remp#853 - Added
only-converted
option toProcessJobStatsCommand
to run command to update onlyconverted
column inmail_job_batch_templates
table. remp/remp#853- If you have
mail:job-stats
command in your scheduler, it should be enough to run it just once a day. - Please add new entry to your scheduler with
mail:job-stats --only-converted
based on how often you want your conversion stats to be updated. We recommend every 10 minutes. Rest of the stats should now be updated continuously immediately when Mailer receives Mailgun webhook.
- If you have
[Sso]
- Upgraded to Laravel 6. remp/remp#491