diff --git a/docs/ADVANCED_FEATURES.md b/docs/ADVANCED_FEATURES.md index ec94df6c..a9742155 100644 --- a/docs/ADVANCED_FEATURES.md +++ b/docs/ADVANCED_FEATURES.md @@ -984,8 +984,11 @@ These core utilities **already handle permissions** - you don't need to call per If you encounter permission issues: ```bash -# Fix all permissions at once -sudo ./scripts/fix_permissions.sh +# Targeted permission fixes (see scripts/fix_perms/README.md) +sudo ./scripts/fix_perms/fix_assets_permissions.sh # assets/ tree (logos, fonts) +sudo ./scripts/fix_perms/fix_cache_permissions.sh # all cache directories +sudo ./scripts/fix_perms/fix_plugin_permissions.sh # plugin directories +sudo ./scripts/fix_perms/fix_web_permissions.sh # web interface files # Fix specific directory sudo chown -R ledpi:ledpi /home/ledpi/LEDMatrix/config @@ -1017,7 +1020,7 @@ stat -c "%a %n" config/config.json ## Related Documentation -- [PLUGIN_DEVELOPMENT.md](PLUGIN_DEVELOPMENT.md) - Creating plugins with Vegas/on-demand support +- [PLUGIN_DEVELOPMENT_GUIDE.md](PLUGIN_DEVELOPMENT_GUIDE.md) - Creating plugins with Vegas/on-demand support - [WEB_INTERFACE_GUIDE.md](WEB_INTERFACE_GUIDE.md) - Using on-demand controls in web UI - [PLUGIN_API_REFERENCE.md](PLUGIN_API_REFERENCE.md) - Complete API documentation - [DEVELOPMENT.md](DEVELOPMENT.md) - Development environment and testing diff --git a/docs/DEVELOPER_QUICK_REFERENCE.md b/docs/DEVELOPER_QUICK_REFERENCE.md index 93ca8e16..3b05dcf9 100644 --- a/docs/DEVELOPER_QUICK_REFERENCE.md +++ b/docs/DEVELOPER_QUICK_REFERENCE.md @@ -31,7 +31,7 @@ POST /api/v3/system/action **Base URL**: `http://your-pi-ip:5000/api/v3` -See [API_REFERENCE.md](API_REFERENCE.md) for complete documentation. +See [REST_API_REFERENCE.md](REST_API_REFERENCE.md) for complete documentation. ## Display Manager Quick Methods @@ -195,7 +195,7 @@ LEDMatrix/ │ ├── config.json # Main configuration │ └── config_secrets.json # API keys and secrets ├── docs/ # Documentation -│ ├── API_REFERENCE.md +│ ├── REST_API_REFERENCE.md │ ├── PLUGIN_API_REFERENCE.md │ └── ... └── src/ @@ -207,7 +207,7 @@ LEDMatrix/ ## Quick Links -- [Complete API Reference](API_REFERENCE.md) +- [Complete REST API Reference](REST_API_REFERENCE.md) - [Plugin API Reference](PLUGIN_API_REFERENCE.md) - [Plugin Development Guide](PLUGIN_DEVELOPMENT_GUIDE.md) - [Advanced Patterns](ADVANCED_PLUGIN_DEVELOPMENT.md) diff --git a/docs/HOW_TO_RUN_TESTS.md b/docs/HOW_TO_RUN_TESTS.md index 5dde96ec..a13b9628 100644 --- a/docs/HOW_TO_RUN_TESTS.md +++ b/docs/HOW_TO_RUN_TESTS.md @@ -335,15 +335,15 @@ pytest --cov=src --cov-report=html ## Continuous Integration -The repo runs -[`.github/workflows/security-audit.yml`](../.github/workflows/security-audit.yml) -(bandit + semgrep) on every push. A pytest CI workflow at -`.github/workflows/tests.yml` is queued to land alongside this -PR ([ChuckBuilds/LEDMatrix#307](https://github.com/ChuckBuilds/LEDMatrix/pull/307)); -the workflow file itself was held back from that PR because the -push token lacked the GitHub `workflow` scope, so it needs to be -committed separately by a maintainer. Once it's in, this section -will be updated to describe what the job runs. +The repo runs the pytest suite via +[`.github/workflows/test.yml`](../.github/workflows/test.yml) on every +push and pull request: a plugin-safety job (harness, visual rendering +and plugin-matrix tests) plus a unit-test job that runs an explicit +allowlist of suites — new test files must be added to that list to run +in CI. Release version consistency is checked by +[`.github/workflows/release-version-check.yml`](../.github/workflows/release-version-check.yml). +Bandit, flake8, mypy and gitleaks run as pre-commit hooks (see +`.pre-commit-config.yaml`), not in CI. ## Best Practices diff --git a/docs/MIGRATION_GUIDE.md b/docs/MIGRATION_GUIDE.md index 422cd064..b64269b9 100644 --- a/docs/MIGRATION_GUIDE.md +++ b/docs/MIGRATION_GUIDE.md @@ -86,7 +86,7 @@ The plugin system has been enhanced but remains backward compatible with existin If you encounter issues during migration: -1. Check the [README.md](README.md) for current installation and usage instructions +1. Check the [project root README](../README.md) for current installation and usage instructions 2. Review script README files: - [`scripts/install/README.md`](../scripts/install/README.md) - Installation scripts documentation - [`scripts/fix_perms/README.md`](../scripts/fix_perms/README.md) - Permission scripts documentation diff --git a/docs/PLUGIN_CUSTOM_ICONS.md b/docs/PLUGIN_CUSTOM_ICONS.md index da9db63c..79cabc5b 100644 --- a/docs/PLUGIN_CUSTOM_ICONS.md +++ b/docs/PLUGIN_CUSTOM_ICONS.md @@ -296,7 +296,7 @@ Want to change icons programmatically? While not officially supported, you could ## Related Documentation - [Plugin Configuration Tabs](PLUGIN_CONFIGURATION_TABS.md) - Main plugin tabs documentation -- [Plugin Development Guide](plugin_docs/) - How to create plugins +- [Plugin Development Guide](PLUGIN_DEVELOPMENT_GUIDE.md) - How to create plugins - [Font Awesome Icons](https://fontawesome.com/icons) - Browse all available icons - [Emoji Reference](https://unicode.org/emoji/charts/full-emoji-list.html) - All emoji options diff --git a/docs/PLUGIN_DEPENDENCY_TROUBLESHOOTING.md b/docs/PLUGIN_DEPENDENCY_TROUBLESHOOTING.md index 755760c9..1f33cb88 100644 --- a/docs/PLUGIN_DEPENDENCY_TROUBLESHOOTING.md +++ b/docs/PLUGIN_DEPENDENCY_TROUBLESHOOTING.md @@ -169,6 +169,6 @@ If you continue to experience issues: ## Related Documentation - [Plugin Dependency Guide](PLUGIN_DEPENDENCY_GUIDE.md) -- [Plugin Development Guide](docs/plugin_development.md) -- [Troubleshooting Quick Start](TROUBLESHOOTING_QUICK_START.md) +- [Plugin Development Guide](PLUGIN_DEVELOPMENT_GUIDE.md) +- [Troubleshooting](TROUBLESHOOTING.md) diff --git a/docs/PLUGIN_DEVELOPMENT_GUIDE.md b/docs/PLUGIN_DEVELOPMENT_GUIDE.md index 31cafc5e..f587629c 100644 --- a/docs/PLUGIN_DEVELOPMENT_GUIDE.md +++ b/docs/PLUGIN_DEVELOPMENT_GUIDE.md @@ -667,5 +667,5 @@ For your plugin to work well in the plugin store: - [Advanced Plugin Development](ADVANCED_PLUGIN_DEVELOPMENT.md) - Advanced patterns and examples - [Plugin Quick Reference](PLUGIN_QUICK_REFERENCE.md) - Quick development reference - [Plugin Configuration Guide](PLUGIN_CONFIGURATION_GUIDE.md) - Configuration setup -- [Plugin Store User Guide](PLUGIN_STORE_USER_GUIDE.md) - Using the plugin store +- [Plugin Store Guide](PLUGIN_STORE_GUIDE.md) - Using the plugin store diff --git a/docs/PLUGIN_REGISTRY_SETUP_GUIDE.md b/docs/PLUGIN_REGISTRY_SETUP_GUIDE.md index 7c1569b8..ffaeda18 100644 --- a/docs/PLUGIN_REGISTRY_SETUP_GUIDE.md +++ b/docs/PLUGIN_REGISTRY_SETUP_GUIDE.md @@ -323,16 +323,22 @@ curl -X POST http://pi:5000/api/v3/plugins/install-from-url \ ### Regular Updates ```bash -# Update stars/downloads counts -python3 scripts/update_stats.py +# Refresh local clones of all plugin repos +python3 scripts/update_plugin_repos.py -# Validate all plugin entries -python3 scripts/validate_registry.py +# (Re-)create local plugin repo checkouts from the registry +python3 scripts/setup_plugin_repos.py -# Check for plugin updates -python3 scripts/check_updates.py +# Audit installed plugins for manifest/schema problems +python3 scripts/audit_plugins.py + +# Validate a single plugin +python3 scripts/check_plugin.py ``` +Registry regeneration (`update_registry.py`) lives in the +`ledmatrix-plugins` monorepo, not in this repo. + ## Converting Existing Plugins To convert your existing plugins (hello-world, clock-simple) to this system: @@ -400,7 +406,7 @@ print(f'Found {len(registry[\"plugins\"])} plugins') ## References -- Plugin Store Implementation: See `PLUGIN_STORE_IMPLEMENTATION_SUMMARY.md` -- User Guide: See `PLUGIN_STORE_USER_GUIDE.md` +- Plugin Store Implementation: See `PLUGIN_IMPLEMENTATION_SUMMARY.md` +- User Guide: See `PLUGIN_STORE_GUIDE.md` - Architecture: See `PLUGIN_ARCHITECTURE_SPEC.md` diff --git a/docs/PLUGIN_STORE_GUIDE.md b/docs/PLUGIN_STORE_GUIDE.md index 4482d5b9..421c99de 100644 --- a/docs/PLUGIN_STORE_GUIDE.md +++ b/docs/PLUGIN_STORE_GUIDE.md @@ -481,13 +481,13 @@ A: Yes, if a plugin needs API keys, it can access them like core managers do. A: Most plugins are small (1-5MB). Check individual plugin documentation for specific requirements. **Q: Can I create my own plugin?** -A: Yes! See [PLUGIN_DEVELOPMENT.md](PLUGIN_DEVELOPMENT.md) for instructions. +A: Yes! See [PLUGIN_DEVELOPMENT_GUIDE.md](PLUGIN_DEVELOPMENT_GUIDE.md) for instructions. --- ## Related Documentation -- [PLUGIN_DEVELOPMENT.md](PLUGIN_DEVELOPMENT.md) - Create your own plugins +- [PLUGIN_DEVELOPMENT_GUIDE.md](PLUGIN_DEVELOPMENT_GUIDE.md) - Create your own plugins - [PLUGIN_API_REFERENCE.md](PLUGIN_API_REFERENCE.md) - Plugin API documentation -- [PLUGIN_ARCHITECTURE.md](PLUGIN_ARCHITECTURE.md) - Plugin system architecture +- [PLUGIN_ARCHITECTURE_SPEC.md](PLUGIN_ARCHITECTURE_SPEC.md) - Plugin system architecture (historical) - [REST_API_REFERENCE.md](REST_API_REFERENCE.md) - Complete REST API reference