镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

docs: refresh plugin READMEs and fix manifest bugs - #92

Merged
ChuckBuilds merged 15 commits into
mainfrom
docs/refresh-2026-04
Apr 8, 2026
Merged

ChuckBuilds merged 15 commits into
mainfrom
docs/refresh-2026-04

Conversation

@ChuckBuilds

@ChuckBuilds ChuckBuilds commented Apr 7, 2026 •

Copy link
Copy Markdown
Owner

Summary

Walked every plugin against its manifest.json + config_schema.json + manager.py and corrected stale documentation. Two real loader-breaking bugs found and fixed; the rest is README accuracy work. This is the plugins-repo half of a two-PR docs refresh — see the matching LEDMatrix PR for core docs fixes.

Loader-breaking manifest bugs (would AttributeError at load time)

  • plugins/hello-world/manifest.json: class_name was "HelloWorld Plugin" (with a space) but the actual class in manager.py:19 is HelloWorldPlugin. The plugin loader does getattr(module, class_name) (LEDMatrix src/plugin_system/plugin_loader.py:444) so this would have always failed. The "official starter template" was broken. Also bumped the versions[] array to include 1.0.2 to match the version field.
  • plugins/stock-news/manifest.json: missing both entry_point and class_name entirely. Loader requires class_name at loader.py:537-538. Added entry_point: "manager.py" and class_name: "StockNewsTickerPlugin" (verified from manager.py:33). The plugin couldn't load at all before this fix.
  • Verified all 30 plugins via a Python script — these were the only two with loader-critical metadata bugs.

Schema-vs-README mismatches that would silently mislead users

  • ledmatrix-weather: README claimed location was a single string; reality is three keys (location_city/state/country). Added the 5 display modes (was 3) including the previously undocumented radar and almanac modes. Documented the radar customization keys, the new height-≥48px requirements, and the display_format placeholder syntax. Verified against the 167-line config_schema.json.
  • ledmatrix-stocks: README documented top-level keys (display_duration, scroll_speed, font_size, stock_symbols, etc.) but the real schema nests them under display.* / stocks.symbols / customization.*. Also: README said "Future Implementation: API integration with Alpha Vantage / Yahoo Finance" but data_fetcher.py:29 has been using Yahoo Finance directly with no API key for a long time. Full rewrite.
  • hockey-scoreboard: documented update_interval (15-300, default 60) as a top-level key; reality is defaults.update_interval_seconds (default 3600) plus per-league update_intervals.{base,live,recent,upcoming,odds}. Also a "API Calls: 36/hour" calculation that didn't match the actual defaults. Rewrote the Display Settings section.
  • text-display: scroll_speed documented as "1-200 pixels per second" but it's actually a multiplier (default 1). Also missing 4 schema keys: update_interval, target_fps, scroll_loop, scroll_delay.
  • static-image: README only documented the legacy single-image_path form. The current schema and manager.py:79-101 use an images array with image_config.* and rotation_settings.* for built-in multi-image rotation. Added a multi-image example.
  • news: every "Global Settings" key was at the top level in the README but actually nested under global.* in the schema. A user following the old README would set keys the plugin completely ignores. Fixed.
  • ledmatrix-music: Spotify credentials were documented under the legacy "music" key with SPOTIFY_CLIENT_ID (uppercase). Canonical form per spotify_client.py:50-53 is "ledmatrix-music" key with lowercase spotify_client_id/spotify_client_secret/spotify_redirect_uri. Updated to show the canonical form first.
  • calendar: README told users to choose TV and Limited Input Device OAuth client type — and contradicted itself with "Desktop application" one section later. The plugin uses InstalledAppFlow.run_local_server() (manager.py:346-348) which requires Desktop application. Fixed.
  • hockey-scoreboard/manifest.json: last_updated: 2026-02-24 was older than the latest version 1.2.4 released 2026-03-02. Updated.

Stale UI navigation across 11 plugin READMEs

README files referenced a "Plugin Store tab" or "Plugins → Foo → Configuration" UI flow that doesn't exist. Real flow: open Plugin Manager tab → find plugin in Plugin Store section → click Install → open the plugin's tab in the second nav row to configure.

Fixed in: 7-segment-clock, clock-simple, countdown, football-scoreboard, hello-world, hockey-scoreboard, ledmatrix-flights, masters-tournament, olympics, calendar.

Repo-root README

  • Plugin count badge said 27; actually 30. Three plugins were missing from the README index entirely: f1-scoreboard, lacrosse-scoreboard, masters-tournament. Added them.
  • API curl example used port 5050; real port is 5000.
  • python run.py --emulator was wrong (no such flag). Replaced with the real options: scripts/dev_server.py for the dev preview, or EMULATOR=true python3 run.py for the full emulator path.
  • Manual install command was correct (cp -r ... /path/to/LEDMatrix/plugin-repos/) — added a note that the destination directory must match the plugin's id.

Plugin Store docs (docs/PLUGIN_STORE_*.md)

  • 27 occurrences of port 5050 across all three docs. Bulk-fixed to 5000.
  • "Navigate to Plugin Store tab" → "Plugin Manager tab → Plugin Store section".
  • Updated "Install from URL" UI nav to match the real "Install from GitHub" section name.

Submission/verification

  • SUBMISSION.md: same port fix.
  • VERIFICATION.md: extended manifest checklist to require class_name matches the actual class (would have caught the hello-world bug), entry_point file existence, id matches directory name, and last_updated matches the latest version's release date.

Files changed

25 files changed, 565 insertions(+), 521 deletions(-)

Test plan

  • Verify hello-world actually loads now (it would have AttributeError'd before this PR)
  • Verify stock-news actually loads now
  • Spot-check the new ledmatrix-weather README against the real plugin tab in the web UI
  • Spot-check the new ledmatrix-stocks README
  • Verify the Sports section count of 12 in the root README matches expectations

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added F1, UFC, Masters Tournament, and Lacrosse Scoreboard plugins; Sports plugin count increased.
  • Documentation

    • Web UI flow now centers on a Plugin Manager with a Plugin Store section; install flows favor the web UI and note restarting the display service.
    • Plugin Store API examples/ports updated (5050→5000); dev preview workflow introduced with an emulator alternative.
    • Expanded manifest/config validation guidance, many README updates, and added CONTRIBUTING, SECURITY, and Code of Conduct docs.

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant