What's New in v3.1
137 commits since v3.0.0. This release focuses on the web UI configuration experience, multi-display support, Raspberry Pi 5, and a hardened plugin system.
✨ New Features
Web UI & Widgets
- Plugin File Manager widget — reusable inline file manager for plugins that manage files via
web_ui_actions. Any plugin can adopt it with two lines of schema config. Replaces the previous inaccessible iframe-based approach. Includes file cards, drag-and-drop upload, table editor with "Jump to today", per-category enable/disable, create/delete modals. - Time Picker widget — native
<input type="time">wrapper, returns HH:MM string - File Upload Single widget — inline image upload for array-table rows with thumbnail preview
- Array-table v2 — enum→
<select>, date-picker/time-picker cell types, file-upload-single cells, row edit modal for nested objects (layout, style), per-instance pagination - Color picker for RGB array fields — R/G/B inputs with bidirectional hex swatch sync
- Config Backup & Restore UI (#310)
- Google Calendar picker widget for dynamic multi-calendar selection (#274)
- Modular widget system — schedule, time-range, and common input widgets (#213)
- Dynamic font selection and font manager improvements (#232)
- LED RGB sequence, multiplexing, and panel type settings in web UI (#248)
- Update-available banner (#311)
- Plugin sorting, filtering, and improved Update All (#252)
- Shutdown button in Quick Actions (#234)
Hardware & Platform
- Raspberry Pi 5 / RP1 backend — UI for RP1 GPIO, slowdown guidance, hardware init error banner (#337)
- Multi-display wireless sync — extend scrolling across two LED matrices (#330)
Plugins & System
- Starlark Apps integration with schema-driven config and security hardening (#253)
- March Madness NCAA tournament plugin (#263)
- Timezone support for schedules and dim schedule feature (#218)
- Error detection, health monitoring, and code quality improvements (#223)
- Dev preview server and CLI render script (#264)
🔧 Fixes & Improvements
- Plugin loader: hash-based dependency detection (skip reinstall when requirements unchanged), security hardening against path injection
- WiFi AP mode, captive portal, and WiFi connect flow fixes (#348)
- Multiple browser tab support via SSE broadcaster (#349)
- Log viewer now includes
ledmatrix-weblogs (#350) - Plugin reconciler prefers
config.jsonover state manager for enabled state (#353) - Skip update for local-only plugins instead of failing (#354)
- Various plugin config UI fixes
⬆️ Upgrading
No breaking changes from v3.0.x. Pull and restart:
cd ~/LEDMatrix && git pull && sudo systemctl restart ledmatrix🙏 Thanks
As always — nothing is done, things are broken, more to come. Feedback and issues welcome on GitHub or Discord.