@codebakers/cli 3.9.10 → 3.9.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1035,14 +1035,24 @@ async function go(options = {}) {
1035
1035
  const existingApiKey = (0, config_js_1.getApiKey)();
1036
1036
  const existingTrial = (0, config_js_1.getTrialState)();
1037
1037
  if (existingApiKey) {
1038
- console.log(chalk_1.default.green(' ✓ Authenticated (API key)\n'));
1038
+ console.log(chalk_1.default.green(' ✓ Authenticated with API key\n'));
1039
+ console.log(chalk_1.default.gray(' You\'re all set! Ask Claude to help you build something.\n'));
1039
1040
  }
1040
1041
  else if (existingTrial && !(0, config_js_1.isTrialExpired)()) {
1041
1042
  const daysRemaining = (0, config_js_1.getTrialDaysRemaining)();
1042
- console.log(chalk_1.default.green(` ✓ Trial active (${daysRemaining} days remaining)\n`));
1043
+ console.log(chalk_1.default.green(` ✓ Trial active - ${daysRemaining} day${daysRemaining === 1 ? '' : 's'} remaining\n`));
1044
+ console.log(chalk_1.default.gray(' You\'re all set! Ask Claude to help you build something.\n'));
1043
1045
  }
1044
1046
  else if (existingTrial && (0, config_js_1.isTrialExpired)()) {
1045
- console.log(chalk_1.default.yellow(' ⚠️ Trial expired. Run `codebakers extend` or login.\n'));
1047
+ console.log(chalk_1.default.yellow(' ⚠️ Trial expired\n'));
1048
+ console.log(chalk_1.default.white(' To continue using CodeBakers:'));
1049
+ console.log(chalk_1.default.cyan(' codebakers extend') + chalk_1.default.gray(' - Get 7 more days (free)'));
1050
+ console.log(chalk_1.default.cyan(' codebakers go') + chalk_1.default.gray(' - Login with API key\n'));
1051
+ }
1052
+ else {
1053
+ console.log(chalk_1.default.yellow(' ⚠️ No active session\n'));
1054
+ console.log(chalk_1.default.white(' To activate CodeBakers:'));
1055
+ console.log(chalk_1.default.cyan(' codebakers go\n'));
1046
1056
  }
1047
1057
  // Don't run setup again - just show context
1048
1058
  return;
@@ -1053,13 +1063,28 @@ async function go(options = {}) {
1053
1063
  // Auto-detect non-interactive mode (e.g., running from Claude Code)
1054
1064
  const isNonInteractive = !process.stdin.isTTY;
1055
1065
  if (isNonInteractive) {
1056
- console.log(chalk_1.default.yellow('\n ⚡ Non-interactive mode - setting up project files only\n'));
1066
+ console.log(chalk_1.default.blue('\n ───────────────────────────────────────────────────────'));
1067
+ console.log(chalk_1.default.blue(' CodeBakers - Non-Interactive Setup'));
1068
+ console.log(chalk_1.default.blue(' ───────────────────────────────────────────────────────\n'));
1069
+ console.log(chalk_1.default.gray(' Running from Claude Code - installing project files...\n'));
1057
1070
  // Just set up the project files without auth
1058
1071
  // Auth can be done later via `codebakers go` in terminal or via MCP tools
1059
1072
  await setupProject(options);
1060
- console.log(chalk_1.default.green('\n Project files installed!\n'));
1061
- console.log(chalk_1.default.gray(' To activate trial/login, run in terminal:'));
1062
- console.log(chalk_1.default.cyan(' codebakers go\n'));
1073
+ console.log(chalk_1.default.green('\n Project files installed successfully!\n'));
1074
+ console.log(chalk_1.default.white(' What was set up:'));
1075
+ console.log(chalk_1.default.gray(' CLAUDE.md - AI instructions for this project'));
1076
+ console.log(chalk_1.default.gray(' • .codebakers.json - Project configuration'));
1077
+ console.log(chalk_1.default.gray(' • MCP server - Registered in Claude Code config\n'));
1078
+ console.log(chalk_1.default.yellow(' ⚠️ RESTART REQUIRED to load MCP tools\n'));
1079
+ console.log(chalk_1.default.white(' The CodeBakers MCP server was registered, but Claude Code'));
1080
+ console.log(chalk_1.default.white(' needs to restart to load it.\n'));
1081
+ console.log(chalk_1.default.cyan(' To restart Claude Code:\n'));
1082
+ console.log(chalk_1.default.gray(' Option 1: ') + chalk_1.default.white('Press ') + chalk_1.default.cyan('Ctrl+C') + chalk_1.default.white(' and run ') + chalk_1.default.cyan('claude') + chalk_1.default.white(' again'));
1083
+ console.log(chalk_1.default.gray(' Option 2: ') + chalk_1.default.white('In VS Code: ') + chalk_1.default.cyan('Cmd/Ctrl+Shift+P') + chalk_1.default.white(' → "Reload Window"\n'));
1084
+ console.log(chalk_1.default.white(' After restart, MCP tools (discover_patterns, validate_complete)'));
1085
+ console.log(chalk_1.default.white(' will be available.\n'));
1086
+ console.log(chalk_1.default.gray(' ─────────────────────────────────────────────────────────\n'));
1087
+ console.log(chalk_1.default.gray(' Optional: To activate trial, run ') + chalk_1.default.cyan('codebakers go') + chalk_1.default.gray(' in a terminal.\n'));
1063
1088
  return;
1064
1089
  }
1065
1090
  console.log(chalk_1.default.blue(`
@@ -1097,25 +1122,34 @@ async function go(options = {}) {
1097
1122
  }
1098
1123
  // Check if trial expired
1099
1124
  if (existingTrial && (0, config_js_1.isTrialExpired)()) {
1100
- console.log(chalk_1.default.yellow(' ⚠️ Your trial has expired.\n'));
1101
- // Offer to login with API key or extend
1102
- console.log(chalk_1.default.white(' Options:\n'));
1103
- console.log(chalk_1.default.cyan(' [1] Login with API key') + chalk_1.default.gray(' (I have an account)'));
1104
- console.log(chalk_1.default.cyan(' [2] Extend trial') + chalk_1.default.gray(' (7 more days with GitHub)\n'));
1125
+ console.log(chalk_1.default.yellow(`
1126
+ ╭───────────────────────────────────────────────────────────╮
1127
+ │ ⚠️ Your 7-day trial has expired │
1128
+ ╰───────────────────────────────────────────────────────────╯
1129
+ `));
1130
+ console.log(chalk_1.default.white(' You can still use CodeBakers! Choose an option:\n'));
1131
+ console.log(chalk_1.default.cyan(' [1] Login with API key'));
1132
+ console.log(chalk_1.default.gray(' If you purchased a subscription at codebakers.ai\n'));
1133
+ console.log(chalk_1.default.cyan(' [2] Extend trial (+7 days)'));
1134
+ console.log(chalk_1.default.gray(' Connect your GitHub account for more time\n'));
1105
1135
  const choice = await prompt(chalk_1.default.gray(' Enter 1 or 2: '));
1106
1136
  if (choice === '1') {
1107
1137
  await handleApiKeyLogin(options);
1108
1138
  return;
1109
1139
  }
1110
1140
  else {
1111
- console.log(chalk_1.default.cyan('\n Run: codebakers extend\n'));
1141
+ console.log(chalk_1.default.white('\n To extend your trial, run:\n'));
1142
+ console.log(chalk_1.default.cyan(' codebakers extend\n'));
1143
+ console.log(chalk_1.default.gray(' This will open GitHub for authentication.\n'));
1112
1144
  return;
1113
1145
  }
1114
1146
  }
1115
1147
  // New user - ask how they want to proceed
1116
1148
  console.log(chalk_1.default.white(' How would you like to get started?\n'));
1117
- console.log(chalk_1.default.cyan(' [1] Start free 7-day trial') + chalk_1.default.gray(' (GitHub login required)'));
1118
- console.log(chalk_1.default.cyan(' [2] Login with API key') + chalk_1.default.gray(' (I have an account)\n'));
1149
+ console.log(chalk_1.default.cyan(' [1] Start free 7-day trial'));
1150
+ console.log(chalk_1.default.gray(' No credit card needed - just GitHub login\n'));
1151
+ console.log(chalk_1.default.cyan(' [2] Login with API key'));
1152
+ console.log(chalk_1.default.gray(' I already have a CodeBakers account\n'));
1119
1153
  const choice = await prompt(chalk_1.default.gray(' Enter 1 or 2: '));
1120
1154
  if (choice === '2') {
1121
1155
  await handleApiKeyLogin(options);
@@ -1243,52 +1277,28 @@ async function handleApiKeyLogin(options = {}) {
1243
1277
  }
1244
1278
  }
1245
1279
  /**
1246
- * Show success message and offer to restart
1280
+ * Show success message with clear next steps
1247
1281
  */
1248
1282
  async function showSuccessAndRestart() {
1249
- const cwd = process.cwd();
1250
1283
  console.log(chalk_1.default.green(`
1251
1284
  ╔═══════════════════════════════════════════════════════════╗
1252
- ║ ✅ CodeBakers is ready! ║
1253
1285
  ║ ║
1254
- ${chalk_1.default.gray('Try: "Build me a todo app with authentication"')}
1286
+ CodeBakers Setup Complete!
1287
+ ║ ║
1255
1288
  ╚═══════════════════════════════════════════════════════════╝
1256
1289
  `));
1257
- console.log(chalk_1.default.yellow(' ⚠️ RESTART REQUIRED\n'));
1258
- console.log(chalk_1.default.gray(' Claude Code needs to restart to load CodeBakers.\n'));
1259
- const answer = await prompt(chalk_1.default.cyan(' Restart Claude Code now? (Y/n): '));
1260
- if (answer === 'n' || answer === 'no') {
1261
- console.log(chalk_1.default.gray('\n No problem! Just restart Claude Code manually when ready.\n'));
1262
- return;
1263
- }
1264
- // Attempt to restart Claude Code
1265
- console.log(chalk_1.default.gray('\n Restarting Claude Code...\n'));
1266
- try {
1267
- const isWindows = process.platform === 'win32';
1268
- if (isWindows) {
1269
- (0, child_process_1.spawn)('cmd', ['/c', 'start', 'claude'], {
1270
- cwd,
1271
- detached: true,
1272
- stdio: 'ignore',
1273
- shell: true,
1274
- }).unref();
1275
- }
1276
- else {
1277
- (0, child_process_1.spawn)('claude', [], {
1278
- cwd,
1279
- detached: true,
1280
- stdio: 'ignore',
1281
- shell: true,
1282
- }).unref();
1283
- }
1284
- console.log(chalk_1.default.green(' ✓ Claude Code is restarting...\n'));
1285
- console.log(chalk_1.default.gray(' This terminal will close. Claude Code will open in a new window.\n'));
1286
- await new Promise(resolve => setTimeout(resolve, 1000));
1287
- process.exit(0);
1288
- }
1289
- catch {
1290
- console.log(chalk_1.default.yellow(' Could not auto-restart. Please restart Claude Code manually.\n'));
1291
- }
1290
+ console.log(chalk_1.default.yellow(' ⚠️ ONE MORE STEP - Restart Required\n'));
1291
+ console.log(chalk_1.default.white(' Claude Code needs to restart to load the CodeBakers MCP server.\n'));
1292
+ console.log(chalk_1.default.cyan(' How to restart Claude Code:\n'));
1293
+ console.log(chalk_1.default.gray(' Option 1: ') + chalk_1.default.white('Close this window and run ') + chalk_1.default.cyan('claude') + chalk_1.default.white(' again'));
1294
+ console.log(chalk_1.default.gray(' Option 2: ') + chalk_1.default.white('Press ') + chalk_1.default.cyan('Ctrl+C') + chalk_1.default.white(' and run ') + chalk_1.default.cyan('claude') + chalk_1.default.white(' again'));
1295
+ console.log(chalk_1.default.gray(' Option 3: ') + chalk_1.default.white('In VS Code: ') + chalk_1.default.cyan('Cmd/Ctrl+Shift+P') + chalk_1.default.white(' → "Claude Code: Restart"\n'));
1296
+ console.log(chalk_1.default.green(' After restart, try saying:\n'));
1297
+ console.log(chalk_1.default.white(' "Build me a todo app with authentication"'));
1298
+ console.log(chalk_1.default.white(' "Add a login page to my project"'));
1299
+ console.log(chalk_1.default.white(' "Review my code and make it production-ready"\n'));
1300
+ console.log(chalk_1.default.gray(' ─────────────────────────────────────────────────────────\n'));
1301
+ console.log(chalk_1.default.gray(' Having issues? Run: ') + chalk_1.default.cyan('codebakers doctor') + chalk_1.default.gray(' to diagnose\n'));
1292
1302
  }
1293
1303
  // v6.12 Bootstrap content - minimal files that point to MCP tools
1294
1304
  const V6_CLAUDE_MD = `# CodeBakers v6.12 - Server-Enforced Patterns
package/dist/index.js CHANGED
@@ -34,7 +34,7 @@ const api_js_1 = require("./lib/api.js");
34
34
  // ============================================
35
35
  // Automatic Update Notification
36
36
  // ============================================
37
- const CURRENT_VERSION = '3.9.10';
37
+ const CURRENT_VERSION = '3.9.12';
38
38
  // Simple semver comparison: returns true if v1 > v2
39
39
  function isNewerVersion(v1, v2) {
40
40
  const parts1 = v1.split('.').map(Number);
@@ -210,7 +210,7 @@ const program = new commander_1.Command();
210
210
  program
211
211
  .name('codebakers')
212
212
  .description('CodeBakers CLI - Production patterns for AI-assisted development')
213
- .version('3.9.10');
213
+ .version('3.9.12');
214
214
  // Zero-friction trial entry (no signup required)
215
215
  program
216
216
  .command('go')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codebakers/cli",
3
- "version": "3.9.10",
3
+ "version": "3.9.12",
4
4
  "description": "CodeBakers CLI - Production patterns for AI-assisted development",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -1,6 +1,6 @@
1
1
  import chalk from 'chalk';
2
2
  import ora from 'ora';
3
- import { execSync, spawn } from 'child_process';
3
+ import { execSync } from 'child_process';
4
4
  import { writeFileSync, existsSync, readFileSync, mkdirSync, readdirSync, statSync, rmSync } from 'fs';
5
5
  import { join } from 'path';
6
6
  import { createInterface } from 'readline';
@@ -1168,12 +1168,21 @@ export async function go(options: GoOptions = {}): Promise<void> {
1168
1168
  const existingTrial = getTrialState();
1169
1169
 
1170
1170
  if (existingApiKey) {
1171
- console.log(chalk.green(' ✓ Authenticated (API key)\n'));
1171
+ console.log(chalk.green(' ✓ Authenticated with API key\n'));
1172
+ console.log(chalk.gray(' You\'re all set! Ask Claude to help you build something.\n'));
1172
1173
  } else if (existingTrial && !isTrialExpired()) {
1173
1174
  const daysRemaining = getTrialDaysRemaining();
1174
- console.log(chalk.green(` ✓ Trial active (${daysRemaining} days remaining)\n`));
1175
+ console.log(chalk.green(` ✓ Trial active - ${daysRemaining} day${daysRemaining === 1 ? '' : 's'} remaining\n`));
1176
+ console.log(chalk.gray(' You\'re all set! Ask Claude to help you build something.\n'));
1175
1177
  } else if (existingTrial && isTrialExpired()) {
1176
- console.log(chalk.yellow(' ⚠️ Trial expired. Run `codebakers extend` or login.\n'));
1178
+ console.log(chalk.yellow(' ⚠️ Trial expired\n'));
1179
+ console.log(chalk.white(' To continue using CodeBakers:'));
1180
+ console.log(chalk.cyan(' codebakers extend') + chalk.gray(' - Get 7 more days (free)'));
1181
+ console.log(chalk.cyan(' codebakers go') + chalk.gray(' - Login with API key\n'));
1182
+ } else {
1183
+ console.log(chalk.yellow(' ⚠️ No active session\n'));
1184
+ console.log(chalk.white(' To activate CodeBakers:'));
1185
+ console.log(chalk.cyan(' codebakers go\n'));
1177
1186
  }
1178
1187
 
1179
1188
  // Don't run setup again - just show context
@@ -1187,15 +1196,32 @@ export async function go(options: GoOptions = {}): Promise<void> {
1187
1196
  // Auto-detect non-interactive mode (e.g., running from Claude Code)
1188
1197
  const isNonInteractive = !process.stdin.isTTY;
1189
1198
  if (isNonInteractive) {
1190
- console.log(chalk.yellow('\n ⚡ Non-interactive mode - setting up project files only\n'));
1199
+ console.log(chalk.blue('\n ───────────────────────────────────────────────────────'));
1200
+ console.log(chalk.blue(' CodeBakers - Non-Interactive Setup'));
1201
+ console.log(chalk.blue(' ───────────────────────────────────────────────────────\n'));
1202
+
1203
+ console.log(chalk.gray(' Running from Claude Code - installing project files...\n'));
1191
1204
 
1192
1205
  // Just set up the project files without auth
1193
1206
  // Auth can be done later via `codebakers go` in terminal or via MCP tools
1194
1207
  await setupProject(options);
1195
1208
 
1196
- console.log(chalk.green('\n Project files installed!\n'));
1197
- console.log(chalk.gray(' To activate trial/login, run in terminal:'));
1198
- console.log(chalk.cyan(' codebakers go\n'));
1209
+ console.log(chalk.green('\n Project files installed successfully!\n'));
1210
+ console.log(chalk.white(' What was set up:'));
1211
+ console.log(chalk.gray(' CLAUDE.md - AI instructions for this project'));
1212
+ console.log(chalk.gray(' • .codebakers.json - Project configuration'));
1213
+ console.log(chalk.gray(' • MCP server - Registered in Claude Code config\n'));
1214
+
1215
+ console.log(chalk.yellow(' ⚠️ RESTART REQUIRED to load MCP tools\n'));
1216
+ console.log(chalk.white(' The CodeBakers MCP server was registered, but Claude Code'));
1217
+ console.log(chalk.white(' needs to restart to load it.\n'));
1218
+ console.log(chalk.cyan(' To restart Claude Code:\n'));
1219
+ console.log(chalk.gray(' Option 1: ') + chalk.white('Press ') + chalk.cyan('Ctrl+C') + chalk.white(' and run ') + chalk.cyan('claude') + chalk.white(' again'));
1220
+ console.log(chalk.gray(' Option 2: ') + chalk.white('In VS Code: ') + chalk.cyan('Cmd/Ctrl+Shift+P') + chalk.white(' → "Reload Window"\n'));
1221
+ console.log(chalk.white(' After restart, MCP tools (discover_patterns, validate_complete)'));
1222
+ console.log(chalk.white(' will be available.\n'));
1223
+ console.log(chalk.gray(' ─────────────────────────────────────────────────────────\n'));
1224
+ console.log(chalk.gray(' Optional: To activate trial, run ') + chalk.cyan('codebakers go') + chalk.gray(' in a terminal.\n'));
1199
1225
  return;
1200
1226
  }
1201
1227
 
@@ -1241,12 +1267,17 @@ export async function go(options: GoOptions = {}): Promise<void> {
1241
1267
 
1242
1268
  // Check if trial expired
1243
1269
  if (existingTrial && isTrialExpired()) {
1244
- console.log(chalk.yellow(' ⚠️ Your trial has expired.\n'));
1245
-
1246
- // Offer to login with API key or extend
1247
- console.log(chalk.white(' Options:\n'));
1248
- console.log(chalk.cyan(' [1] Login with API key') + chalk.gray(' (I have an account)'));
1249
- console.log(chalk.cyan(' [2] Extend trial') + chalk.gray(' (7 more days with GitHub)\n'));
1270
+ console.log(chalk.yellow(`
1271
+ ╭───────────────────────────────────────────────────────────╮
1272
+ │ ⚠️ Your 7-day trial has expired │
1273
+ ╰───────────────────────────────────────────────────────────╯
1274
+ `));
1275
+
1276
+ console.log(chalk.white(' You can still use CodeBakers! Choose an option:\n'));
1277
+ console.log(chalk.cyan(' [1] Login with API key'));
1278
+ console.log(chalk.gray(' If you purchased a subscription at codebakers.ai\n'));
1279
+ console.log(chalk.cyan(' [2] Extend trial (+7 days)'));
1280
+ console.log(chalk.gray(' Connect your GitHub account for more time\n'));
1250
1281
 
1251
1282
  const choice = await prompt(chalk.gray(' Enter 1 or 2: '));
1252
1283
 
@@ -1254,15 +1285,19 @@ export async function go(options: GoOptions = {}): Promise<void> {
1254
1285
  await handleApiKeyLogin(options);
1255
1286
  return;
1256
1287
  } else {
1257
- console.log(chalk.cyan('\n Run: codebakers extend\n'));
1288
+ console.log(chalk.white('\n To extend your trial, run:\n'));
1289
+ console.log(chalk.cyan(' codebakers extend\n'));
1290
+ console.log(chalk.gray(' This will open GitHub for authentication.\n'));
1258
1291
  return;
1259
1292
  }
1260
1293
  }
1261
1294
 
1262
1295
  // New user - ask how they want to proceed
1263
1296
  console.log(chalk.white(' How would you like to get started?\n'));
1264
- console.log(chalk.cyan(' [1] Start free 7-day trial') + chalk.gray(' (GitHub login required)'));
1265
- console.log(chalk.cyan(' [2] Login with API key') + chalk.gray(' (I have an account)\n'));
1297
+ console.log(chalk.cyan(' [1] Start free 7-day trial'));
1298
+ console.log(chalk.gray(' No credit card needed - just GitHub login\n'));
1299
+ console.log(chalk.cyan(' [2] Login with API key'));
1300
+ console.log(chalk.gray(' I already have a CodeBakers account\n'));
1266
1301
 
1267
1302
  const choice = await prompt(chalk.gray(' Enter 1 or 2: '));
1268
1303
 
@@ -1413,60 +1448,33 @@ async function handleApiKeyLogin(options: GoOptions = {}): Promise<void> {
1413
1448
  }
1414
1449
 
1415
1450
  /**
1416
- * Show success message and offer to restart
1451
+ * Show success message with clear next steps
1417
1452
  */
1418
1453
  async function showSuccessAndRestart(): Promise<void> {
1419
- const cwd = process.cwd();
1420
-
1421
1454
  console.log(chalk.green(`
1422
1455
  ╔═══════════════════════════════════════════════════════════╗
1423
- ║ ✅ CodeBakers is ready! ║
1424
1456
  ║ ║
1425
- ${chalk.gray('Try: "Build me a todo app with authentication"')}
1457
+ CodeBakers Setup Complete!
1458
+ ║ ║
1426
1459
  ╚═══════════════════════════════════════════════════════════╝
1427
1460
  `));
1428
1461
 
1429
- console.log(chalk.yellow(' ⚠️ RESTART REQUIRED\n'));
1430
- console.log(chalk.gray(' Claude Code needs to restart to load CodeBakers.\n'));
1431
-
1432
- const answer = await prompt(chalk.cyan(' Restart Claude Code now? (Y/n): '));
1433
-
1434
- if (answer === 'n' || answer === 'no') {
1435
- console.log(chalk.gray('\n No problem! Just restart Claude Code manually when ready.\n'));
1436
- return;
1437
- }
1438
-
1439
- // Attempt to restart Claude Code
1440
- console.log(chalk.gray('\n Restarting Claude Code...\n'));
1462
+ console.log(chalk.yellow(' ⚠️ ONE MORE STEP - Restart Required\n'));
1441
1463
 
1442
- try {
1443
- const isWindows = process.platform === 'win32';
1464
+ console.log(chalk.white(' Claude Code needs to restart to load the CodeBakers MCP server.\n'));
1444
1465
 
1445
- if (isWindows) {
1446
- spawn('cmd', ['/c', 'start', 'claude'], {
1447
- cwd,
1448
- detached: true,
1449
- stdio: 'ignore',
1450
- shell: true,
1451
- }).unref();
1452
- } else {
1453
- spawn('claude', [], {
1454
- cwd,
1455
- detached: true,
1456
- stdio: 'ignore',
1457
- shell: true,
1458
- }).unref();
1459
- }
1460
-
1461
- console.log(chalk.green(' ✓ Claude Code is restarting...\n'));
1462
- console.log(chalk.gray(' This terminal will close. Claude Code will open in a new window.\n'));
1466
+ console.log(chalk.cyan(' How to restart Claude Code:\n'));
1467
+ console.log(chalk.gray(' Option 1: ') + chalk.white('Close this window and run ') + chalk.cyan('claude') + chalk.white(' again'));
1468
+ console.log(chalk.gray(' Option 2: ') + chalk.white('Press ') + chalk.cyan('Ctrl+C') + chalk.white(' and run ') + chalk.cyan('claude') + chalk.white(' again'));
1469
+ console.log(chalk.gray(' Option 3: ') + chalk.white('In VS Code: ') + chalk.cyan('Cmd/Ctrl+Shift+P') + chalk.white(' → "Claude Code: Restart"\n'));
1463
1470
 
1464
- await new Promise(resolve => setTimeout(resolve, 1000));
1465
- process.exit(0);
1471
+ console.log(chalk.green(' After restart, try saying:\n'));
1472
+ console.log(chalk.white(' "Build me a todo app with authentication"'));
1473
+ console.log(chalk.white(' "Add a login page to my project"'));
1474
+ console.log(chalk.white(' "Review my code and make it production-ready"\n'));
1466
1475
 
1467
- } catch {
1468
- console.log(chalk.yellow(' Could not auto-restart. Please restart Claude Code manually.\n'));
1469
- }
1476
+ console.log(chalk.gray(' ─────────────────────────────────────────────────────────\n'));
1477
+ console.log(chalk.gray(' Having issues? Run: ') + chalk.cyan('codebakers doctor') + chalk.gray(' to diagnose\n'));
1470
1478
  }
1471
1479
 
1472
1480
  // v6.12 Bootstrap content - minimal files that point to MCP tools
package/src/index.ts CHANGED
@@ -34,7 +34,7 @@ import { join } from 'path';
34
34
  // Automatic Update Notification
35
35
  // ============================================
36
36
 
37
- const CURRENT_VERSION = '3.9.10';
37
+ const CURRENT_VERSION = '3.9.12';
38
38
 
39
39
  // Simple semver comparison: returns true if v1 > v2
40
40
  function isNewerVersion(v1: string, v2: string): boolean {
@@ -230,7 +230,7 @@ const program = new Command();
230
230
  program
231
231
  .name('codebakers')
232
232
  .description('CodeBakers CLI - Production patterns for AI-assisted development')
233
- .version('3.9.10');
233
+ .version('3.9.12');
234
234
 
235
235
  // Zero-friction trial entry (no signup required)
236
236
  program