From d2cf5457346285f9abcebc4b16ed41bf92b2254d Mon Sep 17 00:00:00 2001 From: Ronni Skansing Date: Sat, 20 Sep 2025 11:17:01 +0200 Subject: [PATCH 1/6] improve login and install UI Signed-off-by: Ronni Skansing --- .../src/lib/components/ThemeToggle.svelte | 10 ++++---- frontend/src/routes/install/+page.svelte | 24 ++++++++++++------- frontend/src/routes/login/+page.svelte | 13 +++++++++- .../routes/login/reset-password/+page.svelte | 12 +++++++++- 4 files changed, 43 insertions(+), 16 deletions(-) diff --git a/frontend/src/lib/components/ThemeToggle.svelte b/frontend/src/lib/components/ThemeToggle.svelte index 9253c2a..06c2a5a 100644 --- a/frontend/src/lib/components/ThemeToggle.svelte +++ b/frontend/src/lib/components/ThemeToggle.svelte @@ -11,13 +11,13 @@ {:else} {:else} diff --git a/frontend/src/routes/attachment/+page.svelte b/frontend/src/routes/attachment/+page.svelte index 192ae43..0e13a51 100644 --- a/frontend/src/routes/attachment/+page.svelte +++ b/frontend/src/routes/attachment/+page.svelte @@ -261,6 +261,7 @@ }} {...globalButtonDisabledAttributes(attachment, contextCompanyID)} title={attachment.name} + class="block w-full py-1 text-left" > {attachment.name} @@ -274,6 +275,7 @@ }} {...globalButtonDisabledAttributes(attachment, contextCompanyID)} title={attachment.name} + class="block w-full py-1 text-left" > {attachment.description} @@ -287,6 +289,7 @@ }} {...globalButtonDisabledAttributes(attachment, contextCompanyID)} title={attachment.name} + class="block w-full py-1 text-left" > {attachment.fileName} diff --git a/frontend/src/routes/campaign-template/+page.svelte b/frontend/src/routes/campaign-template/+page.svelte index bb26db1..038eb94 100644 --- a/frontend/src/routes/campaign-template/+page.svelte +++ b/frontend/src/routes/campaign-template/+page.svelte @@ -7,6 +7,7 @@ import TextField from '$lib/components/TextField.svelte'; import TableRow from '$lib/components/table/TableRow.svelte'; import TableCell from '$lib/components/table/TableCell.svelte'; + import TableCellLink from '$lib/components/table/TableCellLink.svelte'; import TableUpdateButton from '$lib/components/table/TableUpdateButton.svelte'; import TableDeleteButton from '$lib/components/table/TableDeleteButton2.svelte'; import TableCellAction from '$lib/components/table/TableCellAction.svelte'; @@ -473,62 +474,70 @@ on:click={() => openUpdateModal(template.id)} {...globalButtonDisabledAttributes(template, contextCompanyID)} title={template.name} + class="block w-full py-1 text-left" > {template.name} {#if template.domainID} - + {domainMap.byKey(template.domainID)} {/if} {#if template.smtpConfigurationID} - + {smtpConfigurationMap.byKey(template.smtpConfigurationID)} {/if} {#if template.apiSenderID} - + {apiSenderMap.byKey(template.apiSenderID)} {/if} {#if template.emailID} - + {emailMap.byKey(template.emailID)} {/if} {#if template.beforeLandingPageID} - + {beforeLandingPageMap.byKey(template.beforeLandingPageID)} {/if} {#if template.landingPageID} - + {landingPageMap.byKey(template.landingPageID)} {/if} {#if template.afterLandingPageID} - + {afterLandingPageMap.byKey(template.afterLandingPageID)} {/if} {#if template.afterLandingPageRedirectURL} - + {template.afterLandingPageRedirectURL} {/if} diff --git a/frontend/src/routes/campaign/+page.svelte b/frontend/src/routes/campaign/+page.svelte index 7269813..002f216 100644 --- a/frontend/src/routes/campaign/+page.svelte +++ b/frontend/src/routes/campaign/+page.svelte @@ -8,6 +8,7 @@ import TextField from '$lib/components/TextField.svelte'; import TableRow from '$lib/components/table/TableRow.svelte'; import TableCell from '$lib/components/table/TableCell.svelte'; + import TableCellLink from '$lib/components/table/TableCellLink.svelte'; import TableUpdateButton from '$lib/components/table/TableUpdateButton.svelte'; import TableDeleteButton from '$lib/components/table/TableDeleteButton2.svelte'; import { addToast } from '$lib/store/toast'; @@ -994,22 +995,21 @@ > {#each campaigns as campaign} - + {#if campaign.isTest} {/if} - - {campaign.name} - - + {campaign.name} + {toEvent(campaign.notableEventName).name} - - - {templateMap.byKey(campaign.templateID)} - - + + {templateMap.byKey(campaign.templateID)} + diff --git a/frontend/src/routes/campaign/[id]/+page.svelte b/frontend/src/routes/campaign/[id]/+page.svelte index 622020a..e89246a 100644 --- a/frontend/src/routes/campaign/[id]/+page.svelte +++ b/frontend/src/routes/campaign/[id]/+page.svelte @@ -10,6 +10,7 @@ import { AppStateService } from '$lib/service/appState'; import TableRow from '$lib/components/table/TableRow.svelte'; import TableCell from '$lib/components/table/TableCell.svelte'; + import TableCellLink from '$lib/components/table/TableCellLink.svelte'; import { formatWeekDays, formatTimeConstraint, timeFormat } from '$lib/utils/date.js'; import { defaultPerPage, @@ -1362,21 +1363,21 @@ {#if event.recipient?.firstName} - + {event.recipient.firstName} {/if} {#if event.recipient?.lastName} - + {event.recipient.lastName} {/if} {#if event.recipient?.email} - + {event.recipient.email} {/if} @@ -1430,18 +1431,27 @@ {:else} - - {#if recp?.recipient?.email} - {/if} diff --git a/frontend/src/routes/company/+page.svelte b/frontend/src/routes/company/+page.svelte index f07f290..bfe84f4 100644 --- a/frontend/src/routes/company/+page.svelte +++ b/frontend/src/routes/company/+page.svelte @@ -246,6 +246,7 @@ on:click={() => { openUpdateModal(company.id); }} + class="block w-full py-1 text-left" > {company.name} diff --git a/frontend/src/routes/domain/+page.svelte b/frontend/src/routes/domain/+page.svelte index 0aa7ec6..7303107 100644 --- a/frontend/src/routes/domain/+page.svelte +++ b/frontend/src/routes/domain/+page.svelte @@ -10,6 +10,7 @@ import CheckboxField from '$lib/components/CheckboxField.svelte'; import TableRow from '$lib/components/table/TableRow.svelte'; import TableCell from '$lib/components/table/TableCell.svelte'; + import TableCellLink from '$lib/components/table/TableCellLink.svelte'; import TableUpdateButton from '$lib/components/table/TableUpdateButton.svelte'; import TableDeleteButton from '$lib/components/table/TableDeleteButton2.svelte'; import { addToast } from '$lib/store/toast'; @@ -538,6 +539,7 @@ }} {...globalButtonDisabledAttributes(domain, contextCompanyID)} title={domain.name} + class="block w-full py-1 text-left" > {domain.name} diff --git a/frontend/src/routes/email/+page.svelte b/frontend/src/routes/email/+page.svelte index 46fb32c..21480e1 100644 --- a/frontend/src/routes/email/+page.svelte +++ b/frontend/src/routes/email/+page.svelte @@ -8,6 +8,7 @@ import Headline from '$lib/components/Headline.svelte'; import TextField from '$lib/components/TextField.svelte'; import TableCell from '$lib/components/table/TableCell.svelte'; + import TableCellLink from '$lib/components/table/TableCellLink.svelte'; import TableRow from '$lib/components/table/TableRow.svelte'; import TableUpdateButton from '$lib/components/table/TableUpdateButton.svelte'; import TableDeleteButton from '$lib/components/table/TableDeleteButton2.svelte'; @@ -394,6 +395,7 @@ }} {...globalButtonDisabledAttributes(email, contextCompanyID)} title={email.name} + class="block w-full py-1 text-left" > {email.name} diff --git a/frontend/src/routes/page/+page.svelte b/frontend/src/routes/page/+page.svelte index 6aa27f9..2da9d27 100644 --- a/frontend/src/routes/page/+page.svelte +++ b/frontend/src/routes/page/+page.svelte @@ -8,6 +8,7 @@ import TextField from '$lib/components/TextField.svelte'; import TableRow from '$lib/components/table/TableRow.svelte'; import TableCell from '$lib/components/table/TableCell.svelte'; + import TableCellLink from '$lib/components/table/TableCellLink.svelte'; import TableUpdateButton from '$lib/components/table/TableUpdateButton.svelte'; import TableDeleteButton from '$lib/components/table/TableDeleteButton2.svelte'; import FormError from '$lib/components/FormError.svelte'; @@ -315,6 +316,7 @@ }} {...globalButtonDisabledAttributes(page, contextCompanyID)} title={page.name} + class="block w-full py-1 text-left" > {page.name} diff --git a/frontend/src/routes/recipient/+page.svelte b/frontend/src/routes/recipient/+page.svelte index 7817da4..9bb7c14 100644 --- a/frontend/src/routes/recipient/+page.svelte +++ b/frontend/src/routes/recipient/+page.svelte @@ -7,6 +7,7 @@ import TextField from '$lib/components/TextField.svelte'; import TableRow from '$lib/components/table/TableRow.svelte'; import TableCell from '$lib/components/table/TableCell.svelte'; + import TableCellLink from '$lib/components/table/TableCellLink.svelte'; import TableUpdateButton from '$lib/components/table/TableUpdateButton.svelte'; import TableDeleteButton from '$lib/components/table/TableDeleteButton2.svelte'; import { addToast } from '$lib/store/toast'; @@ -406,19 +407,18 @@ > {#each recipients as recipient} - + {#if recipient.email} - - {recipient.email} - + {recipient.email} {/if} - + {#if recipient.firstName} @@ -430,6 +430,7 @@ on:click={() => { openUpdateModal(recipient.id); }} + class="block w-full py-1 text-left" > {recipient.lastName} diff --git a/frontend/src/routes/recipient/group/+page.svelte b/frontend/src/routes/recipient/group/+page.svelte index 972b31d..50c63fe 100644 --- a/frontend/src/routes/recipient/group/+page.svelte +++ b/frontend/src/routes/recipient/group/+page.svelte @@ -8,6 +8,7 @@ import TextField from '$lib/components/TextField.svelte'; import TableRow from '$lib/components/table/TableRow.svelte'; import TableCell from '$lib/components/table/TableCell.svelte'; + import TableCellLink from '$lib/components/table/TableCellLink.svelte'; import TableUpdateButton from '$lib/components/table/TableUpdateButton.svelte'; import TableDeleteButton from '$lib/components/table/TableDeleteButton2.svelte'; import { addToast } from '$lib/store/toast'; @@ -232,17 +233,13 @@ > {#each groups as group} - - - {group.name} - - + + {group.name} + - - - {group.recipientCount} - - + + {group.recipientCount} + diff --git a/frontend/src/routes/recipient/group/[id]/+page.svelte b/frontend/src/routes/recipient/group/[id]/+page.svelte index 87406eb..e2fb6c3 100644 --- a/frontend/src/routes/recipient/group/[id]/+page.svelte +++ b/frontend/src/routes/recipient/group/[id]/+page.svelte @@ -9,6 +9,7 @@ import SubHeadline from '$lib/components/SubHeadline.svelte'; import TableRow from '$lib/components/table/TableRow.svelte'; import TableCell from '$lib/components/table/TableCell.svelte'; + import TableCellLink from '$lib/components/table/TableCellLink.svelte'; import { addToast } from '$lib/store/toast'; import FormError from '$lib/components/FormError.svelte'; import TableCellEmpty from '$lib/components/table/TableCellEmpty.svelte'; @@ -391,16 +392,16 @@ {#each recipients as recipient} - - {recipient.firstName} - - - {recipient.lastName} - + + {recipient.firstName} + + + {recipient.lastName} + - - {recipient.extraIdentifier} - + + {recipient.extraIdentifier} + diff --git a/frontend/src/routes/smtp-configuration/+page.svelte b/frontend/src/routes/smtp-configuration/+page.svelte index ac63dcd..409fe56 100644 --- a/frontend/src/routes/smtp-configuration/+page.svelte +++ b/frontend/src/routes/smtp-configuration/+page.svelte @@ -441,6 +441,7 @@ }} {...globalButtonDisabledAttributes(conf, contextCompanyID)} title={conf.name} + class="block w-full py-1 text-left" > {conf.name} diff --git a/frontend/src/routes/user/+page.svelte b/frontend/src/routes/user/+page.svelte index 8a1b6ff..ecf29c3 100644 --- a/frontend/src/routes/user/+page.svelte +++ b/frontend/src/routes/user/+page.svelte @@ -263,6 +263,7 @@ on:click={() => { showEditModal(user.id); }} + class="block w-full py-1 text-left" > {user.username} Date: Sun, 21 Sep 2025 15:32:59 +0200 Subject: [PATCH 5/6] removed unused legacy page Signed-off-by: Ronni Skansing --- frontend/src/lib/api/middleware.js | 4 +- .../routes/login/reset-password/+page.svelte | 88 ------------------- 2 files changed, 2 insertions(+), 90 deletions(-) delete mode 100644 frontend/src/routes/login/reset-password/+page.svelte diff --git a/frontend/src/lib/api/middleware.js b/frontend/src/lib/api/middleware.js index 185fb33..bd4fe7e 100644 --- a/frontend/src/lib/api/middleware.js +++ b/frontend/src/lib/api/middleware.js @@ -12,9 +12,9 @@ export const immediateResponseHandler = (apiResponse) => { goto('/login'); window.location.reload(); } - // If the user must renew their password, move them to the renew password page + // If the user must renew their password, redirect to login if (apiResponse.statusCode === 400 && apiResponse.error === 'New password required') { - goto('/login/reset-password'); + goto('/login'); return; } return apiResponse; diff --git a/frontend/src/routes/login/reset-password/+page.svelte b/frontend/src/routes/login/reset-password/+page.svelte deleted file mode 100644 index e3b1c86..0000000 --- a/frontend/src/routes/login/reset-password/+page.svelte +++ /dev/null @@ -1,88 +0,0 @@ - - - -
- -
- -
- - Current password has expired. Set a new password - Current password - New password - Repeat new password - - Change Password - -
From 0a0fbc2f3962cc8e2f4bce770e6da47f7b4e553d Mon Sep 17 00:00:00 2001 From: Ronni Skansing Date: Sun, 21 Sep 2025 15:37:14 +0200 Subject: [PATCH 6/6] release notes 1.3.1 Signed-off-by: Ronni Skansing --- RELEASE.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/RELEASE.md b/RELEASE.md index 7d03f5c..ea9314c 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,5 +1,13 @@ # Changelog +## [1.3.1] - 2025-09-21 +- Improved width of links in tables +- Fixed asset page not showing domains +- Fixed domain assets shown under global assets +- Improve asset delete modal text +- Removed asset preview icon background +- Minor improvements to install / login UI. + ## [1.3.0] - 2025-09-19 - Added dark mode support and various UI improvements - Added manual backup functionality