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 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
- [![npm](https://img.shields.io/npm/v/claude-code-marketplace)](https://www.npmjs.com/package/claude-code-marketplace)
5
+ [![npm version](https://img.shields.io/npm/v/claude-code-marketplace)](https://www.npmjs.com/package/claude-code-marketplace)
6
+ [![license](https://img.shields.io/npm/l/claude-code-marketplace)](LICENSE)
7
+ [![npm downloads](https://img.shields.io/npm/dm/claude-code-marketplace)](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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-code-marketplace",
3
- "version": "0.5.7",
3
+ "version": "0.5.8",
4
4
  "description": "Web UI for browsing and managing Claude Code marketplace plugins",
5
5
  "main": "server.js",
6
6
  "bin": {
package/public/app.js CHANGED
@@ -1299,6 +1299,12 @@ function handleKeydown(e) {
1299
1299
  return;
1300
1300
  }
1301
1301
 
1302
+ if (matchKey(e, 't')) {
1303
+ e.preventDefault();
1304
+ toggleTheme();
1305
+ return;
1306
+ }
1307
+
1302
1308
  const rows = getVisibleRows();
1303
1309
  const idx = getFocusedIndex(rows);
1304
1310
 
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 scanCustomizations(basePath, scope) {
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
- return res.json({ ...plugin.components, _pluginDir: plugin._pluginDir });
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