This repository was archived by the owner on Mar 10, 2026. It is now read-only.
fix: notification settings UX improvements and in-app banner fixes#239
Closed
Just-Insane wants to merge 6 commits into7w1:devfrom
Closed
fix: notification settings UX improvements and in-app banner fixes#239Just-Insane wants to merge 6 commits into7w1:devfrom
Just-Insane wants to merge 6 commits into7w1:devfrom
Conversation
4af672b to
e5bf4a5
Compare
02f731a to
498df6c
Compare
added 4 commits
March 8, 2026 12:28
… audio, media session) - resolveSilent = () => false — OS/Sygnal handles push sound entirely; the in-app sound setting no longer affects push notification sound - remove notificationSoundEnabled from SW postMessage payload - move OS notification block before visibilityState guard so desktop notifications fire even when the browser window is minimised - pass isEncryptedRoom:false for in-app banner preview — events are already decrypted by the SDK so the actual message body is always shown - call clearMediaSessionQuickly() after play() to dismiss the iOS lock screen media player; only clears playbackState if no real media metadata is set
- render NotificationBanner in ClientLayout so it spans the full viewport as position:fixed and doesn't displace page content - remove the old banner render from Room.tsx
- rename "Mobile In-App Notifications" to "In-App Notifications"; show on all platforms (was mobile-only) - rename "Notification Sound" to "In-App Notification Sound" to clarify it only controls in-page audio, not push sound - move badge display settings (Show Unread Counts, Badge Counts for DMs Only, Show Unread Ping Counts) from Appearance to Notifications - add NotificationLevelsHint info popover to All/Special/Keyword sections explaining Disable / Notify Silent / Notify Loud - add descriptive text under each notification section heading - show a single Mention @room control (IsRoomMention on modern servers, AtRoomNotification on old servers) — they are spec-mandated mirrors and exposing both as independent controls was confusing - clarify @room push rule labels and descriptions - add "Follows your global notification rules" subtitle to the Default option in the per-room notification switcher
498df6c to
43a86d4
Compare
8268513 to
332dcfd
Compare
Owner
|
In-app notifs should probably be enabled by default on mobile. Also the changeset needs to be like 1 one, or multiple files detailing the individual updates. Tbh, this might be better split up into multiple PRs it's kind of a lot of changes all at once for things that very likely have edge cases. |
Collaborator
Author
|
Sounds good, I was thinking it was quite large. This PR has been split into four focused draft PRs, each with its own changeset:
This PR (#239) can be closed once the individual ones are reviewed. |
Collaborator
Author
|
Closed as superseded (split out into smaller PRs) |
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
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
Summary
Overhaul notification settings UX and fix several notification bugs.
Bug fixes
resolveSilentin the service worker now always returnsfalse, leaving sound/vibration decisions entirely to the OS and Sygnal push gateway. The in-app sound setting no longer affects push behaviour.mobileOrTablet()check. It now fires on all platforms when In-App Notifications is enabled.position: fixedinClientLayout(single render point, full viewport width,z-index: 9999). Doesn't displace any page content.isEncryptedRoom: falseis now passed so the actual message body is always shown when message content preview is enabled.visibilityState !== 'visible'guard, which only gates the in-app banner and audio. Notifications now fire even when the browser window is minimised.HTMLAudioElement.play(),mediaSession.playbackStateis cleared after a short delay, dismissing the lock screen widget. If in-app media (e.g. a video in a room) has since registered its own metadata the media session is left untouched.Settings page improvements
@roompush rules into a single "Mention @room" control: routes toIsRoomMention(m.mentions, MSC3952) on modern servers, orAtRoomNotificationon older servers. Synapse mirrors both rules so showing them separately caused an apparent sync loop where setting one immediately reset the other.Changed files
src/app/pages/client/ClientNonUIFeatures.tsxisEncryptedRoom: falsefor banner; removemobileOrTablet()gatesrc/app/pages/client/ClientLayout.tsx<NotificationBanner>render pointsrc/app/components/notification-banner/NotificationBanner.css.tsposition: fixed; top: 0; left: 0; right: 0src/app/features/settings/notifications/SystemNotification.tsxsrc/app/features/settings/notifications/AllMessages.tsxsrc/app/features/settings/notifications/SpecialMessages.tsxsrc/app/features/settings/notifications/KeywordMessages.tsxsrc/app/features/settings/notifications/NotificationLevelsHint.tsxsrc/app/components/RoomNotificationSwitcher.tsxsrc/app/features/settings/cosmetics/Themes.tsxsrc/app/state/settings.tsuseInAppNotifications: false;showUnreadCounts: falsedefaultssrc/sw/pushNotification.tsresolveSilent = () => false— OS handles soundsrc/sw.tsnotificationSoundEnabledfrom SW postMessage payload