get-claudia 1.55.2 → 1.55.4

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  All notable changes to Claudia will be documented in this file.
4
4
 
5
+ ## 1.55.3 (2026-03-15)
6
+
7
+ - **Installer polish** -- Memory System step shows memory count from claudia.db when available instead of raw file count. DB scan shows totals ("4 databases to consolidate (2,118 memories, 319 entities)") and fixes "1 memories" grammar. MCP Config no longer warns about multiple stdio servers (they work fine now).
8
+
5
9
  ## 1.55.2 (2026-03-15)
6
10
 
7
11
  - **BUG FIX: dbScan scope error** -- `dbScan` was declared inside the try block but referenced in the vault callback outside it. Moved declaration to outer scope.
package/bin/index.js CHANGED
@@ -69,7 +69,7 @@ function confirm(question) {
69
69
  // Compact portrait-only banner
70
70
  function getBanner(version) {
71
71
  if (!isTTY) {
72
- return `\n CLAUDIA v${version}\n by Kamil Banc · github.com/kbanc85/claudia\n Research in AI that learns how you work\n`;
72
+ return `\n CLAUDIA v${version}\n by Kamil Banc · claudia.aiadopters.club\n Research in AI that learns how you work\n`;
73
73
  }
74
74
  const b = colors.cyan;
75
75
  const y = colors.yellow;
@@ -85,7 +85,7 @@ ${y}██${w}██${r} ${w}██${r} ${w}██${y}██${r}
85
85
  ${w}██${r} ${w}██${r}
86
86
 
87
87
  ${colors.boldYellow}CLAUDIA${colors.reset} ${colors.yellow}v${version}${colors.reset}
88
- ${colors.boldCyan}by Kamil Banc${colors.reset} ${colors.cyan}· github.com/kbanc85/claudia${colors.reset}
88
+ ${colors.boldCyan}by Kamil Banc${colors.reset} ${colors.cyan}· claudia.aiadopters.club${colors.reset}
89
89
  ${colors.white}Research in AI that learns how you work${colors.reset}
90
90
  `;
91
91
  }
@@ -750,8 +750,21 @@ async function main() {
750
750
  const hasExistingDb = existingDbs.length > 0;
751
751
 
752
752
  if (hasExistingDb) {
753
- renderer.update('memory', 'done', `${existingDbs.length} database(s) found`);
754
- if (!supportsInPlace) renderer.appendLine('memory', 'done', `${existingDbs.length} database(s) found`);
753
+ // Show a quick count via sqlite3 if available
754
+ let quickMemCount = 0;
755
+ const mainDb = join(memoryDir, 'claudia.db');
756
+ if (existsSync(mainDb)) {
757
+ try {
758
+ quickMemCount = parseInt(execFileSync('sqlite3', [mainDb, 'SELECT COUNT(*) FROM memories;'], {
759
+ encoding: 'utf-8', timeout: 3000, stdio: ['pipe', 'pipe', 'pipe'],
760
+ }).trim(), 10) || 0;
761
+ } catch { /* sqlite3 CLI not available */ }
762
+ }
763
+ const memoryLabel = quickMemCount > 0
764
+ ? `${quickMemCount.toLocaleString()} memories in claudia.db`
765
+ : `${existingDbs.length} database files found`;
766
+ renderer.update('memory', 'done', memoryLabel);
767
+ if (!supportsInPlace) renderer.appendLine('memory', 'done', memoryLabel);
755
768
  } else {
756
769
  renderer.update('memory', 'done', 'Directories ready (new install)');
757
770
  if (!supportsInPlace) renderer.appendLine('memory', 'done', 'Directories ready');
@@ -901,12 +914,15 @@ async function main() {
901
914
  } else {
902
915
  renderer.update('mcp', 'active', 'checking .mcp.json...');
903
916
  const mcpCheckResult = checkMcpConfig(targetPath);
904
- if (mcpCheckResult.hasDaemon && mcpCheckResult.stdioCount <= 1) {
905
- renderer.update('mcp', 'done', `claudia-memory configured${mcpCheckResult.stdioCount === 1 ? '' : ' (no stdio servers?)'}`);
906
- if (!supportsInPlace) renderer.appendLine('mcp', 'done', 'claudia-memory configured');
907
- } else if (mcpCheckResult.hasDaemon && mcpCheckResult.stdioCount > 1) {
908
- renderer.update('mcp', 'warn', `${mcpCheckResult.stdioCount} stdio servers (only 1 reliable)`);
909
- if (!supportsInPlace) renderer.appendLine('mcp', 'warn', `${mcpCheckResult.stdioCount} stdio servers`);
917
+ if (mcpCheckResult.hasDaemon && mcpCheckResult.stdioCount >= 1) {
918
+ const serverDetail = mcpCheckResult.stdioCount === 1
919
+ ? 'claudia-memory configured'
920
+ : `claudia-memory + ${mcpCheckResult.stdioCount - 1} other server${mcpCheckResult.stdioCount > 2 ? 's' : ''}`;
921
+ renderer.update('mcp', 'done', serverDetail);
922
+ if (!supportsInPlace) renderer.appendLine('mcp', 'done', serverDetail);
923
+ } else if (mcpCheckResult.hasDaemon && mcpCheckResult.stdioCount === 0) {
924
+ renderer.update('mcp', 'warn', 'claudia-memory configured (no stdio?)');
925
+ if (!supportsInPlace) renderer.appendLine('mcp', 'warn', 'claudia-memory configured (no stdio?)');
910
926
  } else {
911
927
  renderer.update('mcp', 'warn', 'claudia-memory not in .mcp.json');
912
928
  if (!supportsInPlace) renderer.appendLine('mcp', 'warn', 'daemon not configured');
@@ -1056,33 +1072,42 @@ async function main() {
1056
1072
  if (!dbScan) return;
1057
1073
  if (dbScan.totalMemories === 0 && dbScan.hashDbs.length === 0) return;
1058
1074
 
1075
+ const withData = dbScan.hashDbs.filter(d => d.memories > 0 || d.entities > 0);
1076
+ const empty = dbScan.hashDbs.filter(d => d.memories === 0 && d.entities === 0);
1077
+
1078
+ // Nothing interesting to show if unified DB has data and no legacy DBs
1079
+ if (withData.length === 0 && empty.length === 0 && dbScan.unified.memories > 0) return;
1080
+
1081
+ const pl = (n, word) => `${n.toLocaleString()} ${word}${n === 1 ? '' : (word.endsWith('y') ? word.slice(0, -1) + 'ies' : word + 's')}`;
1082
+ // Simpler: just handle the cases we need
1083
+ const memLabel = (n) => n === 1 ? '1 memory' : `${n.toLocaleString()} memories`;
1084
+ const entLabel = (n) => n === 1 ? '1 entity' : `${n.toLocaleString()} entities`;
1085
+ const dbLabel = (n) => n === 1 ? '1 database' : `${n} databases`;
1086
+
1059
1087
  console.log('');
1060
1088
  console.log(`${colors.dim}${'─'.repeat(46)}${colors.reset}`);
1061
1089
  console.log(` ${colors.boldCyan}Memory Database Scan${colors.reset}`);
1062
1090
  console.log('');
1063
1091
 
1064
1092
  if (dbScan.unified.exists) {
1065
- console.log(` ${colors.green}●${colors.reset} claudia.db: ${colors.bold}${dbScan.unified.memories}${colors.reset} memories, ${colors.bold}${dbScan.unified.entities}${colors.reset} entities`);
1093
+ console.log(` ${colors.green}●${colors.reset} claudia.db: ${colors.bold}${memLabel(dbScan.unified.memories)}${colors.reset}, ${colors.bold}${entLabel(dbScan.unified.entities)}${colors.reset}`);
1066
1094
  }
1067
1095
 
1068
- if (dbScan.hashDbs.length > 0) {
1069
- const withData = dbScan.hashDbs.filter(d => d.memories > 0 || d.entities > 0);
1070
- const empty = dbScan.hashDbs.filter(d => d.memories === 0 && d.entities === 0);
1096
+ if (withData.length > 0) {
1097
+ const totalMem = withData.reduce((s, d) => s + d.memories, 0);
1098
+ const totalEnt = withData.reduce((s, d) => s + d.entities, 0);
1071
1099
 
1072
- if (withData.length > 0) {
1073
- console.log('');
1074
- console.log(` ${colors.yellow}Found ${withData.length} legacy database${withData.length !== 1 ? 's' : ''} to consolidate:${colors.reset}`);
1075
- for (const db of withData) {
1076
- console.log(` ${colors.dim}${db.name}${colors.reset}: ${db.memories} memories, ${db.entities} entities`);
1077
- }
1078
- console.log('');
1079
- console.log(` ${colors.dim}These will be auto-merged into claudia.db on next startup.${colors.reset}`);
1080
- }
1081
- if (empty.length > 0) {
1082
- console.log(` ${colors.dim}${empty.length} empty database${empty.length !== 1 ? 's' : ''} will be cleaned up automatically.${colors.reset}`);
1100
+ console.log('');
1101
+ console.log(` ${colors.yellow}${dbLabel(withData.length)} to consolidate (${memLabel(totalMem)}, ${entLabel(totalEnt)}):${colors.reset}`);
1102
+ for (const db of withData) {
1103
+ console.log(` ${colors.dim}${db.name}${colors.reset} ${memLabel(db.memories)}, ${entLabel(db.entities)}`);
1083
1104
  }
1084
- } else if (dbScan.unified.exists && dbScan.unified.memories > 0) {
1085
- console.log(` ${colors.dim}Unified database, no legacy files to consolidate.${colors.reset}`);
1105
+ console.log('');
1106
+ console.log(` ${colors.dim}Auto-merged into claudia.db on next startup.${colors.reset}`);
1107
+ }
1108
+
1109
+ if (empty.length > 0) {
1110
+ console.log(` ${colors.dim}${dbLabel(empty.length)} empty, will be cleaned up.${colors.reset}`);
1086
1111
  }
1087
1112
 
1088
1113
  console.log(`${colors.dim}${'─'.repeat(46)}${colors.reset}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "get-claudia",
3
- "version": "1.55.2",
3
+ "version": "1.55.4",
4
4
  "description": "An AI assistant who learns how you work.",
5
5
  "keywords": [
6
6
  "claudia",