coder-config 0.47.9 → 0.48.1-beta

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.47.9';
5
+ const VERSION = '0.48.1-beta';
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": "coder-config",
3
- "version": "0.47.9",
3
+ "version": "0.48.1-beta",
4
4
  "description": "Configuration manager for AI coding tools - Claude Code, Gemini CLI, Codex CLI, Antigravity. Manage MCPs, rules, permissions, memory, and workstreams.",
5
5
  "author": "regression.io",
6
6
  "main": "config-loader.js",
@@ -591,6 +591,8 @@ function moveClaudeItem(body, manager) {
591
591
  fs.mkdirSync(targetParent, { recursive: true });
592
592
  }
593
593
 
594
+ const isDirectory = fs.statSync(sourcePath).isDirectory();
595
+
594
596
  // Handle existing target
595
597
  if (fs.existsSync(targetPath)) {
596
598
  if (!merge) {
@@ -613,15 +615,19 @@ function moveClaudeItem(body, manager) {
613
615
  const merged = { ...targetContent, ...sourceContent };
614
616
  fs.writeFileSync(targetPath, JSON.stringify(merged, null, 2));
615
617
  }
618
+ } else if (isDirectory) {
619
+ fs.cpSync(sourcePath, targetPath, { recursive: true });
616
620
  } else {
617
621
  fs.copyFileSync(sourcePath, targetPath);
618
622
  }
623
+ } else if (isDirectory) {
624
+ fs.cpSync(sourcePath, targetPath, { recursive: true });
619
625
  } else {
620
626
  fs.copyFileSync(sourcePath, targetPath);
621
627
  }
622
628
 
623
629
  if (mode === 'move') {
624
- fs.unlinkSync(sourcePath);
630
+ fs.rmSync(sourcePath, { recursive: true });
625
631
  }
626
632
 
627
633
  return { success: true, sourcePath, targetPath, mode };
package/ui/server.cjs CHANGED
@@ -211,6 +211,7 @@ class ConfigUIServer {
211
211
  const folders = [];
212
212
 
213
213
  for (const c of configs) {
214
+ if (folders.some(f => f.dir === c.dir)) continue; // deduplicate (home dir has both .claude.json and .claude/mcps.json)
214
215
  const folder = routes.fileExplorer.scanFolderForExplorer(c.dir, this.manager);
215
216
  if (folder) folders.push(folder);
216
217
  }