From 483ac6875ef47e9911aa14108b98a7511ca812e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pascal=20Andr=C3=A9?= Date: Sun, 26 Jul 2026 17:53:19 +0200 Subject: [PATCH] fix(settings): persist collapsed message preference --- packages/web/server/lib/opencode/settings-helpers.js | 3 +++ packages/web/server/lib/opencode/settings-helpers.test.js | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/packages/web/server/lib/opencode/settings-helpers.js b/packages/web/server/lib/opencode/settings-helpers.js index b95e1145..82aefd82 100644 --- a/packages/web/server/lib/opencode/settings-helpers.js +++ b/packages/web/server/lib/opencode/settings-helpers.js @@ -552,6 +552,9 @@ export const createSettingsHelpers = (dependencies) => { result.userMessageRenderingMode = mode; } } + if (typeof candidate.collapsibleUserMessages === 'boolean') { + result.collapsibleUserMessages = candidate.collapsibleUserMessages; + } if (typeof candidate.stickyUserHeader === 'boolean') { result.stickyUserHeader = candidate.stickyUserHeader; } diff --git a/packages/web/server/lib/opencode/settings-helpers.test.js b/packages/web/server/lib/opencode/settings-helpers.test.js index 20387b55..9ac08512 100644 --- a/packages/web/server/lib/opencode/settings-helpers.test.js +++ b/packages/web/server/lib/opencode/settings-helpers.test.js @@ -74,6 +74,14 @@ describe('settings helpers', () => { expect(helpers.sanitizeSettingsUpdate({ wideChatLayoutEnabled: 'true' })).toEqual({}); }); + it('accepts only booleans for collapsible user messages', () => { + const helpers = createTestHelpers(); + + expect(helpers.sanitizeSettingsUpdate({ collapsibleUserMessages: true })).toEqual({ collapsibleUserMessages: true }); + expect(helpers.sanitizeSettingsUpdate({ collapsibleUserMessages: false })).toEqual({ collapsibleUserMessages: false }); + expect(helpers.sanitizeSettingsUpdate({ collapsibleUserMessages: 'true' })).toEqual({}); + }); + it('accepts messageStreamTransport as a persisted shared setting', () => { const helpers = createTestHelpers();