Releases: knadh/listmonk
v5.0.2
v5.0.2 contains an important security update which disables the env
and expandenv
Sprig template functions preventing accessing of env variables from templates. This affects v4.0.0 - v5.0.1 installations that have unprivileged users in a multi-user setup.
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
- d27d2c3 Remove dangerous tpl funcs in Sprig that's enabled by default.
- 6fc6c1e Fix Vietnamese translation issues (#2487)
- d6f5292 Fix subscribers unsubscription status being reset to confirmed on save (#2517)
- 8b8358e Add Nodion Deployment Option (#2518)
- 3f39508 updates simples3 to latest version (#2520)
- d027cb5 Add kloudbean hosting link to static website (#2508)
- bf502ba Update release details on the static homepage.
v5.0.1
v5.0.1 is a bug-fix release on top of the major v5.0.0 release. It features the addition of long pending features such as the visual drag-and-drop e-mail builder, per-campaign SMTP selection, and numerous other fixes and improvements.
What's new?
- Visual editor and templates
- The much requested and awaited visual e-mail builder and template editor is now integrated, with one-click conversion between formats. Thanks to @vividvilla for the big PR integrating @usewaypoint/email-builder-js
- Campaigns:
- Replace CodeFlask with the more mature and robust CodeMirror for a much better code-editing experience (HTML, CSS, Javascript, Markdown) on campaigns, forms, templates,and settings UI.
- Ability to preview campaign archive view.
- Make paused campaigns editable and allow unscheduling with new
Unschedule
button. - UX improvement that automatically switches scheduled campaigns to
draft
whensend_at
is removed. - Add format/content type selection to the first screen on campaign creation.
Ctrl+S
short for saving campaigns while working on them
- Security:
- Campaign viewing and management are now filtered by a user's list permissions and now use the new new
campaigns:get_all
andcampaigns:manage_all
permissions. Important: This is a behavioural change from v4.1.0. - Disallow private list UUIDs on public subscriber endpoints.
- Make OIDC provider name on the login button configurable.
- Add
get
list permission check to bulk subscriber list management. - Proper enforcement of the
subscribers:sql_query
permission with SQL query analysis and table allow-listing. Addresses #2412.
- Campaign viewing and management are now filtered by a user's list permissions and now use the new new
- SMTP & e-mail:
- Name SMTP servers and select an SMTP-server per campaign.
- Add List-Unsubscribe header to opt-in confirmation emails.
- General UI
- One-click
Copy
button on subscribers and campaigns tables for copying names and e-mails to clickboard. - Checkered bg on media thumbnails to visualize transparency.
- One-click
- APIs:
- Add new search param to paginated API responses.
- Introduce LISTMONK_ADMIN_API_USER for installation.
- Others
- Major cleanup and restructuring of the codebase for better maintainability.
- Upgrade of various dependencies .
- Many other small fixes and improvements.
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
- dc466fc Fix quotes issue in
TrackLink
regexp. - 70fe7cb Bump vite from 5.4.18 to 5.4.19 in /frontend (#2497)
- b0ecd74 Add OIDC SSO tutorials to docs for Keycloak and authentic.
- e49253b Fix name conflict in frontend JS util lib.
- 29b2766 Add missing requirements.txt to docs. Closes #2494.
- 71ae2bb Fix scheduled campaigns not finishing. Closes #2480.
- 86f808b Allow
@
in usernames. Closes #2478. - 4da91a0 Fix broken
TrackLink
regexp. Closes #2448. - 03285ab Display detailed d:h:m duration schedule on campaigns page. Closes #2460.
- 3895fbd Fix race in selected template reverting to default on the campaign page. Closes #2461.
- 9540d49 Fix subscription status filter param not being picked up on subscribers page. Closes #2447.
- b04fe6b Fix bounces not being sorted by
type
field. Closes #2444. - 2e56322 Fix incorrect query check in bulk subscriber actions. Closes #2491.
- 00a7eff Enforce lowercasing of email in user creation. Closes #2482.
- 4a132e0 Fix broken template funcs in visual campaign update.
- f687ac8 Fix incorrect order of translated day names in Hungarian locale (#2485)
- ae55e64 Update Dutch i18n (#2449)
- 85ead71 docs: add listmonk and forward email for secure newsletter delivery guide (#2440)
- 6336ec4 Update release details on the static homepage.
v5.0.0
Skip this release and upgrade to v5.0.2 instead for multiple fixes (UX bugs and a security fix)
Changelog
- 3b8a8c2 Add email-builder/dist to .gitignore.
- 8902320 Update screenshot on README.
- a7085cb Update homepage.
- 11f52ee Switch migration version to v5
- 47e8f81 Default
body_source
to null instead of empty string in non-visual campaigns. - 925cdf2 Add visual template and new permissions to docs.
- 1599957 Add and auto-translate missing i18n strings in all language packs.
- db81dc1 Remove default dummy admin notification email settings.
- 9de19ea Fix Codemirror Cypress tests in templates and form pages.
- 92fc646 Update sdks.md: add client for java/kotlin (#2426)
- 81b62a4 Fix race condition in immediate campaign pause-start actions.
- d3c8eca Upgrade Go deps.
- 0dc29b7 Fix CSV example on the subscriber import UI.
- 953deef Hide 'New' and 'Save' buttons on the templates UI if there's no manage permission.
- 7791327 Make
Must
config variables non-Must
so that the app doesn't panic on their absence. - 8fc3d27 Merge pull request #2423 from knadh/dependabot/npm_and_yarn/frontend/email-builder/vite-5.4.18
- 3dfdf48 Merge pull request #2424 from knadh/dependabot/npm_and_yarn/frontend/email-builder/babel/runtime-7.27.0
- 12bc798 Make OIDC provider name display on login button configurable. Closes #2211
- 8885437 Bump @babel/runtime from 7.26.0 to 7.27.0 in /frontend/email-builder
- 6707b63 Bump vite from 5.4.10 to 5.4.18 in /frontend/email-builder
- 5477c16 Merge pull request #2373 from knadh/feat-visual-editor
- ed700d7 Add a
Preview
option to the campaign archive tab. Closes #2245. - b67fc5e Replace
CodeFlask
code editor withCodeMirror
on the UI. - 53d7929 Prepare first RC.
- ffbda01 Add sample visual campaign template on install and upgrade.
- 445d7e5 Fix
clone campaign
by fetching campaign body on clone. - 1559c55 Add visual editor Cypress tests.
- ded0fcf Fix broken visual template cloning on the templates UI.
- dcdef8e Add format/content type selection to campaign creation UI.
- d3da0be Fix `test campaign' sending wrong template for visual campaigns.
- 5207dff Fix visual editor change event/init/import sequences.
- 968b366 Stop fetching bodies for all campaigns and explicitly fetch for visual campaign import.
- 20e4b10 Fix DB state issues in visual campaign cloning.
- f4c0e66 Refactor 'media upload' integration in campaign visual editor.
- 3aba2b0 Fix frontend/email-builder Makefile build steps.
- 343d405 Add Ctrl+S campaign save shortcut and add Ctrl+S and F9 to richtext editor.
- e4e735e Update tsx formatting in email-builder.
- 503e985 Add support for converting all types to visual editor blocks.
- f1fbadf Fix incorrect template states in DB in campaign creation and broken preview.
- cee2589 Move
email-builder
src from/
to/frontend
. - 110345d Refactor and simplify state management in campaign editor.
- fca5ec5 Change visual editor UI language.
- 7786b18 Add DB migrations for visual editor.
- c1f81cf Fix compatibility issues with
master
. - 82e2b70 fix: Move visual-editor to iframe so that CSS styles are isolated.
- 4a524c9 feat: Integrate media selector to visual editor and add minor fixes.
- e6f08a0 feat: Inject email-builder instead of loading it as ES module
- ae98280 feat: Integrate email-builder on campaign/template editor UI and backend.
- 5a0980e Add on-hover one-click
Copy
button to subscribers and campaigns tables UI. - a85e467 Add missing charset for numbers in TrackLink regex. (#2404)
- fb52700 Remove
GET /api/settings
dependency on the Lists -> Forms UI. - b44ea0c Merge branch 'fix-sql-search'
- 75aad8e Add new
search
param to paginated API response structure. - 29591c1 Add
get
list permission check to bulk subscriber list management. - fca8d6d Bump vite from 5.4.17 to 5.4.18 in /frontend (#2416)
- 4b805f8 Fix broken
subscribers:sql_query
permission. - 375e385 Bump golang.org/x/net from 0.36.0 to 0.38.0 (#2413)
- 4d8c8cd Update installation.md (#2405)
- 5971bc4 Fix Raw CSV example on import UI (#2392)
- 562e52c Introduce
LISTMONK_ADMIN_API_USER
to--install
. Closes #2314, #2322. - b3e6b09 Bump vite from 5.4.15 to 5.4.17 in /frontend (#2391)
- 0826f40 Remove repetitive URL param
:id
validation and simplify handlers. - e6d3aad Add ability to wait and healthcheck for backend app in Cypress settings tests.
- 78366ab Clean up main initialization to remove
app
interdepencies in init. - 8848922 Remove superfluous
consts
dep in init functions by separating URL consts. - e2f24a1 Turn
notifs
into a special stateful global singleton package, removing clunky deps. - e327ebb Move all HTTP handlers directly to
App
and remove the redundant in-between layer. - b3d46a8 Refactor system notification callbacks into a new
notifs
package. - 00c858f Refactor all HTTP handlers and attach them to a single struct.
- 007f4de Fix a number of cosmetic inconsistenies across handlers and functions.
- fcf2449 Replace awkward auth user object access in handlers with an explicit func.
- 17998fb Refactor user auth models and permission checks.
- 5c78506 Refactor superfluous list perm check middleware into standalone function.
- a271bf5 Introduce per-campaign filter permissions. Closes #2325.
- a5f8b28 Fix inconsistent behaviour in campaign scheduling on the UI.
- fbc27ae Refactor UI time diff display function to prefix '-' on past dates.
- 92e5d63 Fix various static-check/idiom warnings.
- b18c7ad Fix incorrect loading spinner on the Lists UI. Closes #1822.
- d1c964d Bump vite from 5.4.12 to 5.4.15 in /frontend (#2379)
- b8f50ea Add support for domain allowlists in addition to blocklists. Closes #2230.
- 6efb6e7 Upgrade
smtppool
tov2
and add support for concrete SSL options. - e4a18da Remove forcing unique filename on all media uploads.
- ef8f319 Remove obsolete language key and refresh i18n files.
- 9224e34 Update i18n refresh script to remove deleted base keys from all other files.
- 5f1b676 Remove ASCII-only restriction on media filenames. Closes #2277.
- 0be7a79 Fix broken log rendering on importer UI.
- 1b43e1a Add minor i18n Hungarian language pack fixes (#2375)
- 06c2f3b Add Nuxt.js module to Supported Libraries Lists (#2371)
- 473f942 Add i18n Hungarian language pack fixes (#2370)
- 7d3e6e6 Fix too greedy TrackLink regex replacement. (#2355)
- 79f8b60 Updating documentation to reflect AWS Console changes (#2365)
- 625f616 Change the docker-compose example to bind Postgres locally. Closes #2357.
- de9a8ea Add Bulgarian i18n translation (#2349)
- f310131 Update Go version to v1.24.1
- d43ac10 Tidy go.mod
- f34551d Bump golang.org/x/net from 0.33.0 to 0.36.0 (#2348)
- 2005e7a Bump github.com/go-jose/go-jose/v3 from 3.0.3 to 3.0.4 (#2346)
- bc5b817 Bump axios from 1.7.9 to 1.8.2 in /frontend (#2347)
- a986961 Disallow private list UUIDs on public sub endpoints. Closes #2296.
- 8dc5bc2 Bump prismjs from 1.29.0 to 1.30.0 in /frontend (#2345)
- f8d07ad Fix DELETE list documentation. (#2335)
- 06768ba Fix ru i18n lang (#2330)
- e649cf6 docs: improve clarity and consistency of user-related translations (#2324)
- d3a417d Fix typo in function name.
- 2defef3 Refactor SMTP name to always have
email-
prefix for consistency. - 24af0bc Update ca.json (#2303)
- d055cc5 Add support for selecting SMTP per campaign (#2290)
- 756e391 Fix typos in subscribers.md (#2302)
- 61d7a9d Update cs-cz.json (#2293)
- 2f5ab4c Display filename and milliseconds in timestamp on the logs admin UI (#2280)
- ad162c2 Bump vite from 5.4.11 to 5.4.12 in /frontend (#2268)
- 86f9ad0 Add Norwegian Bokmål (no.json) i18n language pack (#2289)
- d0321ba fix: typo in callout under the settings page (#2283)
- c3069e5 Update Finnish translation (#2270)
- 672d8ff Merge pull request #2269 from s-en-o/patch-1
- 1446fbb fix(static): no matching closing anchor tag
- 7153777 Merge pull request #2266 from vinitparekh17/patch-1
- 7c952e7 docs: removed duplicate line
- afa717f Upgrade smtp-pool lib fixing non-FQDN hostnames. Closes #2146.
- ff19a34 Fix bounce meta JSON overflowing in the table on admin UI. Closes #1797.
- 0e49a4b Merge pull request #2264 from knadh/edit-campaign
- 3d383cd Make paused campaigns editable.
- 5ba0adc Automatically switch scheduled campaigns to
draft
whensend_at
date it removed. - 61c6b7e Add explicit
Unschedule
button on campaign UI. - fd31ac6 Remove redundant
send_later
param in campaign POST/PUT. - e8fd12b Add
List-Unsubscribe
header to opt-in confirmation mails. Closes #2224. - 2e8a5ac Add user roles/perms documentation. Closes #2242.
- 0930a22 Add VACUUM to maintenance section in docs.
- e2aa9c5 Make media image background checkered to show transparency. Closes #2080.
- c877156 Bump golang.org/x/net from 0.23.0 to 0.33.0 (#2253)
- a5e56c3 fix: forwardemail bounce processing invalid signature issue (#2250)
- 0878f3e Add Laravel SDK to Supported Libraries Lists (#2240)
- 50b296d Remove GitHub from OIDC shortcuts as it doesn't support OIDC. Closes #2235.
- b75de39 Fix elest.io image in docs (#2239)
- cb9b798 Fix typo in de i118 (#2236)
- 62c996b Fix typo (#2233)
- 2abc0a8 Apply minor Go code fixes (#2219)
- 98934e6 Fix outdated docker local dev suite (#2200)
- 97fde64 Make CSV (import) header fields agnostic of surrounding spaces. Closes #2189.
- 6371228 Fix schema and add migration for incorrect subscriber count (null) in materialized view.
- 5c0de6e Fix broken sorting lists by
subscriber_count
. Closes #2151. - 7bfbd6a Add
all
to subscriber deletion by query which broke withquery
validation. Ref: #2122. - a129111 Replace broken
indent
JS lib withjs-beautify
. Closes #2182. - 1c33d32 Remove redundant event from boun...
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 Replace type field in user creation UI with radio-button for better usability.
- 894d284 Fix GET subscribers not filtering by list permissions. Closes #2129.
- 8b213f0 adds property
description
toList
andNewList
, updates docs (#2150) - 18edc65 Add v4.1.0 migrations.
- abe09d6 Refactor OIDC redirect state to have nonce validation. Closes #2138.
- b995cce Switch login form URLs to relative URIs.
- cb8b54f Add ForwardEmail (provider) bounce integration (#2016)
- 0392582 Add % on campaign analytics pie chart hover (#2124)
- c35ed68 Fix quotes in JSON API req example in docs.
- e182fb5 Fix the delete/blocklist by SQL query example in docs.
- 1ac9ccb Reject blocklist-by-query API requests with no query.
- ac5e101 Reject query-by-delete API requests with no query. Ref #2122.
- d8a394d Update it.json (#2134)
- 68df637 Update curl example to remove username/api_username confusion. Closes #2136.
- 2c02e01 #2114 - Fix issue of wrong platform used during docker build (#2123)
- 599147c fix: favicon markup (#2115)
- be9fe9c Update hu.json (#2102)
- 5abf004 fix dummy detection for OIDC client secret (#2116)
- cf7d664 Fix broken individual list GET API. Closes #2117.
- ca73e4f Change wording to 'one-way mailing list' on the static homepage.
- 998b6e3 Remove version info from docker-compose docs to avoid confusion.
- f6ed13a Add explicit instructions for older docker-compose files.
- 319053d Update release link on static site homepage.
- f5dfb0c Remove root URL from login setup form to prevent bad redirect on first install. Closes #2103.
- 136d9d1 Don't fail on chown in Docker entry script. Closes #2104.
- 8ef71aa Fix docker-compose curl command examples.
- 120d275 Update release link on static site homepage.
- 3894571 Remove obsolete demo file reference from Docker build commands.
- 0f2c679 Remove deprecated goreleaser flag from GitHub action workflow.
- 11cb3ce Update gorelease Go build version to latest.
- 79f94d3 Update gorelease command and remove deprecated flags.
- afd5db9 Fix incorrect image tag in docker-compose.
- fd04fc1 Refresh i18n language files and add (GPT 3.5) auto-translations for new strings.
- 4eefd42 Remove redundant campaign manager config validations (#2095)
- 9bad699 Bump google.golang.org/protobuf from 1.31.0 to 1.33.0 (#2083)
- d35dbb0 Bump github.com/go-jose/go-jose/v3 from 3.0.1 to 3.0.3 (#2084)
- b8ae4f6 Change v4.0.0 migration script to not auto-generate credentials.
- 7fcc6f7 Simplify and refactor docker-compose.yml and remove install scripts.
- 24bab75 Add first time login setup template
- 178fa94 Update user login time on password login.
- 5b3d6e2 Add first-time Super Admin setup UI on fresh install.
- 1e4b3a2 Separate get individual user and get all users queries.
- 87db0d5 Fix Cypress admin form test to support rendered HTML.
- 25cdb7b Pull e-mail from userinfo endpoint if OIDC token endpoint doesn't return it.
- a37d414 Add missing GH token to Swagger docs workflow.
- 9760d19 Fix button focus/active styles on the UI.
- 69de02a Restyle and simplify subscriber form UI with tabs.
- b5382b8 Add user UI frontend tests.
- b2866b1 Apply minor style changes and improvements to modals.
- 74e77bd Add names to user form fields for testing.
- 3fdf6fe Add individual list permission checks on admin UI.
- 887d582 Fix get-users query to return all users when no ID param is given.
- 1075485 Merge branch 'fix-user-query'
- e7109da Fix missing email validation in OIDC exchange.
- 7847167 Fix incorrect id logic in user selection.
- 13222b5 Fix random timing related Cypress test failures (huh).
- 29aa977 Expand search input width on subscribers UI for smaller screens.
- 354fb30 Replace hardcoded perm literal with const.
- 6258fd5 Increase settings UI poll interval to reduce broken requests.
- 30be235 Add microseconds to log lines.
- 0f785b7 Fix Cypress tests to work with new auth and other UI changes.
- 8c07a2a Fix broken status in subscriber export query.
- 71f9e86 Show OIDC URL warning only when enabled on the UI.
- 03744e0 Fix broken settings references on forms page
- d02a9d6 Update it.json (#2085)
- 6fe47b2 Merge pull request #2082 from knadh/multiuser
- 39463d7 Refresh i18n langauge strings.
- cc71899 Add non-prod ODIC URL warning on admin settings UI.
- af06d2e Upgrade prismjs.
- f226aca Add missing auth permissions file.
- cea65c0 Fix and refactor subscriber batch fetching in campaign processing.
- ee119b0 Fix import not 'unsubscribing' list subs for already blacklisted subscribers. Ref #1931.
- a268341 Refactor subscriber APIs list permission filtering.
- d9b4bae Rename migration to v4.0.0
- 0331e3c Sory users by
created_at
always. - eb47e80 Fix list auth by adding an explicit 'getAll' flag to query.
- 3671a52 Update profile UI with new user data structures.
- ae2a386 Add support for "list roles".
- 12a6451 Add list permission check to subscriber calls.
- d74e067 Add per-list permission to list management.
- 982e8d8 Fix post v4.x.x upgrade warning on admin UI.
- f8e6eaa Add docs for v4.x.x multi-user upgrade changes.
- 26c6db0 Remove admin user/password from ...
v4.0.1
v4.0.0
v3.0.0
v3.0.0 is a major release with a significant number of improvements and fixes.
What's new?
- The concurrent core or the "engine" is completely re-written. Campaign pausing and cancellations are now near-instant and lossless. Concurrent campaign sending performance has improved significantly. The
sent
count now accounts for every single message rather than an approximation. - Major performance improvements for large databases with the new
Settings -> Performance -> Cache slow queries
option. On installations with millions of subscribers, enabling this speeds up database queries (retrieving lists, subscribers etc.) by several orders of magnitude. On a production database with ~14 million subscribers, the speed up on the lists page was 2000x, from ~20s to ~10ms. - New frontend dependency and build system refactor, speeding the admin pages (and the development build process).
- Addressed the root cause of mysterious SMTP sending errors that triggered only in certain SMTP environments.
- New fields for filtering lists, campaigns, subscribers in query APIs.
- Campaign archives now support “slugs” (clean permalinks) for public URLs instead of UUIDs.
- Major refactor and cleanup of documentation.
F9
shortcut key for campaign and template previews.- 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
- f9120d9 Auto-translate one missing i18n key..
- 36e39e5 Auto-translate missing i18n scripts.
- 8939d27 Reformat
sl
i18n language file. - 82894e5 Simplify default e-mail template.
- dc43e9c Configure Markdown parser to not escape double quotes. Closes #1698.
- 3103bbc feat: Add Slovenian localization (#1704)
- d70236c Fix incorrect error message in tx template preview.
- 2841586 Fix sorting in camapaign analytics view counts.
- 6cb9982 Add
.IndividualTracking
to public templates. Closes #1663. - 74ef6f5 Add a 'view' link on the lists page. Closes #1674.
- 7c44eb0 Replace Go easyjson lib.
- f14df89 Update Go deps.
- f0a3cbd Remove redundant SMTP test error toast on the admin UI.
- 45f4ae1 Add performance/query caching docs.
- 9adc5e7 Refactor navigation and styling in docs.
- bb1492b Merge branch 'query-performance'
- 5a3664a Add support for caching slow queries on large databases.
- a5b06a8 fixed railway icon and spelling bug (#1696)
- 9e96649 Update schema.sql - change default bounce settings (#1669)
- 67bc2ce Improve SES bounce processing docs (#1676)
- 98fa3e0 Update templating.md with command to fetch templates from repo (#1677)
- e42ab9c Bump vite from 5.0.10 to 5.0.12 in /frontend (#1680)
- 0935e9c Bump follow-redirects from 1.15.3 to 1.15.4 in /frontend (#1664)
- 4c5df16 Add deploy template for RepoCloud.io (#1662)
- 2f487de Log subscriber id/uuid on failed opt-in message push. Closes #1333.
- 908173c Style the 'fix code' buttn on campaign archive tab.
- d8ca26e Add a 'template reference' docs link next to campaign editor. Closes #1405.
- 9109097 Remove incorrect API def from docs. Closes #1658.
- 7067f05 Update listmonk-simple.service - add optional log file (#1640)
- 8677151 Merge branch 'slug'
- 0d319ad Add 'slug' (permalink) support for campaign archives. Closes #1394.
- 78caa35 fix: add copying campaign object before sending test message (#1659)
- 3335171 Fix (accidentally) broken migration scripts.
- 3711bed Fix clipboard copy prop on template form.
- bd2990f Add F9 shortcut key for toggling campaign and template previews.
- 234fd11 Fix incorrect label on maintenance UI. Closes #1652.
- a93031d Make Makefile accept custom build versions from env for dev builds.
- fa2c840 Rename v2.6.0 migration to v3.0.0, the next major release.
- a6d55d6 Upgrade smtp-pool lib fixing bad conn state issues.
- 8add9d6 Merge branch 'fix-campaign-sent'
- 9a96134 Update installation.md +tut & minor changes (#1647)
- 772476c Add accurate sent count, last sent subscriber tracking on campaigns.
- 414c5c0 Refactor the core concurrent campaign manager logic.
- 0c9dc07 Add a
?v=hash
cache breaker (that changes on restart) to static assets. - a2629c2 Make all ID/UUID labels on the UI onclick -> clipboard copy.
- b946c33 Fix broken chart components.
- 2feb1b0 Make the name part in
from
e-mails optional. Closes #1602. - b2a5e37 Fix incorrect form messages on public re-subscription to double opt-in lists. Closes #1638.
- bce6758 Fix preconfirm option not working on bulk 'select all' subscriber list management. Closes #1646.
- 0d74619 Make providing
name
in subscriber creation optional and assign internally. Closes #1630. - a9a7156 Scroll TinyMCE richtext editor back to caret on dialog close. Closes #1635.
- db17fa1 Restore tab selection on campaign page on reload.
- 49bbf92 Merge branch 'upgrade-frontend'
- ef77a7e Replace c3js with chart.js for major dep size reduction.
- f4b2446 Update configuration.md +logs section (#1641)
- 9bd7511 Update italian translation (#1644)
- af8b420 Refactor and upgrade the frontend vue code to work with vite instead of webpack.
- 51af75c Add subscription status filter to subscriber list query and admin UI.
- 8f12c03 Fix newly created lists not showing up on other pages automatically. Closes #1589.
- 01acd38 Add tag/type/optin filter options to lists and campaigns APIs. Closes #1631.
- c468e7a Upgrade Cypress to latest version.
- 5d63574 Skip non-existent dirs in
--static-dir
mode to use default stuffed dirs. Closes #1599. - aba7111 Fix default non-stuffed frontend dir path.
- dd87a10 Addte listmonk-simple.service (#1622)
- 6a26580 Update general-question.md
- 9a30067 Create da.json (Danish translation) (#1628)
- 80b2537 Bump golang.org/x/crypto from 0.15.0 to 0.17.0 (#1632)
- be62c50 feat: Add
from_email
to postback struct for sending tx postbacks (#1623) - e869f7b Translate to Ukrainian (#1606)
- b6922b0 Suppress 'no campaign' errors on pixel view registration. Closes #1588.
- 95dabe5 Update upgrade.md +binary info (#1613)
- e06d379 Update installation.md +tutorials (#1611)
- 7c99167 Update installation.md +changing port (#1607)
- fa50664 Add i18n Greek translation (#1605)
- 53eb71a Add 404 HTTP handlers to prevent those requests going to BasicAuth endpoints.
- 2ce2a11 feat: docker compose use alpine for postgres (#1603)
- 52ee79b chore: noreferrer for listmonk url in footer (#1601)
- 524be27 Bump tinymce from 5.10.8 to 5.10.9 in /frontend (#1592)
- 75befe5 📝🐛 — Fix /api/subscribers/lists doc (#1594)
- 4577868 chore: remove refs to deprecated io/ioutil (#1593)
- c59825f Fix broken sorting (lists -> subcount, subscribers -> status) in queries. Closes #1076.
- 06b4494 Fix incorrect sanitisation of search queries on list/campaign frontend.
- 82c74cd Bump golang.org/x/image from 0.6.0 to 0.10.0 (#1580)
- 4c8c19e Update configuration.md - update path due to recent install path change (#1581)
- d439ecf Bump axios from 0.27.2 to 1.6.0 in /frontend (#1587)
- ef08495 Make the unsub form on opt-in confirmation e-mail open 'manage' by default. Closes #1515.
- 44d3462 Fix 'confirmed' subscriptions becoming 'unconfirmed' on public form re-signup. Closes #1441.
- 62be5e2 Fix mysteriously broken frontend build by switching eslint parser dep.
- 49ec11c Merge branch 'refactor-docs'
- e8ecdf8 Fix mkdocs links in docs.
- ff135ec Add 'copy code' button to code snippets in docs.
- be4be72 Refactor and clean up API Markdown docs.
- f8a55f8 Fix mkdocs navbar shadow
- 9e3af91 Update fr.json (#1586)
- f720e88 Refactor hr style in mkdocs template.
- b29f565 Fix broken table in campaign doc. Closes #1585.
- 3641f74 Add missing
header
field in campaign creation docs. Closes #1561. - ccceaa6 Bump @babel/traverse from 7.21.3 to 7.23.2 in /frontend (#1563)
- c7882bb Bump tinymce from 5.10.7 to 5.10.8 in /frontend (#1564)
- fd05a6d Update installation.md - add cd listmonk (#1576)
- 06332d5 Update de.json (#1572)
- 1ebd80c Add Hebrew translation. Closes #1517.
- 491fab3 Update i18n language files.
- 764a052 Bump golang.org/x/net from 0.8.0 to 0.17.0 (#1555)
- c911aeb Fix attachments being omitted from postback (#1557)
- 954ed45 Fix incorrect Slovak language code. Closes #1533.
- a61a9d8 Fix preference management logic to avoid unnecessary DB calls.
- 99c71a2 fix: update inlang settings (#1529)
- 82c3c68 Clean root URL of trailing slashes when updating settings.
- 04e571d Fix file fetch in attachments failing for signed URLs. Closes #1499.
- 8f2a08b Fix invalid suffix 'd' in timestring string in s3 expiry config.
- 11f90b2 Fix typo in i18n S3 expiry description.
- 5af6252 Fix make not picking up semver from git archive builds. Fixes #1380.
- 717a636 Add Sprig and other tpl functions to static templates as well. Closes #1527.
- 7019f26 Fix docs for public subscription api (#1522)
- 9423c74 Docker Multi Arch (esp. ARM) builds: Improving Build File (#1451)
- 2b95c88 Add Postmark bounce webhook support (refactor #1385) (#1485)
- e5ac111 Update installation.md - fly.io instructions not working (#1487)
- 34d86fc Update installation.md (#1494)
- 5664e5c fix: replace docker-compose with docker compose (#1490)
- 83c88d7 Escape search query in list search. Closes #1471.
- 16eeb94 added "tutorials" section and other minor edits (#1444)
- e317f2c Modify
sed
flag based on OS. Closes #1474. - 25513b8 go: bump to 1.20 (#1479)
- eefcbc3 Fix hardcoded DB name in 'about' SQL query. Closes #1477.
- 52a7298 Update bounces...
v2.5.1
What's new
- The major new feature in this release is support for arbitrary file attachments. The media "gallery" UI/UX has changed to accept arbitrary file uploads which can be attached to campaigns.
- "Record opt-in IP" option in Settings -> Privacy that optionally records the IP from which a subscriber completes a double opt-in. This is a compliance requirement in certain jurisdictions.
- A new table on the subscriber editing popup that shows subscription details for all lists (including the optional opt-in IP)
- New API
/api/about
that returns generally useful system and installation info. - Better error notification. Async errors that were logged in Settings -> Logs are now streamed to the UI and displayed as toasts.
- New bounce types and support for variable actions per type.
Note: v2.5.0 was the major release, however, v2.5.1
was worth releasing just to have this one tiny UI bug fix that would have otherwise confused annoyed a lot of users.
This version has several minor bug fixes and improvements.
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
- a6a2b69 Make public subscription API follow the 'enable public' setting.
- 79ff729 Fix broken dummy password warning on SMTP test UI. Closes #1450.
- 32b979e Update subscriber docs and add public subscription API. Closes #1449.
- 2f07435 Update bounces docs (#1445)
- e258ffd Update configuration docs (#1446)
- f3e9b08 Update release on website.
- ea2f93e Fix GH actions write permission.
- 54979c5 ci: add qemu for multi-arch
- 14e2837 ci: Update release.yml (#1440)
- 0562e5d Apply minor fixes to the admin maintenance page template.
- f4f51d1 Add classes to public forms to make them scriptable.
- b1fa289 update documentation for api/tx to include file attachments and multiple recipients (#1436)
- acca61f Fix race conditions in Cypress tests (sigh).
- 1164afa Fix private lists being unsubscribed from public form and re-factor subscription status view in admin.
- eafae46 Fix incorrect unsubscription behaviour in the public 'Manage' flow. Closes #1407.
- 104c4fc Remove non-crossplatform syscalls from
/api/about
. - a1c507b Fix typo in queries.sql (#1432)
- 2215511 Increase the arbitrarily low max-input-length limit. Closes #1416.
- dcb87a3 Removed unused syscall in
/about
API. Closes #1421, closes #1422. - e89b9ff Remove dead media cleanup flag. Closes #1423.
- a440b79 modified mistakes and typos in translation (#1419)
- 2bfbae7 Update Postgres version in doc strings.
- 3865e95 Update untranslated i18n language strings. Auto-translated with GPT 3.5.
- 93db7c4 Fix incorrect Buefy checkbox colour.
- ad80c71 Add new privacy option 'Record opt-in IP' to record IP address of optin confirmation.
- b26950c Add new subscription list table to the subscriber edit UI modal.
- a628519 Mask passwords on the UI accurately with the actual passwords length.
- 0be5901 Fix lists UI queries overriding full lists in selections elsewhere. Closes #1400.
- 534c875 Ignore common on-reload xhr errors in Cypress.
- 7dd7166 Bump word-wrap from 1.2.3 to 1.2.4 in /frontend (#1403)
- 3663a8b feat: add multiarch docker build support (#1344)
- e1c0bf5 Fix unsubbed subscribers not getting re-sub optin confirmation. Closes #1315.
- d69b766 Enable extra system calls in systemd service (#1309)
- 329b645 Add documentation for archive function. Closes #1396. (#1399)
- 1894af1 Bump semver from 5.7.1 to 5.7.2 in /frontend (#1398)
- c581fe2 Add
GET /api/about
that returns useful system info. Closes #1354. - 5b40461 Stop requiring a DELETE call for fresh import after finished imports. Closes #1369.
- 530165f Fix typos in comments (#1368)
- f94c1f3 fix function name in comment (#1374)
- 92a4d99 Update es.json (#1378)
- 5e24ef9 Update it.json (#1379)
- f577522 Update inlang.config.js (#1359)
- e0cda4b Fix
all
pagination. Closes #1356. Closes #1357. - a2da75c Merge branch 'events'
- 0b2da4c Add support for streaming async events via HTTP serverside events.
- 63bc00d Fix issues in the Swagger collection (#1322). Closes #1321.
- d359ad2 Refactor media management.
- 3b9a0f7 Add support for file attachments on campaigns (#1341)
- cb2a579 Update ro.json (#1326)
- cbbbe40 Fix missing fields in Swagger collection. Closes #1317.
- 5a26279 Fix Swagger collection. Closes #1308. Closes #1313 (PR #1314)
- 917696a Refactor
Messenger
interface. - 9ffc912 Refactor media provider.
- be16297 Fix incorrect assignment of subscriber in message struct. Closes #1307.
- e332622 Added remaining endpoints to the Swagger Collection (#1283)
- 39a627d Upgrade koanf lib to fix mapstructure []byte unmarshal bug.
- 9381e08 Link the Swagger pages on the API doc.
- 8c46b75 build: push docker image to ghcr.io (#1237)
- 101459f actions: generate swagger ui for github pages (#1281)
- 81ac627 Add white background to logo in README for dark mode. Closes #1268.
- 5fc28a7 Add support for variable bounce processing actions.
- 13ad9ad Upgrade
koanf
to v2. - 3baf18e Add support for wildcards in the email domain blocklist.
- 98729f6 Refactor email domain blocklist config field in importer package.
- 476d5be Add support for publishing full content in public archive RSS feed body (#1262)
- 146e8e7 Add missing translation message in maintenance page (#1279)
- 0d4c1d1 Fix portuges missing translations (#1278)
- 7db3d7d Improve i18n editor.
- 71a9138 Add missing i18n languages to the editor
- ad53632 Expanded docs about PUT /api/subscribers/:id (#1269)
- b433ef6 Fix broken SES bounce type check.
- a955102 Add functions to notification templates (#1263)
- d1d0922 Fix gh-pages workflow script to run on push to
master
. - ec7a246 Fix link to the docs repo.
- d4fb3a3 Remove obsolete files.
- 5d3c10d Add new README to the
docs
directory. - 684c15a Add static Hugo website and mkdocs documentation to
docs
directory. (#1261) - 152bd37 Fix no opt-in mails when existing subscribers subscriber to new opt-in lists. Closes #1257.
- 5aedc3a Make media upload file extension validation case insensitive. Closes #1256.
- bf72154 Add Swagger collection for APIs (#1253)
- 4821dd7 Update es.json (#1258)
- d87a01f Include CAPTCHA in HTML form generation.
- eb1d4a3 add support for arm binaries (#1249)
New Contributors
- @navanchauhan made their first contribution in #1249
- @alfredosola made their first contribution in #1258
- @rohansh-tty made their first contribution in #1253
- @peix187 made their first contribution in #1278
- @Thunderbottom made their first contribution in #1281
- @uhlhosting made their first contribution in #1326
- @NilsJacobsen made their first contribution in #1359
- @cuishuang made their first contribution in #1374
- @sonologic made their first contribution in #1399
- @runningnoodle made their first contribution in #1309
- @UnmeshSagar made their first contribution in #1419
- @eltociear made their first contribution in #1432
- @winterleitner made their first contribution in #1436
v2.5.0
What's new
- The major new feature in this release is support for arbitrary file attachments. The media "gallery" UI/UX has changed to accept arbitrary file uploads which can be attached to campaigns.
- "Record opt-in IP" option in Settings -> Privacy that optionally records the IP from which a subscriber completes a double opt-in. This is a compliance requirement in certain jurisdictions.
- A new table on the subscriber editing popup that shows subscription details for all lists (including the optional opt-in IP)
- New API
/api/about
that returns generally useful system and installation info. - Better error notification. Async errors that were logged in Settings -> Logs are now streamed to the UI and displayed as toasts.
- New bounce types and support for variable actions per type.
This version has several minor bug fixes and improvements.
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
- ea2f93e Fix GH actions write permission.
- 54979c5 ci: add qemu for multi-arch
- 14e2837 ci: Update release.yml (#1440)
- 0562e5d Apply minor fixes to the admin maintenance page template.
- f4f51d1 Add classes to public forms to make them scriptable.
- b1fa289 update documentation for api/tx to include file attachments and multiple recipients (#1436)
- acca61f Fix race conditions in Cypress tests (sigh).
- 1164afa Fix private lists being unsubscribed from public form and re-factor subscription status view in admin.
- eafae46 Fix incorrect unsubscription behaviour in the public 'Manage' flow. Closes #1407.
- 104c4fc Remove non-crossplatform syscalls from
/api/about
. - a1c507b Fix typo in queries.sql (#1432)
- 2215511 Increase the arbitrarily low max-input-length limit. Closes #1416.
- dcb87a3 Removed unused syscall in
/about
API. Closes #1421, closes #1422. - e89b9ff Remove dead media cleanup flag. Closes #1423.
- a440b79 modified mistakes and typos in translation (#1419)
- 2bfbae7 Update Postgres version in doc strings.
- 3865e95 Update untranslated i18n language strings. Auto-translated with GPT 3.5.
- 93db7c4 Fix incorrect Buefy checkbox colour.
- ad80c71 Add new privacy option 'Record opt-in IP' to record IP address of optin confirmation.
- b26950c Add new subscription list table to the subscriber edit UI modal.
- a628519 Mask passwords on the UI accurately with the actual passwords length.
- 0be5901 Fix lists UI queries overriding full lists in selections elsewhere. Closes #1400.
- 534c875 Ignore common on-reload xhr errors in Cypress.
- 7dd7166 Bump word-wrap from 1.2.3 to 1.2.4 in /frontend (#1403)
- 3663a8b feat: add multiarch docker build support (#1344)
- e1c0bf5 Fix unsubbed subscribers not getting re-sub optin confirmation. Closes #1315.
- d69b766 Enable extra system calls in systemd service (#1309)
- 329b645 Add documentation for archive function. Closes #1396. (#1399)
- 1894af1 Bump semver from 5.7.1 to 5.7.2 in /frontend (#1398)
- c581fe2 Add
GET /api/about
that returns useful system info. Closes #1354. - 5b40461 Stop requiring a DELETE call for fresh import after finished imports. Closes #1369.
- 530165f Fix typos in comments (#1368)
- f94c1f3 fix function name in comment (#1374)
- 92a4d99 Update es.json (#1378)
- 5e24ef9 Update it.json (#1379)
- f577522 Update inlang.config.js (#1359)
- e0cda4b Fix
all
pagination. Closes #1356. Closes #1357. - a2da75c Merge branch 'events'
- 0b2da4c Add support for streaming async events via HTTP serverside events.
- 63bc00d Fix issues in the Swagger collection (#1322). Closes #1321.
- d359ad2 Refactor media management.
- 3b9a0f7 Add support for file attachments on campaigns (#1341)
- cb2a579 Update ro.json (#1326)
- cbbbe40 Fix missing fields in Swagger collection. Closes #1317.
- 5a26279 Fix Swagger collection. Closes #1308. Closes #1313 (PR #1314)
- 917696a Refactor
Messenger
interface. - 9ffc912 Refactor media provider.
- be16297 Fix incorrect assignment of subscriber in message struct. Closes #1307.
- e332622 Added remaining endpoints to the Swagger Collection (#1283)
- 39a627d Upgrade koanf lib to fix mapstructure []byte unmarshal bug.
- 9381e08 Link the Swagger pages on the API doc.
- 8c46b75 build: push docker image to ghcr.io (#1237)
- 101459f actions: generate swagger ui for github pages (#1281)
- 81ac627 Add white background to logo in README for dark mode. Closes #1268.
- 5fc28a7 Add support for variable bounce processing actions.
- 13ad9ad Upgrade
koanf
to v2. - 3baf18e Add support for wildcards in the email domain blocklist.
- 98729f6 Refactor email domain blocklist config field in importer package.
- 476d5be Add support for publishing full content in public archive RSS feed body (#1262)
- 146e8e7 Add missing translation message in maintenance page (#1279)
- 0d4c1d1 Fix portuges missing translations (#1278)
- 7db3d7d Improve i18n editor.
- 71a9138 Add missing i18n languages to the editor
- ad53632 Expanded docs about PUT /api/subscribers/:id (#1269)
- b433ef6 Fix broken SES bounce type check.
- a955102 Add functions to notification templates (#1263)
- d1d0922 Fix gh-pages workflow script to run on push to
master
. - ec7a246 Fix link to the docs repo.
- d4fb3a3 Remove obsolete files.
- 5d3c10d Add new README to the
docs
directory. - 684c15a Add static Hugo website and mkdocs documentation to
docs
directory. (#1261) - 152bd37 Fix no opt-in mails when existing subscribers subscriber to new opt-in lists. Closes #1257.
- 5aedc3a Make media upload file extension validation case insensitive. Closes #1256.
- bf72154 Add Swagger collection for APIs (#1253)
- 4821dd7 Update es.json (#1258)
- d87a01f Include CAPTCHA in HTML form generation.
- eb1d4a3 add support for arm binaries (#1249)
New Contributors
- @navanchauhan made their first contribution in #1249
- @alfredosola made their first contribution in #1258
- @rohansh-tty made their first contribution in #1253
- @peix187 made their first contribution in #1278
- @Thunderbottom made their first contribution in #1281
- @uhlhosting made their first contribution in #1326
- @NilsJacobsen made their first contribution in #1359
- @cuishuang made their first contribution in #1374
- @sonologic made their first contribution in #1399
- @runningnoodle made their first contribution in #1309
- @UnmeshSagar made their first contribution in #1419
- @eltociear made their first contribution in #1432
- @winterleitner made their first contribution in #1436
v2.4.0
What's new
- hCaptcha integration on public subscription pages. If you use custom static static templates, make sure to incorporate the changes from the repository.
- Support for SVG files in media uploads.
- Support for file attachments in the
/api/tx
transactional API. - Support for multiple subscribers in the
/api/tx
transactional API (subscriber_emails[]
,subscriber_ids[]
).
This version has several minor bug fixes and improvements.
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
- c668523 upgrade frontend dev deps to support node v17+ (#1247)
- 553a61b Update Go build version in GitHub workflow.
- 1bb9123 Fix Cypress tests (settings security tab, new default tpls).
- 3646e6d Upgrade Go package deps.
- 55f7eca Add support for file attachments in the transactional (tx) API. (#1243)
- 4181d8a Integrate inlang for easy i18n translations (#1189)
- 6cf8234 Add support for SVG files to media. Closes #1217.
- aaf5080 Fix discrepency in SQL query/export queries. Closes #1241.
- 35ddf3c fixed weekday order to fix #1182 (#1227)
- 5020bae fix #1210 French day name (#1226)
- 09fe812 Update hu.json (#1219)
- 8d1f30c correct eslint "no-multiple-empty-lines" (#1179)
- d6fd4ab Fix 'delete' -> 'clear' language on bounces UI. Closes #1072.
- da377d8 Parse campaign UUID in SendGrid webhook. Closes #1177.
- dda7d44 Hide private lists from prefs manage page. Closes #1200.
- 215aae5 Fix public preference manage page's list style.
- 7be73d5 Bump golang.org/x/sys from 0.0.0-20211205182925-97ca703d548d to 0.1.0 (#1212)
- 80592f6 Translate the subject of the email sent with personnal datas (#1193)
- 2c531eb (Public strings only) Add Swedish translation (#1194)
- 2de72ea update french translation (#1190)
- e77635c Update hCaptcha french translation (#1178)
- 3513988 [i18n] Add translation of the term Powered by (#1168)
- 2ed62cb fix russian translate (#1174)
- bfc8a0c Update pl.json (#1165)
- eb9f687 Update pl.json (#1164)
- 274d864 Upgrade smtp-pool lib fixing incorrect nested mail commands.
- 4977b74 Partial update of NL i18n (#1056)
- fd65531 Bump decode-uri-component from 0.2.0 to 0.2.2 in /frontend (#1084)
- b339482 Update Polish language.
- 755344e Add check for SES bounce notif type (#1123)
- 8985e5c Add hCaptcha.com support to public subscription form. (#1152)
- 62d3782 Use
send_at
date for scheduled campaigns in RSS feed. Closes #1149. - 72d22d4 fix: check public URL before presigned URL generation (#1148)
- 66c81c8 Update es.json (#1139)
- 7832248 Fix label/input accessibility on subscription form (#1134)
- 076b7c7 Slovak translation (#1128)
- 3cfbc64 Add support for multiple subscribers in a single transactional message call.
- 5d4f1ea Add optional
params
in DB config to accept arbitrary Postgres params. Closes #1016. - 1f693b8 Add a default public archive template.
- 96d30d6 Update issue templates
- 49f20f3 Fix broken sorting in list query. Closes #1076.
- 4dee2e9 Fix
per_page=all
in API calls in the paginator lib. - 396f85d updated spanish translation (#1119)
- ba46769 updated italian translation (#1118)
- 8a2d053 Fix misleading German translation (#1115)
- c773dc0 Fix maintenance settings title (#1096)
- e71c060 Bump express from 4.17.1 to 4.18.2 in /frontend (#1091)
- 12b2bdf Bump tinymce from 5.10.0 to 5.10.7 in /frontend (#1090)
- a555fd3 Fix nil tpl when campaign body is empty. Closes #1085.
New Contributors
- @pr0gr8mm3r made their first contribution in #1096
- @jfilter made their first contribution in #1115
- @filiphanes made their first contribution in #1128
- @shrilakshmishastry made their first contribution in #1134
- @mannueru made their first contribution in #1139
- @hasahmad made their first contribution in #1123
- @saginsa made their first contribution in #1174
- @kosssi made their first contribution in #1168
- @eltorio made their first contribution in #1178
- @nixigaj made their first contribution in #1194
- @istvan-andrasi made their first contribution in #1219
- @Margu86 made their first contribution in #1227
- @samuelstroschein made their first contribution in #1189