From 329e42984105accbe741f2e8c28aac7e9dd65a89 Mon Sep 17 00:00:00 2001 From: webdevcody Date: Tue, 6 Jan 2026 21:34:42 -0500 Subject: [PATCH] fix: downgrade @modelcontextprotocol/sdk to version 1.25.0 in package.json --- .../src/hooks/use-project-settings-loader.ts | 42 +++++++------------ .../board-background-persistence.spec.ts | 18 ++++++-- package-lock.json | 7 ++-- 3 files changed, 35 insertions(+), 32 deletions(-) diff --git a/apps/ui/src/hooks/use-project-settings-loader.ts b/apps/ui/src/hooks/use-project-settings-loader.ts index a677f324..e6f633e2 100644 --- a/apps/ui/src/hooks/use-project-settings-loader.ts +++ b/apps/ui/src/hooks/use-project-settings-loader.ts @@ -39,36 +39,26 @@ export function useProjectSettingsLoader() { if (result.success && result.settings?.boardBackground) { const bg = result.settings.boardBackground; + const projectPath = currentProject.path; // Update store with loaded settings (without triggering server save) - setBoardBackground(currentProject.path, bg.imagePath); + setBoardBackground(projectPath, bg.imagePath); - if (bg.cardOpacity !== undefined) { - setCardOpacity(currentProject.path, bg.cardOpacity); - } + const settingsMap = { + cardOpacity: setCardOpacity, + columnOpacity: setColumnOpacity, + columnBorderEnabled: setColumnBorderEnabled, + cardGlassmorphism: setCardGlassmorphism, + cardBorderEnabled: setCardBorderEnabled, + cardBorderOpacity: setCardBorderOpacity, + hideScrollbar: setHideScrollbar, + } as const; - if (bg.columnOpacity !== undefined) { - setColumnOpacity(currentProject.path, bg.columnOpacity); - } - - if (bg.columnBorderEnabled !== undefined) { - setColumnBorderEnabled(currentProject.path, bg.columnBorderEnabled); - } - - if (bg.cardGlassmorphism !== undefined) { - setCardGlassmorphism(currentProject.path, bg.cardGlassmorphism); - } - - if (bg.cardBorderEnabled !== undefined) { - setCardBorderEnabled(currentProject.path, bg.cardBorderEnabled); - } - - if (bg.cardBorderOpacity !== undefined) { - setCardBorderOpacity(currentProject.path, bg.cardBorderOpacity); - } - - if (bg.hideScrollbar !== undefined) { - setHideScrollbar(currentProject.path, bg.hideScrollbar); + for (const [key, setter] of Object.entries(settingsMap)) { + const value = bg[key as keyof typeof bg]; + if (value !== undefined) { + (setter as (path: string, val: typeof value) => void)(projectPath, value); + } } } } catch (error) { diff --git a/apps/ui/tests/projects/board-background-persistence.spec.ts b/apps/ui/tests/projects/board-background-persistence.spec.ts index 91382ebf..0d8ca681 100644 --- a/apps/ui/tests/projects/board-background-persistence.spec.ts +++ b/apps/ui/tests/projects/board-background-persistence.spec.ts @@ -186,7 +186,11 @@ test.describe('Board Background Persistence', () => { // CRITICAL: Wait for settings to be loaded (useProjectSettingsLoader hook) // This ensures the background settings are fetched from the server - await page.waitForTimeout(2000); + await page.waitForResponse( + (resp) => + resp.url().includes('/api/settings/project') && + resp.request().postData()?.includes(projectAPath) === true + ); // Check if background settings were applied by checking the store // We can't directly access React state, so we'll verify via DOM/CSS @@ -235,7 +239,11 @@ test.describe('Board Background Persistence', () => { ).toBeVisible({ timeout: 5000 }); // CRITICAL: Wait for settings to be loaded again - await page.waitForTimeout(2000); + await page.waitForResponse( + (resp) => + resp.url().includes('/api/settings/project') && + resp.request().postData()?.includes(projectAPath) === true + ); // Verify that the settings API was called for project A (at least twice - initial load and switch back) const projectASettingsCalls = settingsApiCalls.filter((call) => @@ -370,7 +378,11 @@ test.describe('Board Background Persistence', () => { await expect(page.locator('[data-testid="board-view"]')).toBeVisible({ timeout: 15000 }); // Wait for settings to load - await page.waitForTimeout(2000); + await page.waitForResponse( + (resp) => + resp.url().includes('/api/settings/project') && + resp.request().postData()?.includes(projectPath) === true + ); // Verify that the settings API was called for this project const projectSettingsCalls = settingsApiCalls.filter((call) => call.body.includes(projectPath)); diff --git a/package-lock.json b/package-lock.json index 98ca8545..b6c486be 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,8 @@ "devDependencies": { "husky": "9.1.7", "lint-staged": "16.2.7", - "prettier": "3.7.4" + "prettier": "3.7.4", + "vitest": "4.0.16" }, "engines": { "node": ">=22.0.0 <23.0.0" @@ -28,7 +29,7 @@ }, "apps/server": { "name": "@automaker/server", - "version": "0.7.3", + "version": "0.8.0", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@anthropic-ai/claude-agent-sdk": "0.1.76", @@ -78,7 +79,7 @@ }, "apps/ui": { "name": "@automaker/ui", - "version": "0.7.3", + "version": "0.8.0", "hasInstallScript": true, "license": "SEE LICENSE IN LICENSE", "dependencies": {