Files
LEDMatrix/CONTRIBUTING.md
T
Claude 4808132436 docs: correct semantically stale content across the user and developer guides
A second-pass content audit checked the guides' substantive claims
against the code (the first pass only fixed mechanical drift). Fixes:

- GETTING_STARTED: described booting a prebuilt SD image and seeing
  default clock/weather plugins — neither exists. Now documents the real
  install (Pi OS Lite + one-shot installer / first_time_install.sh) and
  that displays come from the Plugin Store. Duration and ordering
  instructions moved to the Rotation tab where the controls actually
  live.
- WEB_INTERFACE_GUIDE: three whole tabs were undocumented (Rotation,
  Backup & Restore, Tools) and the Display tab's Vegas Scroll section
  was unmentioned. Fonts overrides are per display element (not per
  plugin); Logs has an Auto-scroll checkbox (not a Pause button); the
  aspirational keyboard-shortcut list and no-JS claim removed.
- TROUBLESHOOTING: the hand-written service-file template (wrong user,
  wrong ExecStart, dropped the autostart gate) replaced with the real
  systemd/ units + install scripts; recovery steps no longer copy
  placeholder units verbatim; WiFi curl endpoint corrected to /api/v3/;
  cache-clearing advice now targets the real cache locations.
- ADVANCED_FEATURES: removed a false claim that CacheManager has no
  delete(); fixed two example snippets that raise TypeError
  (BackgroundDataService and get_config_file_mode signatures); fixed
  cache paths, a 5-minute TTL that is actually 1 hour, and the vegas
  table now links the complete 26-key reference.
- EMULATOR_SETUP_GUIDE: documented run.py flags that don't exist
  (--plugin/--test-plugins) removed in favor of dev_server.py and
  check_plugin.py; shipped emulator config values corrected (browser
  adapter default on :8888, not pygame).
- PLUGIN_QUICK_REFERENCE: drag-and-drop reordering is shipped, not
  'not yet supported'; discovery-fallback and registry-repo claims
  corrected. PLUGIN_API_REFERENCE: get_vegas_segment_width returns
  panels, not pixels. CONTRIBUTING: the repo uses flake8/mypy/bandit
  pre-commit hooks, not black/ruff, and tests need requirements-test.txt.
- SKIN_SYSTEM/DEVELOPER_QUICK_REFERENCE: stale module paths.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SXb4mKcAkVaxkeTb3YnAdr
2026-08-06 01:56:13 +00:00

4.2 KiB

Contributing to LEDMatrix

Thanks for considering a contribution! LEDMatrix is built with help from the community and we welcome bug reports, plugins, documentation improvements, and code changes.

Setting up a development environment

  1. Clone with submodules:
    git clone --recurse-submodules https://github.com/ChuckBuilds/LEDMatrix.git
    cd LEDMatrix
    
  2. For development without hardware, run the dev preview server:
    python3 scripts/dev_server.py
    # then open http://localhost:5001
    
    See docs/DEV_PREVIEW.md for details.
  3. To run the full display in emulator mode:
    EMULATOR=true python3 run.py
    
  4. To target real hardware on a Raspberry Pi, follow the install instructions in the root README.md.

Running the tests

pip install -r requirements.txt -r requirements-test.txt
pytest

See docs/HOW_TO_RUN_TESTS.md for details on test markers, the per-plugin tests, and the web-interface integration tests.

Submitting changes

  1. Open an issue first for non-trivial changes. This avoids wasted work on PRs that don't fit the project direction.
  2. Create a topic branch off main: feat/<short-description>, fix/<short-description>, docs/<short-description>.
  3. Keep PRs focused. One conceptual change per PR. If you find adjacent bugs while working, fix them in a separate PR.
  4. Follow the existing code style. The pre-commit hooks run flake8 (E9, F63, F7, F82 plus bugbear B checks), mypy on src/, bandit, and gitleaks — install them with pre-commit install so they run on every commit; HTML/JS in web_interface/ follows the patterns already in templates/v3/ and static/v3/.
  5. Update documentation alongside code changes. If you add a config key, document it in the relevant *.md file (or, for plugins, in config_schema.json so the form is auto-generated).
  6. Run the tests locally before opening the PR.
  7. Use the PR template.github/PULL_REQUEST_TEMPLATE.md will prompt you for what we need.

Commit message convention

Conventional Commits is encouraged but not strictly enforced:

  • feat: add NHL playoff bracket display
  • fix(plugin-loader): handle missing class_name in manifest
  • docs: correct web UI port in TROUBLESHOOTING.md
  • refactor(cache): consolidate strategy lookup

Keep the subject under 72 characters; put the why in the body.

Contributing a plugin

LEDMatrix plugins live in their own repository: ledmatrix-plugins. Plugin contributions go through that repo's SUBMISSION.md process. The hello-world plugin is the canonical starter template.

Reviewing pull requests

Maintainer review is by @ChuckBuilds. Community review is welcome on any open PR — leave constructive comments, test on your hardware if applicable, and call out anything unclear.

Code of conduct

This project follows the Contributor Covenant. By participating you agree to abide by its terms.

License

LEDMatrix is licensed under the GNU General Public License v3.0 or later. By submitting a contribution you agree to license it under the same terms (the standard "inbound = outbound" rule that GitHub applies by default).

LEDMatrix builds on rpi-rgb-led-matrix, which is GPL-2.0-or-later. The "or later" clause makes it compatible with GPL-3.0 distribution.