From 5bc19933a65f3df4a271b8af599e5fdef0a36df2 Mon Sep 17 00:00:00 2001 From: vincanger <70215737+vincanger@users.noreply.github.com> Date: Mon, 5 Jan 2026 11:21:33 +0100 Subject: [PATCH 1/3] update emailSender and .env vault --- opensaas-sh/app_diff/.env.vault.diff | 4 +- opensaas-sh/app_diff/main.wasp.diff | 6 +- opensaas-sh/app_diff/package-lock.json.diff | 88 +++++++------------ .../src/auth/email-and-pass/emails.ts.diff | 30 +++++++ 4 files changed, 66 insertions(+), 62 deletions(-) create mode 100644 opensaas-sh/app_diff/src/auth/email-and-pass/emails.ts.diff diff --git a/opensaas-sh/app_diff/.env.vault.diff b/opensaas-sh/app_diff/.env.vault.diff index ee47573dc..b82b44939 100644 --- a/opensaas-sh/app_diff/.env.vault.diff +++ b/opensaas-sh/app_diff/.env.vault.diff @@ -7,8 +7,8 @@ +#/--------------------------------------------------/ + +# development -+DOTENV_VAULT_DEVELOPMENT="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" -+DOTENV_VAULT_DEVELOPMENT_VERSION=13 ++DOTENV_VAULT_DEVELOPMENT="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" ++DOTENV_VAULT_DEVELOPMENT_VERSION=14 + +# ci +DOTENV_VAULT_CI="XGJ7HhbwC6C7beVXbifG+tkHOTHTPNHoECye25INPUQmK9vxQ9RObeQjfhLGd2Qkj1bsHDU3VGEjuReB7OxZ7YSFF1xaFoVPdm4x+Rwlr/vbVEy0t4JeUGYA54aNPQYaQBmCF0QVKSI0l7O+WWX7Th62nGyDYwwVOs4PIXwGf1Zr+mtmmJSOuJT8jPQdTfFTKVi/ntWrxl3CBsflW4xQIWsvnoHyDy161gg/HNmmnmdqDYK+roUBokBc1X2rBoSI+vmUUAg+M0rejg8HBs8ZKFDDBXPYOrcnQR306VYrVZjoS0HaA1pZNROXbUaUS2lxl74mP1vD3nV5oQ79coPc9FcwrIMBpv3V7gjdHSM/D/Scf3Wkq+nkk0YsysebRg3qBv/pOy5zb53+NF2AfHZ2drcW4X5QZng6haCqwaDuBDBetro9NECTuMTxuVR8Qfd+NlCXP9RVxhmVMETBYbABSzj2uXKPfCtc2QbtJULXtdO7BkW2ED7c40MGO2NDdEbv8NzqwPqPzpVjtw86YrzHH1y0pgfoEzGPXv6A9QQlt2Ns2EPHjPM87swrTuOGr/xHfpm/j6X8+kB4GwsJehes+BELT6UM9+maPExap/qh1c4WKCwrUYxLD82nixmzxARsqyqJYIoD57AzPeWeqwrxy2nNmKuN/xuau7u/mZqbXwpbE0RIs2zbREZazHDiD8GOL/kXAYhGOQABXrTpl6mFsNVU0OPWE6VkxA90YNxG0kTIBHYaOd2IbPDxPFYbtIGZNCYTn50+7JwPfl56fbVAM5mbvTGaQPo/74H92E3akWFBCA2Wa1yUn1jhfoYzGYrRj+CBCtJLpZI/JIfsVeKdVZ+3/osTb2UdN7humZlrpKzrFqcIKCsbYB2Y55R+LrbuQzbqKl7JUT/y0obboa6jBtO2VFzsF1cJDh3UCCQ2BdBXu5KYhk8BdM1SKWN/p+kteGSgdOuxs9dZW/z/p2Ycjd1cNZjDahN4Ye5HBtiNEXuej7o7SaF5BQC/fqQpSqvVKacxkNL+0X/UR+HUJE1t8d8jEwfT9WE0zxjnraDVxMbC6EHbPV44hUoYyclaKraSAgpaZuW0dkikWrTbyl8SMJPGsD5WZU5gps9i9SfY7y6R2Ruc7vxPRRYb25NTZap6L+hkWeXVM50tKDCIs6cWFHNF7oW9oF72WdZVziWm7kWX7Q0BjNT76od+CMD9tyHo48qSEmYed22cXCMV+dIsQtXwz8y0S8xuaBs1dHsHcEnF6sOGFsRlLaYbXbJiBOFqzqW2iKFdu/CMEJ8qmssxpKQfyy93mOSragacJ3D6iVbTvDaHZ+KbFtIdk+w368MaA/9xEvvdkDJX+u+wqA13SpXkOr2T0Czip1h8fiEw41Jc5cGmMLZyPo1d9dDnc9vyFtfDxGZxQ38BpEmDZcy21cM57TuhLmlZ0U15aiD122rZfdWGkKjtG2854MEJDoLVZRZHhxpSqdhEKRHCgFvhjHYU/FjjaBSGu0g5lOzbc3V/Un8U9Ix5KwMx+VAahGAF2pLaYRmNof3IXTzJC9xPwj+IsO7jTPtsBuJFjSjG" diff --git a/opensaas-sh/app_diff/main.wasp.diff b/opensaas-sh/app_diff/main.wasp.diff index a52ff7b5d..cca2274ae 100644 --- a/opensaas-sh/app_diff/main.wasp.diff +++ b/opensaas-sh/app_diff/main.wasp.diff @@ -54,7 +54,7 @@ fromField: { name: "Open SaaS App", - email: "me@example.com" -+ email: "vince@wasp-lang.dev" ++ email: "noreply@wasp.sh" }, emailVerification: { clientRoute: EmailVerificationRoute, @@ -97,12 +97,12 @@ // Make sure to check the server logs for the email confirmation url (it will not be sent to an address)! // Once you are ready for production, switch to e.g. "SendGrid" or "Mailgun" providers. Check out https://docs.opensaas.sh/guides/email-sending/ . - provider: Dummy, -+ provider: SendGrid, ++ provider: Mailgun, defaultFrom: { name: "Open SaaS App", // When using a real provider, e.g. SendGrid, you must use the same email address that you configured your account to send out emails with! - email: "me@example.com" -+ email: "vince@wasp-lang.dev" ++ email: "noreply@wasp.sh" }, }, } diff --git a/opensaas-sh/app_diff/package-lock.json.diff b/opensaas-sh/app_diff/package-lock.json.diff index 337712046..dfcadce5a 100644 --- a/opensaas-sh/app_diff/package-lock.json.diff +++ b/opensaas-sh/app_diff/package-lock.json.diff @@ -1,6 +1,6 @@ --- template/app/package-lock.json +++ opensaas-sh/app/package-lock.json -@@ -0,0 +1,13572 @@ +@@ -0,0 +1,13546 @@ +{ + "name": "opensaas", + "lockfileVersion": 3, @@ -65,6 +65,7 @@ + ".wasp/build/server": { + "name": "@wasp.sh/generated-server-build", + "version": "0.0.0", ++ "extraneous": true, + "dependencies": { + "cookie-parser": "~1.4.6", + "cors": "^2.8.5", @@ -93,6 +94,7 @@ + ".wasp/build/web-app": { + "name": "@wasp.sh/generated-webapp-build", + "version": "0.0.0", ++ "extraneous": true, + "dependencies": { + "@tanstack/react-query": "~4.42.0", + "axios": "^1.4.0", @@ -118,7 +120,6 @@ + "@lucia-auth/adapter-prisma": "^4.0.0", + "@node-rs/argon2": "^1.8.3", + "@prisma/client": "5.19.1", -+ "@sendgrid/mail": "^7.7.0", + "@testing-library/jest-dom": "^6.3.0", + "@testing-library/react": "^16.3.0", + "@vitest/ui": "^1.2.1", @@ -128,6 +129,7 @@ + "express": "~5.1.0", + "jsdom": "^21.1.1", + "lucia": "^3.0.1", ++ "mailgun.js": "^10.2.3", + "mitt": "3.0.0", + "msw": "^1.1.0", + "oslo": "^1.1.2", @@ -4446,53 +4448,6 @@ + "win32" + ] + }, -+ "node_modules/@sendgrid/client": { -+ "version": "7.7.0", -+ "resolved": "https://registry.npmjs.org/@sendgrid/client/-/client-7.7.0.tgz", -+ "integrity": "sha512-SxH+y8jeAQSnDavrTD0uGDXYIIkFylCo+eDofVmZLQ0f862nnqbC3Vd1ej6b7Le7lboyzQF6F7Fodv02rYspuA==", -+ "license": "MIT", -+ "dependencies": { -+ "@sendgrid/helpers": "^7.7.0", -+ "axios": "^0.26.0" -+ }, -+ "engines": { -+ "node": "6.* || 8.* || >=10.*" -+ } -+ }, -+ "node_modules/@sendgrid/client/node_modules/axios": { -+ "version": "0.26.1", -+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", -+ "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", -+ "license": "MIT", -+ "dependencies": { -+ "follow-redirects": "^1.14.8" -+ } -+ }, -+ "node_modules/@sendgrid/helpers": { -+ "version": "7.7.0", -+ "resolved": "https://registry.npmjs.org/@sendgrid/helpers/-/helpers-7.7.0.tgz", -+ "integrity": "sha512-3AsAxfN3GDBcXoZ/y1mzAAbKzTtUZ5+ZrHOmWQ279AuaFXUNCh9bPnRpN504bgveTqoW+11IzPg3I0WVgDINpw==", -+ "license": "MIT", -+ "dependencies": { -+ "deepmerge": "^4.2.2" -+ }, -+ "engines": { -+ "node": ">= 6.0.0" -+ } -+ }, -+ "node_modules/@sendgrid/mail": { -+ "version": "7.7.0", -+ "resolved": "https://registry.npmjs.org/@sendgrid/mail/-/mail-7.7.0.tgz", -+ "integrity": "sha512-5+nApPE9wINBvHSUxwOxkkQqM/IAAaBYoP9hw7WwgDNQPxraruVqHizeTitVtKGiqWCKm2mnjh4XGN3fvFLqaw==", -+ "license": "MIT", -+ "dependencies": { -+ "@sendgrid/client": "^7.7.0", -+ "@sendgrid/helpers": "^7.7.0" -+ }, -+ "engines": { -+ "node": "6.* || 8.* || >=10.*" -+ } -+ }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -5921,18 +5876,10 @@ + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, -+ "node_modules/@wasp.sh/generated-server-build": { -+ "resolved": ".wasp/build/server", -+ "link": true -+ }, + "node_modules/@wasp.sh/generated-server-dev": { + "resolved": ".wasp/out/server", + "link": true + }, -+ "node_modules/@wasp.sh/generated-webapp-build": { -+ "resolved": ".wasp/build/web-app", -+ "link": true -+ }, + "node_modules/@wasp.sh/generated-webapp-dev": { + "resolved": ".wasp/out/web-app", + "link": true @@ -6270,6 +6217,12 @@ + "dev": true, + "license": "MIT" + }, ++ "node_modules/base-64": { ++ "version": "1.0.0", ++ "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", ++ "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==", ++ "license": "MIT" ++ }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -7029,6 +6982,7 @@ + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", ++ "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" @@ -8928,6 +8882,20 @@ + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, ++ "node_modules/mailgun.js": { ++ "version": "10.4.0", ++ "resolved": "https://registry.npmjs.org/mailgun.js/-/mailgun.js-10.4.0.tgz", ++ "integrity": "sha512-YrdaZEAJwwjXGBTfZTNQ1LM7tmkdUaz2NpZEu7+zULcG4Wrlhd7cWSNZW0bxT3bP48k5N0mZWz8C2f9gc2+Geg==", ++ "license": "MIT", ++ "dependencies": { ++ "axios": "^1.7.4", ++ "base-64": "^1.0.0", ++ "url-join": "^4.0.1" ++ }, ++ "engines": { ++ "node": ">=18.0.0" ++ } ++ }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -12088,6 +12056,12 @@ + "browserslist": ">= 4.21.0" + } + }, ++ "node_modules/url-join": { ++ "version": "4.0.1", ++ "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", ++ "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", ++ "license": "MIT" ++ }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", diff --git a/opensaas-sh/app_diff/src/auth/email-and-pass/emails.ts.diff b/opensaas-sh/app_diff/src/auth/email-and-pass/emails.ts.diff new file mode 100644 index 000000000..4807a3dbe --- /dev/null +++ b/opensaas-sh/app_diff/src/auth/email-and-pass/emails.ts.diff @@ -0,0 +1,30 @@ +--- template/app/src/auth/email-and-pass/emails.ts ++++ opensaas-sh/app/src/auth/email-and-pass/emails.ts +@@ -6,10 +6,10 @@ + export const getVerificationEmailContent: GetVerificationEmailContentFn = ({ + verificationLink, + }) => ({ +- subject: "Verify your email", +- text: `Click the link below to verify your email: ${verificationLink}`, ++ subject: "Open SaaS - Verify your email", ++ text: `Open SaaS - Click the link to verify your email: ${verificationLink}`, + html: ` +-
Click the link below to verify your email
++Open SaaS - Click the link to verify your email:
+ Verify email + `, + }); +@@ -17,10 +17,10 @@ + export const getPasswordResetEmailContent: GetPasswordResetEmailContentFn = ({ + passwordResetLink, + }) => ({ +- subject: "Password reset", +- text: `Click the link below to reset your password: ${passwordResetLink}`, ++ subject: "Open SaaS - Password reset", ++ text: `Open SaaS - Click the link to reset your password: ${passwordResetLink}`, + html: ` +-Click the link below to reset your password
++Open SaaS - Click the link to reset your password:
+ Reset password + `, + }); From 623196709c9cebc6e524c154bcce68507bb1ed98 Mon Sep 17 00:00:00 2001 From: vincanger <70215737+vincanger@users.noreply.github.com> Date: Mon, 5 Jan 2026 11:39:34 +0100 Subject: [PATCH 2/3] Update main.wasp.diff --- opensaas-sh/app_diff/main.wasp.diff | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/opensaas-sh/app_diff/main.wasp.diff b/opensaas-sh/app_diff/main.wasp.diff index cca2274ae..be3ab9917 100644 --- a/opensaas-sh/app_diff/main.wasp.diff +++ b/opensaas-sh/app_diff/main.wasp.diff @@ -54,7 +54,7 @@ fromField: { name: "Open SaaS App", - email: "me@example.com" -+ email: "noreply@wasp.sh" ++ email: "noreply@mg.wasp.sh" }, emailVerification: { clientRoute: EmailVerificationRoute, @@ -102,7 +102,7 @@ name: "Open SaaS App", // When using a real provider, e.g. SendGrid, you must use the same email address that you configured your account to send out emails with! - email: "me@example.com" -+ email: "noreply@wasp.sh" ++ email: "noreply@mg.wasp.sh" }, }, } From 6ed3ba6e55cce82ee9a4781dc32211d5444c6d21 Mon Sep 17 00:00:00 2001 From: vincanger <70215737+vincanger@users.noreply.github.com> Date: Mon, 5 Jan 2026 14:50:33 +0100 Subject: [PATCH 3/3] fix failing payments test --- template/e2e-tests/package-lock.json | 2 -- template/e2e-tests/tests/utils.ts | 7 ++++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/template/e2e-tests/package-lock.json b/template/e2e-tests/package-lock.json index bae06a0e0..5b32fbb95 100644 --- a/template/e2e-tests/package-lock.json +++ b/template/e2e-tests/package-lock.json @@ -146,7 +146,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", "license": "MIT", - "peer": true, "engines": { "node": ">=18" } @@ -210,7 +209,6 @@ "integrity": "sha512-c5K9MiDaa+VAAyh1OiYk76PXOme9s3E992D7kvvIOhCrNsBQfy2mP2QAQtX0WNj140IgG++12kwZpYB9iIydNQ==", "hasInstallScript": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@prisma/engines": "5.19.1" }, diff --git a/template/e2e-tests/tests/utils.ts b/template/e2e-tests/tests/utils.ts index 0a9fba79c..815047726 100644 --- a/template/e2e-tests/tests/utils.ts +++ b/template/e2e-tests/tests/utils.ts @@ -79,6 +79,11 @@ export const createRandomUser = () => { return { email, password: DEFAULT_PASSWORD } as User; }; +const getNextYearLastTwoDigits = () => { + const nextYear = new Date().getFullYear() + 1; + return nextYear.toString().slice(-2); +}; + export const makeStripePayment = async ({ test, page, @@ -103,7 +108,7 @@ export const makeStripePayment = async ({ waitUntil: "domcontentloaded", }); await page.fill('input[name="cardNumber"]', "4242424242424242"); - await page.getByPlaceholder("MM / YY").fill("1225"); + await page.getByPlaceholder("MM / YY").fill(`12${getNextYearLastTwoDigits()}`); await page.getByPlaceholder("CVC").fill("123"); await page.getByPlaceholder("Full name on card").fill("Test User"); const countrySelect = page.getByLabel("Country or region");