Skip to content

Remove space from email display name#1462

Merged
isabeleliassen merged 10 commits intocsg-org:mainfrom
InspiringApps:fix/remove-email-subject-spaces
Apr 15, 2026
Merged

Remove space from email display name#1462
isabeleliassen merged 10 commits intocsg-org:mainfrom
InspiringApps:fix/remove-email-subject-spaces

Conversation

@landonshumway-ia
Copy link
Copy Markdown
Collaborator

@landonshumway-ia landonshumway-ia commented Apr 13, 2026

The display name for the email addresses was originally configured with a space between Compact and Connect. This display name is specified by an IAM policy that must be updated in order to specify the corrected 'CompactConnect' display name. To avoid downtime, we need to update the policy to support both during the first deployment, then remove the old policy once the change is verified in production.

This also makes several needed dependency updates in an attempt to cut down on the many Dependabot PRs we currently have in place.

Closes #1428

Summary by CodeRabbit

  • Chores

    • Standardized branding from "Compact Connect" → "CompactConnect" across outgoing emails, templates, documentation, package metadata, and IAM/email permissions.
    • Bumped multiple Python and Node.js dependency versions (AWS SDKs, testing tools, nodemailer types, etc.).
  • Tests

    • Updated test expectations to match the revised sender display name and adjusted email subjects/bodies.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 13, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 3e80183c-ca49-443d-aed9-8850cf4cef0d

📥 Commits

Reviewing files that changed from the base of the PR and between 343c920 and 1be8ecc.

📒 Files selected for processing (16)
  • backend/compact-connect/README.md
  • backend/compact-connect/app_clients/README.md
  • backend/compact-connect/app_clients/bin/create_app_client.py
  • backend/compact-connect/docs/README.md
  • backend/compact-connect/docs/attestations/README.md
  • backend/compact-connect/docs/devops/README.md
  • backend/compact-connect/docs/devops/STAFF_USER_MFA_RECOVERY.md
  • backend/compact-connect/docs/onboarding/JURISDICTION_COMPACT_ONBOARDING.md
  • backend/cosmetology-app/README.md
  • backend/cosmetology-app/app_clients/README.md
  • backend/cosmetology-app/app_clients/bin/create_app_client.py
  • backend/cosmetology-app/docs/README.md
  • backend/cosmetology-app/docs/devops/README.md
  • backend/cosmetology-app/docs/devops/STAFF_USER_MFA_RECOVERY.md
  • backend/cosmetology-app/lambdas/nodejs/email-notification-service/README.md
  • backend/cosmetology-app/stacks/persistent_stack/__init__.py
✅ Files skipped from review due to trivial changes (15)
  • backend/compact-connect/docs/devops/README.md
  • backend/cosmetology-app/docs/devops/README.md
  • backend/cosmetology-app/app_clients/README.md
  • backend/cosmetology-app/lambdas/nodejs/email-notification-service/README.md
  • backend/compact-connect/docs/devops/STAFF_USER_MFA_RECOVERY.md
  • backend/compact-connect/docs/README.md
  • backend/cosmetology-app/app_clients/bin/create_app_client.py
  • backend/cosmetology-app/docs/devops/STAFF_USER_MFA_RECOVERY.md
  • backend/cosmetology-app/README.md
  • backend/compact-connect/app_clients/bin/create_app_client.py
  • backend/compact-connect/app_clients/README.md
  • backend/compact-connect/README.md
  • backend/compact-connect/docs/attestations/README.md
  • backend/compact-connect/docs/onboarding/JURISDICTION_COMPACT_ONBOARDING.md
  • backend/cosmetology-app/docs/README.md

📝 Walkthrough

Walkthrough

The PR standardizes branding by replacing "Compact Connect" with "CompactConnect" across Node.js email code, tests, package metadata, and docs; upgrades nodemailer/@types; updates IAM SES policy conditions to allow both old and new FromDisplayName values for migration; and bumps many Python dev/runtime dependency pins.

Changes

