claude-code-marketplace 0.5.7 → 0.5.8
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 +3 -1
- package/package.json +1 -1
- package/public/app.js +6 -0
- package/public/index.html +1 -0
- package/server.js +11 -3
package/README.md
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
A web-based dashboard for browsing, installing, and managing [Claude Code](https://docs.anthropic.com/en/docs/claude-code) plugins across multiple marketplaces.
|
|
4
4
|
|
|
5
|
-
[](https://www.npmjs.com/package/claude-code-marketplace)
|
|
5
|
+
[](https://www.npmjs.com/package/claude-code-marketplace)
|
|
6
|
+
[](LICENSE)
|
|
7
|
+
[](https://www.npmjs.com/package/claude-code-marketplace)
|
|
6
8
|
|
|
7
9
|
<p align="center">
|
|
8
10
|
<img src="assets/main-dark.png" alt="Marketplace — dark theme" width="100%">
|
package/package.json
CHANGED
package/public/app.js
CHANGED
package/public/index.html
CHANGED
|
@@ -134,6 +134,7 @@
|
|
|
134
134
|
<tr><td><kbd>S</kbd></td><td>Focus scope filter</td></tr>
|
|
135
135
|
<tr><td><kbd>E</kbd></td><td>Expand / Collapse all</td></tr>
|
|
136
136
|
<tr><td><kbd>R</kbd></td><td>Refresh data</td></tr>
|
|
137
|
+
<tr><td><kbd>T</kbd></td><td>Toggle theme</td></tr>
|
|
137
138
|
<tr><td><kbd>Esc</kbd></td><td>Close panel / blur input</td></tr>
|
|
138
139
|
</table>
|
|
139
140
|
</div>
|
package/server.js
CHANGED
|
@@ -427,9 +427,8 @@ const VIRTUAL_PREFIX = '_custom/';
|
|
|
427
427
|
const SCOPE_LABELS = { user: 'User Customizations', project: 'Project Customizations' };
|
|
428
428
|
const EMPTY_SCOPE = { installed: false, enabled: false, version: null, installPath: null };
|
|
429
429
|
|
|
430
|
-
function
|
|
430
|
+
function rescanVirtualComponents(basePath, scope) {
|
|
431
431
|
const components = countComponents(basePath);
|
|
432
|
-
|
|
433
432
|
// Strip .md extensions from command/agent names for cleaner display
|
|
434
433
|
components.commands = components.commands.map(n => n.replace(/\.md$/, ''));
|
|
435
434
|
components.agents = components.agents.map(n => n.replace(/\.md$/, ''));
|
|
@@ -461,6 +460,12 @@ function scanCustomizations(basePath, scope) {
|
|
|
461
460
|
}
|
|
462
461
|
if (claudeMdFiles.length) components.claudeMd = claudeMdFiles;
|
|
463
462
|
|
|
463
|
+
return components;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
function scanCustomizations(basePath, scope) {
|
|
467
|
+
const components = rescanVirtualComponents(basePath, scope);
|
|
468
|
+
|
|
464
469
|
const hasAny = Object.values(components).some(v => Array.isArray(v) && v.length > 0);
|
|
465
470
|
if (!hasAny) return null;
|
|
466
471
|
|
|
@@ -605,7 +610,10 @@ app.get('/api/plugins/:pluginId/components', (req, res) => {
|
|
|
605
610
|
const plugin = findPlugin(pluginId, mktData);
|
|
606
611
|
|
|
607
612
|
if (plugin?.isVirtual) {
|
|
608
|
-
|
|
613
|
+
const scope = plugin.fullId.replace(VIRTUAL_PREFIX, '');
|
|
614
|
+
const comps = rescanVirtualComponents(plugin._pluginDir, scope);
|
|
615
|
+
comps._pluginDir = plugin._pluginDir;
|
|
616
|
+
return res.json(comps);
|
|
609
617
|
}
|
|
610
618
|
if (!plugin?._pluginDir) return res.status(404).json({ error: 'Plugin directory not found', pluginId });
|
|
611
619
|
|