@regression-io/claude-config 0.37.21 → 0.37.23

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/constants.js CHANGED
@@ -2,7 +2,7 @@
2
2
  * Constants and tool path configurations
3
3
  */
4
4
 
5
- const VERSION = '0.37.21';
5
+ const VERSION = '0.37.23';
6
6
 
7
7
  // Tool-specific path configurations
8
8
  const TOOL_PATHS = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@regression-io/claude-config",
3
- "version": "0.37.21",
3
+ "version": "0.37.23",
4
4
  "description": "Configuration management UI for Claude Code and Antigravity - manage MCPs, rules, commands, memory, and project folders",
5
5
  "author": "regression.io",
6
6
  "main": "config-loader.js",
@@ -42,7 +42,7 @@ function getVersionFromFile(filePath) {
42
42
  function fetchNpmVersion() {
43
43
  return new Promise((resolve) => {
44
44
  const url = 'https://registry.npmjs.org/@regression-io/claude-config/latest';
45
- https.get(url, (res) => {
45
+ const req = https.get(url, (res) => {
46
46
  let data = '';
47
47
  res.on('data', chunk => data += chunk);
48
48
  res.on('end', () => {
@@ -52,6 +52,7 @@ function fetchNpmVersion() {
52
52
  const tarballUrl = parsed.dist?.tarball;
53
53
 
54
54
  if (!version || !tarballUrl) {
55
+ console.log('[update-check] npm registry response missing version or tarball');
55
56
  resolve(null);
56
57
  return;
57
58
  }
@@ -61,8 +62,7 @@ function fetchNpmVersion() {
61
62
  const options = {
62
63
  hostname: tarball.hostname,
63
64
  path: tarball.pathname,
64
- method: 'HEAD',
65
- timeout: 5000
65
+ method: 'HEAD'
66
66
  };
67
67
 
68
68
  const verifyReq = https.request(options, (verifyRes) => {
@@ -70,20 +70,35 @@ function fetchNpmVersion() {
70
70
  if (verifyRes.statusCode === 200) {
71
71
  resolve(version);
72
72
  } else {
73
+ console.log(`[update-check] tarball not accessible (status ${verifyRes.statusCode})`);
73
74
  resolve(null);
74
75
  }
75
76
  });
76
- verifyReq.on('error', () => resolve(null));
77
- verifyReq.on('timeout', () => {
77
+ verifyReq.setTimeout(5000, () => {
78
+ console.log('[update-check] tarball verification timed out');
78
79
  verifyReq.destroy();
79
80
  resolve(null);
80
81
  });
82
+ verifyReq.on('error', (e) => {
83
+ console.log('[update-check] tarball verification error:', e.message);
84
+ resolve(null);
85
+ });
81
86
  verifyReq.end();
82
87
  } catch (e) {
88
+ console.log('[update-check] failed to parse npm response:', e.message);
83
89
  resolve(null);
84
90
  }
85
91
  });
86
- }).on('error', () => resolve(null));
92
+ });
93
+ req.setTimeout(10000, () => {
94
+ console.log('[update-check] npm registry request timed out');
95
+ req.destroy();
96
+ resolve(null);
97
+ });
98
+ req.on('error', (e) => {
99
+ console.log('[update-check] npm registry error:', e.message);
100
+ resolve(null);
101
+ });
87
102
  });
88
103
  }
89
104
 
@@ -118,7 +133,10 @@ async function checkForUpdates(manager, dirname) {
118
133
  // Check npm for latest version
119
134
  const npmVersion = await fetchNpmVersion();
120
135
 
136
+ console.log(`[update-check] installed: ${installedVersion}, npm: ${npmVersion}`);
137
+
121
138
  if (npmVersion && isNewerVersion(npmVersion, installedVersion)) {
139
+ console.log('[update-check] update available');
122
140
  return {
123
141
  updateAvailable: true,
124
142
  installedVersion,
package/ui/server.cjs CHANGED
@@ -611,8 +611,13 @@ class ConfigUIServer {
611
611
  case '/api/projects/active':
612
612
  if (req.method === 'GET') return this.json(res, routes.projects.getActiveProject(this.manager, this.projectDir, () => this.getHierarchy(), () => routes.subprojects.getSubprojectsForDir(this.manager, this.config, this.projectDir)));
613
613
  if (req.method === 'PUT') {
614
- const result = routes.projects.setActiveProject(this.manager, body.id, () => this.getHierarchy(), () => routes.subprojects.getSubprojectsForDir(this.manager, this.config, this.projectDir));
615
- if (result.success) this.projectDir = result.project.path;
614
+ const result = routes.projects.setActiveProject(
615
+ this.manager,
616
+ body.id,
617
+ (newDir) => { this.projectDir = newDir; },
618
+ () => this.getHierarchy(),
619
+ () => routes.subprojects.getSubprojectsForDir(this.manager, this.config, this.projectDir)
620
+ );
616
621
  return this.json(res, result);
617
622
  }
618
623
  break;