Skip to content

feat(coderd): remove greetings from notifications templates #16991

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 23 commits into from
Mar 21, 2025
Merged
Show file tree
Hide file tree
Changes from 13 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
UPDATE notification_templates SET body_template = E'Hi {{.UserName}},\n\n' ||
E'Your workspace **{{.Labels.name}}** was deleted.\n\n' ||
E'The specified reason was "**{{.Labels.reason}}{{ if .Labels.initiator }} ({{ .Labels.initiator }}){{end}}**".' WHERE id = 'f517da0b-cdc9-410f-ab89-a86107c420ed';
UPDATE notification_templates SET body_template = E'Hi {{.UserName}},\n\n' ||
E'Automatic build of your workspace **{{.Labels.name}}** failed.\n\n' ||
E'The specified reason was "**{{.Labels.reason}}**".' WHERE id = '381df2a9-c0c0-4749-420f-80a9280c66f9';
UPDATE notification_templates SET body_template = E'Hi {{.UserName}},\n\n' ||
E'Your workspace **{{.Labels.name}}** has been updated automatically to the latest template version ({{.Labels.template_version_name}}).\n\n' ||
E'Reason for update: **{{.Labels.template_version_message}}**.' WHERE id = 'c34a0c09-0704-4cac-bd1c-0c0146811c2b';
UPDATE notification_templates SET body_template = E'Hi {{.UserName}},\n\n' ||
E'New user account **{{.Labels.created_account_name}}** has been created.\n\n' ||
E'This new user account was created {{if .Labels.created_account_user_name}}for **{{.Labels.created_account_user_name}}** {{end}}by **{{.Labels.initiator}}**.' WHERE id = '4e19c0ac-94e1-4532-9515-d1801aa283b2';
UPDATE notification_templates SET body_template = E'Hi {{.UserName}},\n\n' ||
E'User account **{{.Labels.deleted_account_name}}** has been deleted.\n\n' ||
E'The deleted account {{if .Labels.deleted_account_user_name}}belonged to **{{.Labels.deleted_account_user_name}}** and {{end}}was deleted by **{{.Labels.initiator}}**.' WHERE id = 'f44d9314-ad03-4bc8-95d0-5cad491da6b6';
UPDATE notification_templates SET body_template = E'Hi {{.UserName}},\n\n' ||
E'User account **{{.Labels.suspended_account_name}}** has been suspended.\n\n' ||
E'The account {{if .Labels.suspended_account_user_name}}belongs to **{{.Labels.suspended_account_user_name}}** and it {{end}}was suspended by **{{.Labels.initiator}}**.' WHERE id = 'b02ddd82-4733-4d02-a2d7-c36f3598997d';
UPDATE notification_templates SET body_template = E'Hi {{.UserName}},\n\n' ||
E'Your account **{{.Labels.suspended_account_name}}** has been suspended by **{{.Labels.initiator}}**.' WHERE id = '6a2f0609-9b69-4d36-a989-9f5925b6cbff';
UPDATE notification_templates SET body_template = E'Hi {{.UserName}},\n\n' ||
E'User account **{{.Labels.activated_account_name}}** has been activated.\n\n' ||
E'The account {{if .Labels.activated_account_user_name}}belongs to **{{.Labels.activated_account_user_name}}** and it {{ end }}was activated by **{{.Labels.initiator}}**.' WHERE id = '9f5af851-8408-4e73-a7a1-c6502ba46689';
UPDATE notification_templates SET body_template = E'Hi {{.UserName}},\n\n' ||
E'Your account **{{.Labels.activated_account_name}}** has been activated by **{{.Labels.initiator}}**.' WHERE id = '1a6a6bea-ee0a-43e2-9e7c-eabdb53730e4';
UPDATE notification_templates SET body_template = E'Hi {{.UserName}},\n\nA manual build of the workspace **{{.Labels.name}}** using the template **{{.Labels.template_name}}** failed (version: **{{.Labels.template_version_name}}**).\nThe workspace build was initiated by **{{.Labels.initiator}}**.' WHERE id = '2faeee0f-26cb-4e96-821c-85ccb9f71513';
UPDATE notification_templates SET body_template = E'Hi {{.UserName}},

Template **{{.Labels.template_display_name}}** has failed to build {{.Data.failed_builds}}/{{.Data.total_builds}} times over the last {{.Data.report_frequency}}.

