Skip to content

Commit 51cd5ef

Browse files
committed
bug fix: fixed table rendering in mcp servers list
1 parent fb8962e commit 51cd5ef

File tree

11 files changed

+2136
-41
lines changed

11 files changed

+2136
-41
lines changed

BIBBLE_GLAMOUR_ROADMAP.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ src/ui/
198198
╰─────────────────────────────────────────╯
199199
200200
🔥 Model: Claude 3.7 Sonnet ⚡ MCP: 5 servers connected
201-
💫 Version: 1.3.9 🚀 Ready for magic!
201+
💫 Version: 1.3.10 🚀 Ready for magic!
202202
```
203203

204204
### Chat Interface

OVERVIEW.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Bibble is a sophisticated command-line interface (CLI) chatbot application that integrates with multiple language model providers and supports the Model Context Protocol (MCP) for enhanced functionality through external tools. Built with TypeScript, it provides a robust terminal-based AI assistant experience with comprehensive tool integration.
44

5-
**Version**: 1.3.9
5+
**Version**: 1.3.10
66
**Author**: Pink Pixel
77
**NPM Package**: @pinkpixel/bibble
88
*Last updated: August 28, 2025*

src/commands/config.ts

Lines changed: 55 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -292,14 +292,26 @@ async function manageMcpServers(): Promise<void> {
292292
],
293293
}]);
294294

295-
const actions = {
296-
list: () => listMcpServers(servers),
297-
add: () => addMcpServer(),
298-
remove: () => removeMcpServer(servers),
299-
edit: () => editMcpServer(servers),
300-
};
301-
302-
if (actions[action]) await actions[action]();
295+
// Handle actions properly with explicit cancel check
296+
switch (action) {
297+
case "list":
298+
listMcpServers(servers);
299+
break;
300+
case "add":
301+
await addMcpServer();
302+
break;
303+
case "remove":
304+
await removeMcpServer(servers);
305+
break;
306+
case "edit":
307+
await editMcpServer(servers);
308+
break;
309+
case "cancel":
310+
console.log(terminal.info("Operation cancelled."));
311+
break;
312+
default:
313+
console.log(terminal.warning(`Unknown action: ${action}`));
314+
}
303315
}
304316

305317
function listMcpServers(servers: any[]): void {
@@ -308,30 +320,44 @@ function listMcpServers(servers: any[]): void {
308320
return;
309321
}
310322

311-
// Transform servers for our beautiful table
312-
const mcpServerData = servers.map(server => ({
313-
name: server.name,
314-
command: `${server.command} ${server.args.join(" ")}`,
315-
environment: server.env ? Object.keys(server.env).join(", ") || "None" : "None",
316-
status: server.enabled ? "enabled" : "disabled"
317-
}));
318-
319-
// Create a beautiful table using our table system
320-
const table = new BibbleTable({
321-
head: ['Server', 'Command', 'Environment', 'Status'],
322-
style: 'fancy'
323+
// Transform servers for our beautiful table with defensive programming
324+
const mcpServerData = servers.map(server => {
325+
const args = Array.isArray(server.args) ? server.args : [];
326+
return {
327+
name: server.name || 'Unknown',
328+
command: `${server.command || 'Unknown'} ${args.join(" ")}`,
329+
environment: server.env ? Object.keys(server.env).join(", ") || "None" : "None",
330+
status: server.enabled ? "enabled" : "disabled"
331+
};
323332
});
324333

325-
mcpServerData.forEach(server => {
326-
table.addRow([
327-
server.name,
328-
server.command,
329-
server.environment,
330-
server.status
331-
]);
332-
});
334+
try {
335+
// Create table with explicit column widths like the config table does
336+
const table = new BibbleTable({
337+
head: ['Server', 'Command', 'Environment', 'Status'],
338+
style: 'fancy',
339+
colWidths: [20, 50, 15, 10] // Explicit column widths
340+
});
333341

334-
console.log(`\n${t.h2('MCP Servers')} ${brandSymbols.lightning}\n${table.toString()}`);
342+
mcpServerData.forEach(server => {
343+
table.addRow([
344+
server.name,
345+
server.command,
346+
server.environment,
347+
server.status
348+
]);
349+
});
350+
351+
console.log(`\n${t.h2('MCP Servers')} ${brandSymbols.lightning}\n${table.toString()}`);
352+
353+
} catch (tableError) {
354+
// Fallback to simple list if anything goes wrong
355+
console.log('Table rendering failed, using simple list');
356+
console.log(`\n${t.h2('MCP Servers')} ${brandSymbols.lightning}`);
357+
mcpServerData.forEach((server, i) => {
358+
console.log(`${i + 1}. ${t.cyan(server.name)} - ${server.command} (${server.status})`);
359+
});
360+
}
335361
}
336362

337363
/**

0 commit comments

Comments
 (0)