fix(ui): Sync phaseModels to server when changed

Previously, phaseModels only persisted to localStorage but the server
reads from settings.json file. Now setPhaseModel/setPhaseModels/resetPhaseModels
call syncSettingsToServer() to keep server-side settings in sync.

Also added phaseModels to the syncSettingsToServer() updates object.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Kacper
2025-12-30 14:40:20 +01:00
parent fd7c22a457
commit d6a1c08952
2 changed files with 22 additions and 8 deletions

View File

@@ -223,6 +223,7 @@ export async function syncSettingsToServer(): Promise<boolean> {
muteDoneSound: state.muteDoneSound,
enhancementModel: state.enhancementModel,
validationModel: state.validationModel,
phaseModels: state.phaseModels,
autoLoadClaudeMd: state.autoLoadClaudeMd,
keyboardShortcuts: state.keyboardShortcuts,
aiProfiles: state.aiProfiles,

View File

@@ -766,9 +766,9 @@ export interface AppActions {
setValidationModel: (model: ModelAlias) => void;
// Phase Model actions
setPhaseModel: (phase: PhaseModelKey, model: ModelAlias | CursorModelId) => void;
setPhaseModels: (models: Partial<PhaseModelConfig>) => void;
resetPhaseModels: () => void;
setPhaseModel: (phase: PhaseModelKey, model: ModelAlias | CursorModelId) => Promise<void>;
setPhaseModels: (models: Partial<PhaseModelConfig>) => Promise<void>;
resetPhaseModels: () => Promise<void>;
// Cursor CLI Settings actions
setEnabledCursorModels: (models: CursorModelId[]) => void;
@@ -1590,21 +1590,34 @@ export const useAppStore = create<AppState & AppActions>()(
setValidationModel: (model) => set({ validationModel: model }),
// Phase Model actions
setPhaseModel: (phase, model) =>
setPhaseModel: async (phase, model) => {
set((state) => ({
phaseModels: {
...state.phaseModels,
[phase]: model,
},
})),
setPhaseModels: (models) =>
}));
// Sync to server settings file
const { syncSettingsToServer } = await import('@/hooks/use-settings-migration');
await syncSettingsToServer();
},
setPhaseModels: async (models) => {
set((state) => ({
phaseModels: {
...state.phaseModels,
...models,
},
})),
resetPhaseModels: () => set({ phaseModels: DEFAULT_PHASE_MODELS }),
}));
// Sync to server settings file
const { syncSettingsToServer } = await import('@/hooks/use-settings-migration');
await syncSettingsToServer();
},
resetPhaseModels: async () => {
set({ phaseModels: DEFAULT_PHASE_MODELS });
// Sync to server settings file
const { syncSettingsToServer } = await import('@/hooks/use-settings-migration');
await syncSettingsToServer();
},
// Cursor CLI Settings actions
setEnabledCursorModels: (models) => set({ enabledCursorModels: models }),