diff --git a/app/src/lib/i18n/chunks/de-5.ts b/app/src/lib/i18n/chunks/de-5.ts index 79f041cc19..c8a26af5f3 100644 --- a/app/src/lib/i18n/chunks/de-5.ts +++ b/app/src/lib/i18n/chunks/de-5.ts @@ -523,28 +523,6 @@ const de5: TranslationMap = { 'settings.mascot.colorYellow': 'Gelb', 'settings.mascot.libraryUnavailable': 'OpenHuman Bibliothek nicht verfügbar', 'settings.mascot.title': 'OpenHuman', - 'settings.developerMenu.mcpServer.title': 'MCP-Server', - 'settings.developerMenu.mcpServer.desc': - 'Externe MCP-Clients zur Verbindung mit OpenHuman konfigurieren', - 'settings.mcpServer.title': 'MCP-Server', - 'settings.mcpServer.toolsSectionTitle': 'Verfügbare Tools', - 'settings.mcpServer.toolsSectionDesc': - 'Tools, die über den MCP-Stdio-Server bereitgestellt werden, wenn openhuman-core mcp ausgeführt wird', - 'settings.mcpServer.configSectionTitle': 'Client-Konfiguration', - 'settings.mcpServer.configSectionDesc': - 'Wählen Sie Ihren MCP-Client aus, um den passenden Konfigurations-Schnipsel zu erzeugen', - 'settings.mcpServer.copySnippet': 'In Zwischenablage kopieren', - 'settings.mcpServer.copied': 'Kopiert!', - 'settings.mcpServer.openConfigFile': 'Konfigurationsdatei öffnen', - 'settings.mcpServer.binaryPathNotFound': - 'OpenHuman-Binary nicht gefunden. Wenn Sie aus dem Quellcode arbeiten, bauen Sie mit: cargo build --bin openhuman-core', - 'settings.mcpServer.openConfigError': 'Konfigurationsdatei konnte nicht geöffnet werden', - 'settings.mcpServer.clientClaudeDesktop': 'Claude Desktop', - 'settings.mcpServer.clientCursor': 'Cursor', - 'settings.mcpServer.clientCodex': 'Codex', - 'settings.mcpServer.clientZed': 'Zed', - 'settings.mcpServer.configFilePath': 'Konfigurationsdatei', - 'settings.mcpServer.clientSelectorAriaLabel': 'MCP-Client-Auswahl', }; export default de5; diff --git a/app/src/utils/__tests__/configPersistence.test.ts b/app/src/utils/__tests__/configPersistence.test.ts index 7354e9a12b..e93ef8480b 100644 --- a/app/src/utils/__tests__/configPersistence.test.ts +++ b/app/src/utils/__tests__/configPersistence.test.ts @@ -457,6 +457,21 @@ describe('configPersistence', () => { expect(getStoredCoreMode()).toBeNull(); }); + it('logs the mode string directly, not an object wrapper', () => { + const spy = vi.spyOn(console, 'debug').mockImplementation(() => {}); + try { + storeCoreMode('cloud'); + const calls = spy.mock.calls.flat(); + // Must NOT log an object like { mode } — that renders as [object Object] + const hasObjectArg = calls.some(arg => typeof arg === 'object' && arg !== null); + expect(hasObjectArg).toBe(false); + const modeArg = calls.find(arg => typeof arg === 'string' && arg === 'cloud'); + expect(modeArg).toBe('cloud'); + } finally { + spy.mockRestore(); + } + }); + it('falls back to the E2E default local mode when no marker has been written', async () => { vi.resetModules(); vi.doMock('../config', () => ({ diff --git a/app/src/utils/configPersistence.ts b/app/src/utils/configPersistence.ts index 3023cf0079..f3737b530c 100644 --- a/app/src/utils/configPersistence.ts +++ b/app/src/utils/configPersistence.ts @@ -292,7 +292,7 @@ export function getStoredCoreMode(): 'local' | 'cloud' | null { export function storeCoreMode(mode: 'local' | 'cloud'): void { try { localStorage.setItem(CORE_MODE_STORAGE_KEY, mode); - console.debug('[configPersistence] Stored core mode:', { mode }); + console.debug('[configPersistence] Stored core mode:', mode); } catch { console.warn('[configPersistence] Unable to store core mode in localStorage'); }