**Report:**
{{range $version := .Data.template_versions}}
**{{$version.template_version_name}}** failed {{$version.failed_count}} time{{if gt $version.failed_count 1.0}}s{{end}}:
{{range $build := $version.failed_builds}}
* [{{$build.workspace_owner_username}} / {{$build.workspace_name}} / #{{$build.build_number}}]({{base_url}}/@{{$build.workspace_owner_username}}/{{$build.workspace_name}}/builds/{{$build.build_number}})
{{- end}}
{{end}}
We recommend reviewing these issues to ensure future builds are successful.' WHERE id = '34a20db2-e9cc-4a93-b0e4-8569699d7a00';
UPDATE notification_templates SET body_template = E'Hi {{.UserName}},\n\nUse the link below to reset your password.\n\nIf you did not make this request, you can ignore this message.' WHERE id = '62f86a30-2330-4b61-a26d-311ff3b608cf';
UPDATE notification_templates SET body_template = E'Hello {{.UserName}},\n\n'||
E'The template **{{.Labels.template}}** has been deprecated with the following message:\n\n' ||
E'**{{.Labels.message}}**\n\n' ||
E'New workspaces may not be created from this template. Existing workspaces will continue to function normally.' WHERE id = 'f40fae84-55a2-42cd-99fa-b41c1ca64894';
UPDATE notification_templates SET body_template = E'Hello {{.UserName}},\n\n'||
E'The workspace **{{.Labels.workspace}}** has been created from the template **{{.Labels.template}}** using version **{{.Labels.version}}**.' WHERE id = '281fdf73-c6d6-4cbb-8ff5-888baf8a2fff';
UPDATE notification_templates SET body_template = E'Hello {{.UserName}},\n\n'||
E'A new workspace build has been manually created for your workspace **{{.Labels.workspace}}** by **{{.Labels.initiator}}** to update it to version **{{.Labels.version}}** of template **{{.Labels.template}}**.' WHERE id = 'd089fe7b-d5c5-4c0c-aaf5-689859f7d392';
UPDATE notification_templates SET body_template = E'Hi {{.UserName}},\n\n'||
E'Your workspace **{{.Labels.workspace}}** has reached the memory usage threshold set at **{{.Labels.threshold}}**.' WHERE id = 'a9d027b4-ac49-4fb1-9f6d-45af15f64e7a';
UPDATE notification_templates SET body_template = E'Hi {{.UserName}},\n\n'||
E'{{ if eq (len .Data.volumes) 1 }}{{ $volume := index .Data.volumes 0 }}'||
E'Volume **`{{$volume.path}}`** is over {{$volume.threshold}} full in workspace **{{.Labels.workspace}}**.'||
E'{{ else }}'||
E'The following volumes are nearly full in workspace **{{.Labels.workspace}}**\n\n'||
E'{{ range $volume := .Data.volumes }}'||
E'- **`{{$volume.path}}`** is over {{$volume.threshold}} full\n'||
E'{{ end }}'||
E'{{ end }}' WHERE id = 'f047f6a3-5713-40f7-85aa-0394cce9fa3a';
UPDATE notification_templates SET body_template = E'Hi {{.UserName}},\n\n'||
E'This is a test notification.' WHERE id = 'c425f63e-716a-4bf4-ae24-78348f706c3f';
UPDATE notification_templates SET body_template = E'Hi {{.UserName}},\n\n' ||
E'The template **{{.Labels.name}}** was deleted by **{{ .Labels.initiator }}**.\n\n' WHERE id = '29a09665-2a4c-403f-9648-54301670e7be';
UPDATE notification_templates SET body_template = E'Hi {{.UserName}},\n\n'||
E'Your workspace **{{.Labels.name}}** has been marked as [**dormant**](https://coder.com/docs/templates/schedule#dormancy-threshold-enterprise) because of {{.Labels.reason}}.\n' ||
E'Dormant workspaces are [automatically deleted](https://coder.com/docs/templates/schedule#dormancy-auto-deletion-enterprise) after {{.Labels.timeTilDormant}} of inactivity.\n' ||
E'To prevent deletion, use your workspace with the link below.' WHERE id = '0ea69165-ec14-4314-91f1-69566ac3c5a0';
UPDATE notification_templates SET body_template = E'Hi {{.UserName}},\n\n'||
E'Your workspace **{{.Labels.name}}** has been marked for **deletion** after {{.Labels.timeTilDormant}} of [dormancy](https://coder.com/docs/templates/schedule#dormancy-auto-deletion-enterprise) because of {{.Labels.reason}}.\n' ||
E'To prevent deletion, use your workspace with the link below.' WHERE id = '51ce2fdf-c9ca-4be1-8d70-628674f9bc42';
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
UPDATE notification_templates SET body_template = E'Your workspace **{{.Labels.name}}** was deleted.\n\n' ||
E'The specified reason was "**{{.Labels.reason}}{{ if .Labels.initiator }} ({{ .Labels.initiator }}){{end}}**".' WHERE id = 'f517da0b-cdc9-410f-ab89-a86107c420ed';
UPDATE notification_templates SET body_template = E'Automatic build of your workspace **{{.Labels.name}}** failed.\n\n' ||
E'The specified reason was "**{{.Labels.reason}}**".' WHERE id = '381df2a9-c0c0-4749-420f-80a9280c66f9';
UPDATE notification_templates SET body_template = E'Your workspace **{{.Labels.name}}** has been updated automatically to the latest template version ({{.Labels.template_version_name}}).\n\n' ||
E'Reason for update: **{{.Labels.template_version_message}}**.' WHERE id = 'c34a0c09-0704-4cac-bd1c-0c0146811c2b';
UPDATE notification_templates SET body_template = E'New user account **{{.Labels.created_account_name}}** has been created.\n\n' ||
E'This new user account was created {{if .Labels.created_account_user_name}}for **{{.Labels.created_account_user_name}}** {{end}}by **{{.Labels.initiator}}**.' WHERE id = '4e19c0ac-94e1-4532-9515-d1801aa283b2';
UPDATE notification_templates SET body_template = E'User account **{{.Labels.deleted_account_name}}** has been deleted.\n\n' ||
E'The deleted account {{if .Labels.deleted_account_user_name}}belonged to **{{.Labels.deleted_account_user_name}}** and {{end}}was deleted by **{{.Labels.initiator}}**.' WHERE id = 'f44d9314-ad03-4bc8-95d0-5cad491da6b6';
UPDATE notification_templates SET body_template = E'User account **{{.Labels.suspended_account_name}}** has been suspended.\n\n' ||
E'The account {{if .Labels.suspended_account_user_name}}belongs to **{{.Labels.suspended_account_user_name}}** and it {{end}}was suspended by **{{.Labels.initiator}}**.' WHERE id = 'b02ddd82-4733-4d02-a2d7-c36f3598997d';
UPDATE notification_templates SET body_template = E'Your account **{{.Labels.suspended_account_name}}** has been suspended by **{{.Labels.initiator}}**.' WHERE id = '6a2f0609-9b69-4d36-a989-9f5925b6cbff';
UPDATE notification_templates SET body_template = E'User account **{{.Labels.activated_account_name}}** has been activated.\n\n' ||
E'The account {{if .Labels.activated_account_user_name}}belongs to **{{.Labels.activated_account_user_name}}** and it {{ end }}was activated by **{{.Labels.initiator}}**.' WHERE id = '9f5af851-8408-4e73-a7a1-c6502ba46689';
UPDATE notification_templates SET body_template = E'Your account **{{.Labels.activated_account_name}}** has been activated by **{{.Labels.initiator}}**.' WHERE id = '1a6a6bea-ee0a-43e2-9e7c-eabdb53730e4';
UPDATE notification_templates SET body_template = E'A manual build of the workspace **{{.Labels.name}}** using the template **{{.Labels.template_name}}** failed (version: **{{.Labels.template_version_name}}**).\nThe workspace build was initiated by **{{.Labels.initiator}}**.' WHERE id = '2faeee0f-26cb-4e96-821c-85ccb9f71513';
UPDATE notification_templates SET body_template = E'Template **{{.Labels.template_display_name}}** has failed to build {{.Data.failed_builds}}/{{.Data.total_builds}} times over the last {{.Data.report_frequency}}.

**Report:**
{{range $version := .Data.template_versions}}
**{{$version.template_version_name}}** failed {{$version.failed_count}} time{{if gt $version.failed_count 1.0}}s{{end}}:
{{range $build := $version.failed_builds}}
* [{{$build.workspace_owner_username}} / {{$build.workspace_name}} / #{{$build.build_number}}]({{base_url}}/@{{$build.workspace_owner_username}}/{{$build.workspace_name}}/builds/{{$build.build_number}})
{{- end}}
{{end}}
We recommend reviewing these issues to ensure future builds are successful.' WHERE id = '34a20db2-e9cc-4a93-b0e4-8569699d7a00';
UPDATE notification_templates SET body_template = E'Use the link below to reset your password.\n\nIf you did not make this request, you can ignore this message.' WHERE id = '62f86a30-2330-4b61-a26d-311ff3b608cf';
UPDATE notification_templates SET body_template = E'The template **{{.Labels.template}}** has been deprecated with the following message:\n\n' ||
E'**{{.Labels.message}}**\n\n' ||
E'New workspaces may not be created from this template. Existing workspaces will continue to function normally.' WHERE id = 'f40fae84-55a2-42cd-99fa-b41c1ca64894';
UPDATE notification_templates SET body_template = E'The workspace **{{.Labels.workspace}}** has been created from the template **{{.Labels.template}}** using version **{{.Labels.version}}**.' WHERE id = '281fdf73-c6d6-4cbb-8ff5-888baf8a2fff';
UPDATE notification_templates SET body_template = E'A new workspace build has been manually created for your workspace **{{.Labels.workspace}}** by **{{.Labels.initiator}}** to update it to version **{{.Labels.version}}** of template **{{.Labels.template}}**.' WHERE id = 'd089fe7b-d5c5-4c0c-aaf5-689859f7d392';
UPDATE notification_templates SET body_template = E'Your workspace **{{.Labels.workspace}}** has reached the memory usage threshold set at **{{.Labels.threshold}}**.' WHERE id = 'a9d027b4-ac49-4fb1-9f6d-45af15f64e7a';
UPDATE notification_templates SET body_template = E'{{ if eq (len .Data.volumes) 1 }}{{ $volume := index .Data.volumes 0 }}'||
E'Volume **`{{$volume.path}}`** is over {{$volume.threshold}} full in workspace **{{.Labels.workspace}}**.'||
E'{{ else }}'||
E'The following volumes are nearly full in workspace **{{.Labels.workspace}}**\n\n'||
E'{{ range $volume := .Data.volumes }}'||
E'- **`{{$volume.path}}`** is over {{$volume.threshold}} full\n'||
E'{{ end }}'||
E'{{ end }}' WHERE id = 'f047f6a3-5713-40f7-85aa-0394cce9fa3a';
UPDATE notification_templates SET body_template = E'This is a test notification.' WHERE id = 'c425f63e-716a-4bf4-ae24-78348f706c3f';
UPDATE notification_templates SET body_template = E'The template **{{.Labels.name}}** was deleted by **{{ .Labels.initiator }}**.\n\n' WHERE id = '29a09665-2a4c-403f-9648-54301670e7be';
UPDATE notification_templates SET body_template = E'Your workspace **{{.Labels.name}}** has been marked as [**dormant**](https://coder.com/docs/templates/schedule#dormancy-threshold-enterprise) because of {{.Labels.reason}}.\n' ||
E'Dormant workspaces are [automatically deleted](https://coder.com/docs/templates/schedule#dormancy-auto-deletion-enterprise) after {{.Labels.timeTilDormant}} of inactivity.\n' ||
E'To prevent deletion, use your workspace with the link below.' WHERE id = '0ea69165-ec14-4314-91f1-69566ac3c5a0';
UPDATE notification_templates SET body_template = E'Your workspace **{{.Labels.name}}** has been marked for **deletion** after {{.Labels.timeTilDormant}} of [dormancy](https://coder.com/docs/templates/schedule#dormancy-auto-deletion-enterprise) because of {{.Labels.reason}}.\n' ||
E'To prevent deletion, use your workspace with the link below.' WHERE id = '51ce2fdf-c9ca-4be1-8d70-628674f9bc42';
21 changes: 14 additions & 7 deletions coderd/inboxnotifications_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,8 @@ func TestInboxNotification_Watch(t *testing.T) {
}, "notification title", "notification content", nil)
require.NoError(t, err)

dispatchFunc(ctx, uuid.New())
_, err = dispatchFunc(ctx, uuid.New())
require.NoError(t, err)

_, message, err := wsConn.Read(ctx)
require.NoError(t, err)
Expand Down Expand Up @@ -174,7 +175,8 @@ func TestInboxNotification_Watch(t *testing.T) {
}, "memory related title", "memory related content", nil)
require.NoError(t, err)

