Commit graph

1729 commits

Author SHA1 Message Date
Jef Theeuwes
ae55e64b53
Update Dutch i18n (#2449)
* update to constitantly use formal terms.
Make dutch more consistent and readable.

* update untranslated parts + extra check on formal

* template -> sjabloon

* transactioneel plural

* Uploaden -> Opladen
2025-05-07 09:44:11 +05:30
Shaun Warman
85ead710f4
docs: add listmonk and forward email for secure newsletter delivery guide (#2440) 2025-04-30 08:52:55 +05:30
Kailash Nadh
6336ec4f56 Update release details on the static homepage. 2025-04-29 00:47:28 +05:30
Kailash Nadh
3b8a8c23c5 Add email-builder/dist to .gitignore. 2025-04-29 00:17:16 +05:30
Kailash Nadh
8902320a4f Update screenshot on README. 2025-04-29 00:08:33 +05:30
Kailash Nadh
a7085cb594 Update homepage. 2025-04-29 00:01:51 +05:30
Kailash Nadh
11f52ee8a3 Switch migration version to v5 2025-04-28 23:32:29 +05:30
Kailash Nadh
47e8f8164f Default body_source to null instead of empty string in non-visual campaigns. 2025-04-28 22:56:59 +05:30
Kailash Nadh
925cdf282d Add visual template and new permissions to docs. 2025-04-28 22:54:08 +05:30
Kailash Nadh
1599957dca Add and auto-translate missing i18n strings in all language packs. 2025-04-28 21:16:30 +05:30
Kailash Nadh
db81dc1dad Remove default dummy admin notification email settings. 2025-04-28 18:12:58 +05:30
Kailash Nadh
9de19ea28c Fix Codemirror Cypress tests in templates and form pages. 2025-04-28 18:05:10 +05:30
hlassiege
92fc64694a
Update sdks.md: add client for java/kotlin (#2426) 2025-04-25 08:14:54 +05:30
Kailash Nadh
81b62a4aa9 Fix race condition in immediate campaign pause-start actions.
Pausing a campaign and starting it within the interval where campaign manager
pipe cleanup happens would cause a campaign to be marked as finished. This
patch addresses that by only doing the 'finished' state update if the campaign
wasn't stopped (cancel, pause) manually.

Potentially closes #2278 as this is the only reproducible scenario where a
campaign prematurely gets marked as finished.
2025-04-24 22:40:00 +05:30
Kailash Nadh
d3c8eca446 Upgrade Go deps. 2025-04-24 12:00:05 +05:30
Kailash Nadh
0dc29b7d8a Fix CSV example on the subscriber import UI. 2025-04-23 00:28:13 +05:30
Kailash Nadh
953deef412 Hide 'New' and 'Save' buttons on the templates UI if there's no manage permission. 2025-04-23 00:21:57 +05:30
Kailash Nadh
7791327547 Make Must config variables non-Must so that the app doesn't panic on their absence. 2025-04-23 00:21:57 +05:30
Kailash Nadh
8fc3d27b63
Merge pull request #2423 from knadh/dependabot/npm_and_yarn/frontend/email-builder/vite-5.4.18
Bump vite from 5.4.10 to 5.4.18 in /frontend/email-builder
2025-04-23 00:10:31 +05:30
Kailash Nadh
3dfdf48d7a
Merge pull request #2424 from knadh/dependabot/npm_and_yarn/frontend/email-builder/babel/runtime-7.27.0
Bump @babel/runtime from 7.26.0 to 7.27.0 in /frontend/email-builder
2025-04-23 00:10:23 +05:30
Kailash Nadh
12bc79866f Make OIDC provider name display on login button configurable. Closes #2211 2025-04-23 00:09:24 +05:30
dependabot[bot]
8885437671
Bump @babel/runtime from 7.26.0 to 7.27.0 in /frontend/email-builder
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.26.0 to 7.27.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.27.0/packages/babel-runtime)

---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-version: 7.27.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-21 14:24:04 +00:00
dependabot[bot]
6707b634a0
Bump vite from 5.4.10 to 5.4.18 in /frontend/email-builder
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.10 to 5.4.18.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.18/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.18/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 5.4.18
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-21 13:55:40 +00:00
Kailash Nadh
5477c169fd
Merge pull request #2373 from knadh/feat-visual-editor
This is a mega patch with a massive number of significant, complex
changes integrating the visual, drag-and-drop block editor library,
email-builder: https://github.com/usewaypoint/email-builder-js

It adds a new template type (`visual`) to templates and integrates the editor
UI in Admin -> Templates and Admin -> Campaigns UIs. There are changes to
templates and campaign APIs, UI flows, and database table schemas.

`email-builder` is written in TypeScript and React (eww) and is a massive lib,
(2.3MB minified+gzipped), bigger than all of listmonk's own JS and other deps
combined, but alas, there is no other viable editor and it has been a popular
demand for a long time.

So, `email-builder` is built separately, and the static assets are copied along
with listmonk's assets. Since it's basically a separate "app" altogether,
it's loaded as an iframe on the editor pages, outside of the Vue app.

The visual editor integration is courtesy of @vividvilla who did all the
R&D and trial and error and sent the original PR to make this possible.

I really loathe the Javascript ecosystem. Sigh.
2025-04-21 18:43:55 +05:30
Kailash Nadh
ed700d7a33 Add a Preview option to the campaign archive tab. Closes #2245. 2025-04-21 18:17:46 +05:30
Kailash Nadh
b67fc5ea24 Replace CodeFlask code editor with CodeMirror on the UI.
Unfortunately, the tiny CodeFlask lib stopped getting updates 5+ years ago and
is buggy. The attempt to replace it with CodeInput (which itself seems to have
several open bugs) failed.

So, biting the bullet with CodeMirror, which is a robust, battle tested, albeit
large (~300KB) code editor library.

This patch replaces all code editor UIs (Campaign, Templates, Settings) with
CodeMirror.
2025-04-20 20:48:51 +05:30
Kailash Nadh
53d79297ca Prepare first RC. 2025-04-20 20:48:51 +05:30
Kailash Nadh
ffbda019e4 Add sample visual campaign template on install and upgrade. 2025-04-20 20:48:51 +05:30
Kailash Nadh
445d7e53a4 Fix clone campaign by fetching campaign body on clone. 2025-04-20 20:48:51 +05:30
Kailash Nadh
1559c55aff Add visual editor Cypress tests. 2025-04-20 20:48:51 +05:30
Kailash Nadh
ded0fcfae2 Fix broken visual template cloning on the templates UI. 2025-04-20 20:48:51 +05:30
Kailash Nadh
dcdef8ea38 Add format/content type selection to campaign creation UI. 2025-04-20 20:48:51 +05:30
Kailash Nadh
d3da0be629 Fix `test campaign' sending wrong template for visual campaigns. 2025-04-20 20:48:51 +05:30
Kailash Nadh
5207dff733 Fix visual editor change event/init/import sequences. 2025-04-20 20:48:51 +05:30
Kailash Nadh
968b366b43 Stop fetching bodies for all campaigns and explicitly fetch for visual campaign import. 2025-04-20 20:48:51 +05:30
Kailash Nadh
20e4b100ca Fix DB state issues in visual campaign cloning. 2025-04-20 20:48:51 +05:30
Kailash Nadh
f4c0e66adb Refactor 'media upload' integration in campaign visual editor. 2025-04-20 20:48:51 +05:30
Kailash Nadh
3aba2b00b4 Fix frontend/email-builder Makefile build steps. 2025-04-20 20:48:51 +05:30
Kailash Nadh
343d405b0f Add Ctrl+S campaign save shortcut and add Ctrl+S and F9 to richtext editor. 2025-04-20 20:48:51 +05:30
Kailash Nadh
e4e735e0cd Update tsx formatting in email-builder. 2025-04-20 20:48:51 +05:30
Kailash Nadh
503e98551c Add support for converting all types to visual editor blocks. 2025-04-20 20:48:51 +05:30
Kailash Nadh
f1fbadf6a6 Fix incorrect template states in DB in campaign creation and broken preview. 2025-04-20 20:48:51 +05:30
Kailash Nadh
cee2589a8e Move email-builder src from / to /frontend. 2025-04-20 20:48:51 +05:30
Kailash Nadh
110345d659 Refactor and simplify state management in campaign editor.
- Simplify and fix content conversion between formats.
- Fix state management issues.
- Rename `Apply` to `Import` on the visual template UI.
2025-04-20 20:48:51 +05:30
Kailash Nadh
fca5ec5abe Change visual editor UI language. 2025-04-20 20:48:51 +05:30
Kailash Nadh
7786b18473 Add DB migrations for visual editor. 2025-04-20 20:48:51 +05:30
Kailash Nadh
c1f81cfadd Fix compatibility issues with master.
- Fix merge conflicts.
- Simply logic in campaign preview handler.
- Remove redundant `GetCampaignForPreviewWithTemplate()` and switch to the old
  query that optionally takes a template.
- Fix Vue linting issues.
2025-04-20 20:48:51 +05:30
Vivek R
82e2b705bd fix: Move visual-editor to iframe so that CSS styles are isolated. 2025-04-20 20:48:51 +05:30
Vivek R
4a524c9332 feat: Integrate media selector to visual editor and add minor fixes.
- Disable visual templates from being made default.
- Refactor visual template selection flow in campaigns.
- Hide scroll if templates modal is active. This is to make sure it doesn't
  flicker when adding blocks in visual-editor.
2025-04-20 20:48:51 +05:30
Vivek R
e6f08a052c feat: Inject email-builder instead of loading it as ES module
- Add email-builder source
- Update yarn lock
2025-04-20 20:48:51 +05:30