From 315df8e10e5113d3cd0e0b83561fe3afdc0b14a0 Mon Sep 17 00:00:00 2001 From: "[._.]/ Adam Eivy" Date: Sat, 12 Sep 2026 02:26:08 +0000 Subject: [PATCH 1/2] fix: surface save-backed General settings first (#6948) --- client/src/components/settings/GeneralTab.jsx | 10 +++++----- client/src/components/settings/GeneralTab.test.jsx | 7 +++++++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/client/src/components/settings/GeneralTab.jsx b/client/src/components/settings/GeneralTab.jsx index 127a324458..4cc23af49a 100644 --- a/client/src/components/settings/GeneralTab.jsx +++ b/client/src/components/settings/GeneralTab.jsx @@ -165,11 +165,6 @@ export function GeneralTab() { label="Discard unsaved General settings changes" onDiscard={discardAndExit} /> -
-

Interface Theme

- -
-

Timezone

@@ -288,6 +283,11 @@ export function GeneralTab() { )}

+ +
+

Interface Theme

+ +
); } diff --git a/client/src/components/settings/GeneralTab.test.jsx b/client/src/components/settings/GeneralTab.test.jsx index 5560c46625..48c6219bdd 100644 --- a/client/src/components/settings/GeneralTab.test.jsx +++ b/client/src/components/settings/GeneralTab.test.jsx @@ -61,6 +61,13 @@ beforeEach(() => { }); describe('GeneralTab unsaved changes', () => { + it('places save-backed settings before the instant theme picker', async () => { + await renderTab(); + + const headings = screen.getAllByRole('heading').map(heading => heading.textContent); + expect(headings.indexOf('Timezone')).toBeLessThan(headings.indexOf('Interface Theme')); + }); + it('guards edits made against the displayed fallback after loading fails', async () => { getSettings.mockRejectedValueOnce(new Error('settings offline')); const router = await renderTab({ expectedTimezone: null }); From 7a6886de427de2419f2f25e96f14de852acd9fdf Mon Sep 17 00:00:00 2001 From: "[._.]/ Adam Eivy" Date: Sat, 12 Sep 2026 02:29:49 +0000 Subject: [PATCH 2/2] test: require General settings headings in order assertion (#6948) --- client/src/components/settings/GeneralTab.test.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/client/src/components/settings/GeneralTab.test.jsx b/client/src/components/settings/GeneralTab.test.jsx index 48c6219bdd..0c515dcdee 100644 --- a/client/src/components/settings/GeneralTab.test.jsx +++ b/client/src/components/settings/GeneralTab.test.jsx @@ -65,6 +65,7 @@ describe('GeneralTab unsaved changes', () => { await renderTab(); const headings = screen.getAllByRole('heading').map(heading => heading.textContent); + expect(headings).toEqual(expect.arrayContaining(['Timezone', 'Interface Theme'])); expect(headings.indexOf('Timezone')).toBeLessThan(headings.indexOf('Interface Theme')); });