dispatchFunc(ctx, uuid.New())
_, err = dispatchFunc(ctx, uuid.New())
require.NoError(t, err)

_, message, err := wsConn.Read(ctx)
require.NoError(t, err)
Expand All @@ -193,15 +195,17 @@ func TestInboxNotification_Watch(t *testing.T) {
}, "disk related title", "disk related title", nil)
require.NoError(t, err)

dispatchFunc(ctx, uuid.New())
_, err = dispatchFunc(ctx, uuid.New())
require.NoError(t, err)

dispatchFunc, err = inboxHandler.Dispatcher(types.MessagePayload{
UserID: memberClient.ID.String(),
NotificationTemplateID: notifications.TemplateWorkspaceOutOfMemory.String(),
}, "second memory related title", "second memory related title", nil)
require.NoError(t, err)

dispatchFunc(ctx, uuid.New())
_, err = dispatchFunc(ctx, uuid.New())
require.NoError(t, err)

_, message, err = wsConn.Read(ctx)
require.NoError(t, err)
Expand Down Expand Up @@ -256,7 +260,8 @@ func TestInboxNotification_Watch(t *testing.T) {
}, "memory related title", "memory related content", nil)
require.NoError(t, err)

dispatchFunc(ctx, uuid.New())
_, err = dispatchFunc(ctx, uuid.New())
require.NoError(t, err)

