From 5d15013a2761ee2bb4a0e3c1d3d04dd2be93d282 Mon Sep 17 00:00:00 2001 From: Lotus CI Date: Sun, 25 Oct 2026 01:37:37 -0400 Subject: [PATCH] feat(settings): quick wins from the settings audit (#453) - #456 Copy pass: sentence case for every setting title and section, plainer names ("Hide joins and leaves", "Link previews", "Emoji style: Twemoji", "Rejoin calls after a restart", "Also use the browser's noise suppression", "Push-to-talk key"...) and grammar fixes ("when messages arrive", "Play a sound when a new message arrives", blocked users "Enter their Matrix ID"). Labels only: no setting is renamed in storage. - #455 One theme control: Theme: System / Light / Dark. System shows the light and dark variant pickers, Light or Dark one picker of that kind. Replaces the System switch plus a Theme dropdown that was greyed out whenever the switch was on. Uses the existing settings (no migration); picking a variant also remembers it for System. - #457 Remove the "Block Messages" stub from Notifications; the GIF picker row only appears in builds with a GIF key. - #458 (part 1) "Export/Import Messages Data" -> "Export/Import encryption keys", with a sentence on when you need it. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5 --- e2e/security-nudge.spec.ts | 2 +- src/app/features/room/thread/ThreadPanel.tsx | 2 +- src/app/features/settings/about/About.tsx | 2 +- .../features/settings/account/ContactInfo.tsx | 4 +- .../settings/account/IgnoredUserList.tsx | 6 +- .../settings/account/OidcManageAccount.tsx | 2 +- .../settings/developer-tools/DevelopTools.tsx | 4 +- .../settings/developer/CryptoDiagnostics.tsx | 6 +- src/app/features/settings/devices/Devices.tsx | 4 +- .../features/settings/devices/LocalBackup.tsx | 10 +- .../settings/devices/OtherDevices.tsx | 2 +- .../settings/emojis-stickers/GlobalPacks.tsx | 4 +- .../settings/emojis-stickers/UserPack.tsx | 2 +- src/app/features/settings/general/General.tsx | 253 +++++++++++------- .../settings/notifications/AllMessages.tsx | 8 +- .../notifications/KeywordMessages.tsx | 4 +- .../settings/notifications/Notifications.tsx | 14 +- .../settings/notifications/PushRuleEditor.tsx | 10 +- .../notifications/SpecialMessages.tsx | 2 +- .../notifications/SystemNotification.tsx | 14 +- src/app/pages/client/ClientNonUIFeatures.tsx | 4 +- 21 files changed, 199 insertions(+), 160 deletions(-) diff --git a/e2e/security-nudge.spec.ts b/e2e/security-nudge.spec.ts index e664eb46b..d90d05d3c 100644 --- a/e2e/security-nudge.spec.ts +++ b/e2e/security-nudge.spec.ts @@ -83,7 +83,7 @@ test.describe('security nudge (#110, #123)', () => { const nudge = strip(page); await expect(nudge).toContainText("Your encryption keys aren't backed up"); await nudge.getByRole('button', { name: 'Set up' }).click(); - await expect(page.getByText('Device Verification').first()).toBeVisible(); + await expect(page.getByText('Device verification').first()).toBeVisible(); }); test('a dismissed announcement no longer hides the nudge (#307)', async ({ page }) => { diff --git a/src/app/features/room/thread/ThreadPanel.tsx b/src/app/features/room/thread/ThreadPanel.tsx index 97e30de66..28d2bd4a1 100644 --- a/src/app/features/room/thread/ThreadPanel.tsx +++ b/src/app/features/room/thread/ThreadPanel.tsx @@ -128,7 +128,7 @@ export function ThreadPanel({ room, threadId, requestClose }: ThreadPanelProps) const editor = useEditor(); const thread = useThreadInstance(room, threadId); const [privateReadReceipts] = useSetting(settingsAtom, 'privateReadReceipts'); - // "Hide Typing & Read Receipts" must also make thread receipts private (matches markAsRead). + // "Hide typing and read receipts" must also make thread receipts private (matches markAsRead). const [hideActivity] = useSetting(settingsAtom, 'hideActivity'); const fileDropContainerRef = useRef(null) as React.RefObject; diff --git a/src/app/features/settings/about/About.tsx b/src/app/features/settings/about/About.tsx index f3535d83e..2db7e97be 100644 --- a/src/app/features/settings/about/About.tsx +++ b/src/app/features/settings/about/About.tsx @@ -205,7 +205,7 @@ export function About({ requestClose }: AboutProps) { gap="400" > - Contact Information + Contact information - + {emailIds?.map((email) => ( diff --git a/src/app/features/settings/account/IgnoredUserList.tsx b/src/app/features/settings/account/IgnoredUserList.tsx index 8b52faa3f..1b5c147d2 100644 --- a/src/app/features/settings/account/IgnoredUserList.tsx +++ b/src/app/features/settings/account/IgnoredUserList.tsx @@ -136,7 +136,7 @@ export function IgnoredUserList() { return ( - Blocked Users + Blocked users diff --git a/src/app/features/settings/account/OidcManageAccount.tsx b/src/app/features/settings/account/OidcManageAccount.tsx index 46ef66e7a..07d0bbd75 100644 --- a/src/app/features/settings/account/OidcManageAccount.tsx +++ b/src/app/features/settings/account/OidcManageAccount.tsx @@ -31,7 +31,7 @@ export function OidcManageAccount() { return ( - Account Management + Account management - Crypto Diagnostics + Crypto diagnostics 0 ? 'Critical' : 'Secondary'} fill="Solid" radii="Pill"> diff --git a/src/app/features/settings/devices/Devices.tsx b/src/app/features/settings/devices/Devices.tsx index 1f8fc3d37..1fd525fc8 100644 --- a/src/app/features/settings/devices/Devices.tsx +++ b/src/app/features/settings/devices/Devices.tsx @@ -93,8 +93,8 @@ export function Devices({ requestClose }: DevicesProps) { gap="400" > diff --git a/src/app/features/settings/devices/LocalBackup.tsx b/src/app/features/settings/devices/LocalBackup.tsx index bf26445fd..14bd48930 100644 --- a/src/app/features/settings/devices/LocalBackup.tsx +++ b/src/app/features/settings/devices/LocalBackup.tsx @@ -130,8 +130,8 @@ function ExportKeysTile() { return ( <>