Cohort / File(s) Summary
Compact-Connect Node.js Email & Templates
backend/compact-connect/lambdas/nodejs/lib/email/base-email-service.ts, backend/compact-connect/lambdas/nodejs/lib/email/email-notification-service.ts, backend/compact-connect/lambdas/nodejs/package.json
Changed sender/display name to CompactConnect in SES/Nodemailer usage and email templates; bumped nodemailer and @types/nodemailer.
Compact-Connect Node.js Tests
backend/compact-connect/lambdas/nodejs/tests/..., backend/compact-connect/lambdas/nodejs/tests/lib/email/*.test.ts
Updated expected FromEmailAddress, subject lines, and asserted body text to match CompactConnect.
Cosmetology-App Node.js Email & Tests
backend/cosmetology-app/lambdas/nodejs/lib/email/base-email-service.ts, backend/cosmetology-app/lambdas/nodejs/package.json, backend/cosmetology-app/lambdas/nodejs/tests/...
Applied same branding change and test expectation updates; bumped @types/nodemailer metadata.
IAM SES Permissions
backend/compact-connect/stacks/persistent_stack/__init__.py, backend/cosmetology-app/stacks/persistent_stack/__init__.py
Adjusted SES IAM policy conditions: compact-connect stack adds statements iterating allowed ses:FromDisplayName values ("Compact Connect", "CompactConnect") to support migration; cosmetology-app stack updated FromDisplayName to CompactConnect.
Python Dependency Pin Updates (CompactConnect)
backend/compact-connect/lambdas/python/*/requirements*.txt, backend/compact-connect/*requirements*.in, backend/compact-connect/requirements*.txt
Bumped boto3/botocore/cryptography/faker/pytest and other dev/runtime pins; updated pip-compile provenance comments and removed some explicit tzdata pins.
Python Dependency Pin Updates (Cosmetology App)
backend/cosmetology-app/lambdas/python/*/requirements*.txt, backend/cosmetology-app/*requirements*.in, backend/cosmetology-app/requirements*.txt
Bumped boto3/botocore/charset-normalizer/cryptography/faker/aws-lambda-powertools and related pins; updated provenance comments and removed some tzdata pins.
Docs & Misc Text
backend/compact-connect/README.md, backend/compact-connect/docs/*, backend/cosmetology-app/README.md, backend/.../app_clients/*, backend/.../docs/*
Replaced occurrences of "Compact Connect" with "CompactConnect" in READMEs, onboarding/devops docs, and app client templates; no behavioral changes.
Python Code Formatting
backend/cosmetology-app/lambdas/python/common/cc_common/data_model/provider_record_util.py
Reflowed a multi-line logger.debug() call into single-line formatting; no logic changes.
Tests Across Repos
backend/.../tests/lib/email/*.test.ts, backend/.../tests/*.test.ts
Numerous test expectation string updates to reflect CompactConnect sender/subjects; no logic or input changes.

Sequence Diagram(s)

(omitted)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

Possibly related PRs

Suggested reviewers

  • jlkravitz
  • jusdino
  • isabeleliassen

Poem

"I’m a rabbit in the code, I nibbled one small space,
CompactConnect now hops proud across each email place.
Two policies watch the sender so migration stays polite,
Tests and deps aligned — I fixed it overnight. 🥕"

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Description check ❓ Inconclusive The description explains the requirements, the staged deployment strategy, and dependency updates, but does not follow the template structure with clearly defined Requirements/Description/Testing sections. Reorganize the description to follow the template: clearly separate Requirements, Description, and Testing sections with checkboxes for verification steps.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The PR title clearly and concisely describes the main change: removing the space from the email display name ('Compact Connect' → 'CompactConnect').
Linked Issues check ✅ Passed The PR addresses all primary coding requirements from issue #1428: removes space in email display names and updates IAM policy to support both formats during rollout.
Out of Scope Changes check ✅ Passed All changes are within scope: email branding updates, policy changes, dependency version updates, and documentation changes directly support the issue objective.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@landonshumway-ia landonshumway-ia force-pushed the fix/remove-email-subject-spaces branch from 5c75275 to 50a7049 Compare April 13, 2026 22:15
@landonshumway-ia landonshumway-ia marked this pull request as ready for review April 13, 2026 22:32
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
backend/cosmetology-app/stacks/persistent_stack/__init__.py (1)

372-372: Track removal of the legacy display-name permission with a concrete follow-up reference.

Line [372] has the right temporary TODO; adding an issue ID/target release in the comment would reduce risk of leaving legacy permission indefinitely.

If useful, I can draft a short follow-up issue template for the cleanup step.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@backend/cosmetology-app/stacks/persistent_stack/__init__.py` at line 372,
Update the TODO comment that reads 'Remove the "Compact Connect" display name
once all Lambda code exclusively uses "CompactConnect"' to include a concrete
follow-up reference (e.g., an issue/PR ID or target release and owner) so the
legacy display-name permission removal is tracked; locate the comment in
persistent_stack/__init__.py (the TODO mentioning "Compact
Connect"/"CompactConnect") and append the issue number or release milestone and
an owner/assignee and expected completion date.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@backend/compact-connect/lambdas/nodejs/package.json`:
- Line 52: Update the dev/prod dependency for the TypeScript definitions to
match nodemailer 8.x by changing the `@types/nodemailer` entry to ^8.0.0 in
package.json; locate the existing "nodemailer": "^8.0.5" and the pinned
"@types/nodemailer": "7.0.9" and update the latter to "^8.0.0", then run your
package manager install and rebuild to ensure types align with the nodemailer
8.x API.

---

Nitpick comments:
In `@backend/cosmetology-app/stacks/persistent_stack/__init__.py`:
- Line 372: Update the TODO comment that reads 'Remove the "Compact Connect"
display name once all Lambda code exclusively uses "CompactConnect"' to include
a concrete follow-up reference (e.g., an issue/PR ID or target release and
owner) so the legacy display-name permission removal is tracked; locate the
comment in persistent_stack/__init__.py (the TODO mentioning "Compact
Connect"/"CompactConnect") and append the issue number or release milestone and
an owner/assignee and expected completion date.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 94803ecd-c831-488a-b1f9-c351099251ef

📥 Commits

Reviewing files that changed from the base of the PR and between 3d8ed15 and 898b303.

⛔ Files ignored due to path filters (1)
  • backend/compact-connect/lambdas/nodejs/yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (55)
  • backend/compact-connect/lambdas/nodejs/lib/email/base-email-service.ts
  • backend/compact-connect/lambdas/nodejs/lib/email/email-notification-service.ts
  • backend/compact-connect/lambdas/nodejs/package.json
  • backend/compact-connect/lambdas/nodejs/tests/email-notification-service.test.ts
  • backend/compact-connect/lambdas/nodejs/tests/lib/email/email-notification-service.test.ts
  • backend/compact-connect/lambdas/nodejs/tests/lib/email/encumbrance-notification-service.test.ts
  • backend/compact-connect/lambdas/nodejs/tests/lib/email/ingest-event-email-service.test.ts
  • backend/compact-connect/lambdas/nodejs/tests/lib/email/investigation-notification-service.test.ts
  • backend/compact-connect/lambdas/python/cognito-backup/requirements-dev.txt
  • backend/compact-connect/lambdas/python/common/requirements-dev.in
  • backend/compact-connect/lambdas/python/common/requirements-dev.txt
  • backend/compact-connect/lambdas/python/common/requirements.txt
  • backend/compact-connect/lambdas/python/compact-configuration/requirements-dev.txt
  • backend/compact-connect/lambdas/python/custom-resources/requirements-dev.txt
  • backend/compact-connect/lambdas/python/data-events/requirements-dev.txt
  • backend/compact-connect/lambdas/python/disaster-recovery/requirements-dev.txt
  • backend/compact-connect/lambdas/python/provider-data-v1/requirements-dev.in
  • backend/compact-connect/lambdas/python/provider-data-v1/requirements-dev.txt
  • backend/compact-connect/lambdas/python/purchases/requirements-dev.in
  • backend/compact-connect/lambdas/python/purchases/requirements-dev.txt
  • backend/compact-connect/lambdas/python/search/requirements-dev.txt
  • backend/compact-connect/lambdas/python/staff-user-pre-token/requirements-dev.txt
  • backend/compact-connect/lambdas/python/staff-users/requirements-dev.in
  • backend/compact-connect/lambdas/python/staff-users/requirements-dev.txt
  • backend/compact-connect/requirements-dev.in
  • backend/compact-connect/requirements-dev.txt
  • backend/compact-connect/requirements.txt
  • backend/compact-connect/stacks/persistent_stack/__init__.py
  • backend/cosmetology-app/lambdas/nodejs/lib/email/base-email-service.ts
  • backend/cosmetology-app/lambdas/nodejs/package.json
  • backend/cosmetology-app/lambdas/nodejs/tests/email-notification-service.test.ts
  • backend/cosmetology-app/lambdas/nodejs/tests/lib/email/encumbrance-notification-service.test.ts
  • backend/cosmetology-app/lambdas/nodejs/tests/lib/email/ingest-event-email-service.test.ts
  • backend/cosmetology-app/lambdas/nodejs/tests/lib/email/investigation-notification-service.test.ts
  • backend/cosmetology-app/lambdas/python/cognito-backup/requirements-dev.txt
  • backend/cosmetology-app/lambdas/python/cognito-backup/requirements.txt
  • backend/cosmetology-app/lambdas/python/common/cc_common/data_model/provider_record_util.py
  • backend/cosmetology-app/lambdas/python/common/requirements-dev.in
  • backend/cosmetology-app/lambdas/python/common/requirements-dev.txt
  • backend/cosmetology-app/lambdas/python/common/requirements.txt
  • backend/cosmetology-app/lambdas/python/compact-configuration/requirements-dev.txt
  • backend/cosmetology-app/lambdas/python/custom-resources/requirements-dev.txt
  • backend/cosmetology-app/lambdas/python/data-events/requirements-dev.txt
  • backend/cosmetology-app/lambdas/python/disaster-recovery/requirements-dev.txt
  • backend/cosmetology-app/lambdas/python/provider-data-v1/requirements-dev.in
  • backend/cosmetology-app/lambdas/python/provider-data-v1/requirements-dev.txt
  • backend/cosmetology-app/lambdas/python/search/requirements-dev.txt
  • backend/cosmetology-app/lambdas/python/search/requirements.txt
  • backend/cosmetology-app/lambdas/python/staff-user-pre-token/requirements-dev.txt
  • backend/cosmetology-app/lambdas/python/staff-users/requirements-dev.in
  • backend/cosmetology-app/lambdas/python/staff-users/requirements-dev.txt
  • backend/cosmetology-app/requirements-dev.in
  • backend/cosmetology-app/requirements-dev.txt
  • backend/cosmetology-app/requirements.txt
  • backend/cosmetology-app/stacks/persistent_stack/__init__.py

Comment thread backend/compact-connect/lambdas/nodejs/package.json
This system is not live in prod yet, so we
can perform a hard cut-over to the new name
Copy link
Copy Markdown
Collaborator

@ChiefStief ChiefStief left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are many more references to Compact Connect throughout the code base, most of them are internal so not super important but the couple that I think should be addressed are:

Thank you for integrating with Compact Connect! You have been designated as the IT professional who is able to handle
credentials for secure machine-to-machine authentication between your state and CompactConnect.

And the external facing readmes

Copy link
Copy Markdown
Collaborator

@ChiefStief ChiefStief left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good

@landonshumway-ia
Copy link
Copy Markdown
Collaborator Author

@jlkravitz This is ready for your review. Thanks

Copy link
Copy Markdown
Collaborator

@jlkravitz jlkravitz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@isabeleliassen This is good to merge!

@isabeleliassen isabeleliassen merged commit 57b80ce into csg-org:main Apr 15, 2026
8 of 9 checks passed
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.

Fix space in subject line in emails from CompactConnect

4 participants