Skip to content

Self-host email: Settings, Emails, the install guide's email choice, and Admin, Self-host - #231

Merged
nambok merged 1 commit into
mainfrom
feat/selfhost-email-optin
Oct 27, 2026
Merged

nambok merged 1 commit into
mainfrom
feat/selfhost-email-optin

Conversation

@nambok

@nambok nambok commented Oct 26, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

The dashboard and install guide side of opt-in email on self-hosted installs, CoderHelm's mail relay, and the platform admin's Self-host view. Pairs with CoderHelm/coderhelm-platform#315, which holds the inventory of every email, the relay and the threat model.

Changes

Settings, Emails (/settings/emails; self-hosted installs, install admins, capability emails)

  • Lists the optional emails (weekly summary, welcome), each with a one-line description and an on/off switch. They are off on a new install.
  • Send email: "Through my own Amazon SES", with the sender, the note that SES production access is needed and a link to the email setup check, or "Through Coderhelm (easiest)", with the plain statement of what CoderHelm sees. The CoderHelm option stays disabled until the install is registered for hybrid. Once chosen, the page shows whether the relay is working, paused, or not answering. Nothing falls back to SES.
  • Lists the essential emails read-only, each with why it is needed.
  • The Setup checklist gains an optional item, "Optional emails chosen".

Admin, Self-host (/admin/self-host; platform admins only, a second page of the Admin section)

  • The summary at the top covers installs (total, active in 7 days, revoked), CoderHelm addresses claimed and live, the GitHub relay (linked installations, events in 24 hours and 7 days, failure rate), the token broker, each integration app, the email relay (opted in, sent, bounce and complaint rates, paused, recipient count) and installs that share delivery data.
  • A 7-day chart of relay events and emails.
  • A table of installs: name and address, version, registered, last seen, the parts that are on, events and emails in 7 days, and status. Each row opens its numbers, its audit log, and Pause email or Resume email and Revoke.
  • Metadata only. Recipients appear only as counts.

Install guide (docs/components/install/wizard.tsx, docs/lib/install/core.ts)

  • Send email is now a choice: "Send email through CoderHelm (easiest)", with its one-line trust note, or "Through my own Amazon SES". Neither is preselected. Left unpicked, the install uses its own SES until an admin picks in Settings, and the page says so.
  • The From field shows only for the SES option, with its confirm-link explanation.
  • Choosing CoderHelm passes EmailTransport=coderhelm to the Launch Stack and registers the install for hybrid.
  • One line: "Optional emails such as the weekly summary start off; turn them on in Settings, Emails."
  • Optional setup gains "Weekly summary email (off; turn on in Settings)". With CoderHelm chosen, the SES item is hidden.

Verification

…and Admin, Self-host

- Settings, Emails (self-hosted installs, install admins): optional emails
  (off until turned on), essential emails with why, and Send email through
  the install's own Amazon SES or through CoderHelm with what CoderHelm sees.
  The Setup checklist gains an optional item.
- Install guide: a "Send email" choice with neither option picked for you,
  the From field only for SES, and one line that optional emails start off.
- Admin, Self-host (platform admins): hybrid installs, the parts each one
  uses, relay and email numbers, a 7-day trend, and each install's audit
  log with pause and revoke. Counts only, no addresses.
@nambok
nambok force-pushed the feat/selfhost-email-optin branch from 6f7d9cc to f8dd4bd Compare October 27, 2026 01:25
@nambok
nambok merged commit 15dd7c8 into main Oct 27, 2026
5 checks passed
@nambok
nambok deleted the feat/selfhost-email-optin branch October 27, 2026 03:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant