Files
LEDMatrix/skins
ChuckandClaude Opus 5 c11fff9760 chore: mark skins unsupported, fix stale docs and preview size, prepare 3.4.0
Skins: no current scoreboard plugin builds on src.base_classes, so the only
skin hook (SportsCore._render_game) never runs. The plugin schema endpoint no
longer injects the Visual Skin dropdown, the store hides and refuses
"type": "skin" registry entries, and GET /api/v3/skins reports
supported: false with a message. Stored skin config still loads and saves.
src/skin_system/ and its tests are unchanged apart from the support flag.

Docs: check_plugin.py/render_plugin.py examples use --plugin; document
BasePlugin.get_update_interval() and its interaction with the manifest
update_interval; CLAUDE.md drops the stale template line number and
recommends display_manager.width/height.

Preview size: new src/display_geometry.py holds the size computation and
defaults DisplayManager uses (double-sided applied, chain_length default 2).
The web preview, /display/current, Starlark magnify default, sync handshake
and two dev scripts use it.

Release: __version__ 3.4.0, CHANGELOG 3.4.0 section plus a 3.3.0 tag note.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 15:34:04 -04:00
..

skins/

Not supported yet. The current scoreboard plugins don't render skins, so a skin placed here and selected in config has no effect, and the web UI and Plugin Store don't offer them. See docs/SKIN_SYSTEM.md.

User-installable visual skins for the sports scoreboards. Each subdirectory is one skin:

skins/<skin-id>/
  skin.json     # manifest
  skin.py       # renderer (a ScoreboardSkin subclass)
  preview.png   # optional
  • Install a skin: git clone <skin repo> skins/<skin-id>. The Plugin Store refuses registry entries with "type": "skin" while skins don't render.
  • Select it: set "skin": "<skin-id>" in the plugin's section of config/config.json. The web UI no longer shows a Visual Skin dropdown.
  • Build one: start from example-classic-baseball/ and read docs/CREATING_SKINS.md. Validate with python scripts/validate_skin.py --skin <skin-id>.

Skins survive plugin reinstalls/updates (that's why they live here and not in the plugin's directory). A skin is Python at the same trust level as a plugin — review before installing.