From fa55698661a6a4de491be524a982d88b9a40c9c3 Mon Sep 17 00:00:00 2001 From: Evie Gauthier Date: Mon, 18 May 2026 19:33:17 -0400 Subject: [PATCH 1/6] fix(settings-sync): exclude enterForNewline from cross-device sync The setting is disabled on mobile by default and reflects device-specific input behaviour. Syncing it across devices would cause a desktop preference to override the mobile-appropriate default. --- src/app/utils/settingsSync.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/app/utils/settingsSync.ts b/src/app/utils/settingsSync.ts index 83c8ff11f..ee2f933cf 100644 --- a/src/app/utils/settingsSync.ts +++ b/src/app/utils/settingsSync.ts @@ -16,6 +16,8 @@ export const NON_SYNCABLE_KEYS = new Set([ 'memberSortFilterIndex', // Developer / diagnostic 'developerTools', + // Input behaviour — mobile disables enter-for-newline; syncing would override that + 'enterForNewline', // Sync toggle itself must never be uploaded (it's device-local) 'settingsSyncEnabled', ]); From 84dd26a7da2050599bb3da0b8b4b8b4183efd164 Mon Sep 17 00:00:00 2001 From: Evie Gauthier Date: Tue, 19 May 2026 14:25:19 -0400 Subject: [PATCH 2/6] chore: add changeset --- .changeset/settings-sync.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/settings-sync.md diff --git a/.changeset/settings-sync.md b/.changeset/settings-sync.md new file mode 100644 index 000000000..5b5b1cf49 --- /dev/null +++ b/.changeset/settings-sync.md @@ -0,0 +1,5 @@ +--- +default: patch +--- + +Exclude enterForNewline from cross-device settings sync. From 2e9ec3115fc4217b14cc91064fe1e5c21f15b10c Mon Sep 17 00:00:00 2001 From: Evie Gauthier Date: Tue, 19 May 2026 19:57:53 -0400 Subject: [PATCH 3/6] fix(settings-sync): clarify enterForNewline comment; add to NON_SYNCABLE_KEYS test - Reword comment to clarify it's the toggle that mobile disables, not that mobile always uses newline behavior - Add 'enterForNewline' to the expected-set assertion in settingsSync.test.ts --- src/app/utils/settingsSync.test.ts | 1 + src/app/utils/settingsSync.ts | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/app/utils/settingsSync.test.ts b/src/app/utils/settingsSync.test.ts index 608a94343..b80a589bc 100644 --- a/src/app/utils/settingsSync.test.ts +++ b/src/app/utils/settingsSync.test.ts @@ -32,6 +32,7 @@ describe('NON_SYNCABLE_KEYS', () => { 'isWidgetDrawer', 'memberSortFilterIndex', 'developerTools', + 'enterForNewline', 'settingsSyncEnabled', ] as const; diff --git a/src/app/utils/settingsSync.ts b/src/app/utils/settingsSync.ts index ee2f933cf..95d4945e7 100644 --- a/src/app/utils/settingsSync.ts +++ b/src/app/utils/settingsSync.ts @@ -16,7 +16,8 @@ export const NON_SYNCABLE_KEYS = new Set([ 'memberSortFilterIndex', // Developer / diagnostic 'developerTools', - // Input behaviour — mobile disables enter-for-newline; syncing would override that + // Input behaviour — on mobile the Enter-for-newline toggle is disabled, so syncing a + // desktop value would inadvertently re-enable Enter-to-send on the user's phone 'enterForNewline', // Sync toggle itself must never be uploaded (it's device-local) 'settingsSyncEnabled', From 8b8dbbb6f0f238440ac7f5a10425348c7ebb9528 Mon Sep 17 00:00:00 2001 From: Evie Gauthier Date: Wed, 20 May 2026 08:33:07 -0400 Subject: [PATCH 4/6] fix(settings-sync): exclude searchIndexMessageLimit from cross-device sync --- src/app/utils/settingsSync.test.ts | 1 + src/app/utils/settingsSync.ts | 3 +++ 2 files changed, 4 insertions(+) diff --git a/src/app/utils/settingsSync.test.ts b/src/app/utils/settingsSync.test.ts index b80a589bc..e71f08938 100644 --- a/src/app/utils/settingsSync.test.ts +++ b/src/app/utils/settingsSync.test.ts @@ -34,6 +34,7 @@ describe('NON_SYNCABLE_KEYS', () => { 'developerTools', 'enterForNewline', 'settingsSyncEnabled', + 'searchIndexMessageLimit', ] as const; expected.forEach((key) => { diff --git a/src/app/utils/settingsSync.ts b/src/app/utils/settingsSync.ts index 95d4945e7..d11321c18 100644 --- a/src/app/utils/settingsSync.ts +++ b/src/app/utils/settingsSync.ts @@ -21,6 +21,9 @@ export const NON_SYNCABLE_KEYS = new Set([ 'enterForNewline', // Sync toggle itself must never be uploaded (it's device-local) 'settingsSyncEnabled', + // Search index capacity varies by device (mobile is capped at 50 MB, desktop at 300 MB), + // so each device should keep its own limit rather than inheriting a desktop value. + 'searchIndexMessageLimit', ]); export const SETTINGS_SYNC_VERSION = 1; From 5cff54c4c9d679f664f3073ac1d9f96c70f1a81d Mon Sep 17 00:00:00 2001 From: Evie Gauthier Date: Wed, 20 May 2026 12:59:27 -0400 Subject: [PATCH 5/6] fix(settings-sync): move searchIndexMessageLimit exclusion to idb-search branch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The setting does not exist in the Settings type on this branch — it is introduced in feat/encrypted-search-idb. Excluding a non-existent key causes a TS2769 typecheck failure. The exclusion will be added to that branch alongside the setting definition. --- src/app/utils/settingsSync.test.ts | 1 - src/app/utils/settingsSync.ts | 3 --- 2 files changed, 4 deletions(-) diff --git a/src/app/utils/settingsSync.test.ts b/src/app/utils/settingsSync.test.ts index e71f08938..b80a589bc 100644 --- a/src/app/utils/settingsSync.test.ts +++ b/src/app/utils/settingsSync.test.ts @@ -34,7 +34,6 @@ describe('NON_SYNCABLE_KEYS', () => { 'developerTools', 'enterForNewline', 'settingsSyncEnabled', - 'searchIndexMessageLimit', ] as const; expected.forEach((key) => { diff --git a/src/app/utils/settingsSync.ts b/src/app/utils/settingsSync.ts index d11321c18..95d4945e7 100644 --- a/src/app/utils/settingsSync.ts +++ b/src/app/utils/settingsSync.ts @@ -21,9 +21,6 @@ export const NON_SYNCABLE_KEYS = new Set([ 'enterForNewline', // Sync toggle itself must never be uploaded (it's device-local) 'settingsSyncEnabled', - // Search index capacity varies by device (mobile is capped at 50 MB, desktop at 300 MB), - // so each device should keep its own limit rather than inheriting a desktop value. - 'searchIndexMessageLimit', ]); export const SETTINGS_SYNC_VERSION = 1; From fd7673380cf74b3fef0e048c3a9625892025155c Mon Sep 17 00:00:00 2001 From: Evie Gauthier Date: Wed, 20 May 2026 13:25:22 -0400 Subject: [PATCH 6/6] ci: retrigger typecheck