@regression-io/claude-config 0.35.21 → 0.35.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/README.md CHANGED
@@ -102,8 +102,9 @@ claude-config workstream detect [path] # Detect workstream for directory
102
102
  ### Registry Commands
103
103
 
104
104
  ```bash
105
- claude-config registry-add <name> '<json>' # Add MCP to global registry
106
- claude-config registry-remove <name> # Remove MCP from registry
105
+ claude-config registry # List MCPs in global registry
106
+ claude-config registry add <name> '<json>' # Add MCP to global registry
107
+ claude-config registry remove <name> # Remove MCP from registry
107
108
  ```
108
109
 
109
110
  ### Web UI
package/config-loader.js CHANGED
@@ -25,7 +25,7 @@ const { findProjectRoot, findAllConfigs, mergeConfigs, getConfigPath, collectFil
25
25
  const { listTemplates, findTemplate, resolveTemplateChain, copyTemplateFiles, trackAppliedTemplate, getAppliedTemplate } = require('./lib/templates');
26
26
  const { apply, applyForAntigravity, applyForGemini, detectInstalledTools, applyForTools } = require('./lib/apply');
27
27
  const { list, add, remove } = require('./lib/mcps');
28
- const { registryAdd, registryRemove } = require('./lib/registry');
28
+ const { registryList, registryAdd, registryRemove } = require('./lib/registry');
29
29
  const { init, applyTemplate, show } = require('./lib/init');
30
30
  const { memoryList, memoryInit, memoryAdd, memorySearch } = require('./lib/memory');
31
31
  const { envList, envSet, envUnset } = require('./lib/env');
@@ -103,6 +103,7 @@ class ClaudeConfigManager {
103
103
  remove(mcpNames) { return remove(this.installDir, mcpNames); }
104
104
 
105
105
  // Registry
106
+ registryList() { return registryList(this.registryPath); }
106
107
  registryAdd(name, configJson) { return registryAdd(this.registryPath, name, configJson); }
107
108
  registryRemove(name) { return registryRemove(this.registryPath, name); }
108
109
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@regression-io/claude-config",
3
- "version": "0.35.21",
3
+ "version": "0.35.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",
@@ -611,7 +611,7 @@ For more information, see https://radix-ui.com/primitives/docs/components/alert-
611
611
  "args": ["-y", "@example/mcp-server"]
612
612
  }
613
613
  }
