mirror of
https://github.com/ChuckBuilds/LEDMatrix.git
synced 2026-04-10 21:03:01 +00:00
PLUGIN_STORE_GUIDE.md
- 19 occurrences of port 5050 -> 5000
- All API paths missing /v3 (e.g. /api/plugins/install ->
/api/v3/plugins/install). Bulk fix.
PLUGIN_REGISTRY_SETUP_GUIDE.md
- Same port + /api/v3 fixes (3 occurrences each)
- "Go to Plugin Store tab" -> "Open the Plugin Manager tab and scroll
to the Install from GitHub section" (the real flow for registry
setup is the GitHub install section, not the Plugin Store search)
PLUGIN_CONFIG_QUICK_START.md
- Port 5001 -> 5000 (5001 is the dev_server.py default, not the web UI)
- "Plugin Store tab" install flow -> real Plugin Manager + Plugin Store
section + per-plugin tab in second nav row
- Removed reference to PLUGIN_CONFIG_TABS_SUMMARY.md (archived doc)
PLUGIN_CONFIGURATION_TABS.md
- "Plugin Management vs Configuration" section confusingly described
a "Plugins Tab" that doesn't exist as a single thing. Rewrote to
describe the real two-piece structure: Plugin Manager tab (browse,
install, toggle) vs per-plugin tabs (configure individual plugins).
PLUGIN_DEPENDENCY_GUIDE.md
- Port 5001 -> 5000
PLUGIN_DEPENDENCY_TROUBLESHOOTING.md
- Wrong port (8080) and wrong UI nav ("Plugin Store or Plugin
Management"). Fixed to the real flow.
PLUGIN_QUICK_REFERENCE.md
- "Plugin Location: ./plugins/ directory" -> default is plugin-repos/
(verified in config/config.template.json:130 and
display_controller.py:132). plugins/ is a fallback.
- File structure diagram showed plugins/ -> plugin-repos/.
- Web UI install flow: "Plugin Store tab" -> "Plugin Manager tab ->
Plugin Store section". Also fixed Configure ⚙️ button (doesn't
exist) and "Drag and drop reorder" (not implemented).
- API examples: replaced ad-hoc Python pseudocode with real curl
examples against /api/v3/plugins/* endpoints. Pointed at
REST_API_REFERENCE.md for the full list.
- "Migration Path Phase 1-5" was a roadmap written before the plugin
system shipped. The plugin system is now stable and live. Removed
the migration phases as they're history, not a roadmap.
- "Quick Migration" section called scripts/migrate_to_plugins.py
which doesn't exist anywhere in the repo. Removed.
- "Plugin Registry Structure" referenced
ChuckBuilds/ledmatrix-plugin-registry which doesn't exist. The
real registry is ChuckBuilds/ledmatrix-plugins. Fixed.
- "Next Steps" / "Questions to Resolve" sections were
pre-implementation planning notes. Replaced with a "Known
Limitations" section that documents the actually-real gaps
(sandboxing, resource limits, ratings, auto-updates).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
5.4 KiB
5.4 KiB
Plugin Configuration Tabs - Quick Start Guide
🚀 Quick Start (1 Minute)
For Users
- Open the web interface:
http://your-pi-ip:5000 - Open the Plugin Manager tab
- Find a plugin in the Plugin Store section (e.g., "Hello World") and click Install
- Notice a new tab appears in the second nav row with the plugin's name
- Click that tab to configure the plugin
- Modify settings and click Save
- From Overview, click Restart Display Service to see changes
That's it! Each installed plugin automatically gets its own configuration tab.
🎯 What You Get
Before This Feature
- All plugin settings mixed together in the Plugins tab
- Generic key-value inputs for configuration
- Hard to know what each setting does
- No validation or type safety
After This Feature
- ✅ Each plugin has its own dedicated tab
- ✅ Configuration forms auto-generated from schema
- ✅ Proper input types (toggles, numbers, dropdowns)
- ✅ Help text explaining each setting
- ✅ Input validation (min/max, length, etc.)
- ✅ One-click reset to defaults
📋 Example Walkthrough
Let's configure the "Hello World" plugin:
Step 1: Navigate to Configuration Tab
After installing the plugin, you'll see a new tab:
[Overview] [General] [...] [Plugins] [Hello World] ← New tab!
Step 2: Configure Settings
The tab shows a form like this:
Hello World Configuration
A simple test plugin that displays a customizable message
✓ Enable or disable this plugin
[Toggle Switch: ON]
Message
The greeting message to display
[Hello, World! ]
Show Time
Show the current time below the message
[Toggle Switch: ON]
Color
RGB color for the message text [R, G, B]
[255, 255, 255 ]
Display Duration
How long to display in seconds
[10 ]
[Save Configuration] [Back] [Reset to Defaults]
Step 3: Save and Apply
- Modify any settings
- Click Save Configuration
- See confirmation: "Configuration saved for hello-world. Restart display to apply changes."
- Restart the display service
🛠️ For Plugin Developers
Minimal Setup
Create config_schema.json in your plugin directory:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"default": true,
"description": "Enable this plugin"
},
"message": {
"type": "string",
"default": "Hello!",
"description": "Message to display"
}
}
}
Reference it in manifest.json:
{
"id": "my-plugin",
"icon": "fas fa-star", // Optional: add a custom icon!
"config_schema": "config_schema.json"
}
Done! Your plugin now has a configuration tab.
Bonus: Add an icon field for a custom tab icon! Use Font Awesome icons (fas fa-star), emoji (⭐), or custom images. See PLUGIN_CUSTOM_ICONS.md for the full guide.
🎨 Supported Input Types
Boolean → Toggle Switch
{
"type": "boolean",
"default": true
}
Number → Number Input
{
"type": "integer",
"default": 60,
"minimum": 1,
"maximum": 300
}
String → Text Input
{
"type": "string",
"default": "Hello",
"maxLength": 50
}
Array → Comma-Separated Input
{
"type": "array",
"items": {"type": "integer"},
"default": [255, 0, 0]
}
User enters: 255, 0, 0
Enum → Dropdown
{
"type": "string",
"enum": ["small", "medium", "large"],
"default": "medium"
}
💡 Pro Tips
For Users
- Reset Anytime: Use "Reset to Defaults" to restore original settings
- Navigate Back: Switch to the Plugin Manager tab to see the full list of installed plugins
- Check Help Text: Each field has a description explaining what it does
- Restart Required: Remember to restart the display service from Overview after saving
For Developers
- Add Descriptions: Users see these as help text - be descriptive!
- Use Constraints: Set min/max to guide users to valid values
- Sensible Defaults: Make sure defaults work without configuration
- Test Your Schema: Use a JSON Schema validator before deploying
- Order Matters: Properties appear in the order you define them
🔧 Troubleshooting
Tab Not Showing
- Check that
config_schema.jsonexists - Verify
config_schemais inmanifest.json - Refresh the page
- Check browser console for errors
Settings Not Saving
- Ensure plugin is properly installed
- Restart the display service after saving
- Check that all required fields are filled
- Look for validation errors in browser console
Form Looks Wrong
- Validate your JSON Schema
- Check that types match your defaults
- Ensure descriptions are strings
- Look for JavaScript errors
📚 Next Steps
- Read the full documentation: PLUGIN_CONFIGURATION_TABS.md
- Check the configuration architecture: PLUGIN_CONFIG_ARCHITECTURE.md
- Browse example plugins in the
ledmatrix-plugins
repo, especially
plugins/hello-world/andplugins/clock-simple/ - Join the community for help and suggestions
🎉 That's It!
You now have dynamic, type-safe configuration tabs for each plugin. No more manual JSON editing or cluttered interfaces - just clean, organized plugin configuration.
Enjoy! 🚀