Commit graph

464 commits

Author SHA1 Message Date
Kailash Nadh
bb1492b882 Merge branch 'query-performance' 2024-01-27 15:56:09 +05:30
Kailash Nadh
5a3664aee2 Add support for caching slow queries on large databases.
- Add materialized views for list -> subscriber counts, dashboard chart,
  and dashboard aggregate stats that slow down significantly on large
  databases (with millions or tens of millions of subscribers). These
  slow queries involve full table scan COUNTS().

- Add a toggle to enable caching slow results in Settings -> Performance.

- Add support for setting a cron string that crons and periodically
  refreshes aggregated stats in materialized views.

Closes #1019.
2024-01-27 15:51:12 +05:30
dependabot[bot]
e42ab9c135
Bump vite from 5.0.10 to 5.0.12 in /frontend (#1680)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.0.10 to 5.0.12.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.0.12/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.0.12/packages/vite)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-20 12:35:20 +05:30
dependabot[bot]
0935e9c136
Bump follow-redirects from 1.15.3 to 1.15.4 in /frontend (#1664)
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.3 to 1.15.4.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.3...v1.15.4)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-11 10:26:31 +05:30
Kailash Nadh
908173c4e0 Style the 'fix code' buttn on campaign archive tab. 2024-01-10 22:08:13 +05:30
Kailash Nadh
d8ca26e747 Add a 'template reference' docs link next to campaign editor. Closes #1405. 2024-01-10 22:07:40 +05:30
Kailash Nadh
0d319ad9fd Add 'slug' (permalink) support for campaign archives. Closes #1394. 2024-01-09 23:34:08 +05:30
Kailash Nadh
3711bed98d Fix clipboard copy prop on template form. 2024-01-06 19:19:27 +05:30
Kailash Nadh
bd2990fb02 Add F9 shortcut key for toggling campaign and template previews. 2024-01-06 19:17:27 +05:30
Kailash Nadh
234fd11f13 Fix incorrect label on maintenance UI. Closes #1652. 2024-01-06 12:11:40 +05:30
Kailash Nadh
0c9dc07479 Add a ?v=hash cache breaker (that changes on restart) to static assets. 2023-12-31 22:20:37 +05:30
Kailash Nadh
a2629c2c31 Make all ID/UUID labels on the UI onclick -> clipboard copy. 2023-12-31 21:39:19 +05:30
Kailash Nadh
b946c33e61 Fix broken chart components. 2023-12-30 23:00:20 +05:30
Kailash Nadh
2feb1b0fb8 Make the name part in from e-mails optional. Closes #1602. 2023-12-30 21:48:12 +05:30
Kailash Nadh
0d74619cac Make providing name in subscriber creation optional and assign internally. Closes #1630. 2023-12-30 15:51:42 +05:30
Kailash Nadh
a9a715696a Scroll TinyMCE richtext editor back to caret on dialog close. Closes #1635. 2023-12-29 23:01:51 +05:30
Kailash Nadh
db17fa1451 Restore tab selection on campaign page on reload. 2023-12-29 22:51:53 +05:30
Kailash Nadh
ef77a7e10f Replace c3js with chart.js for major dep size reduction. 2023-12-29 22:17:53 +05:30
Kailash Nadh
af8b420d53 Refactor and upgrade the frontend vue code to work with vite instead of webpack.
- Upgrade eslint and fix a massive number (~2500!) of linting errors from new rules.
- Upgrade babel core frontend dev dependency.
- Upgrade UI lib and other frontend deps.
- Refactor the Vue admin app to use `vite` instead of `webpack`.
- This was an extremely tedious and painstaking, trial-and-error
  alchemy job. My disdain for the Javascript "ecosystem" grows.
- Re-add custom admin appearance endpoints to the refactored Vue page.
- Remove obsolete vue-cli config.
- Re-auto-format all .vue files again to work with new linters.
2023-12-25 19:26:08 +05:30
Kailash Nadh
51af75cfef Add subscription status filter to subscriber list query and admin UI. 2023-12-23 16:43:28 +05:30
Kailash Nadh
8f12c03a8a Fix newly created lists not showing up on other pages automatically. Closes #1589. 2023-12-23 14:59:05 +05:30
Kailash Nadh
c468e7ae71 Upgrade Cypress to latest version. 2023-12-23 14:44:50 +05:30
dependabot[bot]
524be2753b
Bump tinymce from 5.10.8 to 5.10.9 in /frontend (#1592)
Bumps [tinymce](https://github.com/tinymce/tinymce/tree/HEAD/modules/tinymce) from 5.10.8 to 5.10.9.
- [Changelog](https://github.com/tinymce/tinymce/blob/5.10.9/modules/tinymce/CHANGELOG.md)
- [Commits](https://github.com/tinymce/tinymce/commits/5.10.9/modules/tinymce)

---
updated-dependencies:
- dependency-name: tinymce
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-21 11:07:08 +05:30
Kailash Nadh
c59825f3a5 Fix broken sorting (lists -> subcount, subscribers -> status) in queries. Closes #1076. 2023-11-12 10:29:32 +05:30
Kailash Nadh
06b4494200 Fix incorrect sanitisation of search queries on list/campaign frontend. 2023-11-12 10:29:32 +05:30
dependabot[bot]
d439ecfd84
Bump axios from 0.27.2 to 1.6.0 in /frontend (#1587)
Bumps [axios](https://github.com/axios/axios) from 0.27.2 to 1.6.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/v0.27.2...v1.6.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-11 20:31:09 +05:30
Kailash Nadh
62be5e2181 Fix mysteriously broken frontend build by switching eslint parser dep. 2023-11-11 15:56:42 +05:30
dependabot[bot]
ccceaa6e92
Bump @babel/traverse from 7.21.3 to 7.23.2 in /frontend (#1563)
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.3 to 7.23.2.
- [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.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-31 11:04:57 +05:30
dependabot[bot]
c7882bb220
Bump tinymce from 5.10.7 to 5.10.8 in /frontend (#1564)
Bumps [tinymce](https://github.com/tinymce/tinymce/tree/HEAD/modules/tinymce) from 5.10.7 to 5.10.8.
- [Changelog](https://github.com/tinymce/tinymce/blob/5.10.8/modules/tinymce/CHANGELOG.md)
- [Commits](https://github.com/tinymce/tinymce/commits/5.10.8/modules/tinymce)

---
updated-dependencies:
- dependency-name: tinymce
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-31 11:04:51 +05:30
Kailash Nadh
2b95c88188
Add Postmark bounce webhook support (refactor #1385) (#1485)
Co-authored-by: Thomas Siebers <tom@tsiebers.de>
2023-08-31 21:27:34 +05:30
Kailash Nadh
83c88d73d7 Escape search query in list search. Closes #1471. 2023-08-27 14:35:42 +05:30
Kailash Nadh
6af904dbd4 Lowercase email search on UI to match lowercase email index in DB. Closes #1464. 2023-08-27 12:17:50 +05:30
Kailash Nadh
79ff7293ea Fix broken dummy password warning on SMTP test UI. Closes #1450. 2023-08-15 20:57:58 +05:30
Kailash Nadh
0562e5de8d Apply minor fixes to the admin maintenance page template. 2023-08-08 00:07:21 +05:30
Kailash Nadh
acca61f2ca Fix race conditions in Cypress tests (sigh). 2023-08-06 21:25:19 +05:30
Kailash Nadh
1164afac5e Fix private lists being unsubscribed from public form and re-factor subscription status view in admin. 2023-08-06 21:09:16 +05:30
Kailash Nadh
93db7c45bc Fix incorrect Buefy checkbox colour. 2023-07-26 23:15:20 +05:30
Kailash Nadh
ad80c716f9 Add new privacy option 'Record opt-in IP' to record IP address of optin confirmation.
- Add new 'Subscriptions' table on the subscriber list form that shows subs,
  IP, and other data.
- Add new `meta` JSONB field to `subscriber_lsts` table.

Closes #1329.
2023-07-26 23:00:32 +05:30
Kailash Nadh
b26950c427 Add new subscription list table to the subscriber edit UI modal. 2023-07-22 16:23:57 +05:30
Kailash Nadh
a62851915c Mask passwords on the UI accurately with the actual passwords length.
This PR masks all the password fields in the UI with a pseudo dot character
retaining the rune length of the original password so that the password
fields on the UI appear to be containing the entered value as-is.

The earlier implementation would revert to a fixed length dummy password
confusing certain users and making it look like the password they entered
wasn't being saved.
2023-07-21 23:46:46 +05:30
Kailash Nadh
0be5901df7 Fix lists UI queries overriding full lists in selections elsewhere. Closes #1400. 2023-07-20 23:46:00 +05:30
Kailash Nadh
534c87509a Ignore common on-reload xhr errors in Cypress. 2023-07-20 23:41:53 +05:30
dependabot[bot]
7dd7166bcf
Bump word-wrap from 1.2.3 to 1.2.4 in /frontend (#1403)
Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4.
- [Release notes](https://github.com/jonschlinkert/word-wrap/releases)
- [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4)

---
updated-dependencies:
- dependency-name: word-wrap
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-19 15:03:17 +05:30
dependabot[bot]
1894af121f
Bump semver from 5.7.1 to 5.7.2 in /frontend (#1398)
Bumps [semver](https://github.com/npm/node-semver) from 5.7.1 to 5.7.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/v5.7.2/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v5.7.1...v5.7.2)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-12 10:24:56 +05:30
Kailash Nadh
0b2da4c664 Add support for streaming async events via HTTP serverside events.
- `GET /api/events?type=error` opens a long-lived HTTP server side
  event connection that streams error messages.
- async (typically SMTP) errors are now streamed to the frontend and
  disaplyed as an error toast on the admin UI.
2023-05-27 15:44:59 +05:30
Kailash Nadh
d359ad27aa Refactor media management.
- Change tiled UI to table UI.
- Add support for search and pagination.
- Important: This breaks the `GET /api/media` API to introduce pagination
  fields. Media items are now moved into `{ data: results[] }`.
2023-05-21 15:19:12 +05:30
Kailash Nadh
3b9a0f782e
Add support for file attachments on campaigns (#1341)
- Adds support for arbitrary file uploads with an admin setting to select allowed file extensions.
- Adds support for attaching media (files) to campaigns.
2023-05-18 16:55:59 +05:30
Kailash Nadh
5fc28a733c Add support for variable bounce processing actions.
- Add support for `complaint` to the SES bounce processor.
- Add support for `hard/soft` to Sendgrid bounce processor.
- Add new bounce actions `None` and `Unsubscribe`.
- Add per type (`soft/hard/complaint`) bounce rule configuration to
  admin settings UI.
- Refactor Cypress bounce tests.
2023-04-11 11:33:40 +05:30
Justin Beaty
476d5bebf2
Add support for publishing full content in public archive RSS feed body (#1262)
- Introduces a new option on the settings UI to optionally publish the full campaign body in
  public archive RSS feeds.

Closes #1033 

Co-authored-by: Kailash Nadh <kailash@nadh.in>
2023-04-08 09:39:10 +05:30
peix187
146e8e7a63
Add missing translation message in maintenance page (#1279) 2023-04-08 08:48:40 +05:30