diff --git a/apps/api/src/api/user_config.py b/apps/api/src/api/user_config.py index af2da07..917bfa9 100644 --- a/apps/api/src/api/user_config.py +++ b/apps/api/src/api/user_config.py @@ -112,7 +112,8 @@ async def update_user_config( # Merge updates update_data = data.model_dump(exclude_unset=True) logger.info("Updating user config for user %s: %s", user_id, update_data) - config.config.update(update_data) + # SQLAlchemy JSON doesn't track dict mutations, so we replace the whole dict + config.config = {**config.config, **update_data} await session.commit() await session.refresh(config) diff --git a/apps/web/src/api/settings.ts b/apps/web/src/api/settings.ts index 4114854..af99e89 100644 --- a/apps/web/src/api/settings.ts +++ b/apps/web/src/api/settings.ts @@ -9,11 +9,11 @@ export interface UserConfig { } export interface UserConfigUpdate { - default_editor?: string; - theme?: string; - git_user_name?: string; - git_user_email?: string; - last_session_id?: string; + default_editor?: string | null; + theme?: string | null; + git_user_name?: string | null; + git_user_email?: string | null; + last_session_id?: string | null; } export const getUserConfig = async (): Promise => { diff --git a/apps/web/src/pages/settings.tsx b/apps/web/src/pages/settings.tsx index d8478f7..3d28e4b 100644 --- a/apps/web/src/pages/settings.tsx +++ b/apps/web/src/pages/settings.tsx @@ -46,9 +46,9 @@ export const SettingsPage = () => { try { const update: UserConfigUpdate = { theme: config.theme, - default_editor: config.default_editor ?? undefined, - git_user_name: config.git_user_name ?? undefined, - git_user_email: config.git_user_email ?? undefined, + default_editor: config.default_editor, + git_user_name: config.git_user_name, + git_user_email: config.git_user_email, }; console.log("Sending update:", update); const updated = await updateUserConfig(update);