@laststance/claude-plugin-dashboard 0.3.0 → 0.3.2

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.
Files changed (47) hide show
  1. package/README.md +1 -0
  2. package/dist/app.js +346 -211
  3. package/dist/cli.js +3 -1
  4. package/dist/components/ComponentBadges.d.ts +0 -9
  5. package/dist/components/ComponentBadges.js +0 -33
  6. package/dist/components/ComponentDetail.d.ts +32 -0
  7. package/dist/components/ComponentDetail.js +106 -0
  8. package/dist/components/ComponentList.d.ts +36 -2
  9. package/dist/components/ComponentList.js +105 -11
  10. package/dist/components/HelpOverlay.js +1 -0
  11. package/dist/components/KeyHints.d.ts +1 -0
  12. package/dist/components/KeyHints.js +8 -1
  13. package/dist/components/PluginDetail.d.ts +16 -3
  14. package/dist/components/PluginDetail.js +29 -3
  15. package/dist/services/componentService.d.ts +10 -42
  16. package/dist/services/componentService.js +19 -412
  17. package/dist/services/components/hookService.d.ts +17 -0
  18. package/dist/services/components/hookService.js +45 -0
  19. package/dist/services/components/index.d.ts +41 -0
  20. package/dist/services/components/index.js +126 -0
  21. package/dist/services/components/markdownService.d.ts +39 -0
  22. package/dist/services/components/markdownService.js +147 -0
  23. package/dist/services/components/serverService.d.ts +28 -0
  24. package/dist/services/components/serverService.js +69 -0
  25. package/dist/services/components/skillService.d.ts +48 -0
  26. package/dist/services/components/skillService.js +164 -0
  27. package/dist/services/components/utils.d.ts +23 -0
  28. package/dist/services/components/utils.js +42 -0
  29. package/dist/services/pluginActionsService.d.ts +31 -2
  30. package/dist/services/pluginActionsService.js +65 -6
  31. package/dist/store/index.d.ts +46 -0
  32. package/dist/store/index.js +47 -0
  33. package/dist/store/slices/marketplaceSlice.d.ts +344 -0
  34. package/dist/store/slices/marketplaceSlice.js +152 -0
  35. package/dist/store/slices/pluginSlice.d.ts +1544 -0
  36. package/dist/store/slices/pluginSlice.js +191 -0
  37. package/dist/store/slices/uiSlice.d.ts +147 -0
  38. package/dist/store/slices/uiSlice.js +126 -0
  39. package/dist/tabs/DiscoverTab.d.ts +8 -2
  40. package/dist/tabs/DiscoverTab.js +2 -2
  41. package/dist/tabs/EnabledTab.d.ts +8 -2
  42. package/dist/tabs/EnabledTab.js +2 -2
  43. package/dist/tabs/ErrorsTab.js +1 -1
  44. package/dist/tabs/InstalledTab.d.ts +8 -2
  45. package/dist/tabs/InstalledTab.js +2 -2
  46. package/dist/types/index.d.ts +47 -4
  47. package/package.json +7 -2
@@ -60,6 +60,28 @@ export interface ComponentInfo {
60
60
  /** Component type for display categorization */
61
61
  type: ComponentType;
62
62
  }
63
+ /**
64
+ * Extended component information with full SKILL.md parsing
65
+ * Used for Component detail view in PluginDetail panel
66
+ *
67
+ * @example
68
+ * {
69
+ * name: "sentry-code-review",
70
+ * description: "Analyze and resolve Sentry comments...",
71
+ * type: "skill",
72
+ * allowedTools: ["Read", "Edit", "Write", "Bash", "Grep"],
73
+ * fullDescription: "Full markdown body content...",
74
+ * filePath: "/Users/.../skills/sentry-code-review/SKILL.md"
75
+ * }
76
+ */
77
+ export interface ComponentDetailedInfo extends ComponentInfo {
78
+ /** Allowed tools from SKILL.md frontmatter (allowed-tools field) */
79
+ allowedTools?: string[];
80
+ /** Full markdown body content (after frontmatter) */
81
+ fullDescription?: string;
82
+ /** Absolute file path for reference */
83
+ filePath?: string;
84
+ }
63
85
  /**
64
86
  * Detailed component information for a plugin
65
87
  * Extends PluginComponents (counts) with actual component names and descriptions
@@ -273,7 +295,7 @@ export interface Settings {
273
295
  * Focus zones for keyboard navigation
274
296
  * Defines which UI area currently has keyboard focus
275
297
  */
