@laststance/claude-plugin-dashboard 0.1.1 → 0.2.1

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 (35) hide show
  1. package/README.md +70 -32
  2. package/dist/app.d.ts +29 -0
  3. package/dist/app.js +496 -69
  4. package/dist/components/AddMarketplaceDialog.d.ts +20 -0
  5. package/dist/components/AddMarketplaceDialog.js +18 -0
  6. package/dist/components/ComponentBadges.d.ts +32 -0
  7. package/dist/components/ComponentBadges.js +82 -0
  8. package/dist/components/HelpOverlay.d.ts +15 -0
  9. package/dist/components/HelpOverlay.js +51 -0
  10. package/dist/components/KeyHints.d.ts +6 -3
  11. package/dist/components/KeyHints.js +39 -10
  12. package/dist/components/MarketplaceList.d.ts +4 -2
  13. package/dist/components/MarketplaceList.js +7 -3
  14. package/dist/components/PluginDetail.js +2 -1
  15. package/dist/components/PluginList.d.ts +29 -2
  16. package/dist/components/PluginList.js +26 -5
  17. package/dist/components/SearchInput.js +1 -1
  18. package/dist/components/TabBar.d.ts +5 -3
  19. package/dist/components/TabBar.js +20 -8
  20. package/dist/services/componentService.d.ts +35 -0
  21. package/dist/services/componentService.js +178 -0
  22. package/dist/services/marketplaceActionsService.d.ts +44 -0
  23. package/dist/services/marketplaceActionsService.js +92 -0
  24. package/dist/services/pluginService.d.ts +10 -0
  25. package/dist/services/pluginService.js +22 -0
  26. package/dist/tabs/DiscoverTab.d.ts +5 -3
  27. package/dist/tabs/DiscoverTab.js +3 -2
  28. package/dist/tabs/EnabledTab.d.ts +24 -0
  29. package/dist/tabs/EnabledTab.js +26 -0
  30. package/dist/tabs/InstalledTab.d.ts +10 -3
  31. package/dist/tabs/InstalledTab.js +14 -10
  32. package/dist/tabs/MarketplacesTab.d.ts +10 -3
  33. package/dist/tabs/MarketplacesTab.js +12 -3
  34. package/dist/types/index.d.ts +71 -1
  35. package/package.json +11 -3
