Files
LEDMatrix/scripts
ChuckandClaude Opus 5.5 7e066174d9 chore: remove dead code, deprecate unused plugin APIs (over-engineering audit)
Whole-tree audit. Every symbol was checked against core, the plugin
monorepo and all eight third-party plugins in plugins.json first.

- Deprecate (removal 3.10.0) plugin-facing methods nothing calls:
  LogoDownloader bulk download, ConfigManager backup/secret wrappers,
  APIHelper extras, BackgroundDataService poll API, PluginManager /
  PluginStateManager info readers, and a few CacheManager, FontManager,
  BaseOddsManager, DynamicTeamResolver methods and PluginTestCase.
  plugin_api_usage.py learns their receiver names; DEPRECATIONS doc
  regenerated.
- Remove core-internal dead code: CacheMetrics, Vegas status/stats
  plumbing, sync "new cycle" message (followers ignore unknown types),
  unused operation types, test-only PluginCatalog readers, IPC to_dict
  and ping, _parse_form_value, CacheStrategyProtocol, ErrorAggregator
  callbacks, duplicate web response helpers.
- Web UI: drop never-mounted json-file-manager.js, the example widget,
  utils/error_handler.js, four uncalled PluginAPI methods, and 29
  escapeHtml shims (call window.LEDEscape directly). Public globals,
  BaseWidget and widget names unchanged.
- Remove six one-off scripts (owner decision) and the unused markupsafe
  and pytest-mock pins.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 18:27:40 -04:00
..
2025-12-27 14:15:49 -05:00
2025-12-27 14:15:49 -05:00

Scripts

Helper scripts for installing, repairing, diagnosing and developing LEDMatrix. Most users only ever run the one-shot installer (see the project README); everything else here is for troubleshooting or development.

Status key: keep — part of install/runtime or referenced by docs, CI, tests or code; dev-only — for plugin/core development, not needed on a display; diagnostic — run by hand on a Pi when something is wrong.

Directories

Directory Status What it holds
install/ keep The installers: one-shot, services, sudoers/WiFi permissions, cache setup, and the shared lib_*.sh helpers first_time_install.sh sources
fix_perms/ keep Permission repair scripts, plus the two root helpers the web interface runs through sudo (safe_plugin_rm.sh, safe_pip_install.sh)
utils/ keep Scripts run by systemd units or the web interface (conditional web start, WiFi monitor, update verify, DNS fix, Pixlet config editor, cache clearing)
dev/ dev-only Plugin linking, Vegas density audit, Pillow smoke test
templates/ dev-only dev_preview.html, the page dev_server.py serves

Top-level scripts

Script Status What it does
build_rgbmatrix_nogil.sh keep Rebuilds the rgbmatrix Python binding so SwapOnVSync releases the GIL (docs/SCROLL_PERFORMANCE.md)
check_plugin.py dev-only Renders a plugin across every mode and matrix size and fails on crashes, overflow or golden-image drift
check_release_version.py keep Checks a release tag, CHANGELOG and src.__version__ agree (release-version-check workflow)
check_system_compatibility.sh diagnostic Pre-install check of hardware, OS (Trixie only), kernel, Python, packages, disk and network
dev_server.py dev-only Browser preview server for plugins without the display loop (http://localhost:5001)
diagnose_dependencies.sh diagnostic Investigates pip installs stuck on "Preparing metadata"
diagnose_web_interface.sh diagnostic Checks why the web interface is not reachable
download_pixlet.sh keep Downloads the bundled Pixlet binaries for Starlark apps (also run from the web UI)
emergency_reconnect.sh diagnostic Reconnects to your WiFi network if captive-portal testing leaves the Pi offline
frame_soak.py diagnostic Soaks a running display and reports how often frames reached the panel late (docs/SCROLL_PERFORMANCE.md)
install_dependencies_apt.py keep Dependency installer that tries apt packages first, then pip (installer Step 7, plugin loader)
install_plugin_dependencies.sh diagnostic Installs plugin requirements by hand when the automatic install fails
plugin_api_usage.py dev-only Scans core, the plugin monorepo and the registry's third-party plugins for callers of every @deprecated core method; its output is docs/DEPRECATIONS_3.8.md
prove_security.py keep Security property checks run by pre-commit
render_bench.py diagnostic Benchmarks the render loop against the panel's real refresh rate on a synthetic strip
render_plugin.py dev-only Runs a plugin's update() + display() and saves the frame as a PNG
reset_web_password.py keep Turns the optional web login off when the password is lost (sudo python3 scripts/reset_web_password.py; docs/WEB_INTERFACE_GUIDE.md)
run_plugin_tests.py dev-only Discovers and runs plugin test suites
scroll_speeds.py keep Shows and tries the scroll speeds your panel can display cleanly
sports_drift_report.py keep Counts the different bodies of each method across the nine scoreboards in a ledmatrix-plugins checkout (report-only CI job; docs/SPORTS_UNIFICATION.md)
troubleshoot_captive_portal.sh diagnostic Troubleshoots captive-portal WiFi setup after you can SSH back in
verify_installation.sh diagnostic Checks that an installation completed correctly
verify_wifi_setup.sh diagnostic Health check of the WiFi management setup

Hand-run tools nothing else references

Nothing in the repo (docs, CI, tests, other scripts or code) refers to these. They are run by hand and were kept by owner decision (October 2026); the old one-off schema fixers and WiFi test scripts listed here were removed.

Script What it does
audit_plugins.py AST security audit of plugin code; says it is "designed to run in CI" but no workflow runs it
audit_render_path.py Finds blocking calls reachable from a plugin's display()
sports_scroll_check.py Drives a sports scoreboard scroll on the panel and reports its pacing
dev/test_pillow_compat.py Pillow API smoke test to run after upgrading Pillow