crg-dev-kit 2.2.2 → 2.2.3

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/lib/actions.js CHANGED
@@ -38,18 +38,16 @@ function install(targetDir, trackROI = true) {
38
38
  copied++;
39
39
  });
40
40
 
41
- // Add copied files to .gitignore
42
- if (copied > 0) {
43
- const gitignorePath = path.join(targetDir, '.gitignore');
44
- const filesToIgnore = [...INSTALL_FILES.map(f => f.name), '.cursorrules', '.opencode.json', '.windsurfrules', 'GEMINI.md'];
45
- if (fs.existsSync(gitignorePath)) {
46
- let content = fs.readFileSync(gitignorePath, 'utf8');
47
- const newFiles = filesToIgnore
48
- .filter(name => !content.split('\n').some(line => line.trim() === name));
49
- if (newFiles.length > 0) {
50
- const block = '\n# code-review-graph\n' + newFiles.join('\n') + '\n';
51
- fs.appendFileSync(gitignorePath, block);
52
- }
41
+ // Add copied files to .gitignore (always run, not just on copy)
42
+ const gitignorePath = path.join(targetDir, '.gitignore');
43
+ const filesToIgnore = [...INSTALL_FILES.map(f => f.name), '.cursorrules', '.opencode.json', '.windsurfrules', 'GEMINI.md'];
44
+ if (fs.existsSync(gitignorePath)) {
45
+ let content = fs.readFileSync(gitignorePath, 'utf8');
46
+ const newFiles = filesToIgnore
47
+ .filter(name => !content.split('\n').some(line => line.trim() === name));
48
+ if (newFiles.length > 0) {
49
+ const block = '\n# code-review-graph\n' + newFiles.join('\n') + '\n';
50
+ fs.appendFileSync(gitignorePath, block);
53
51
  }
54
52
  }
55
53
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "crg-dev-kit",
3
- "version": "2.2.2",
3
+ "version": "2.2.3",
4
4
  "description": "One-click setup for code-review-graph — AI-powered codebase knowledge graph with token analytics",
5
5
  "main": "server.js",
6
6
  "bin": {
package/server.js CHANGED
@@ -821,7 +821,7 @@ function start(port, noOpen) {
821
821
  });
822
822
 
823
823
  } else if (url.pathname === '/api/install-mem0' && req.method === 'POST') {
824
- exec('pip install mem0 2>&1', (err, stdout, stderr) => {
824
+ exec('pip install mem0 --break-system-packages 2>&1 || pipx install mem0 2>&1', (err, stdout, stderr) => {
825
825
  if (err) {
826
826
  res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
827
827
  res.end(`<div class="result-box result-error"><p>Failed to install mem0: ${esc(stderr || err.message)}</p></div>`);
@@ -850,7 +850,7 @@ function start(port, noOpen) {
850
850
  output += `<div class="check-item"><span class="check-pass">✓</span> token-optimizer installed</div>`;
851
851
  }
852
852
 
853
- exec('pip install mem0 2>&1', (err2, stdout2, stderr2) => {
853
+ exec('pip install mem0 --break-system-packages 2>&1 || pipx install mem0 2>&1', (err2, stdout2, stderr2) => {
854
854
  if (err2) {
855
855
  output += `<div class="check-item"><span class="check-fail">✗</span> mem0: ${esc(stderr2 || err2.message)}</div>`;
856
856
  } else {