Repository navigation
docs: refresh plugin READMEs and fix manifest bugs - #92
Merged
Merged
Conversation
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Walked every plugin against its
manifest.json+config_schema.json+manager.pyand 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
AttributeErrorat load time)plugins/hello-world/manifest.json:class_namewas"HelloWorld Plugin"(with a space) but the actual class inmanager.py:19isHelloWorldPlugin. The plugin loader doesgetattr(module, class_name)(LEDMatrixsrc/plugin_system/plugin_loader.py:444) so this would have always failed. The "official starter template" was broken. Also bumped theversions[]array to include1.0.2to match theversionfield.plugins/stock-news/manifest.json: missing bothentry_pointandclass_nameentirely. Loader requiresclass_nameatloader.py:537-538. Addedentry_point: "manager.py"andclass_name: "StockNewsTickerPlugin"(verified frommanager.py:33). The plugin couldn't load at all before this fix.Schema-vs-README mismatches that would silently mislead users
ledmatrix-weather: README claimedlocationwas 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 thedisplay_formatplaceholder syntax. Verified against the 167-lineconfig_schema.json.ledmatrix-stocks: README documented top-level keys (display_duration,scroll_speed,font_size,stock_symbols, etc.) but the real schema nests them underdisplay.*/stocks.symbols/customization.*. Also: README said "Future Implementation: API integration with Alpha Vantage / Yahoo Finance" butdata_fetcher.py:29has been using Yahoo Finance directly with no API key for a long time. Full rewrite.hockey-scoreboard: documentedupdate_interval(15-300, default 60) as a top-level key; reality isdefaults.update_interval_seconds(default 3600) plus per-leagueupdate_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_speeddocumented as "1-200 pixels per second" but it's actually a multiplier (default1). Also missing 4 schema keys:update_interval,target_fps,scroll_loop,scroll_delay.static-image: README only documented the legacy single-image_pathform. The current schema andmanager.py:79-101use animagesarray withimage_config.*androtation_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 underglobal.*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 withSPOTIFY_CLIENT_ID(uppercase). Canonical form perspotify_client.py:50-53is"ledmatrix-music"key with lowercasespotify_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 usesInstalledAppFlow.run_local_server()(manager.py:346-348) which requires Desktop application. Fixed.hockey-scoreboard/manifest.json:last_updated: 2026-02-24was older than the latest version 1.2.4 released2026-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
27; actually30. Three plugins were missing from the README index entirely:f1-scoreboard,lacrosse-scoreboard,masters-tournament. Added them.5050; real port is5000.python run.py --emulatorwas wrong (no such flag). Replaced with the real options:scripts/dev_server.pyfor the dev preview, orEMULATOR=true python3 run.pyfor the full emulator path.cp -r ... /path/to/LEDMatrix/plugin-repos/) — added a note that the destination directory must match the plugin'sid.Plugin Store docs (
docs/PLUGIN_STORE_*.md)5050across all three docs. Bulk-fixed to5000.Submission/verification
SUBMISSION.md: same port fix.VERIFICATION.md: extended manifest checklist to requireclass_namematches the actual class (would have caught the hello-world bug),entry_pointfile existence,idmatches directory name, andlast_updatedmatches the latest version's release date.Files changed
Test plan
🤖 Generated with Claude Code
Summary by CodeRabbit
New Features
Documentation