-
Notifications
You must be signed in to change notification settings - Fork 418
MSC3958: Suppress notifications from message edits #3958
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
Changes from all commits
Commits
Show all changes
15 commits
Select commit
Hold shift + click to select a range
acf68ea
Suppress message edits.
clokep 344c18f
Fix typo.
clokep 09bb6ac
Add @room.
clokep 2ab860a
Match MSC title to PR.
clokep 216a54c
Add a potential issue.
clokep 69bd78b
Clarify rule placement.
clokep 950ad36
Change link text.
clokep 59d9172
Fix typo.
clokep 02fd5c7
Add a note about mobile clients.
clokep c0f11a1
Update from anoa's feedback.
clokep 876e19f
Updates for Matrix 1.7
clokep f93d03d
Update more spec links.
clokep 5c603f0
Minor clarifications.
clokep 1128719
Add downside about "all messages"
clokep 33083c0
Clarify again that this *does* work with all messages.
clokep File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
142 changes: 142 additions & 0 deletions
142
proposals/3958-suppress-notifications-of-message-edits.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,142 @@ | ||
| # MSC3958: Suppress notifications from message edits | ||
|
|
||
| [Event replacement](https://spec.matrix.org/v1.7/client-server-api/#event-replacements) | ||
| (more commonly known as message edits) signals that a message is intended to | ||
| be replaced with new content. | ||
|
|
||
| This works well for fixing typos or other minor correction, but can cause | ||
| spurious notifications if the event mentions a user's display name / localpart or | ||
| if it includes `@room` (which is particularly bad in large rooms as every user | ||
| is re-notified). This contributes to notification fatigue as the additional | ||
| notifications contain no new information. | ||
|
|
||
| Additionally for users which have a room set to "all messages" then every event | ||
| edit results in an additional notification.[^1] | ||
|
|
||
| ## Proposal | ||
|
|
||
| A new default push rule is added to suppress notifications due to [edits](https://spec.matrix.org/v1.7/client-server-api/#event-replacements). | ||
|
|
||
| ```json | ||
| { | ||
| "rule_id": ".m.rule.suppress_edits", | ||
| "default": true, | ||
| "enabled": true, | ||
| "conditions": [ | ||
| { | ||
| "kind": "event_property_is", | ||
| "key": "content.m\\.relates_to.rel_type", | ||
| "value": "m.replace" | ||
| } | ||
| ], | ||
| "actions": [] | ||
| } | ||
| ``` | ||
|
|
||
| This rule should be placed after the [`.m.rule.room.server_acl` rule](https://spec.matrix.org/v1.7/client-server-api/#default-override-rules) | ||
| as the last override rule. | ||
|
|
||
| It would match events such as those given in [event replacements](https://spec.matrix.org/v1.7/client-server-api/#event-replacements) | ||
| portion of the spec: | ||
|
|
||
| ```json5 | ||
| { | ||
| "type": "m.room.message", | ||
| "content": { | ||
| "body": "* Hello! My name is bar", | ||
| "msgtype": "m.text", | ||
| "m.new_content": { | ||
| "body": "Hello! My name is bar", | ||
| "msgtype": "m.text" | ||
| }, | ||
| "m.relates_to": { | ||
| "rel_type": "m.replace", | ||
| "event_id": "$some_event_id" | ||
| } | ||
| }, | ||
| // ... other fields required by events | ||
| } | ||
| ``` | ||
|
|
||
| With the [updated mentions behavior in Matrix 1.7](https://spec.matrix.org/v1.7/client-server-api/#user-and-room-mentions), | ||
| this would allow the [`.m.rule.is_user_mention`](https://spec.matrix.org/v1.7/client-server-api/#_m_rule_is_user_mention) | ||
| and the [`.m.rule.is_room_mention`](https://spec.matrix.org/v1.7/client-server-api/#_m_rule_is_room_mention) | ||
| rules to continue matching, even for edited events, while suppressing notifications | ||
| from other edits. | ||
|
|
||
| Some users may be depending on notifications of edits. If a user would like to | ||
| revert to the old behavior they can disable the `.m.rule.suppress_edits` push rule. | ||
|
|
||
| ## Potential issues | ||
|
|
||
| ### Edits of invites and tombstones | ||
|
|
||
| The [`.m.rule.invite_for_me` and `.m.rule.tombstone`](https://spec.matrix.org/v1.7/client-server-api/#default-override-rules) | ||
| rules may still cause spurious notifications if events which match those rules | ||
| are edited. Both of those are state events and | ||
| [not subject to valid edits](https://spec.matrix.org/v1.7/client-server-api/#validity-of-replacement-events). | ||
|
|
||
| ### Keeping notifications up-to-date | ||
|
|
||
| Mobile clients currently depend on the push notifications of edited events to update the | ||
| text of on-screen notifications. The proposed push rule would result in mobile clients no | ||
| longer receiving these edits; but showing slightly outdated text on a notification screen. That | ||
| is only a minor impact and it would be better to separate when (& why) we send pushes vs. | ||
| when we generate notifications. | ||
|
|
||
| ### Suppression of notifications to a new keyword | ||
|
|
||
| If an event is edited and the new event (but not the original event) matches a keyword | ||
| then the notification would erroneously be suppressed. | ||
|
|
||
| ## Alternatives | ||
|
|
||
| An alternative solution would be to add a push rule with no actions and a condition to | ||
| check whether a notification was generated for the original message. | ||
|
|
||
| This would be placed as an override rule before the `.m.rule.contains_display_name` | ||
| and the `.m.rule.roomnotif` [push rules](https://spec.matrix.org/v1.7/client-server-api/#push-rules). | ||
|
|
||
| This would suppress duplicate notifications, while still allow for new notifications due | ||
| to new mentions or keywords changing. | ||
|
|
||
| ## Security considerations | ||
|
|
||
| None forseen. | ||
|
|
||
| ## Future extensions | ||
|
|
||
| If message edits by other senders were allowed than it would be useful to | ||
| know when your own message was edited, but this | ||
| [is not currently allowed](https://spec.matrix.org/v1.7/client-server-api/#validity-of-replacement-events). | ||
| A future MSC to define this behavior should take into account notifying | ||
| users in this situation. | ||
|
|
||
| ## Unstable prefix | ||
|
|
||
| The unstable prefix of `.org.matrix.msc3958.suppress_edits` should be used in place of | ||
| `.m.rule.suppress_edits`. | ||
|
|
||
| A previous version of this MSC used `.com.beeper.suppress_edits` with a different condition | ||
| (which should match the same events), but different rule placement. | ||
|
|
||
| ## Dependencies | ||
|
|
||
| N/A | ||
|
|
||
| <!-- Footnotes below --> | ||
|
|
||
| [^1]: A room can be configured to be notify for "all messages" by creating a [room-specific push rule](https://spec.matrix.org/v1.7/client-server-api/#push-rules) | ||
| with an `rule_id` of the room ID & has `actions` set to "notify" , e.g.: | ||
|
|
||
| ```json | ||
| { | ||
| "rule_id" : "!abcdef:example.com", | ||
| "default" : false, | ||
| "enabled" : true, | ||
| "actions" : ["notify"] | ||
| } | ||
| ``` | ||
|
|
||
| See the [Element Web](https://github.com/matrix-org/matrix-react-sdk/blob/da7aa4055e04f291be9b5141b704bd12aec03d0c/src/RoomNotifs.ts#L162-L170) | ||
| implementation. | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.