639 Commits

Author SHA1 Message Date
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
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
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
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
dependabot[bot]
60f7ac9351 Bump js-yaml from 4.1.0 to 4.1.1 in /frontend/email-builder (#2767)
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.1.0 to 4.1.1.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/4.1.0...4.1.1)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.1.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-22 10:04:09 +05:30
Kailash Nadh
296245a1b3 Add 2FA TOTP support for authentication.
- Allow users to enable TOTP 2FA from the profile page by scanning a QR code.
- Create new `internal/tmptokens` in-memory token store for temp tokens for
  temporary login -> 2FA flow.
- Refactor reset methods to use this package instead of inline locked map.
2025-11-20 23:23:54 +05:30
Meysam
a2bfc0b77e feat: add subscriber activity tracking UI in admin panel (#2756)
* feat: add subscriber activity tracking UI in admin panel
* Apply minor cosmetic fixes to the subscriber activity forum.

- Remove dead icon references
- Remove new i18n language strings and reuse existing ones
- Refresh i18n languages with new strings
- Tweak styles

---------

Co-authored-by: Kailash Nadh <kailash@nadh.in>
2025-11-18 22:22:16 +05:30
dependabot[bot]
b3f60a957f Bump js-yaml from 4.1.0 to 4.1.1 in /frontend (#2761)
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.1.0 to 4.1.1.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/4.1.0...4.1.1)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.1.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-18 21:41:28 +05:30
Kailash Nadh
cdf0a5c153 Add CORS configuration to security settings.
This patch adds a new CORS config textbox in Settings -> Security that allows
configuring CORS origin domains per line.

Closes #2724
2025-10-25 14:33:25 +05:30
dependabot[bot]
827a2081b0 Bump vite from 5.4.20 to 5.4.21 in /frontend (#2722)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.20 to 5.4.21.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.21/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.21/packages/vite)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-21 18:05:48 +05:30
dependabot[bot]
c666c4ff9e Bump vite from 5.4.19 to 5.4.20 in /frontend (#2691)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.19 to 5.4.20.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.20/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.20/packages/vite)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-02 22:49:36 +05:30
dependabot[bot]
fb60455d10 Bump vite from 5.4.18 to 5.4.20 in /frontend/email-builder (#2660)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.18 to 5.4.20.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.20/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.20/packages/vite)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-29 20:23:14 +05:30
dependabot[bot]
27f58efae9 Bump axios from 1.8.2 to 1.12.0 in /frontend (#2666)
Bumps [axios](https://github.com/axios/axios) from 1.8.2 to 1.12.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.8.2...v1.12.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.12.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-09-29 20:23:04 +05:30
SweetPPro
a76099e9e5 incorrect ALTCHA Form challengeurl (#2654)
fixes incorrect ALTCHA Form challengeurl
2025-09-10 10:44:22 +05:30
Kailash Nadh
d4007d5148 Fix Go tpl expressions breaking in Visual editor HTML.
Closes #2593.
Closes #2499.
2025-09-09 22:29:46 +05:30
Kailash Nadh
81d05e4dd6 Suppress optin e-mail send errors on subscriber insert/edit APIs. 2025-09-09 21:12:01 +05:30
Kailash Nadh
fcbebc272b Update Cypress trests on the campaign file attach UI. 2025-09-09 00:15:03 +05:30
Kailash Nadh
ad66878ea0 Fix list action icons not showing on the UI based on permissions. Closes #2640. 2025-09-08 17:52:44 +05:30
Kailash Nadh
09d291e119 Add support for built-in ALTCHA CAPTCHA implementation.
The existing hCaptcha implementation as the only CAPTCHA option isn't ideal
as hCaptcha is a proprietary SaaS provider. This commit adds supports for
ALTCHA (altcha.org) a self-contained "proof-of-work" based CAPTCHA option.

Closes #2243.
2025-08-16 16:48:20 +05:30
dependabot[bot]
4a93184c7e Bump tmp from 0.2.3 to 0.2.4 in /frontend (#2617)
Bumps [tmp](https://github.com/raszi/node-tmp) from 0.2.3 to 0.2.4.
- [Changelog](https://github.com/raszi/node-tmp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/raszi/node-tmp/compare/v0.2.3...v0.2.4)

---
updated-dependencies:
- dependency-name: tmp
  dependency-version: 0.2.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-09 13:25:12 +05:30
Kailash Nadh
4d74cf4520 Tweak log viewer to optionally hide filename from log lines (on the import UI). 2025-08-03 19:17:53 +05:30
dependabot[bot]
26c61f8ea1 Bump form-data from 4.0.1 to 4.0.4 in /frontend (#2587)
Bumps [form-data](https://github.com/form-data/form-data) from 4.0.1 to 4.0.4.
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](https://github.com/form-data/form-data/compare/v4.0.1...v4.0.4)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 4.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-03 18:56:51 +05:30
Kailash Nadh
fb39d6183c Refactor media gallery UI.
- Replace table view with thumbnail gallery view, increasing display density.
- Hide upload form and move it to a toggle button
- Clean up pagination handles.
- Simplify and cleanup the overall page, making modal mode better.
2025-08-03 18:51:11 +05:30
Bowrna
ba24c64fae Add subsriber blocklisting on the bounces UI (#2409)
Co-authored-by: Kailash Nadh <kailash@nadh.in>
2025-08-01 23:21:25 +05:30
Vivek R
c9c678c04f Add support for OIDC user auto-creation (#2578)
This patch adds 3 new options to OIDC settings.

Toggle user auto-creation, and select default user/list roles
for auto-created users.

Co-authored-by: Kailash Nadh <kailash@nadh.in>
2025-07-20 16:11:45 +05:30
dependabot[bot]
70fe7cba6f Bump vite from 5.4.18 to 5.4.19 in /frontend (#2497)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.18 to 5.4.19.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.19/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.19/packages/vite)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-25 13:18:25 +05:30
Kailash Nadh
e49253bc9c Fix name conflict in frontend JS util lib. 2025-05-25 12:17:52 +05:30
Kailash Nadh
86f808bc77 Allow @ in usernames. Closes #2478. 2025-05-24 22:55:39 +05:30
Kailash Nadh
03285abf71 Display detailed d:h:m duration schedule on campaigns page. Closes #2460. 2025-05-24 22:42:10 +05:30
Kailash Nadh
3895fbda12 Fix race in selected template reverting to default on the campaign page. Closes #2461. 2025-05-24 22:17:53 +05:30
Kailash Nadh
9540d49a2b Fix subscription status filter param not being picked up on subscribers page. Closes #2447. 2025-05-24 22:03:31 +05:30
Kailash Nadh
2e563229da Fix incorrect query check in bulk subscriber actions. Closes #2491. 2025-05-24 18:07:57 +05:30
Kailash Nadh
9de19ea28c Fix Codemirror Cypress tests in templates and form pages. 2025-04-28 18:05:10 +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
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
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
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
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