Commit graph

1871 commits

Author SHA1 Message Date
Kailash Nadh
29c406f036 Add left/right float options to TinyMCE image popup. Closes #2865. 2026-01-15 14:04:14 +05:30
TychoCeltCast
cd1bb1bc20
Docs update to OIDC - adds Google Workspace / Google Cloud (#2866) 2026-01-15 13:48:39 +05:30
Kailash Nadh
267263a176 Update release details on the static homepage. 2026-01-12 21:33:43 +05:30
Kailash Nadh
504a14273f Upgrade smtppool lib to handle 421 rate limit errors. 2026-01-10 13:38:42 +05:30
Richard Lee
480fe5f9e8
Improve i18n Taiwan Chinese translation quality (#2856) 2026-01-10 13:21:22 +05:30
Kailash Nadh
2d999528b3 Add warning icon to subscribers:sql_query permission and link to docs on the Roles UI. 2026-01-10 13:02:21 +05:30
Kailash Nadh
83bdad3c3b Add detailed docs on the risks of the subscribers:sql_query permission and Postgres privileges. 2026-01-10 12:43:55 +05:30
maloma7
4e5008895b
docs: add @solytude/listmonk TypeScript SDK to community SDKs (#2849)
Closes #2848
2026-01-05 14:16:43 +05:30
Kailash Nadh
00f303c25b Add v6.0.0 migration file. 2026-01-02 23:09:51 +05:30
Kailash Nadh
5673e61e0e Add attribs to campaign docs. 2026-01-02 22:53:52 +05:30
Kailash Nadh
2d560fa510 Upgrade altcha JS to latest version. 2026-01-02 22:46:43 +05:30
Kailash Nadh
d7a41f7503 Auto-translate new i18n language strings. 2026-01-02 22:40:24 +05:30
Kailash Nadh
556cb370c8 Fix Cypres tests. 2026-01-02 18:30:26 +05:30
Kailash Nadh
e20ed060ec Rename v5.2.0 migration to v6.0.0. 2026-01-02 18:05:22 +05:30
Kailash Nadh
95528653ad Apply minor style fixes to admin. 2026-01-02 18:00:13 +05:30
Kailash Nadh
f1dd8a4ccf Add support for campaign-level JSON attributes.
- Add new `attribs` field to the DB.
- New `Attributes` JSON text input in the campaign editor UI.
- Introduces the new `{{ Campaign.Attribs.$key}}` syntax in campaign body.

Closes #2059
2026-01-02 17:26:04 +05:30
Kailash Nadh
e49c8d06f6 Refresh i18n language files. 2026-01-01 00:14:08 +05:30
Kailash Nadh
a65608c113 Split 'overwrite' on import UI into 2 separate options (userinfo and subscription status). Closes #2496 2026-01-01 00:12:08 +05:30
Kailash Nadh
77fb9ddc2a Fix invalid syntax in bundled visual template. 2025-12-31 23:30:52 +05:30
Kailash Nadh
576309d923 Add viewport meta tag to visual builder default template. Closes #2751. 2025-12-31 23:28:25 +05:30
Kailash Nadh
c6bc9a63a9 Show duration in seconds also on campaigns page. Closes #2796. 2025-12-31 22:56:06 +05:30
Kailash Nadh
5f935435a6 Fix user menu not showing in responsive view on the UI. Closes #2793. 2025-12-31 22:50:04 +05:30
Kailash Nadh
74dc5a01cf Add sandboxing to campaign preview iframe.
This addresses the specific security scenario described here:
https://github.com/knadh/listmonk/security/advisories/GHSA-jmr4-p576-v565

Although it cannot mitigate a lower ranking user with campaign/template
permissions adding arbitrary scripts to templates that render in various
places including the public archive page.
2025-12-31 18:26:15 +05:30
dependabot[bot]
d802793264
Bump qs from 6.13.1 to 6.14.1 in /frontend (#2844)
Bumps [qs](https://github.com/ljharb/qs) from 6.13.1 to 6.14.1.
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.13.1...v6.14.1)

---
updated-dependencies:
- dependency-name: qs
  dependency-version: 6.14.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-31 12:21:10 +05:30
Kailash Nadh
373682aafc Fix and imporve bulk deletion in campaigns and queries.
- Fix 'select all' and delete-by-query logic.
- Add Cypress e2e test cases for bulk deletion.
2025-12-31 11:02:06 +05:30
Richard Lee
3f5bc8d37e
Improve zh-TW (Traditional Chinese) translation (#2840)
- Add missing zh-TW translations
- Fix zh-TW placeholder inconsistencies
- Replace Chinese placeholders {名稱} with English {name}
- Add proper spacing around placeholders for consistency
- Use Taiwan Chinese terminology in zh-TW
- Replace 文件 (China) with 檔案 (Taiwan) for 'file'
- Replace 文本編輯器 with 文字編輯器 for 'text editor'
- Ensures proper Taiwan localization throughout
- Change 'Campaigns' from 廣告 (advertisement) to 活動 (campaign/activity)
- Fix 'Opt-in to' translation to proper Chinese 訂閱
- Improve 'Publish' translation from 發送 (send) to 發布 (publish)
- Fix 'running' from 發送中 (sending) to 執行中 (running)
- Improve 'Orphans' explanation to proper Chinese
- Fix 'Blocklist' verb form to 加入黑名單
- Add missing space in subscriber count placeholder
2025-12-30 13:22:54 +05:30
dependabot[bot]
183d0ea279
Bump github.com/altcha-org/altcha-lib-go from 0.2.2 to 1.0.0 (#2819)
Bumps [github.com/altcha-org/altcha-lib-go](https://github.com/altcha-org/altcha-lib-go) from 0.2.2 to 1.0.0.
- [Commits](https://github.com/altcha-org/altcha-lib-go/compare/v0.2.2...v1.0.0)

---
updated-dependencies:
- dependency-name: github.com/altcha-org/altcha-lib-go
  dependency-version: 1.0.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-29 16:22:54 +05:30
trisix
787c7585b9
Fix #2778 'Track Link' status is lost when re-saving an existing link in the Rich Text Editor (#2829) 2025-12-29 16:22:23 +05:30
Marian Steinbach
1a68363f5c
Add missing i18n German translations (#2830) 2025-12-29 11:37:56 +05:30
Elias Hackradt
e215e1e5bb
Added Cloudron install button in doc (#2826) 2025-12-20 21:22:04 +05:30
Kailash Nadh
e8fb9d5913 Fix incorrect --new-config file write error message. Closes #2818. 2025-12-17 11:12:50 +05:30
Oliver Rahner
c651117327
fix confusing formatting issue in dev setup docs (#2813) 2025-12-12 19:36:43 +05:30
Kailash Nadh
55540a21b3 Remove confusing field validation behaviour on S3 settings UI. Closes #2806. 2025-12-12 13:26:19 +05:30
Alan Fuller
e703c37eb0
Add env var support for static-dir and i18n-dir flags (#2807)
* Add env var support for static-dir and i18n-dir flags.

LISTMONK_static_dir and LISTMONK_i18n_dir now work as environment
variables, allowing custom static file paths without modifying
the command line in docker-compose.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Fix env var mapping: only convert underscore to hyphen for top-level keys.

Nested config keys like db.ssl_mode keep underscores.
Top-level CLI flags like static-dir get underscore->hyphen conversion.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-12 13:07:16 +05:30
albanobattistella
9feb59f4ee
Update it.json (#2803) 2025-12-12 12:44:44 +05:30
Stefan Huber
a998c91f40
Correct status field reference in documentation (#2808) 2025-12-12 12:44:15 +05:30
Jozef Rebjak
1c361647a5
Translate English phrases to Slovak in sk.json (#2810) 2025-12-10 19:29:37 +05:30
Kailash Nadh
045f0ebf47 Fix broken language string on CAPTCHA settings on UI. Closes #2781. 2025-12-01 00:33:39 +05:30
Kailash Nadh
570bb46d75 Add cron-based VACUUM ANALYZE support for DB maintenance.
- Add a new vacuum setting option on the UI in Admin -> Settings -> Maintenance.
- Also refactor frontend (lock-and-wait-for-restart) login on settings into
  the global vue instance so that it can be reused across contexts.
  Settings.vue and Maintenance.vue both now use it to wait for the backend
  to restart.
2025-11-30 11:54:15 +05:30
Kailash Nadh
67ad4d54ce Add external recipient support to /api/tx endpoint.
This patch introduces the long pending requirement of being able to send messages
to arbitrary recipients via the `/api/tx` endpoint without them having to be
subscribers in the database.

It maintains backwards compatibility and introduces just one new field,
`subscriber_mode` to the `/api/tx` endpoint.

- `default`  - Recipients must exist as subscribers in the database.
               Pass either `subscriber_emails` or `subscriber_ids`.                                                                                                                                                                     |

- `fallback` - Only accepts `subscriber_emails` and looks up subscribers in the
               database. If not found, sends the message to the e-mail anyway.
               In the template, apart from `{{ .Subscriber.Email }}`, other
               subscriber fields such as `.Name`. will be empty.
               Use `{{ Tx.Data.* }}` instead. |

- `external` - Sends to the given `subscriber_emails` without subscriber lookup
               in the database. In the template, apart from
               `{{ .Subscriber.Email }}`, other subscriber fields such as
               `.Name`. will be empty. Use `{{ Tx.Data.* }}` instead.                                                |
2025-11-28 16:37:20 +05:30
Kailash Nadh
583f92a6fc Add bulk deletion (by id or query) to lists and campaigns.
- Like subscribers, select one-or more or 'all' items and delete them
  on the lists and campaigns UIs.
- New `DELETE /api/lists` and `DELETE /api/campaigns` endpoints that
  take one or more `id` params or a single `query` param.
2025-11-28 16:37:20 +05:30
Kailash Nadh
2b60907338 Add list permission check to campaign creation. 2025-11-28 16:37:20 +05:30
Kailash Nadh
b46e0d6947 Fix list update query returning incorrect state on lists with no campaigns. 2025-11-28 16:37:20 +05:30
Alan Fuller
c108a61b32
Change LISTMONK_db__host from 'listmonk_db' to 'db' (#2787) 2025-11-28 13:30:01 +05:30
candide ꘎ media
c888b7f8a0
Update default sample visual template with tracked link examples (#2788)
Co-authored-by: Kailash Nadh <kailash@nadh.in>
2025-11-28 13:22:21 +05:30
MohammadReza Tayebi
06e6b67a6a
Add Cloudzy logo to providers list on the homepage (#2777) 2025-11-23 15:55:16 +05:30
Kailash Nadh
e526a5f981 Fix list name not being updated in campaign_lists on list update. Closes #2734. 2025-11-23 15:47:57 +05:30
Kailash Nadh
2074604512 Add archival support to lists.
This patch adds a new `status` field (active, archived) to the lists table and
an 'Archived?' toggle on the UI that allows a list to be marked as archived.
This hides the lists from the lists page, campaigns list selection, list roles,
and public forms. A new "View archived lists" link on the lists UI allows
viewing the list of archived lists.

This is useful to hide/declutter lists by archiving historical, temporary lists
etc. This is largely a UX value addition.

Closes #2613.
2025-11-23 15:39:17 +05:30
Kailash Nadh
6417f30d77 Stop recording to send count on campaign creation.
Prior to this patch, when a new campaign was created, the `to send` count of
subscribers was counted from the subscriptions and added to the campaign to be
displayed on the frontend. However, this had several issues:

- On large databases, the count can be extremely slow, slowing down campaign
  creation.
- The count was purely cosmetic. When a campaign starts, it's recounted (for real)
  anyway.
- The count was also inaccurate. Changing the list on a campaign, or changes to
  the subscribers in a list never updated the count on the campaign, rendering
  it wholly incorrect sometimes.

Closes #2431.
2025-11-23 12:13:50 +05:30
Kailash Nadh
12b80699d9 Remove incorrect settings dependency on Media UI.
The media UI was calling getSettings(), which requires the `settings:get`
permission to get the uploader type, which creates a bad permission dependecy.
This patch removes this dependecy and instead exposes the media provider
via `/api/config` (`serverConfig` in the frontend).

Fixes #2747.
2025-11-23 11:45:33 +05:30