From 248e403977755bb91c0634fd24bd7580f8c9bc0a Mon Sep 17 00:00:00 2001 From: Bohdan Triapitsyn Date: Sat, 25 Jul 2026 11:21:21 +0300 Subject: [PATCH] feat: accept wide chat layout setting in updates Sanitizes wideChatLayoutEnabled when it is a boolean Rejects non-boolean values for the setting Covers the new behavior with tests --- 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 a693c6e8..c6882388 100644 --- a/packages/web/server/lib/opencode/settings-helpers.js +++ b/packages/web/server/lib/opencode/settings-helpers.js @@ -558,6 +558,9 @@ export const createSettingsHelpers = (dependencies) => { if (typeof candidate.expandedEditorToolbar === 'boolean') { result.expandedEditorToolbar = candidate.expandedEditorToolbar; } + if (typeof candidate.wideChatLayoutEnabled === 'boolean') { + result.wideChatLayoutEnabled = candidate.wideChatLayoutEnabled; + } if (typeof candidate.showSplitAssistantMessageActions === 'boolean') { result.showSplitAssistantMessageActions = candidate.showSplitAssistantMessageActions; } diff --git a/packages/web/server/lib/opencode/settings-helpers.test.js b/packages/web/server/lib/opencode/settings-helpers.test.js index edb5afca..accc81ee 100644 --- a/packages/web/server/lib/opencode/settings-helpers.test.js +++ b/packages/web/server/lib/opencode/settings-helpers.test.js @@ -66,6 +66,14 @@ describe('settings helpers', () => { expect(helpers.sanitizeSettingsUpdate({ draftStartersVisible: 'false' })).toEqual({}); }); + it('accepts only booleans for wide chat layout', () => { + const helpers = createTestHelpers(); + + expect(helpers.sanitizeSettingsUpdate({ wideChatLayoutEnabled: true })).toEqual({ wideChatLayoutEnabled: true }); + expect(helpers.sanitizeSettingsUpdate({ wideChatLayoutEnabled: false })).toEqual({ wideChatLayoutEnabled: false }); + expect(helpers.sanitizeSettingsUpdate({ wideChatLayoutEnabled: 'true' })).toEqual({}); + }); + it('accepts messageStreamTransport as a persisted shared setting', () => { const helpers = createTestHelpers();