diff --git a/ccw/src/commands/cli.ts b/ccw/src/commands/cli.ts index 01769b5f..3210baea 100644 --- a/ccw/src/commands/cli.ts +++ b/ccw/src/commands/cli.ts @@ -50,7 +50,10 @@ function notifyDashboard(data: Record): void { } }); - // Fire and forget - log errors only in debug mode + // Fire and forget - don't block process exit + req.on('socket', (socket) => { + socket.unref(); // Allow process to exit even if socket is open + }); req.on('error', (err) => { if (process.env.DEBUG) console.error('[Dashboard] CLI notification failed:', err.message); }); @@ -505,6 +508,9 @@ async function execAction(positionalPrompt: string | undefined, options: CliExec duration_ms: result.execution.duration_ms, turn_count: result.conversation.turn_count }); + + // Ensure clean exit after successful execution + process.exit(0); } else { console.log(chalk.red(` ✗ Failed (${result.execution.status})`)); console.log(chalk.gray(` ID: ${result.execution.id}`)); diff --git a/ccw/src/templates/dashboard-css/01-base.css b/ccw/src/templates/dashboard-css/01-base.css index 276feb99..04c2ac60 100644 --- a/ccw/src/templates/dashboard-css/01-base.css +++ b/ccw/src/templates/dashboard-css/01-base.css @@ -59,6 +59,17 @@ body { padding: 10px 0; } +/* Nav item indent for hierarchy visibility */ +.nav-item { + margin-left: 20px; /* Increased from mx-2 (8px) for clearer hierarchy */ + margin-right: 8px; /* Keep original right margin */ +} + +.sidebar.collapsed .nav-item { + margin-left: 0; + margin-right: 0; +} + /* Nav item active state */ .nav-item.active { background-color: hsl(var(--accent)); diff --git a/ccw/src/templates/dashboard.html b/ccw/src/templates/dashboard.html index 5ba38df9..1b44f131 100644 --- a/ccw/src/templates/dashboard.html +++ b/ccw/src/templates/dashboard.html @@ -314,25 +314,25 @@ Project