- Use get_logger() from src.logging_config instead of logging.getLogger()
in visual_display_manager.py to match project logging conventions
- Eliminate duplicate public/private weather draw methods — public draw_sun/
draw_cloud/draw_rain/draw_snow now delegate to the private _draw_* variants
so plugins get consistent pixel output in tests vs production
- Default install_deps=False in dev_server.py and render_plugin.py — dev
scripts don't need to run pip install; developers are expected to have
plugin deps installed in their venv already
- Guard plugins_dir fixture against PermissionError during directory iteration
- Fix PluginInstallManager.updateAll() to fall back to window.installedPlugins
when PluginStateManager.installedPlugins is empty (plugins_manager.js
populates window.installedPlugins independently of PluginStateManager)
- Remove 5 debug console.log statements from plugins_manager.js button setup
and initialization code
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds local development tools for rapid plugin iteration without deploying to RPi:
- VisualTestDisplayManager: renders real pixels via PIL (same fonts/interface as production)
- Dev preview server (Flask): interactive web UI with plugin picker, auto-generated config
forms, zoom/grid controls, and mock data support for API-dependent plugins
- CLI render script: render any plugin to PNG for AI-assisted visual feedback loops
- Updated test runner and conftest to auto-detect plugin-repos/ directory
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>