276
- export type FocusZone = 'tabbar' | 'search' | 'list';
298
+ export type FocusZone = 'tabbar' | 'search' | 'list' | 'components';
277
299
  /**
278
300
  * Marketplace operation types
279
301
  */
@@ -306,12 +328,20 @@ export interface AppState {
306
328
  error: string | null;
307
329
  /** Status message */
308
330
  message: string | null;
309
- /** Current async operation (install/uninstall) */
310
- operation: 'idle' | 'installing' | 'uninstalling';
331
+ /** Current async operation (install/uninstall/update) */
332
+ operation: 'idle' | 'installing' | 'uninstalling' | 'updating';
311
333
  /** Plugin ID being operated on */
312
334
  operationPluginId: string | null;
313
335
  /** Whether confirmation dialog is showing */
314
336
  confirmUninstall: boolean;
337
+ /** Whether update all confirmation dialog is showing */
338
+ confirmUpdateAll: boolean;
339
+ /** Progress of bulk update operation */
340
+ updateProgress: {
341
+ current: number;
342
+ total: number;
343
+ pluginId: string;
344
+ } | null;
315
345
  /** Whether help overlay is showing */
316
346
  showHelp: boolean;
317
347
  /** Current marketplace operation */
@@ -328,6 +358,8 @@ export interface AppState {
328
358
  showMarketplaceActionMenu: boolean;
329
359
  /** Selected index in marketplace action menu */
330
360
  actionMenuSelectedIndex: number;
361
+ /** Selected component index within the current plugin */
362
+ selectedComponentIndex: number;
331
363
  }
332
364
  /**
333
365
  * Action types for useReducer
@@ -381,7 +413,7 @@ export type Action = {
381
413
  } | {
382
414
  type: 'START_OPERATION';
383
415
  payload: {
384
- operation: 'installing' | 'uninstalling';
416
+ operation: 'installing' | 'uninstalling' | 'updating';
385
417
  pluginId: string;
386
418
  };
387
419
  } | {
@@ -426,4 +458,15 @@ export type Action = {
426
458
  } | {
427
459
  type: 'MOVE_ACTION_MENU_SELECTION';
428
460
  payload: 'up' | 'down';
461
+ } | {
462
+ type: 'SET_COMPONENT_INDEX';
463
+ payload: number;
464
+ } | {
465
+ type: 'MOVE_COMPONENT_SELECTION';
466
+ payload: 'up' | 'down';
467
+ maxIndex: number;
468
+ } | {
469
+ type: 'ENTER_COMPONENT_MODE';
470
+ } | {
471
+ type: 'EXIT_COMPONENT_MODE';
429
472
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@laststance/claude-plugin-dashboard",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "Interactive CLI dashboard to manage Claude Code plugins",
5
5
  "license": "MIT",
6
6
  "author": "Ryota Murakami <ryota.murakami@laststance.io> (https://github.com/ryota-murakami)",
@@ -47,15 +47,19 @@
47
47
  "prettier": "prettier --ignore-unknown --write .",
48
48
  "test": "vitest",
49
49
  "test:run": "vitest run",
50
- "test:coverage": "vitest run --coverage"
50
+ "test:coverage": "vitest run --coverage",
51
+ "push-release-commit": "push-release-commit"
51
52
  },
52
53
  "dependencies": {
54
+ "@reduxjs/toolkit": "^2.11.2",
53
55
  "fullscreen-ink": "^0.1.0",
54
56
  "ink": "^5.1.0",
55
57
  "react": "^18.3.1",
58
+ "react-redux": "^9.2.0",
56
59
  "ts-pattern": "^5.9.0"
57
60
  },
58
61
  "devDependencies": {
62
+ "@laststance/npm-publish-tool": "^2.1.0",
59
63
  "@sindresorhus/tsconfig": "^6.0.0",
60
64
  "@types/node": "^22.10.2",
61
65
  "@types/react": "^18.3.18",
@@ -64,6 +68,7 @@
64
68
  "ink-testing-library": "^4.0.0",
65
69
  "lint-staged": "^16.2.7",
66
70
  "prettier": "^3.7.4",
71
+ "release-it": "^19.2.4",
67
72
  "typescript": "^5.7.2",
68
73
  "vitest": "^4.0.16"
69
74
  }