From 03454d49b16961a1eff5a53ff36b273d0244abe9 Mon Sep 17 00:00:00 2001 From: kurtis tryber Date: Fri, 23 Oct 2026 09:17:05 -0700 Subject: [PATCH 1/3] docs(web/guides): add Groundmail to the SMTP providers table Signed-off-by: kurtis tryber --- .../src/content/docs/v4-2-0/digging-deeper/sending-email.mdx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/web/sites/guides/src/content/docs/v4-2-0/digging-deeper/sending-email.mdx b/web/sites/guides/src/content/docs/v4-2-0/digging-deeper/sending-email.mdx index f5ce669b60..ad10f60c32 100644 --- a/web/sites/guides/src/content/docs/v4-2-0/digging-deeper/sending-email.mdx +++ b/web/sites/guides/src/content/docs/v4-2-0/digging-deeper/sending-email.mdx @@ -303,9 +303,12 @@ Postmark, SendGrid, AWS SES, Mailgun — they all expose an SMTP endpoint. The m | **SendGrid** | `smtp.sendgrid.net` | 587 | `apikey` (literal) | your API key | | **AWS SES** | `email-smtp..amazonaws.com` | 587 | SES SMTP username | SES SMTP password | | **Mailgun** | `smtp.mailgun.org` | 587 | `postmaster@` | Mailgun SMTP password | +| **Groundmail** | `smtp.groundmail.dev` | 587 (or 2525) | `groundmail` (literal) | an SMTP credential (`gmsmtp_…`) | Each provider has its own sender-verification and domain-setup flow (SPF, DKIM, DMARC). Follow their docs for that — the framework side is just SMTP. +Until your sending domain is verified and a payment method is on file (the Free plan isn't charged), Groundmail only sends from `noreply@mail.groundmail.dev` to your own account email. See [Groundmail SMTP relay](https://docs.groundmail.dev/smtp). + ## Related guides From 6ee491b55139e7e51decd0f0b8b00d76ae105b15 Mon Sep 17 00:00:00 2001 From: Peter Amiri Date: Fri, 23 Oct 2026 11:29:20 -0700 Subject: [PATCH 2/3] docs(web/guides): apply review edits to the Groundmail row Adds Groundmail to the prose provider list so it matches the table, marks the row as vendor-contributed, and rewrites the sandbox note to state the concrete 403 consequence instead of plan pricing. Signed-off-by: Peter Amiri --- .../content/docs/v4-2-0/digging-deeper/sending-email.mdx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/web/sites/guides/src/content/docs/v4-2-0/digging-deeper/sending-email.mdx b/web/sites/guides/src/content/docs/v4-2-0/digging-deeper/sending-email.mdx index ad10f60c32..b18c2ad32a 100644 --- a/web/sites/guides/src/content/docs/v4-2-0/digging-deeper/sending-email.mdx +++ b/web/sites/guides/src/content/docs/v4-2-0/digging-deeper/sending-email.mdx @@ -295,7 +295,7 @@ Use a `.html` or `.txt` extension and open the file in a browser or editor. To p ## Third-party services -Postmark, SendGrid, AWS SES, Mailgun — they all expose an SMTP endpoint. The mailer code above doesn't change per-provider; only the `server`, `port`, `username`, `password` defaults do. +Postmark, SendGrid, AWS SES, Mailgun, Groundmail — they all expose an SMTP endpoint. The mailer code above doesn't change per-provider; only the `server`, `port`, `username`, `password` defaults do. | Provider | Server | Port | Username | Password | |----------|--------|------|----------|----------| @@ -305,9 +305,11 @@ Postmark, SendGrid, AWS SES, Mailgun — they all expose an SMTP endpoint. The m | **Mailgun** | `smtp.mailgun.org` | 587 | `postmaster@` | Mailgun SMTP password | | **Groundmail** | `smtp.groundmail.dev` | 587 (or 2525) | `groundmail` (literal) | an SMTP credential (`gmsmtp_…`) | +*Disclosure: the Groundmail row was contributed by the Groundmail team.* + Each provider has its own sender-verification and domain-setup flow (SPF, DKIM, DMARC). Follow their docs for that — the framework side is just SMTP. -Until your sending domain is verified and a payment method is on file (the Free plan isn't charged), Groundmail only sends from `noreply@mail.groundmail.dev` to your own account email. See [Groundmail SMTP relay](https://docs.groundmail.dev/smtp). +Groundmail's sandbox sends only from `noreply@mail.groundmail.dev` to your own account email until you verify a sending domain and add a payment method; other recipients get a 403. See [Groundmail's SMTP docs](https://docs.groundmail.dev/smtp). ## Related guides From 1fe93fcdf3ddefa442c4aecbb762fe39d084d78f Mon Sep 17 00:00:00 2001 From: Peter Amiri Date: Fri, 23 Oct 2026 11:31:09 -0700 Subject: [PATCH 3/3] ci(web): skip Cloudflare publish for fork PRs, like Dependabot Fork PRs cannot read repository secrets, so CLOUDFLARE_API_TOKEN is empty and wrangler fails every Deploy static sites job on web/** changes. Extends the existing Dependabot skip condition to all pull_request runs from forks; the Build and Check llms files steps still run and validate the content, only the preview publish is skipped. Non-PR events (push to develop, repository_dispatch) still deploy. Signed-off-by: Peter Amiri --- .github/workflows/web-deploy.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/web-deploy.yml b/.github/workflows/web-deploy.yml index 0fcd387683..3baca4268c 100644 --- a/.github/workflows/web-deploy.yml +++ b/.github/workflows/web-deploy.yml @@ -81,7 +81,9 @@ jobs: # Dependabot: the Build step above still runs and validates the bump; # we just don't push a per-PR preview deploy for it. Non-PR events # (push to develop, repository_dispatch) keep deploying as before. - if: github.actor != 'dependabot[bot]' + if: | + github.actor != 'dependabot[bot]' + && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) working-directory: web env: CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}