diff --git a/__tests__/lib/user-settings.test.ts b/__tests__/lib/user-settings.test.ts index 019cc33..c7cd5d9 100644 --- a/__tests__/lib/user-settings.test.ts +++ b/__tests__/lib/user-settings.test.ts @@ -109,7 +109,17 @@ describe('UserSettingsSchema', () => { jobsColumns: { 'queue:active': { kinds: ['TASK_IMPLEMENTATION'], statuses: [] } }, }, devTools: { debugMode: true }, + layout: { + splitPanePositions: { 'backlog-pid': [25, 35, 40] }, + activeSprints: { 'product-1': 'sprint-1' }, + }, }) expect(result.success).toBe(true) }) + + it('accepts layout-only settings', () => { + expect(UserSettingsSchema.safeParse({ + layout: { splitPanePositions: { x: [50, 50] }, activeSprints: { p: 's' } }, + }).success).toBe(true) + }) }) diff --git a/lib/user-settings.ts b/lib/user-settings.ts index 86621fd..597a2c4 100644 --- a/lib/user-settings.ts +++ b/lib/user-settings.ts @@ -43,9 +43,15 @@ const DevToolsPrefs = z.object({ debugMode: z.boolean().optional(), }).strict() +const LayoutPrefs = z.object({ + splitPanePositions: z.record(z.string(), z.array(z.number())).optional(), + activeSprints: z.record(z.string(), z.string()).optional(), +}).strict() + export const UserSettingsSchema = z.object({ views: ViewsPrefs.optional(), devTools: DevToolsPrefs.optional(), + layout: LayoutPrefs.optional(), }).strict() export type UserSettings = z.infer