mirror of
https://github.com/ChuckBuilds/LEDMatrix.git
synced 2026-08-02 01:08:05 +00:00
Deletions, each re-verified with a fresh repo-wide grep (core, web, scripts, docs, plugin monorepo) immediately before removal: Modules with zero live importers: - src/background_cache_mixin.py + src/generic_cache_mixin.py (134+150 LOC — referenced only by each other) - src/font_test_manager.py (134 LOC) - src/image_utils.py (22 LOC, self-documented deprecated) - src/layout_manager.py (408 LOC — only its own test imported it) + test/test_layout_manager.py - src/common/basketball_plugin_example.py (328 LOC sample) requirements.txt entries with zero importers in core (pre-plugin-era manager deps): icalevents, geopy, timezonefinder, unidecode. Plus the google-auth trio (google-auth-oauthlib, google-auth-httplib2, google-api-python-client): their only importer is the calendar PLUGIN, which declares all three in its own requirements.txt (verified in the monorepo and on an installed copy) — the plugin dependency installer owns them. Existing venvs are unaffected (removal doesn't uninstall); fresh installs get them when calendar is installed. Two stale references cleaned (a comment in test_pillow_compat.py, a directory listing in HOW_TO_RUN_TESTS.md). Full suite green except the two documented pre-existing failures (circuit_breaker mock drift, fixed in #400; clock-simple 64x32 overflow, pre-dates this series); all core entry modules verified importing cleanly under the emulator. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FqzC1nzTWL4kaqgMaQZFam
139 lines
4.0 KiB
JSON
139 lines
4.0 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"title": "March Madness Plugin Configuration",
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "Enable the March Madness tournament display"
|
|
},
|
|
"leagues": {
|
|
"type": "object",
|
|
"title": "Tournament Leagues",
|
|
"description": "Which NCAA tournaments to display",
|
|
"properties": {
|
|
"ncaam": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Show NCAA Men's Tournament games"
|
|
},
|
|
"ncaaw": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Show NCAA Women's Tournament games"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"favorite_teams": {
|
|
"type": "array",
|
|
"title": "Favorite Teams",
|
|
"description": "Team abbreviations to highlight (e.g., DUKE, UNC). Leave empty to show all teams equally.",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"uniqueItems": true,
|
|
"default": []
|
|
},
|
|
"display_options": {
|
|
"type": "object",
|
|
"title": "Display Options",
|
|
"x-collapsed": true,
|
|
"properties": {
|
|
"show_seeds": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Show tournament seeds (1-16) next to team names"
|
|
},
|
|
"show_round_logos": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Show round logo separators between game groups"
|
|
},
|
|
"highlight_upsets": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Highlight upset winners (higher seed beating lower seed) in gold"
|
|
},
|
|
"show_bracket_progress": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Show which teams are still alive in each region"
|
|
},
|
|
"scroll_speed": {
|
|
"type": "number",
|
|
"default": 1.0,
|
|
"minimum": 0.5,
|
|
"maximum": 5.0,
|
|
"description": "Scroll speed (pixels per frame)"
|
|
},
|
|
"scroll_delay": {
|
|
"type": "number",
|
|
"default": 0.02,
|
|
"minimum": 0.001,
|
|
"maximum": 0.1,
|
|
"description": "Delay between scroll frames (seconds)"
|
|
},
|
|
"target_fps": {
|
|
"type": "integer",
|
|
"default": 120,
|
|
"minimum": 30,
|
|
"maximum": 200,
|
|
"description": "Target frames per second"
|
|
},
|
|
"loop": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Loop the scroll continuously"
|
|
},
|
|
"dynamic_duration": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Automatically adjust display duration based on content width"
|
|
},
|
|
"min_duration": {
|
|
"type": "integer",
|
|
"default": 30,
|
|
"minimum": 10,
|
|
"maximum": 300,
|
|
"description": "Minimum display duration in seconds"
|
|
},
|
|
"max_duration": {
|
|
"type": "integer",
|
|
"default": 300,
|
|
"minimum": 30,
|
|
"maximum": 600,
|
|
"description": "Maximum display duration in seconds"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"data_settings": {
|
|
"type": "object",
|
|
"title": "Data Settings",
|
|
"x-collapsed": true,
|
|
"properties": {
|
|
"update_interval": {
|
|
"type": "integer",
|
|
"default": 300,
|
|
"minimum": 60,
|
|
"maximum": 3600,
|
|
"description": "How often to refresh tournament data (seconds). Automatically shortens to 60s when live games are detected."
|
|
},
|
|
"request_timeout": {
|
|
"type": "integer",
|
|
"default": 30,
|
|
"minimum": 5,
|
|
"maximum": 60,
|
|
"description": "API request timeout in seconds"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"required": ["enabled"],
|
|
"additionalProperties": false,
|
|
"x-propertyOrder": ["enabled", "leagues", "favorite_teams", "display_options", "data_settings"]
|
|
}
|