_, message, err := wsConn.Read(ctx)
require.NoError(t, err)
Expand All @@ -276,7 +281,8 @@ func TestInboxNotification_Watch(t *testing.T) {
}, "second memory related title", "second memory related title", nil)
require.NoError(t, err)

dispatchFunc(ctx, uuid.New())
_, err = dispatchFunc(ctx, uuid.New())
require.NoError(t, err)

dispatchFunc, err = inboxHandler.Dispatcher(types.MessagePayload{
UserID: memberClient.ID.String(),
Expand All @@ -285,7 +291,8 @@ func TestInboxNotification_Watch(t *testing.T) {
}, "another memory related title", "another memory related title", nil)
require.NoError(t, err)

dispatchFunc(ctx, uuid.New())
_, err = dispatchFunc(ctx, uuid.New())
require.NoError(t, err)

_, message, err = wsConn.Read(ctx)
require.NoError(t, err)
Expand Down
1 change: 1 addition & 0 deletions coderd/notifications/dispatch/smtp/html.gotmpl
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
{{ .Labels._subject }}
</h1>
<div style="line-height: 1.5;">
<p>Hi {{ .UserUsername }},</p>
{{ .Labels._body }}
</div>
<div style="text-align: center; margin-top: 32px;">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8

Hi Bobby,

The template Bobby's Template was deleted by rob.


Expand Down Expand Up @@ -45,10 +43,9 @@ argin: 8px 0 32px; line-height: 1.5;">
Template "Bobby's Template" deleted
</h1>
<div style=3D"line-height: 1.5;">
<p>Hi Bobby,</p>

<p>The template <strong>Bobby&rsquo;s Template</strong> was deleted by <str=
ong>rob</strong>.</p>
<p>Hi bobby,</p>
<p>The template <strong>Bobby&rsquo;s Template</strong> was deleted=
by <strong>rob</strong>.</p>
</div>
<div style=3D"text-align: center; margin-top: 32px;">
=20
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8

Hello Bobby,

The template alpha has been deprecated with the following message:

This template has been replaced by beta
Expand Down Expand Up @@ -53,10 +51,9 @@ argin: 8px 0 32px; line-height: 1.5;">
Template 'alpha' has been deprecated
</h1>
<div style=3D"line-height: 1.5;">
<p>Hello Bobby,</p>

<p>The template <strong>alpha</strong> has been deprecated with the followi=
ng message:</p>
<p>Hi bobby,</p>
<p>The template <strong>alpha</strong> has been deprecated with the=
following message:</p>

<p><strong>This template has been replaced by beta</strong></p>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8

Hi Bobby,

This is a test notification.


Expand Down Expand Up @@ -46,9 +44,8 @@ argin: 8px 0 32px; line-height: 1.5;">
A test notification
</h1>
<div style=3D"line-height: 1.5;">
<p>Hi Bobby,</p>

<p>This is a test notification.</p>
<p>Hi bobby,</p>
<p>This is a test notification.</p>
</div>
<div style=3D"text-align: center; margin-top: 32px;">
=20
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8

Hi Bobby,

User account bobby has been activated.

The account belongs to William Tables and it was activated by rob.
Expand Down Expand Up @@ -47,9 +45,8 @@ argin: 8px 0 32px; line-height: 1.5;">
User account "bobby" activated
</h1>
<div style=3D"line-height: 1.5;">
<p>Hi Bobby,</p>

<p>User account <strong>bobby</strong> has been activated.</p>
<p>Hi bobby,</p>
<p>User account <strong>bobby</strong> has been activated.</p>

<p>The account belongs to <strong>William Tables</strong> and it was activa=
ted by <strong>rob</strong>.</p>
Expand Down
Loading
Loading