From 34f5f3c3c3a77f700b077c47022c2ceca5137373 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 15 Jan 2026 18:18:49 +0000 Subject: [PATCH 01/18] Bump devalue from 5.3.2 to 5.6.2 Bumps [devalue](https://github.com/sveltejs/devalue) from 5.3.2 to 5.6.2. - [Release notes](https://github.com/sveltejs/devalue/releases) - [Changelog](https://github.com/sveltejs/devalue/blob/main/CHANGELOG.md) - [Commits](https://github.com/sveltejs/devalue/compare/v5.3.2...v5.6.2) --- updated-dependencies: - dependency-name: devalue dependency-version: 5.6.2 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0af3e2c..04e0610 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4223,9 +4223,9 @@ } }, "node_modules/devalue": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.3.2.tgz", - "integrity": "sha512-UDsjUbpQn9kvm68slnrs+mfxwFkIflOhkanmyabZ8zOYk8SMEIbJ3TK+88g70hSIeytu4y18f0z/hYHMTrXIWw==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.2.tgz", + "integrity": "sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==", "license": "MIT" }, "node_modules/dlv": { From 86a3f27bf6f9ef2e7660f2b873f4e7efe1e6c50e Mon Sep 17 00:00:00 2001 From: Karl Ludwig Weise Date: Fri, 16 Jan 2026 13:39:42 +0100 Subject: [PATCH 02/18] Fix pin throttle check --- src/lib/stores/pin-throttle.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/stores/pin-throttle.ts b/src/lib/stores/pin-throttle.ts index 895317f..de8677e 100644 --- a/src/lib/stores/pin-throttle.ts +++ b/src/lib/stores/pin-throttle.ts @@ -24,7 +24,7 @@ const createPinThrottleStore = () => { failedAttempts: 0, }; - if (!browser) { + if (browser) { const stored = localStorage.getItem(STORAGE_KEY); if (stored) { try { From 65a9807ad8fbcd26a4edc353dd0a37d3c835acd8 Mon Sep 17 00:00:00 2001 From: Karl Ludwig Weise Date: Fri, 16 Jan 2026 15:34:45 +0100 Subject: [PATCH 03/18] Fix: Show language switch again on dashboard --- .../components/templates/language-switch/language-switch.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/templates/language-switch/language-switch.svelte b/src/lib/components/templates/language-switch/language-switch.svelte index 5006c9d..861bac8 100644 --- a/src/lib/components/templates/language-switch/language-switch.svelte +++ b/src/lib/components/templates/language-switch/language-switch.svelte @@ -29,7 +29,7 @@ ); -{#if locales && options.length > 1} +{#if options.length > 1}
Date: Fri, 16 Jan 2026 15:35:29 +0100 Subject: [PATCH 04/18] Show proper label on settings form --- project.inlang/messages/de.json | 3 ++- project.inlang/messages/en.json | 3 ++- .../(components)/edit-settings-form/edit-settings-form.svelte | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/project.inlang/messages/de.json b/project.inlang/messages/de.json index 3d6bbdb..0a61430 100644 --- a/project.inlang/messages/de.json +++ b/project.inlang/messages/de.json @@ -694,7 +694,8 @@ "title": "Telefonnummer erforderlich", "label": "Kunden müssen eine Telefonnummer angeben, wenn sie einen Termin buchen." } - } + }, + "action": "Speichern" } }, "account": { diff --git a/project.inlang/messages/en.json b/project.inlang/messages/en.json index 9372fa1..6878aa4 100644 --- a/project.inlang/messages/en.json +++ b/project.inlang/messages/en.json @@ -703,7 +703,8 @@ "title": "Require Phone Number", "label": "Require clients to provide a phone number when booking an appointment." } - } + }, + "action": "Save" } }, "account": { diff --git a/src/routes/(pages)/dashboard/settings/(components)/edit-settings-form/edit-settings-form.svelte b/src/routes/(pages)/dashboard/settings/(components)/edit-settings-form/edit-settings-form.svelte index 7b7517d..3a2327d 100644 --- a/src/routes/(pages)/dashboard/settings/(components)/edit-settings-form/edit-settings-form.svelte +++ b/src/routes/(pages)/dashboard/settings/(components)/edit-settings-form/edit-settings-form.svelte @@ -333,7 +333,7 @@ disabled={isSubmitting} class="sm:ml-auto" > - {m["tenants.edit.action"]()} + {m["settings.form.action"]()}
From 0c0ef469893ebee70f8d1ac6b9d43846bbbe5ad1 Mon Sep 17 00:00:00 2001 From: Karl Ludwig Weise Date: Fri, 16 Jan 2026 15:35:56 +0100 Subject: [PATCH 05/18] Improve decrypting error message --- project.inlang/messages/de.json | 1 + project.inlang/messages/en.json | 1 + .../dashboard/calendar/(components)/AppointmentPreview.svelte | 4 +++- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/project.inlang/messages/de.json b/project.inlang/messages/de.json index 0a61430..1c34a5e 100644 --- a/project.inlang/messages/de.json +++ b/project.inlang/messages/de.json @@ -901,6 +901,7 @@ "today": "Heute", "loading": "Loading calendar", "decrypting": "wird entschlüsselt...", + "decryptingError": "Entschlüsselung fehlgeschlagen. Bitte neu anmelden.", "shownAppointments": { "title": "Termine", "options": { diff --git a/project.inlang/messages/en.json b/project.inlang/messages/en.json index 6878aa4..594a899 100644 --- a/project.inlang/messages/en.json +++ b/project.inlang/messages/en.json @@ -910,6 +910,7 @@ "today": "Today", "loading": "Loading calendar", "decrypting": "decrypting...", + "decryptingError": "Unable to decrypt data. Please log-in again", "shownAppointments": { "title": "Appointments", "options": { diff --git a/src/routes/(pages)/dashboard/calendar/(components)/AppointmentPreview.svelte b/src/routes/(pages)/dashboard/calendar/(components)/AppointmentPreview.svelte index e0488fa..9bd5b71 100644 --- a/src/routes/(pages)/dashboard/calendar/(components)/AppointmentPreview.svelte +++ b/src/routes/(pages)/dashboard/calendar/(components)/AppointmentPreview.svelte @@ -84,7 +84,9 @@ {#if error}
- ⚠️ + + ⚠️ {m["calendar.decryptingError"]()} +
{:else if decrypted === undefined}
From 1d83f8678b414f5a15043186d8ea67035282eba9 Mon Sep 17 00:00:00 2001 From: Karl Ludwig Weise Date: Fri, 16 Jan 2026 15:36:12 +0100 Subject: [PATCH 06/18] Set english as default language --- .../book-appointment/[[id]]/(components)/summary.svelte | 2 +- .../[id]/appointments/[appointmentId]/confirm/+server.ts | 2 +- .../api/tenants/[id]/appointments/add-to-tunnel/+server.ts | 2 +- .../api/tenants/[id]/appointments/create-new-client/+server.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/routes/(pages)/(clients)/book-appointment/[[id]]/(components)/summary.svelte b/src/routes/(pages)/(clients)/book-appointment/[[id]]/(components)/summary.svelte index 65152ee..412dd22 100644 --- a/src/routes/(pages)/(clients)/book-appointment/[[id]]/(components)/summary.svelte +++ b/src/routes/(pages)/(clients)/book-appointment/[[id]]/(components)/summary.svelte @@ -35,7 +35,7 @@ appointment.slot.duration, tenant.id, Boolean(appointment.isNewClient), - getLocale() || "de", + getLocale() || "en", ) .then(() => { const isRequest = channel.requiresConfirmation; diff --git a/src/routes/api/tenants/[id]/appointments/[appointmentId]/confirm/+server.ts b/src/routes/api/tenants/[id]/appointments/[appointmentId]/confirm/+server.ts index 67e03cc..fb022c7 100644 --- a/src/routes/api/tenants/[id]/appointments/[appointmentId]/confirm/+server.ts +++ b/src/routes/api/tenants/[id]/appointments/[appointmentId]/confirm/+server.ts @@ -9,7 +9,7 @@ import { checkPermission } from "$lib/server/utils/permissions"; const requestSchema = z.object({ clientEmail: z.string().email().optional(), - clientLanguage: z.string().optional().default("de"), + clientLanguage: z.string().optional().default("en"), }); // Register OpenAPI documentation for PUT diff --git a/src/routes/api/tenants/[id]/appointments/add-to-tunnel/+server.ts b/src/routes/api/tenants/[id]/appointments/add-to-tunnel/+server.ts index 725006d..f8ea48e 100644 --- a/src/routes/api/tenants/[id]/appointments/add-to-tunnel/+server.ts +++ b/src/routes/api/tenants/[id]/appointments/add-to-tunnel/+server.ts @@ -28,7 +28,7 @@ const requestSchema = z.object({ appointmentDate: z.string(), duration: z.number().int().positive(), clientEmail: z.string().email(), - clientLanguage: z.string().optional().default("de"), + clientLanguage: z.string().optional().default("en"), encryptedAppointment: z.object({ encryptedPayload: z.string(), iv: z.string(), diff --git a/src/routes/api/tenants/[id]/appointments/create-new-client/+server.ts b/src/routes/api/tenants/[id]/appointments/create-new-client/+server.ts index bf2dd80..953a92b 100644 --- a/src/routes/api/tenants/[id]/appointments/create-new-client/+server.ts +++ b/src/routes/api/tenants/[id]/appointments/create-new-client/+server.ts @@ -13,7 +13,7 @@ const requestSchema = z.object({ duration: z.number().int().positive(), emailHash: z.string(), clientEmail: z.string().email(), - clientLanguage: z.string().optional().default("de"), + clientLanguage: z.string().optional().default("en"), clientPublicKey: z.string(), privateKeyShare: z.string(), encryptedAppointment: z.object({ From ded98597fc7a74196d70e78ab97e95455d9c2fd1 Mon Sep 17 00:00:00 2001 From: Karl Ludwig Weise Date: Fri, 16 Jan 2026 15:47:40 +0100 Subject: [PATCH 07/18] Disable book appointment button, when in progress --- .../book-appointment/[[id]]/(components)/summary.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/(pages)/(clients)/book-appointment/[[id]]/(components)/summary.svelte b/src/routes/(pages)/(clients)/book-appointment/[[id]]/(components)/summary.svelte index 412dd22..f59ca4e 100644 --- a/src/routes/(pages)/(clients)/book-appointment/[[id]]/(components)/summary.svelte +++ b/src/routes/(pages)/(clients)/book-appointment/[[id]]/(components)/summary.svelte @@ -61,7 +61,7 @@ {m["public.steps.summary.request.hint"]()} {/if} - + {/snippet} From eb4781439519d8bf9ec2007940f2113c3f7517bf Mon Sep 17 00:00:00 2001 From: Karl Ludwig Weise Date: Fri, 16 Jan 2026 16:03:23 +0100 Subject: [PATCH 09/18] Redact user and password from databaseUrl logs --- src/lib/server/services/tenant-admin-service.ts | 3 ++- src/lib/server/utils/url.ts | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 src/lib/server/utils/url.ts diff --git a/src/lib/server/services/tenant-admin-service.ts b/src/lib/server/services/tenant-admin-service.ts index f0d5466..3ce9f51 100644 --- a/src/lib/server/services/tenant-admin-service.ts +++ b/src/lib/server/services/tenant-admin-service.ts @@ -9,6 +9,7 @@ import { eq, and, not, count, or } from "drizzle-orm"; import logger from "$lib/logger"; import { z } from "zod"; import { ValidationError, NotFoundError, ConflictError } from "../utils/errors"; +import { redactDbUrl } from "../utils/url"; if (!env.DATABASE_URL) throw new Error("DATABASE_URL is not set"); @@ -110,7 +111,7 @@ export class TenantAdminService { } catch (dbError) { log.error("Failed to initialize tenant database", { tenantId: tenant[0].id, - databaseUrl: newTenant.databaseUrl, + databaseUrl: redactDbUrl(newTenant.databaseUrl), error: String(dbError), }); diff --git a/src/lib/server/utils/url.ts b/src/lib/server/utils/url.ts new file mode 100644 index 0000000..66c4a79 --- /dev/null +++ b/src/lib/server/utils/url.ts @@ -0,0 +1,6 @@ +export const redactDbUrl = (input: string) => { + const url = new URL(input); + url.username = "redacted-user"; + url.password = "redacted-pw"; + return url.toString(); +}; From fd7cfe00df2efd1afb60f05c8978ae1ba9abe292 Mon Sep 17 00:00:00 2001 From: Karl Ludwig Weise Date: Fri, 16 Jan 2026 16:20:32 +0100 Subject: [PATCH 10/18] Fix tenant database migrations --- tenant-migrations/0003_complex_the_call.sql | 2 +- tenant-migrations/0009_far_korg.sql | 1 - tenant-migrations/meta/0003_snapshot.json | 4 ++-- tenant-migrations/meta/0004_snapshot.json | 4 ++-- tenant-migrations/meta/0005_snapshot.json | 4 ++-- tenant-migrations/meta/0006_snapshot.json | 4 ++-- tenant-migrations/meta/0007_snapshot.json | 4 ++-- tenant-migrations/meta/0008_snapshot.json | 4 ++-- tenant-migrations/meta/0009_snapshot.json | 4 ++-- tenant-migrations/meta/0010_snapshot.json | 4 ++-- 10 files changed, 17 insertions(+), 18 deletions(-) diff --git a/tenant-migrations/0003_complex_the_call.sql b/tenant-migrations/0003_complex_the_call.sql index b5582f4..0ad22e4 100644 --- a/tenant-migrations/0003_complex_the_call.sql +++ b/tenant-migrations/0003_complex_the_call.sql @@ -61,7 +61,7 @@ ALTER TABLE "appointment" ADD COLUMN "auth_tag" text;--> statement-breakpoint ALTER TABLE "appointment" ADD COLUMN "created_at" timestamp DEFAULT now();--> statement-breakpoint ALTER TABLE "appointment" ADD COLUMN "updated_at" timestamp DEFAULT now();--> statement-breakpoint ALTER TABLE "appointment_key_share" ADD CONSTRAINT "appointment_key_share_appointment_id_appointment_id_fk" FOREIGN KEY ("appointment_id") REFERENCES "public"."appointment"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint -ALTER TABLE "client_tunnel_staff_key_share" ADD CONSTRAINT "client_tunnel_staff_key_share_tunnel_id_client_appointment_tunnel_id_fk" FOREIGN KEY ("tunnel_id") REFERENCES "public"."client_appointment_tunnel"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint +ALTER TABLE "client_tunnel_staff_key_share" ADD CONSTRAINT "client_tun_staff_keyShare_tId_client_app_tId_fk" FOREIGN KEY ("tunnel_id") REFERENCES "public"."client_appointment_tunnel"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint ALTER TABLE "appointment" ADD CONSTRAINT "appointment_tunnel_id_client_appointment_tunnel_id_fk" FOREIGN KEY ("tunnel_id") REFERENCES "public"."client_appointment_tunnel"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint ALTER TABLE "agent" DROP COLUMN "description";--> statement-breakpoint ALTER TABLE "appointment" DROP COLUMN "client_id";--> statement-breakpoint diff --git a/tenant-migrations/0009_far_korg.sql b/tenant-migrations/0009_far_korg.sql index e072f54..5e9a9f0 100644 --- a/tenant-migrations/0009_far_korg.sql +++ b/tenant-migrations/0009_far_korg.sql @@ -1,6 +1,5 @@ CREATE TYPE "public"."notification_type" AS ENUM('APPOINTMENT_CONFIRMED', 'APPOINTMENT_CANCELED');--> statement-breakpoint ALTER TABLE "notification" ADD COLUMN "type" "notification_type" DEFAULT 'APPOINTMENT_CONFIRMED' NOT NULL;--> statement-breakpoint ALTER TABLE "notification" ADD COLUMN "meta_data" json;--> statement-breakpoint -ALTER TABLE "notification" ADD COLUMN "created_at" timestamp DEFAULT now() NOT NULL;--> statement-breakpoint ALTER TABLE "notification" DROP COLUMN "title";--> statement-breakpoint ALTER TABLE "notification" DROP COLUMN "description"; \ No newline at end of file diff --git a/tenant-migrations/meta/0003_snapshot.json b/tenant-migrations/meta/0003_snapshot.json index 83b6cc0..003a044 100644 --- a/tenant-migrations/meta/0003_snapshot.json +++ b/tenant-migrations/meta/0003_snapshot.json @@ -620,8 +620,8 @@ }, "indexes": {}, "foreignKeys": { - "client_tunnel_staff_key_share_tunnel_id_client_appointment_tunnel_id_fk": { - "name": "client_tunnel_staff_key_share_tunnel_id_client_appointment_tunnel_id_fk", + "client_tun_staff_keyShare_tId_client_app_tId_fk": { + "name": "client_tun_staff_keyShare_tId_client_app_tId_fk", "tableFrom": "client_tunnel_staff_key_share", "tableTo": "client_appointment_tunnel", "columnsFrom": ["tunnel_id"], diff --git a/tenant-migrations/meta/0004_snapshot.json b/tenant-migrations/meta/0004_snapshot.json index 4924b51..9934f17 100644 --- a/tenant-migrations/meta/0004_snapshot.json +++ b/tenant-migrations/meta/0004_snapshot.json @@ -635,8 +635,8 @@ }, "indexes": {}, "foreignKeys": { - "client_tunnel_staff_key_share_tunnel_id_client_appointment_tunnel_id_fk": { - "name": "client_tunnel_staff_key_share_tunnel_id_client_appointment_tunnel_id_fk", + "client_tun_staff_keyShare_tId_client_app_tId_fk": { + "name": "client_tun_staff_keyShare_tId_client_app_tId_fk", "tableFrom": "client_tunnel_staff_key_share", "tableTo": "client_appointment_tunnel", "columnsFrom": ["tunnel_id"], diff --git a/tenant-migrations/meta/0005_snapshot.json b/tenant-migrations/meta/0005_snapshot.json index b0d71d5..9dd07d9 100644 --- a/tenant-migrations/meta/0005_snapshot.json +++ b/tenant-migrations/meta/0005_snapshot.json @@ -649,8 +649,8 @@ }, "indexes": {}, "foreignKeys": { - "client_tunnel_staff_key_share_tunnel_id_client_appointment_tunnel_id_fk": { - "name": "client_tunnel_staff_key_share_tunnel_id_client_appointment_tunnel_id_fk", + "client_tun_staff_keyShare_tId_client_app_tId_fk": { + "name": "client_tun_staff_keyShare_tId_client_app_tId_fk", "tableFrom": "client_tunnel_staff_key_share", "tableTo": "client_appointment_tunnel", "columnsFrom": ["tunnel_id"], diff --git a/tenant-migrations/meta/0006_snapshot.json b/tenant-migrations/meta/0006_snapshot.json index 297fd52..23eb512 100644 --- a/tenant-migrations/meta/0006_snapshot.json +++ b/tenant-migrations/meta/0006_snapshot.json @@ -655,8 +655,8 @@ }, "indexes": {}, "foreignKeys": { - "client_tunnel_staff_key_share_tunnel_id_client_appointment_tunnel_id_fk": { - "name": "client_tunnel_staff_key_share_tunnel_id_client_appointment_tunnel_id_fk", + "client_tun_staff_keyShare_tId_client_app_tId_fk": { + "name": "client_tun_staff_keyShare_tId_client_app_tId_fk", "tableFrom": "client_tunnel_staff_key_share", "tableTo": "client_appointment_tunnel", "columnsFrom": ["tunnel_id"], diff --git a/tenant-migrations/meta/0007_snapshot.json b/tenant-migrations/meta/0007_snapshot.json index 18a4fd1..c7bf07d 100644 --- a/tenant-migrations/meta/0007_snapshot.json +++ b/tenant-migrations/meta/0007_snapshot.json @@ -599,8 +599,8 @@ }, "indexes": {}, "foreignKeys": { - "client_tunnel_staff_key_share_tunnel_id_client_appointment_tunnel_id_fk": { - "name": "client_tunnel_staff_key_share_tunnel_id_client_appointment_tunnel_id_fk", + "client_tun_staff_keyShare_tId_client_app_tId_fk": { + "name": "client_tun_staff_keyShare_tId_client_app_tId_fk", "tableFrom": "client_tunnel_staff_key_share", "tableTo": "client_appointment_tunnel", "columnsFrom": ["tunnel_id"], diff --git a/tenant-migrations/meta/0008_snapshot.json b/tenant-migrations/meta/0008_snapshot.json index 2ff4af2..c501312 100644 --- a/tenant-migrations/meta/0008_snapshot.json +++ b/tenant-migrations/meta/0008_snapshot.json @@ -634,8 +634,8 @@ }, "indexes": {}, "foreignKeys": { - "client_tunnel_staff_key_share_tunnel_id_client_appointment_tunnel_id_fk": { - "name": "client_tunnel_staff_key_share_tunnel_id_client_appointment_tunnel_id_fk", + "client_tun_staff_keyShare_tId_client_app_tId_fk": { + "name": "client_tun_staff_keyShare_tId_client_app_tId_fk", "tableFrom": "client_tunnel_staff_key_share", "tableTo": "client_appointment_tunnel", "columnsFrom": ["tunnel_id"], diff --git a/tenant-migrations/meta/0009_snapshot.json b/tenant-migrations/meta/0009_snapshot.json index 43ce789..b814a87 100644 --- a/tenant-migrations/meta/0009_snapshot.json +++ b/tenant-migrations/meta/0009_snapshot.json @@ -634,8 +634,8 @@ }, "indexes": {}, "foreignKeys": { - "client_tunnel_staff_key_share_tunnel_id_client_appointment_tunnel_id_fk": { - "name": "client_tunnel_staff_key_share_tunnel_id_client_appointment_tunnel_id_fk", + "client_tun_staff_keyShare_tId_client_app_tId_fk": { + "name": "client_tun_staff_keyShare_tId_client_app_tId_fk", "tableFrom": "client_tunnel_staff_key_share", "tableTo": "client_appointment_tunnel", "columnsFrom": ["tunnel_id"], diff --git a/tenant-migrations/meta/0010_snapshot.json b/tenant-migrations/meta/0010_snapshot.json index dbe1079..fedd03d 100644 --- a/tenant-migrations/meta/0010_snapshot.json +++ b/tenant-migrations/meta/0010_snapshot.json @@ -693,8 +693,8 @@ }, "indexes": {}, "foreignKeys": { - "client_tunnel_staff_key_share_tunnel_id_client_appointment_tunnel_id_fk": { - "name": "client_tunnel_staff_key_share_tunnel_id_client_appointment_tunnel_id_fk", + "client_tun_staff_keyShare_tId_client_app_tId_fk": { + "name": "client_tun_staff_keyShare_tId_client_app_tId_fk", "tableFrom": "client_tunnel_staff_key_share", "tableTo": "client_appointment_tunnel", "columnsFrom": ["tunnel_id"], From 76838eba29eb95375d5cc4893a8dab9f059bd7f7 Mon Sep 17 00:00:00 2001 From: Karl Ludwig Weise Date: Fri, 16 Jan 2026 16:45:25 +0100 Subject: [PATCH 11/18] Fix: Legal links in settings are optional --- .../settings/(components)/edit-settings-form/schema.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/routes/(pages)/dashboard/settings/(components)/edit-settings-form/schema.ts b/src/routes/(pages)/dashboard/settings/(components)/edit-settings-form/schema.ts index d324e13..10419de 100644 --- a/src/routes/(pages)/dashboard/settings/(components)/edit-settings-form/schema.ts +++ b/src/routes/(pages)/dashboard/settings/(components)/edit-settings-form/schema.ts @@ -1,6 +1,9 @@ import { m } from "$i18n/messages"; import { z } from "zod"; +const optionalUrl = (errorMessage: string) => + z.union([z.literal(""), z.url({ message: errorMessage })]).optional(); + export const formSchema = z .object({ id: z.string(), @@ -18,9 +21,9 @@ export const formSchema = z city: z.string().min(1, { message: m["form.errors.city"]() }), }), links: z.object({ - website: z.string().url({ message: m["form.errors.url"]() }).optional().default(""), - imprint: z.string().url({ message: m["form.errors.url"]() }).optional().default(""), - privacyStatement: z.string().url({ message: m["form.errors.url"]() }).optional().default(""), + website: optionalUrl(m["form.errors.url"]()), + imprint: optionalUrl(m["form.errors.url"]()), + privacyStatement: optionalUrl(m["form.errors.url"]()), }), settings: z.object({ autoDeleteDays: z.number().min(30, { message: m["form.errors.deleteAfterDays"]() }), From 32fe5c7e4260d384477b7cbc15fcd9e0038dd25e Mon Sep 17 00:00:00 2001 From: Karl Ludwig Weise Date: Fri, 16 Jan 2026 16:56:18 +0100 Subject: [PATCH 12/18] Fix reloads during onboarding --- src/routes/(pages)/dashboard/agents/+page.svelte | 6 +----- src/routes/(pages)/dashboard/channels/+page.svelte | 10 +++++----- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/routes/(pages)/dashboard/agents/+page.svelte b/src/routes/(pages)/dashboard/agents/+page.svelte index 2e9a33d..737fa76 100644 --- a/src/routes/(pages)/dashboard/agents/+page.svelte +++ b/src/routes/(pages)/dashboard/agents/+page.svelte @@ -1,5 +1,4 @@