• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

medplum / medplum / 30650576940
92%

Build:
DEFAULT BRANCH: main
Ran 31 Jul 2026 05:24PM UTC
Jobs 1
Files 857
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

31 Jul 2026 04:56PM UTC coverage: 92.047% (+0.003%) from 92.044%
30650576940

push

github

web-flow
Use project branding in MFA emails and authenticator app entries (#10017)

* feat(server): brand MFA emails and authenticator entries per project

MFA content generated by the server hardcoded "Medplum", so a white-labeled
project's users received "Your Medplum verification code" emails and added
`medplum.com` entries to their authenticator apps.

A project can now set a `brandName` `Project.setting` entry, which names the
project in emailed MFA codes and in the issuer and account label of enrollment
QR codes. Projects without the setting keep the existing Medplum labels.

MFA code emails now also pass the project to `sendEmail`, so they go through
project SMTP like other project-scoped emails.

Signed-off-by: Derrick Farris <derrick@medplum.com>

* fix(server): put the brand in the TOTP issuer, not the account label

Building the account label as "<brand> - <email>" repeated the brand in
authenticator apps, which show the issuer as the entry title and the account
name beneath it: "Acme Health" / "Acme Health - alice@acme.com". Use the email
alone as the account name so an entry reads like any other service the user has
enrolled: "Acme Health" / "alice@acme.com".

Also handle two inputs that produced a broken entry:

- A colon in the brand name is now removed. The Key URI spec reserves it as the
  issuer/account separator, so "Acme: Health" was parsed by apps as the issuer
  "Acme" with the rest spilling into the account name.
- Users invited without an email address are identified by id rather than
  rendering the literal string "undefined" as the account name.

Signed-off-by: Derrick Farris <derrick@medplum.com>

* refactor(server): name the setting appName and brand the email sender

Align with the existing vocabulary for the user-facing product name:
MEDPLUM_APP_NAME / getAppName() in the app, so the project setting is appName
rather than a second "brand" noun. The reader moves to src/branding.ts, which
both auth and email can import without a cyc... (continued)

22888 of 25980 branches covered (88.1%)

Branch coverage included in aggregate %.

16 of 16 new or added lines in 4 files covered. (100.0%)

40618 of 43013 relevant lines covered (94.43%)

12219.29 hits per line

Jobs
ID Job ID Ran Files Coverage
1 30650576940.1 31 Jul 2026 05:24PM UTC 857
92.05
GitHub Action Run
Source Files on build 30650576940
  • Tree
  • List 857
  • Changed 4
  • Source Changed 4
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #30650576940
  • 27f431df on github
  • Prev Build on main (#30647350151)
  • Next Build on main (#30651073052)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc