From 9cf83ed1855bbe1bb4584f0bbcea253459c7e5ac Mon Sep 17 00:00:00 2001 From: Bill Date: Sun, 26 Oct 2025 08:23:38 -0400 Subject: [PATCH] refactor: move server status to top and simplify setting descriptions --- src/settings.ts | 92 ++++++++++++++++++++----------------------------- 1 file changed, 38 insertions(+), 54 deletions(-) diff --git a/src/settings.ts b/src/settings.ts index b16497e..7d3a3bb 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -18,10 +18,46 @@ export class MCPServerSettingTab extends PluginSettingTab { containerEl.createEl('h2', {text: 'MCP Server Settings'}); + // Server status + containerEl.createEl('h3', {text: 'Server Status'}); + + const statusEl = containerEl.createEl('div', {cls: 'mcp-server-status'}); + const isRunning = this.plugin.mcpServer?.isRunning() ?? false; + + statusEl.createEl('p', { + text: isRunning + ? `✅ Running on port ${this.plugin.settings.port}` + : '⭕ Stopped' + }); + + // Control buttons + const buttonContainer = containerEl.createEl('div', {cls: 'mcp-button-container'}); + + if (isRunning) { + buttonContainer.createEl('button', {text: 'Stop Server'}) + .addEventListener('click', async () => { + await this.plugin.stopServer(); + this.display(); + }); + + buttonContainer.createEl('button', {text: 'Restart Server'}) + .addEventListener('click', async () => { + await this.plugin.stopServer(); + await this.plugin.startServer(); + this.display(); + }); + } else { + buttonContainer.createEl('button', {text: 'Start Server'}) + .addEventListener('click', async () => { + await this.plugin.startServer(); + this.display(); + }); + } + // Auto-start setting new Setting(containerEl) .setName('Auto-start server') - .setDesc('Automatically start the MCP server when Obsidian launches') + .setDesc('Start server when Obsidian launches') .addToggle(toggle => toggle .setValue(this.plugin.settings.autoStart) .onChange(async (value) => { @@ -32,7 +68,7 @@ export class MCPServerSettingTab extends PluginSettingTab { // Port setting new Setting(containerEl) .setName('Port') - .setDesc('Port number for the HTTP server (requires restart)') + .setDesc('Server port (restart required)') .addText(text => text .setPlaceholder('3000') .setValue(String(this.plugin.settings.port)) @@ -145,58 +181,6 @@ export class MCPServerSettingTab extends PluginSettingTab { configDisplay.style.cursor = 'text'; configDisplay.textContent = JSON.stringify(mcpConfig, null, 2); - // Server status - containerEl.createEl('h3', {text: 'Server Status'}); - - const statusEl = containerEl.createEl('div', {cls: 'mcp-server-status'}); - const isRunning = this.plugin.mcpServer?.isRunning() ?? false; - - statusEl.createEl('p', { - text: isRunning - ? `✅ Server is running on http://127.0.0.1:${this.plugin.settings.port}/mcp` - : '⭕ Server is stopped' - }); - - // Control buttons - const buttonContainer = containerEl.createEl('div', {cls: 'mcp-button-container'}); - - if (isRunning) { - buttonContainer.createEl('button', {text: 'Stop Server'}) - .addEventListener('click', async () => { - await this.plugin.stopServer(); - this.display(); - }); - - buttonContainer.createEl('button', {text: 'Restart Server'}) - .addEventListener('click', async () => { - await this.plugin.stopServer(); - await this.plugin.startServer(); - this.display(); - }); - } else { - buttonContainer.createEl('button', {text: 'Start Server'}) - .addEventListener('click', async () => { - await this.plugin.startServer(); - this.display(); - }); - } - - // Connection info - if (isRunning) { - containerEl.createEl('h3', {text: 'Connection Information'}); - - const infoEl = containerEl.createEl('div', {cls: 'mcp-connection-info'}); - infoEl.createEl('p', {text: 'MCP Endpoint:'}); - const mcpEndpoint = infoEl.createEl('code', {text: `http://127.0.0.1:${this.plugin.settings.port}/mcp`}); - mcpEndpoint.style.userSelect = 'all'; - mcpEndpoint.style.cursor = 'text'; - - infoEl.createEl('p', {text: 'Health Check:'}); - const healthEndpoint = infoEl.createEl('code', {text: `http://127.0.0.1:${this.plugin.settings.port}/health`}); - healthEndpoint.style.userSelect = 'all'; - healthEndpoint.style.cursor = 'text'; - } - // Notification Settings containerEl.createEl('h3', {text: 'UI Notifications'});