12 November 2024
listmonk v4.1.0
Repository: @knadh/listmonk
GitHub release page: v4.1.0
v4.1.0 is a major release with a significant number of improvements and fixes.
⚠️ Important: Upgrading from v3.x.x
As always, take a backup of your Postgres database before upgrading.
v4.1.0 is a major upgrade that introduces multi-user management and authentication features, fundamentally changing how login and authentication works. It no longer relies on the browser-based BasicAuth prompt and ships with a built-in login system. The upgrade automatically creates a new Super Admin user based on the admin_username
and admin_password
fields from the TOML configuration file, after which, the credentials in the TOML file are no longer needed. Read more.
What’s new?
-
Multi-user support with granular permissions, user, role, per-list permissions and API token management.
-
Support for OIDC (OpenID Connect) authentication.
-
First-time Super Admin setup UI for fresh installations.
-
Significant performance improvements to SQL queries underlying concurrent campaign processing. Performance gains of several orders of magnitude on large installations.
-
Styling improvements to UI for better UX including new tabs UI in subscriber modal popup.
-
Markdown syntax highlighting.
-
Static email template subjects are now scriptable with template syntax.
-
Support for CC and BCC in custom email headers.
-
Syntax highlighting in HTML form generator.
-
Many quality-of-life improvements, fixes, and dependency upgrades.
How to upgrade
As always, take a backup of your database before upgrading.
Binary
Download the latest binary. Stop and replace the old binary. Run ./listmonk --upgrade
. Start the app again.
Docker
# cd /directory/with/docker-compose.yml
docker-compose down
docker-compose pull && docker-compose run --rm app ./listmonk --upgrade
docker-compose up -d app db
Changelog
-
0a27de1 6c6e23b7d4b84d4d91fe59bea10877ad1 Replace type field in user creation UI with radio-button for better usability.
-
894d284 309378efd8b9e18ffd067579df6869c3f Fix GET subscribers not filtering by list permissions. Closes #2129.
-
8b213f0 9965668a52fbec7eb0848e1b76743e848 adds property
description
toList
andNewList
, updates docs (#2150) -
18edc65 3a8cb7d8711f272bda2ab44053985fe50 Add v4.1.0 migrations.
-
abe09d6 7edbdb88f6583a42664bf9d9bf4cb9159 Refactor OIDC redirect state to have nonce validation. Closes #2138.
-
b995cce 5d12973a9b827895d10afab1ffb94ba18 Switch login form URLs to relative URIs.
-
cb8b54f d00e8fad997f4ce566b10126e3d4e24ec Add ForwardEmail (provider) bounce integration (#2016)
-
0392582 1fb992b57ae208d1d6f1aef876bfe14bd Add % on campaign analytics pie chart hover (#2124)
-
c35ed68 759946c3ec1674768060d6b7e8a41c095 Fix quotes in JSON API req example in docs.
-
e182fb5 660da47dd1923133bc887504f9dabd783 Fix the delete/blocklist by SQL query example in docs.
-
1ac9ccb b8ba10d280c72e54f83bda7cab4049561 Reject blocklist-by-query API requests with no query.
-
ac5e101 58a0639bf59480caeb7df8c2fa2ad2d4c Reject query-by-delete API requests with no query. Ref #2122.
-
d8a394d 0f45d76051905d3fb6e89c6efbc658979 Update it.json (#2134)
-
68df637 73dc1cfcd3703cba288777435f53172a4 Update curl example to remove username/api_username confusion. Closes #2136.
-
2c02e01 aaa3a4908ac1d2e4be9dcfd7e773f3708 #2114 - Fix issue of wrong platform used during docker build (#2123)
-
599147c 1029cf27c3a6a9298eaf1ff1006809ca7 fix: favicon markup (#2115)
-
be9fe9c 7a2a9936c980364e571cb412b3af59a8d Update hu.json (#2102)
-
5abf004 655ad457e0fe319ce18487c73957b36b3 fix dummy detection for OIDC client secret (#2116)
-
cf7d664 4f1df0dc19d4b2a1067a8473f53932d3b Fix broken individual list GET API. Closes #2117.
-
ca73e4f 1dc71a05591e4410b5bda1270e06727c5 Change wording to ‘one-way mailing list’ on the static homepage.
-
998b6e3 00af688b27ef02434313d0fc67447771b Remove version info from docker-compose docs to avoid confusion.
-
f6ed13a 6a968c0f5e362721c67c9004052f19598 Add explicit instructions for older docker-compose files.
-
319053d d7a908e45cf85c9cc78826bed8d786e15 Update release link on static site homepage.
-
f5dfb0c f62f1097545ff315a5c1d9ac540d54b9e Remove root URL from login setup form to prevent bad redirect on first install. Closes #2103.
-
136d9d1 fa9e69bec8c8c3de2720609ad2f704aeb Don’t fail on chown in Docker entry script. Closes #2104.
-
8ef71aa 7a4d85f801a7ae5d592bf3de3888eaff9 Fix docker-compose curl command examples.
-
120d275 75b66e314db9d13f4dc52369ab4ac15f1 Update release link on static site homepage.
-
3894571 d1ac0b5baa5bcb15a173e4e1020d7a113 Remove obsolete demo file reference from Docker build commands.
-
0f2c679 e5b7476b246a8b4a5a3854b55e7abff31 Remove deprecated goreleaser flag from GitHub action workflow.
-
11cb3ce 8908aa144a77f87761541765d1301e0c1 Update gorelease Go build version to latest.
-
79f94d3 5287367deb8867fa3e0b10ee795a1272a Update gorelease command and remove deprecated flags.
-
afd5db9 94a928d57f2844f3571bf29a657bbfc56 Fix incorrect image tag in docker-compose.
-
fd04fc1 c3ab1d7e7c9ab5f21e3161c8e4d2747be Refresh i18n language files and add (GPT 3.5) auto-translations for new strings.
-
4eefd42 15e785f59ab7dec7c7d5fe4157e1c776f Remove redundant campaign manager config validations (#2095)
-
9bad699 a5c1633976e49ff4dd4b8186a35795426 Bump google.golang.org/protobuf from 1.31.0 to 1.33.0 (#2083)
-
d35dbb0 f55119b856a68244620553053aed8308e Bump github.com/go-jose/go-jose/v3 from 3.0.1 to 3.0.3 (#2084)
-
b8ae4f6 f9e968f53baf756b08535a2562e9e7ff4 Change v4.0.0 migration script to not auto-generate credentials.
-
7fcc6f7 1e29b0e0866bc8cc746430064b572cb71 Simplify and refactor docker-compose.yml and remove install scripts.
-
24bab75 996235b0954005aeb379792d38ad3c515 Add first time login setup template
-
178fa94 8803176524c03826b4278d697291004e0 Update user login time on password login.
-
5b3d6e2 be0af4b24498f537c32d661aecec01ded Add first-time Super Admin setup UI on fresh install.
-
1e4b3a2 6f2c307ad21a0945d23e614e5681a3546 Separate get individual user and get all users queries.
-
87db0d5 96b1c1860e76fa90ccfe0d28face4b70d Fix Cypress admin form test to support
rendered HTML. -
25cdb7b 18eb41821d76e99ae98929e2b5d714b96 Pull e-mail from userinfo endpoint if OIDC token endpoint doesn’t return it.
-
a37d414 86940723fae278c0ff5f87a350c2e6156 Add missing GH token to Swagger docs workflow.
-
9760d19 b4dbaccb0c4aeeb5b2bbd1758038ab720 Fix button focus/active styles on the UI.
-
69de02a b6dbc0aecf1869bffe6e3adb3ad654735 Restyle and simplify subscriber form UI with tabs.
-
b5382b8 1a166e1a4c512e4d360be08c32d7d88f0 Add user UI frontend tests.
-
b2866b1 f122a10009ea55c31f548aac9f32001e9 Apply minor style changes and improvements to modals.
-
74e77bd 6e0eb5224759e2ea26cc0761e5ba4e9f3 Add names to user form fields for testing.
-
3fdf6fe 31e6a4a383991436ecb80c974bd11b1d6 Add individual list permission checks on admin UI.
-
887d582 3f47ff218fd1b904f57be820fafd9320c Fix get-users query to return all users when no ID param is given.
-
1075485 ca984d372d452a2258b1825a5f17ca5de Merge branch ‘fix-user-query’
-
e7109da af3a34d613b05133f23bdb2608bf6e10d Fix missing email validation in OIDC exchange.
-
7847167 145d6b1d9a75e7453284cdf071455d4f6 Fix incorrect id logic in user selection.
-
13222b5 eb9a3e5cb0e6fe5401036d687a35573d4 Fix random timing related Cypress test failures (huh).
-
29aa977 e6a2b865a7087cff7e0a398b1866f6550 Expand search input width on subscribers UI for smaller screens.
-
354fb30 0f7ba7fab1ee0aa0f02152d40bc30c241 Replace hardcoded perm literal with const.
-
6258fd5 ceef5052a6df003e4b2395c7f01e4aa48 Increase settings UI poll interval to reduce broken requests.
-
30be235 e2ab87697d563f0adc8fef8d72a8f3ce6 Add microseconds to log lines.
-
0f785b7 1736333bde1dc2aba96fd2d90bea83e57 Fix Cypress tests to work with new auth and other UI changes.
-
8c07a2a 1c492138b337ca26d3a82d1d23fd2f2fd Fix broken status in subscriber export query.
-
71f9e86 1e4189ed79057ee548c6a9460f4e25187 Show OIDC URL warning only when enabled on the UI.
-
03744e0 dded12f2781b3ddcea9cd6bb764bce610 Fix broken settings references on forms page
-
d02a9d6 2b50f0cd373b5ed49c73eb8ea824cdd49 Update it.json (#2085)
-
6fe47b2 e61e52190496eef8bc183cbecba852373 Merge pull request #2082 from knadh/multiuser
-
39463d7 19db4efb62e2d71e6465d90f5541c6900 Refresh i18n langauge strings.
-
cc71899 e86465faf831d431ce8b286b7f0087f89 Add non-prod ODIC URL warning on admin settings UI.
-
af06d2e 462eb30add90b3ae39de34abdcd3e6b54 Upgrade prismjs.
-
f226aca a231d426562692cf6ce61337ccf765e92 Add missing auth permissions file.
-
cea65c0 09d3b6675ae5a92bf507f233c502db541 Fix and refactor subscriber batch fetching in campaign processing.
-
ee119b0 08849d6584be119818d53b5956b9a2d53 Fix import not ‘unsubscribing’ list subs for already blacklisted subscribers. Ref #1931.
-
a268341 96e5ef7419459c8803154f15c24f19f51 Refactor subscriber APIs list permission filtering.
-
d9b4bae 0a8c73b6f8540b839eef83d540eb96663 Rename migration to v4.0.0
-
0331e3c e4e91db06ff735adf4984cc5d0ffb2dd2 Sory users by
created_at
always. -
eb47e80 c359d46c8eacec2dab2678a2055b64670 Fix list auth by adding an explicit ‘getAll’ flag to query.
-
3671a52 54eedec6fede8636f22641ac86d40e99c Update profile UI with new user data structures.
-
ae2a386 193193bec2a7cf0d816bf786ee1782484 Add support for “list roles”.
-
12a6451 ed01db7df66eda3f85f8e6793b14550e2 Add list permission check to subscriber calls.
-
d74e067 9617af7df4273bc2308dd1e887efc56d4 Add per-list permission to list management.
-
982e8d8 320cbddc2ed1a1a7db4862106978d8506 Fix post v4.x.x upgrade warning on admin UI.
-
f8e6eaa 2d915b30d92acad423d25914f43650fe3 Add docs for v4.x.x multi-user upgrade changes.
-
26c6db0 a1354b35d68bcd547ab56594c4bd442b8 Remove admin user/password from sample config generation.
-
1649b3b 135f03dacc55588d4357322d5dec4eeba Fix logic for preventing sole super admin from being wrongly updated/deleted.
-
bf00fd2 951fce2d7c7ffadeb3f0670cbe91683cb Add support for setting admin user/password via env on
--install
. -
68870ad 6b181cad058c20833c39a4f8f7e99223b Fix update check looping on failed HTTP requests.
-
2da920d 634f50a4e2ab78350f56fd91a525075b5 Add legacy TOML user+password to API auth on init with warning.
-
5024ded 763a7234f8dfddf0e93f5399de916d793 Add API user authentication to auth module with caching of creds on user CRUD.
-
0bea998 9ec77ff9e91e3a594a49535ffc7d8101d Fix role selection on in user form.
-
e6ec1cb 9b3dd52da9dfc858824612e31ec008fb6 User legacy (TOML) admin credentials as API creds for backwards compatibility.
-
b7155a4 5e41348dc73f32acb951a0a9b45e4e4a3 Fix admin UI legacy user warning.
-
b0f6c22 baaf51c07757e43115eb3e1f5f22d10d2 Fix broken subscription status tag on subscriber form UI.
-
1e875af a67def9abcece82e7ecd818e10a9479ca Add OIDC auth hooks (init, callback, session) and finish OIDC support.
-
7c92b65 4c724067f37554b8f376a6fcdc9073478 Add
avatar
field to user schema for OIDC avatars. -
834f541 2639125e751a21c75c690e5de8506d7bd Update OIDC auth URL in login form.
-
90591fc 57e88905c7a56a58f9d41e4a943913927 Apply OIDC/user profile related changes to admin UI.
-
193f8a8 66bec54a5912520411ea4ac4d2d176f9d Add one-click provider config shortcut in OIDC settings.
-
4eabd96 7d8192ec7d3249244bb5f9713b662c978 Refactor update check.
-
a8c1778 0f905f8d8ba99a282164f90510b9408c5 Add warning on admin UI for legacy creds in the TOML file.
-
ee90496 df91dff86a87523c3b66e2ccc2b4d32db Apply minor linting fixes to role form.
-
72c7676 ce5ebde534b6cff74b29ab8cab576d7e7 Add cookie check hack to auth for v3 -> 4 browser BasicAuth session issue.
-
17b5cc1 77457b2f11adc6b0e08a92835061fc4c2 Sort roles by created date.
-
d52eac0 948f1c7210dd6e71606b17fd79f63f6fa Update user APIs and queries to embed role + list permissions.
-
612c1d6 eac0f6d907381f351bbd088abc0825596 Add per-list permission management to roles.
-
19527f9 7ebc7b87a74108c2ad64fa47153a4b0ac Add new fields to
/api/config
to remove/settings
dependency in camapign UI. -
f69aa30 0b420a08e536434cfbe5ea816d525200c Move User/Roles nav items under Settings.
-
4a69f0a c5b00efe627b7c5951a648dba95f717c4 Minor refactor to subscribers UI. Remove superfluous status column.
-
474f935 59f8aa4f12d5ebee0b2e03121bebbb88c Add permission checks to admin UI to toggle visibility/functionality of components.
-
dd9612b 1ed57ada5d282851a52b1a9982cbbfb02 Add user profile based permission check in auth middleware.
-
09145b4 abe001fcbda07f7d14108f3cff1895465 Fix profile edit page.
-
32d5823 dfe496ae49aa0438fd39d5c013998f88c Refactor ‘super’ user type to a pre-defined super admin role.
-
8126eec 358f8cc443941faa55895d25c94e343c3 Restyle tags on the UI.
-
d4e4c5f a9982979cfe9814200c4dffb0291a7aaa Add granular permissions and role management to backend and admin UI.
-
2000e9f a122e9bc4548ca0405fafcfb6d7f055b5 Style and add OIDC logo to the login page.
-
7bb14de 42e0fb6c101ccd54ff1526c8d0edff397 Upgrade simplesessions to v3.
-
313b2af 6cf0da57e3a01451b1214c6d7d1652c02 Make user avatar field nullable.
-
4997c10 b97fa7340428fbb8fbe2b2ddf5bcf44d6 Add user profile APIs and update UI.
-
6a34ebc 6297cd7949672d3ea999f5a5d53094a32 Update login credentials doc in sample config.
-
a6e06d9 2f808ccc8c1e0d8ba0584b41ebac9c064 Refactor migration for the latest version.
-
906e0f5 7b61d9063c9c7e5bfd3369ccd77cd1e16 Refactor handler groups and add mising auth features like logout.
-
57ac9dc a4b62e46c7a868876266be57964fc9d1e Add public login page and auth middleware and handlers.
-
1516bf2 16ffe7ec1132d720d06b9954fa914e4ba Add
api
type user. -
bf0b500 bb01e8112b3a9d9f93ea680bb4d852141 Add API token authentication.
-
10f1c38 996af3d52dec2f9752fed63e4db102ec7 Add missing user UI files.
-
0968e58 76634b75757b8d8cc31fcc4365125daaf Add user/password login handler.
-
435d6d5 169525be51d4c9447d1fe1060de54d805 Add create/add/delete user management UI and database schema.
-
4648f91 22d65fcbafea6b47e8cb1b5b581306b35 Fix bug in OIDC cookie check.
-
83e4f5d ef475d0aa4e294485493e941ad6c26887 Add migrations for OIDC db fields.
-
f8b3ddb 5ee26380e5868575428fef28722473520 Refactor the
oidc
package and separate out handlers. -
8ca95f6 827ce22a25ab7f0d938b1e4558cb1ad46 Refactor OIDC middleware handler logic.
-
e406b25 16afc259b2a47ace586924d49295ffb5a Add a settings UI for OIDC.
-
1b7128a bf2367697ee729dee706c92b85cd07021 Implement OIDC
-
5074987 544583f606cc16e76976f148169fa3d2f Add Markdown syntax highlighting (#2068)
-
b0f3891 6291acdb4b12dcb7ebdfdf2496ebf4069 Make import overwrite off by default and add warning (#2078)
-
39e1a03 44eb78634c78f5588e7c1d2c405ae776b misc:add word wrap to HTML editor (#2081)
-
36cf85b 4996edf83f25db741049f7a8bb9a303cb Fix Catalan translation and add Esperanto. (#2075)
-
58b13af a294e191767e229b1805c0ff2beb54566 Fix tx template not being cached on update. Closes #2061.
-
98fed80 b8000cba83665f0957ba446c04b593575 Slightly improve docker-compose feedback (#2054)
-
5e81d9e 1f56ebd07fedf606031d3727de9b02ae1 Fix typo in German translation (#2064)
-
560789d 506109f739bf89581956b4d18f120a719 Bump vite from 5.0.13 to 5.1.8 in /frontend (#2047)
-
aa168f0 f074f288d1c54ed820bfcb8406189618f Bump rollup from 4.9.1 to 4.22.4 in /frontend (#2050)
-
16f4dfd 3e9dd5b1619734333dfeb2cf37607295d Fix incorrect bulk blocklisting behaviour (#2041). Fixes #1841
-
550cd3e 1f87f6740ca85cea7363ccb4ecf43fe78 Update README.md (#2034)
-
06e4983 1ddf036923423c95e85dfe777f532b5e5 Fix tag queyr param in lists.md (#2033)
-
51e3f17 89bade0c416e8bea8b3b1eccef39399b7 Fix pre-confirm status not working on subscriber update. Closes #1927.
-
139267d 57ef16dcf0ed26edc9564657a39b95823 Tweak docs to highlight one-way mailing lists. Closes #1931.
-
d7fe13c 4b90e55821fc21fba2bec5fce8203ed37 Fix typo and formatting (#2028)
-
1819480 15366c2111013f7121806217a097587b5 docs: suggest an FQDN in docker compose file (#2019)
-
c812caa d1a3ecf685aa545275e5b55d550628ebc Fix syntax error in GetBounce method (#2007)
-
242c90d 09537c6087ad6761b7c924f07cb468b88 updating campaigns api doc (#2011)
-
e6bf369 1c7f83376199fcfeae9ba4fa1b68d4d4c adding listmonk-newsletter sdk link (#2013)
-
55e81f0 df69840734c69a04c744ad9d93b6d312b Bump axios from 1.6.2 to 1.7.4 in /frontend (#2006)
-
d28e40e e5cc4787a720f9cdaca039443dd210252 update subscribers api docs (#1989)
-
579fa71 eed37c371063177d39483ca1795b1ab2b docs: Add Zeabur one-click button (#1994)
-
edc9f73 82f142933a886e6eaa4c4e27f513f6d95 Fix typo on the website.
-
d2cd9b1 69ef75dba17cd79dd2cb4c257ce3e35dc chore: Deploy to Elestio button updated (#2005)
-
fb090f2 38366cd37f91825005c6256ea08d3d8bf Update querying-and-segmentation.md (#1983)
-
6353fb6 4912dbf3688a91b3932d15a27a035994b Add bounces API link to the docs page (#1981)
-
679457c b1271d8f906890001e67dc45d547ba804 Ensure unique upload filenames by adding a suffix (#1963)
-
46187b9 d2596098d276d5df7b9e0a2f1a57197f8 Add public list API doc (#1976)
-
41f01d5 a182a845d067f69b83f069c5f25a97101 Add docs for bounces api (#1978)
-
e4dcb06 6d9ec5991c5cc27a6f877c76fbad8a4b1 Update API docs of media with missing api (#1975)
-
1e6e97e 750882e386dce095737dc78c9b53ccc86 Add validation for filename with non-ASCII chars in media upload (#1973)
-
01f7450 bf0b335f59df144ea59dad383a567486a Clean section in config doc.
-
ebac8b3 b4c844cbf2226c37179df4f1a7b9ed2b8 Fix broken campaign clone with deleted lists (#1966)
-
d284e35 10296ae9316251b543dd18c838972315a Update configuration.md +performance, batch size (#1967)
-
c334d2e 6e181a75578ec58ae862fcf47edb3836c fix #1950:Export of unsubscribed users exports all users (#1965)
-
fedc515 14dafb818a333e70e17e54307be8a7cf3 Fix incorrect count in subscriber query when there are no results.
-
45f1f80 a766913204205846cf26c018e0cbd3c2a fix(analytics): add to and from dates to campaign analytics URL (#1952)
-
23d236f ec07ce855b5bf597c9693540380544e41 docs: send_at will error out without a Z at the end of the timestamp (#1949)
-
821b43d 74ffc892fc20c25ef32c0ea0adc02236f Add support for running Docker container as non-root user using docker-entrypoint.sh (#1892)
-
888e33e 5e31c48397ad42f5f8722fafc6fe84d72 fix [docs]: correct invalid example request of basic auth in docs (#1946)
-
326fc30 0eddcfd1d550799b082b113ca79addd38 Refactor subscription form generator to render syntax-highlighted HTML.
-
c2e7c71 3cab96060436a1596172dcf9d10563cdc Increase campaign subject char limit. Closes #1909.
-
c520337 a36f3619f9a6d89ab0fee4193e8928d72 Add issue/PR comment messages to GitHub stale action bot.
-
12f32f1 470f1aeb4b5f1ad6b738e4b726ce2f518 Set GitHub stale issue bot to prod.
-
766d62b 4a3d6c822e78fd393e322ea76c1f04eae Merge branch ‘stale-action’
-
870b3f7 fb146dea452c9a434494871ff7f483477 Add GitHub stale-action bot to handle stale issues.
-
b38f156 2ee2a065420479dc755a0aeb0e0c7458c fix vanishing attachments in campaign in more the one campaigns setup (#1936)
-
b4294c1 eea95c260b8c8baf186bcc36d43dfbaa7 fix(docker): support multi-platform builds (#1935)
-
2bda94f 5d70445031a14ac577519d2aa1e2fb325 Update configuration.md (#1930)
-
22890a1 7a121eacf57bfad92f00844a5d5639adc Bump golang.org/x/image from 0.10.0 to 0.18.0 (#1914)
-
5d5f484 94c456eafc9893069524d98e2b9216b4a docs: add important step regarding ses in bounces.md (#1907)
-
0940e81 109444a372d0bd7fd7ff2531a0527e3fd Bump braces from 3.0.2 to 3.0.3 in /frontend (#1898)
-
1ba35d5 4fb1860fa659de2fecd820dc0a29dfb94 Add one-click deploy on sealos (#1880)
-
3babd90 20e015ca3e5325256b73a98b771c8d69c parse cc and bcc from custom headers to add them on email envelope (#1865)
-
6886878 ec52a1f1e151d12ce8c913fa54492421d ci: add a compile check for open PRs (#1858)
-
c108486 0418db233c6e2ab8db25e92ecce811799 Fix syntax error in manager from a previous, simple looking PR merge. Huh :O
-
c30068d 3ea7804c7912a3b48a0b1c4b61685d76c Add kubernetes helm installation instructions to docs (#1847)
-
42ba157 904037c821d3d68c2ff66db910b9a7774 Add a note about starting listmonk without a config file.
-
c3f4379 b1709a02db18f34160ed97f4dea356025 chore: fix function name in comment (#1836)
-
e968718 935c59875b7b96279af85f20d428ef7cb Bump golang.org/x/net from 0.20.0 to 0.23.0 (#1833)
-
1bf7e36 2bf6bee23e5e2e15f8c7cf12e23860df6 Fix incorrect filter query in bounces UI. Closes #1820.
-
1d32d4c 368c19c5bada6870cdc4467b0edffac66 👌 IMPROVE: make RootURL available in email templates (#1812)
-
c48fe97 3e2f83c1a15986e8826a2aaf98879b78e Bump vite from 5.0.12 to 5.0.13 in /frontend (#1809)
-
d5cfaa9 bb333a38668a79a6ea817df23488c1f0a Remove obsolete subscriber
disabled
status from docs. Closes #1793. -
7bf9481 488d1637056e63c1f5874ac963d588ea8 Add
/uploads/
path to HTTP config docs. Closes #1803. -
e4589d6 236170231bf9962761ca768596117d774 Update pl.json (#1800)
-
124af1e e293ec2b8507c29680f35a696d6310249 Make static e-mail template subjects scriptable. Closes #1727.
-
f04798a 3299b9644479a3bbb546efe68717dd782 Add URL validation to settings URL inputs on admin UI.
-
1bd55e1 a03e22c9109487db207aad6f6eef93a69 Bump follow-redirects from 1.15.4 to 1.15.6 in /frontend (#1786)
-
3a0cf98 d2f0191b6a986b30e62df51457367e4cf chore: remove repetitive word (#1790)
-
1817bba 284d5894dc170aacb2fcc9af56a8ee497 Update templating.md (#1788)
-
d64ff73 755ca38f4c8c7c1dccd3ac3a40b084c1c Merge zh-TW i18n updates from #1741. Closes #1741.
-
7ffe1a4 972321a859746f2bbc4fce77e691c6644 Add French Canada (fr-CA) i18n translation.
-
107e6fb 8a4bca2fd0914ad40fdc1da0098c34342 Randomize archive slug when cloning campaign on the UI. Closes #1725.
-
2afac24 69e925cd49e7b051b22c09584216ce725 fix: check errors.Is instead of strings.Contains for http: Server closed error (#1779)
-
860009b 866fc27b22e9fb494f3113b052c245f28 chore: remove repetitive words (#1778)
-
ec50bef 2927c59798bdddd1281e881f46fa6d13e fix: query campaign does not search numbers (#1758)
-
21c1af0 d02372e3eaebda2c4cc44fde14799cc66 fix: empty list breaks subscriber page (#1755)
-
d9e2dce 66cccac463bc9c14cac9a018e83346a56 Update zh-TW.json (#1744)
-
d7b55cd 1473ef5d2f36f960e5c75f8b71729ca51 fix: trim config before use (#1756)
-
12ab492 701119fffa6ea18f2bd396fb718f8146f fix: use translated string (#1757)
-
fa239db 13956dc6e1c216e1f539a3be3f7990956 Update de.json (#1749)
-
51f996d 3d6ae2eaa956e1214658278074f123eb5 Fixes typo in es.json (#1751)
-
00a44c0 1a40a5ba4068c42c8efff388c439bc225 fix: easy install docker script for macOS (#1742)
-
3e06b29 b0ae0aa4158bb61f77eb967a0459420ec Add new SDK/libs page and update messenger list. Closes #1723.
-
6689b71 6d9ff3f7036025b3a213b4de83a7f8513 Update installation.md (#1700)
-
1995471 f5b7c0bb30c305b9213790f292211b991 fix: incorrect docs url. (#1715)
-
2f0f1ee da1522519eff1a8a6dc970eef946459a1 Remove arm release links from the website.
-
1edf86d f2064c4e0224dd1c1bd1decd0c3489a4a Update website with the latest release.
New Contributors
-
@abhinavxd made their first contribution in https://github.com/knadh/listmonk/pull/1715
-
@paulocr made their first contribution in https://github.com/knadh/listmonk/pull/1751
-
@Biepa made their first contribution in https://github.com/knadh/listmonk/pull/1749
-
@Sedna1125 made their first contribution in https://github.com/knadh/listmonk/pull/1744
-
@tgolang made their first contribution in https://github.com/knadh/listmonk/pull/1778
-
@mkadirtan made their first contribution in https://github.com/knadh/listmonk/pull/1779
-
@ericbegin made their first contribution in https://github.com/knadh/listmonk/pull/1729
-
@availhang made their first contribution in https://github.com/knadh/listmonk/pull/1790
-
@imklau made their first contribution in https://github.com/knadh/listmonk/pull/1800
-
@violoncelloCH made their first contribution in https://github.com/knadh/listmonk/pull/1812
-
@largemouth made their first contribution in https://github.com/knadh/listmonk/pull/1836
-
@th0th made their first contribution in https://github.com/knadh/listmonk/pull/1847
-
@usverger made their first contribution in https://github.com/knadh/listmonk/pull/1865
-
@yangchuansheng made their first contribution in https://github.com/knadh/listmonk/pull/1880
-
@bhartshorn made their first contribution in https://github.com/knadh/listmonk/pull/1907
-
@frankievalentine made their first contribution in https://github.com/knadh/listmonk/pull/1930
-
@zevszym made their first contribution in https://github.com/knadh/listmonk/pull/1936
-
@Prachi-Jamdade made their first contribution in https://github.com/knadh/listmonk/pull/1946
-
@lmmendes made their first contribution in https://github.com/knadh/listmonk/pull/1892
-
@iloveitaly made their first contribution in https://github.com/knadh/listmonk/pull/1949
-
@admoya made their first contribution in https://github.com/knadh/listmonk/pull/1952
-
@keshavg2 made their first contribution in https://github.com/knadh/listmonk/pull/1965
-
@Bowrna made their first contribution in https://github.com/knadh/listmonk/pull/1966
-
@kaiwalyakoparkar made their first contribution in https://github.com/knadh/listmonk/pull/2005
-
@pan93412 made their first contribution in https://github.com/knadh/listmonk/pull/1994
-
@flow6979 made their first contribution in https://github.com/knadh/listmonk/pull/2007
-
@eastonman made their first contribution in https://github.com/knadh/listmonk/pull/2019
-
@vnoitkumar made their first contribution in https://github.com/knadh/listmonk/pull/2028
-
@knpwrs made their first contribution in https://github.com/knadh/listmonk/pull/2033
-
@bish0polis made their first contribution in https://github.com/knadh/listmonk/pull/2034
-
@j-maas made their first contribution in https://github.com/knadh/listmonk/pull/2064
-
@xeruf made their first contribution in https://github.com/knadh/listmonk/pull/2054
-
@enricpineda made their first contribution in https://github.com/knadh/listmonk/pull/2075
-
@rk9595 made their first contribution in https://github.com/knadh/listmonk/pull/2081
-
@albanobattistella made their first contribution in https://github.com/knadh/listmonk/pull/2085
-
@abhinandkakkadi made their first contribution in https://github.com/knadh/listmonk/pull/2095
-
@pbence made their first contribution in https://github.com/knadh/listmonk/pull/2116
-
@ovari made their first contribution in https://github.com/knadh/listmonk/pull/2102
-
@salim-b made their first contribution in https://github.com/knadh/listmonk/pull/2115
-
@Dygwah98 made their first contribution in https://github.com/knadh/listmonk/pull/2134
-
@shaunwarman made their first contribution in https://github.com/knadh/listmonk/pull/2016
-
@smoebody made their first contribution in https://github.com/knadh/listmonk/pull/2150
Full Changelog: https://github.com/knadh/listmonk/compare/v3.0.0...v4.1.0