mirror of
https://github.com/ChuckBuilds/LEDMatrix.git
synced 2026-10-04 14:25:08 +00:00
fix: web UI and src.common bugs (wifi wrong-password, plugin icon, starlark toggle, API caching, scroll/logo/font helpers) (#646)
- wifi: keep the "wrong_password:" prefix through the restore/AP fallback so the UI's incorrect-password prompt fires again. - /plugins/installed returns the manifest's icon (string only). - /starlark/apps/<id>/toggle coerces `enabled` and delegates to _toggle_starlark_app (disk before memory, no KeyError, "false" is false). - /api/v3/ JSON GETs are sent Cache-Control: no-store; non-JSON keeps 5s. - ScrollHelper.set_scrolling_image converts non-RGB input (alpha onto black); create/set_scrolling_image reset last_update_time like reset_scroll. - LogoHelper backs off a failed download per path for MISSING_LOGO_RECHECK_SECONDS; cleared on invalidate/clear_cache. - refresh_placeholder_timestamp saves atomically. - FontManager.clear_cache / _clear_plugin_font_cache bump cache_generation. - Odds manager: per-game logs to DEBUG; JSON decode error caught before RequestException (same cooldown). - element_style mangled continuations; startup validator skips null plugin blocks and reuses the controller's discovery. - src/common/README lists frame_timing, json_body, render_gate. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -318,13 +318,19 @@ class DisplayController:
|
||||
except Exception as e:
|
||||
logger.warning("Could not enable plugin health/resource monitoring: %s", e)
|
||||
|
||||
# Discover plugins. Before the plugin checks so they can reuse the
|
||||
# list: each discover_plugins() call rescans the plugins directory
|
||||
# and logs every plugin again.
|
||||
discovered_plugins = self.plugin_manager.discover_plugins()
|
||||
logger.info("Discovered %d plugin(s)", len(discovered_plugins))
|
||||
|
||||
# Only the plugin checks: validate_all() above has run the rest,
|
||||
# and running it again logged every config warning twice.
|
||||
try:
|
||||
from src.startup_validator import StartupValidator
|
||||
validator = StartupValidator(self.config_manager, self.plugin_manager,
|
||||
cache_manager=self.cache_manager)
|
||||
validator._validate_plugins()
|
||||
validator._validate_plugins(discovered_plugins=discovered_plugins)
|
||||
for warning in validator.warnings:
|
||||
logger.warning("Plugin validation warning: %s", warning)
|
||||
if validator.errors:
|
||||
@@ -333,10 +339,6 @@ class DisplayController:
|
||||
except Exception as e:
|
||||
logger.warning("Plugin validation could not be completed: %s", e)
|
||||
|
||||
# Discover plugins
|
||||
discovered_plugins = self.plugin_manager.discover_plugins()
|
||||
logger.info("Discovered %d plugin(s)", len(discovered_plugins))
|
||||
|
||||
# Check for on-demand plugin filter from cache
|
||||
on_demand_config = self.cache_manager.get('display_on_demand_config', max_age=3600)
|
||||
enabled_plugins = self._select_startup_plugins(discovered_plugins, on_demand_config)
|
||||
|
||||
Reference in New Issue
Block a user