package/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # Claude Code Plugin Dashboard
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/@laststance/claude-plugin-dashboard)](https://www.npmjs.com/package/@laststance/claude-plugin-dashboard)
4
+ [![CI](https://github.com/laststance/claude-plugin-dashboard/actions/workflows/ci.yml/badge.svg)](https://github.com/laststance/claude-plugin-dashboard/actions/workflows/ci.yml)
5
+ [![codecov](https://codecov.io/gh/laststance/claude-plugin-dashboard/graph/badge.svg?token=LO8NM55XCF)](https://codecov.io/gh/laststance/claude-plugin-dashboard)
4
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
7
 
6
8
  An interactive CLI dashboard to browse, install, and manage [Claude Code](https://claude.ai/code) plugins.
@@ -12,12 +14,14 @@ Built with [Ink](https://github.com/vadimdemedes/ink) (React for CLI).
12
14
 
13
15
  ## Features
14
16
 
15
- - 🔍 **Discover** - Browse 100+ plugins from multiple marketplaces
17
+ - **Enabled** - Default view showing active plugins (installed AND enabled)
16
18
  - 📦 **Install/Uninstall** - Install and uninstall plugins directly from the dashboard
17
- - **Enable/Disable** - Toggle plugins on/off with a single key
18
- - 🏪 **Marketplaces** - Explore plugin sources
19
+ - 🔄 **Enable/Disable** - Toggle plugins on/off with a single key
20
+ - 🔍 **Discover** - Browse 100+ plugins from multiple marketplaces
21
+ - 🏪 **Marketplaces** - Add, remove, and update plugin sources
19
22
  - ⚠️ **Errors** - Debug plugin issues
20
- - ⌨️ **Keyboard-driven** - Full keyboard navigation with Emacs-style shortcuts
23
+ - ⌨️ **Focus Zone Navigation** - 3-zone keyboard model (TabBar Search → List)
24
+ - 🆘 **Help Overlay** - Press `h` for full keyboard shortcuts
21
25
  - 🎨 **Beautiful TUI** - Terminal UI that matches Claude Code's design
22
26
 
23
27
  ## Prerequisites
@@ -43,21 +47,26 @@ This opens the interactive TUI dashboard.
43
47
 
44
48
  **Keyboard Shortcuts:**
45
49
 
46
- | Key | Action |
47
- | --------- | ------------------------------------------- |
48
- | `←` `→` | Switch tabs |
49
- | `↑` `↓` | Navigate list |
50
- | `^P` `^N` | Navigate list (Emacs-style) |
51
- | `i` | Install selected plugin |
52
- | `u` | Uninstall selected plugin (with confirm) |
53
- | `Space` | Toggle plugin enable/disable |
54
- | `Enter` | View details / Toggle |
55
- | `/` | Search plugins |
56
- | `s` | Cycle sort options (Installs Name → Date) |
57
- | `S` | Toggle sort order (Asc/Desc) |
58
- | `Tab` | Next tab |
59
- | `Esc` | Clear search / Cancel |
60
- | `q` | Quit |
50
+ | Key | Action |
51
+ | --------- | --------------------------------------------- |
52
+ | `↑` `↓` | Navigate within zone / Move between zones |
53
+ | `←` `→` | Switch tabs (when TabBar focused) |
54
+ | `^P` `^N` | Navigate list (Emacs-style vertical) |
55
+ | `^B` `^F` | Switch tabs (Emacs-style horizontal) |
56
+ | `Tab` | Next tab |
57
+ | `i` | Install selected plugin |
58
+ | `u` | Uninstall selected plugin (with confirm) |
59
+ | `Space` | Toggle plugin enable/disable |
60
+ | `Enter` | Install (Discover) / Toggle (Installed) |
61
+ | `/` | Search (works on all plugin/marketplace tabs) |
62
+ | `s` | Cycle sort options (Installs → Name → Date) |
63
+ | `S` | Toggle sort order (Asc/Desc) |
64
+ | `a` | Add marketplace (Marketplaces tab) |
65
+ | `d` | Remove marketplace (Marketplaces tab) |
66
+ | `r` | Update marketplace (Marketplaces tab) |
67
+ | `h` | Show help overlay |
68
+ | `Esc` | Clear search / Close dialog / Cancel |
69
+ | `q`/`^C` | Quit |
61
70
 
62
71
  ### Command Line Mode
63
72
 
@@ -92,14 +101,14 @@ claude-plugin-dashboard help
92
101
 
93
102
  ## Dashboard Tabs
94
103
 
95
- ### Discover
104
+ ### Enabled (Default)
96
105
 
97
- Browse all available plugins from all configured marketplaces:
106
+ View your currently active plugins (installed AND enabled):
98
107
 
99
- - Search by name, description, or tags
100
- - Sort by install count, name, or date
101
- - Install plugins with `i` key
102
- - View plugin details including install count and description
108
+ - Shows only plugins that are ready to use
109
+ - Quick status overview of your Claude Code setup
110
+ - Toggle plugins on/off with `Space`
111
+ - Search with `/` to filter enabled plugins
103
112
 
104
113
  ### Installed
105
114
 
@@ -108,15 +117,26 @@ Manage your installed plugins:
108
117
  - See enabled (●) and disabled (◐) status at a glance
109
118
  - Toggle plugins on/off with `Space`
110
119
  - Uninstall plugins with `u` (with Y/N confirmation)
111
- - View installation details
120
+ - Search installed plugins with `/`
121
+
122
+ ### Discover
123
+
124
+ Browse all available plugins from all configured marketplaces:
125
+
126
+ - Search by name, description, or tags
127
+ - Sort by install count, name, or date
128
+ - Install plugins with `i` key or `Enter`
129
+ - View plugin details including install count and description
112
130
 
113
131
  ### Marketplaces
114
132
 
115
- Explore plugin sources:
133
+ Manage plugin sources:
116
134
 
117
- - View all configured marketplaces
118
- - See plugin counts per marketplace
119
- - Check last update times
135
+ - **Add** marketplace with `a` key (supports GitHub shorthand, Git URLs, local paths)
136
+ - **Remove** marketplace with `d` key (with confirmation)
137
+ - **Update** marketplace catalog with `r` key
138
+ - Search marketplaces with `/`
139
+ - View plugin counts and last update times
120
140
 
121
141
  ### Errors
122
142
 
@@ -198,8 +218,8 @@ Contributions are welcome! Please feel free to submit a Pull Request.
198
218
  ## Local Development
199
219
 
200
220
  ```bash
201
- git clone https://github.com/laststance/claude-code-plugin-dashboard.git
202
- cd claude-code-plugin-dashboard
221
+ git clone https://github.com/laststance/claude-plugin-dashboard.git
222
+ cd claude-plugin-dashboard
203
223
  pnpm install
204
224
  pnpm build
205
225
  pnpm start
@@ -224,6 +244,24 @@ MIT © [Laststance.io](https://github.com/laststance)
224
244
 
225
245
  ## Changelog
226
246
 
247
+ ### v0.2.0
248
+
249
+ - **Enabled tab**: New default view showing active plugins (installed AND enabled)
250
+ - **Focus zone navigation**: 3-zone keyboard model (TabBar → Search → List)
251
+ - **Emacs keybindings**: `Ctrl+B`/`Ctrl+F` for horizontal tab switching
252
+ - **Marketplace management**: Add (`a`), remove (`d`), update (`r`) plugin sources
253
+ - **Search on all tabs**: `/` now works on Enabled, Installed, and Marketplaces tabs
254
+ - **Help overlay**: Press `h` to show all keyboard shortcuts
255
+ - **Context-aware Enter**: Installs on Discover, toggles on Installed/Enabled
256
+ - **Plugin component types**: Show component types (skill, hook, agent) in detail view
257
+ - **CI/CD**: GitHub Actions workflow for lint, test, and build
258
+ - **96.67% test coverage**: Comprehensive Vitest and E2E test suites
259
+
260
+ ### v0.1.1
261
+
262
+ - Fix: Clear terminal screen when exiting dashboard
263
+ - Fix: Repository URL in package.json
264
+
227
265
  ### v0.1.0
228
266
 
229
267
  - Initial release
package/dist/app.d.ts CHANGED
@@ -2,6 +2,35 @@
2
2
  * Main App component for Claude Code Plugin Dashboard
3
3
  * Interactive TUI to browse and manage Claude Code plugins
4
4
  */
5
+ import type { AppState, Action, Plugin, FocusZone } from './types/index.js';
6
+ /**
7
+ * Initial application state
8
+ */
9
+ export declare const initialState: AppState;
10
+ /**
11
+ * Get available focus zones for the current tab
12
+ * Errors tab has no search zone since it doesn't support filtering
13
+ * @param activeTab - The currently active tab
14
+ * @returns Array of available focus zones in navigation order
15
+ */
16
+ export declare function getAvailableZones(activeTab: AppState['activeTab']): FocusZone[];
17
+ /**
18
+ * State reducer for application state management
19
+ */
20
+ export declare function appReducer(state: AppState, action: Action): AppState;
21
+ /**
22
+ * Get items array for current tab with search filter applied
23
+ * @param state - Current app state
24
+ * @returns Filtered array of items for the active tab
25
+ * @example
26
+ * getItemsForTab({ activeTab: 'installed', searchQuery: 'su', plugins: [...] })
27
+ * // => Only installed plugins matching 'su'
28
+ */
29
+ export declare function getItemsForTab(state: AppState): unknown[];
30
+ /**
31
+ * Get filtered and sorted plugins for discover tab
32
+ */
33
+ export declare function getFilteredPlugins(state: AppState): Plugin[];
5
34
  /**
6
35
  * Main App component
7
36
  */