614
- }`,className:"font-mono text-sm bg-white",rows:6})]}),s.jsxs("div",{className:"mt-4 flex justify-between",children:[s.jsx(de,{variant:"outline",onClick:()=>A({open:!1,url:"",showTerminal:!1,localTool:null,pastedConfig:"",mode:"url"}),children:"Close"}),s.jsxs(de,{onClick:he,disabled:!P.pastedConfig.trim(),className:"bg-green-600 hover:bg-green-700 text-white",children:[s.jsx(St,{className:"w-4 h-4 mr-2"}),"Add to Registry"]})]})]})]})}),s.jsxs("div",{className:"bg-gray-50 dark:bg-slate-900 rounded-lg p-4 border border-transparent dark:border-slate-800",children:[s.jsx("h4",{className:"text-sm font-medium text-gray-900 dark:text-white mb-2",children:"CLI Commands"}),s.jsxs("div",{className:"space-y-1 text-sm text-gray-600 dark:text-slate-400 font-mono",children:[s.jsx("p",{children:"claude-config list # List available MCPs (✓ = active)"}),s.jsx("p",{children:"claude-config add <mcp> [mcp...] # Add MCP(s) to project"}),s.jsx("p",{children:"claude-config remove <mcp> [mcp...] # Remove MCP(s) from project"}),s.jsx("p",{children:"claude-config registry-add <name> '...' # Add MCP to global registry"}),s.jsx("p",{children:"claude-config registry-remove <name> # Remove MCP from registry"})]})]})]})}function Xz({project:e,onUpdate:t}){var B,$,H,q;const[r,n]=C.useState(null),[o,d]=C.useState(!0),[u,l]=C.useState(null),[c,f]=C.useState(""),[p,h]=C.useState(!1),[g,w]=C.useState("global"),[k,_]=C.useState(""),[b,y]=C.useState([]),[v,x]=C.useState({open:!1,type:"preference",name:"",description:"",wrong:"",right:"",category:"",details:"",title:"",context:"",decision:"",rationale:"",content:""});C.useEffect(()=>{j()},[]);const j=async()=>{try{d(!0);const U=await ke.getMemory();n(U)}catch{re.error("Failed to load memory")}finally{d(!1)}};C.useEffect(()=>{u&&P(u.path)},[u]);const P=async U=>{try{const Y=await ke.getMemoryFile(U);f(Y.content||"")}catch{re.error("Failed to load file")}},A=async()=>{if(u){h(!0);try{await ke.saveMemoryFile(u.path,c),re.success("Saved!"),j()}catch{re.error("Failed to save")}finally{h(!1)}}},E=async()=>{if(!k.trim()){y([]);return}try{const U=await ke.searchMemory(k);y(U.results||[])}catch{re.error("Search failed")}},N=async()=>{let U="";const{type:Y}=v;switch(Y){case"preference":if(!v.name.trim()){re.error("Name required");return}U=`**${v.name}**: ${v.description}`;break;case"correction":if(!v.wrong.trim()||!v.right.trim()){re.error('Both "wrong" and "right" are required');return}U=`**Wrong**: ${v.wrong}
614
+ }`,className:"font-mono text-sm bg-white",rows:6})]}),s.jsxs("div",{className:"mt-4 flex justify-between",children:[s.jsx(de,{variant:"outline",onClick:()=>A({open:!1,url:"",showTerminal:!1,localTool:null,pastedConfig:"",mode:"url"}),children:"Close"}),s.jsxs(de,{onClick:he,disabled:!P.pastedConfig.trim(),className:"bg-green-600 hover:bg-green-700 text-white",children:[s.jsx(St,{className:"w-4 h-4 mr-2"}),"Add to Registry"]})]})]})]})}),s.jsxs("div",{className:"bg-gray-50 dark:bg-slate-900 rounded-lg p-4 border border-transparent dark:border-slate-800",children:[s.jsx("h4",{className:"text-sm font-medium text-gray-900 dark:text-white mb-2",children:"CLI Commands"}),s.jsxs("div",{className:"space-y-1 text-sm text-gray-600 dark:text-slate-400 font-mono",children:[s.jsx("p",{children:"claude-config list # List available MCPs (✓ = active)"}),s.jsx("p",{children:"claude-config add <mcp> [mcp...] # Add MCP(s) to project"}),s.jsx("p",{children:"claude-config remove <mcp> [mcp...] # Remove MCP(s) from project"}),s.jsx("p",{children:"claude-config registry # List MCPs in registry"}),s.jsx("p",{children:"claude-config registry add <name> '...' # Add MCP to registry"}),s.jsx("p",{children:"claude-config registry remove <name> # Remove from registry"})]})]})]})}function Xz({project:e,onUpdate:t}){var B,$,H,q;const[r,n]=C.useState(null),[o,d]=C.useState(!0),[u,l]=C.useState(null),[c,f]=C.useState(""),[p,h]=C.useState(!1),[g,w]=C.useState("global"),[k,_]=C.useState(""),[b,y]=C.useState([]),[v,x]=C.useState({open:!1,type:"preference",name:"",description:"",wrong:"",right:"",category:"",details:"",title:"",context:"",decision:"",rationale:"",content:""});C.useEffect(()=>{j()},[]);const j=async()=>{try{d(!0);const U=await ke.getMemory();n(U)}catch{re.error("Failed to load memory")}finally{d(!1)}};C.useEffect(()=>{u&&P(u.path)},[u]);const P=async U=>{try{const Y=await ke.getMemoryFile(U);f(Y.content||"")}catch{re.error("Failed to load file")}},A=async()=>{if(u){h(!0);try{await ke.saveMemoryFile(u.path,c),re.success("Saved!"),j()}catch{re.error("Failed to save")}finally{h(!1)}}},E=async()=>{if(!k.trim()){y([]);return}try{const U=await ke.searchMemory(k);y(U.results||[])}catch{re.error("Search failed")}},N=async()=>{let U="";const{type:Y}=v;switch(Y){case"preference":if(!v.name.trim()){re.error("Name required");return}U=`**${v.name}**: ${v.description}`;break;case"correction":if(!v.wrong.trim()||!v.right.trim()){re.error('Both "wrong" and "right" are required');return}U=`**Wrong**: ${v.wrong}
615
615
  **Right**: ${v.right}`;break;case"fact":if(!v.category.trim()){re.error("Category required");return}U=`**${v.category}**: ${v.details}`;break;case"pattern":if(!v.name.trim()){re.error("Name required");return}U=`**${v.name}**
616
616
  ${v.description}`;break;case"decision":if(!v.title.trim()){re.error("Title required");return}U=`**${v.title}**
617
617
 
@@ -19,7 +19,7 @@
19
19
 
20
20
  <!-- PWA Manifest -->
21
21
  <link rel="manifest" href="/manifest.json">
22
- <script type="module" crossorigin src="/assets/index-tmxOfAxK.js"></script>
22
+ <script type="module" crossorigin src="/assets/index-B13tz7VP.js"></script>
23
23
  <link rel="stylesheet" crossorigin href="/assets/index-D7ljoxN0.css">
24
24
  </head>
25
25
  <body>