Skip to content

feat(design): emails name what a visitor posted in the portal's word - #851

Closed
mortondev wants to merge 1 commit into
feat/portal-design-v2-phase4-wordsfrom
feat/portal-design-v2-phase4-email-words
Closed

mortondev wants to merge 1 commit into
feat/portal-design-v2-phase4-wordsfrom
feat/portal-design-v2-phase4-email-words

Conversation

@mortondev

@mortondev mortondev commented Oct 31, 2026 •

Copy link
Copy Markdown
Member

The eighteenth of the stack that builds a new design engine for the portal, and the sixth of phase 4. The emails a visitor gets about what they posted name it in the portal's word, as the portal does since the PR below.

What changes

Email Before After (suggestion)
Status change, subject and heading Your feedback is now Planned! Your suggestion is now Planned!
Status change, body and footer The status of your feedback… / …subscribed to this feedback. …your suggestion… / …this suggestion.
New comment New comment on your feedback New comment on your suggestion
Mention Feedback (label), View Feedback Suggestion, View suggestion
Linked feedback …linked your feedback to a post. View Feedback …linked your feedback to a suggestion. View suggestion

"Your feedback" stays in the linked-feedback email, where it means the person's own message rather than the post. Idea is the word when none is chosen, so a workspace that never chose one reads "Your idea is now Planned!". The emails are English only, as before.

How the word gets there

  • The hook context reads the word once per event, as the portal does: from the workspace settings' design view, so the legacy theme, an unpublished design and PORTAL_DESIGN_ENGINE=legacy all give idea. If the design cannot be read, the email still goes out, saying idea, with a warning in the log.
  • The post subscribers' and mention targets carry it in the email config, and the handler passes it to sendStatusChangeEmail, sendNewCommentEmail and sendPostMentionEmail. sendFeedbackLinkedEmail takes it too.
  • In @quackback/email, post-word.ts holds the nouns, and statusChangeSubject() builds the subject.

Also in the PR below

A follow-up commit there words the notification parity check as the admin does: a stored notification row says "a post", and the portal's bell words it again in the portal's word.

Verification

New tests, each checked by breaking the code it covers: the four templates and the status subject in the chosen word and by default, with no "feedback" left in the status and comment emails; the handler passes the config's word to each sender; the hook context carries the published word and says idea, with a warning, when the design cannot be read. The server and email suites pass.

@mortondev
mortondev added this pull request to stack #833 October 31, 2026 04:53
The status change, new comment, mention and linked-feedback emails said
"your feedback" and "View Feedback". They now say the portal's word:
"Your suggestion is now Planned!", "New comment on your idea", "View
feature request", and the status subject too. Idea when none is chosen.

The hook context reads the word as the portal does, from the workspace
settings' design, once per event, and the post subscribers' and mention
targets carry it to the senders. An email still goes out, saying idea, if
the design cannot be read.
@mortondev

Copy link
Copy Markdown
Member Author

Condensed into #879. The stack is now five PRs, #878 to #882; this branch is kept as it was.

@mortondev mortondev closed this Nov 1, 2026
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.

2 participants