Changelog
v2.6.2
- Added a heartbeat every 15 minutes to mDNS to hopefully keep that from dying after long uptimes.
v2.6.1
- Now logging protocol authorization errors to console to avoid spaming get_update errors on reboot. fixes #7
v2.6.0
Features
- Added
page.setBadge()andpage.clearBadge()methods to display Bootstrap badge indicators on navbar entries - Added support for URL-based changelogs in
ota_manifest.jsonβ changelog field can now point to a remote markdown file instead of inline text - Changelog is now written to a separate per-board markdown file and linked in
ota_manifest.json - Added
ota_completemessage handling for cleaner post-update UI flow
Improvements
- System page config is now refreshed automatically when the system page is opened
Bug Fixes
- Fixed OTA progress not completing cleanly when firmware update finishes (fixes #4)
- Fixed
ota_manifest.jsonnot linking to separate changelog files (fixes #3)
v2.5.0
Features
- Added static IP address support for network configuration
- Added
onConfigUpdatedHook()virtual function toBaseChannel, called inChannelController::handleConfigCommandto simplify config change handling in channels - Added
setWindow()method toRollingAverage
Improvements
- Separated active and passive buzzer melodies; added morse characters to active buzzer melody list
Bug Fixes
NavicoControllernow respects theapp_enable_mfdconfiguration option
v2.4.1
Bug Fixes
- Fixed stale cookies when password has changed and double submit of login when pressing Enter
- Fixed double instantiation of channels
- Fixed login field corner styling
- Fixed warning with missing
ConfigManagerinclude - Fixed multiple callbacks being added in discovery callback
- Fixed alerts being overwritten instead of appended
Improvements
- Added
MQTTController.getBoardKey()for getting UUID vs hostname to fix HomeAssistant integration
v2.3.0
- Added
get(i)method toRollingAverageclass for accessing samples by index - Added build support for all ESP32 chip families (esp32, esp32-c3, esp32-c5, esp32-c6, esp32-s2, esp32-s3)
v2.2.3
- Forgot to include the gulpfile in its new location.
v2.2.2
- Consolidated build scripts into single
yarrboard_framework.py(replacesgit_version.py,gulp.py,gulpfile.mjs) - Added
custom_enable_minify_htmlplatformio.ini configuration option for HTML minification control - Improved MQTT error handling and connection management:
- Added
onDisconnect()callback hook to detect MQTT disconnection events - Added
onError()callback hook to handle MQTT connection errors - Added
_firstConnectionflag to track initial connection attempts - First connection errors now properly disconnect and notify admin users with error details
- Changed
connect()method to accept optionalwaitBlockingparameter for non-blocking connection attempts - Replaced
disconnect()calls withforceStop()for proper MQTT client shutdown
- Added
v2.2.1
- Moved MQTT configuration handling from
ProtocolControllertoMQTTControllerfor better separation of concerns - Added MQTT connection status to stats hook via
generateStatsHook()instead of embedding in protocol controller - Improved MQTT connection management with proper connect/disconnect lifecycle and connection retry handling
- gulp is no longer minifying JS as it was causing problems.
v2.2.0
ποΈ Controller System
- Added
generateCapabilitiesHook()toBaseControllerfor reporting hardware capabilities- Controllers can now populate a
capabilitiesobject in the board configuration - Enables frontend to conditionally show/hide features based on available hardware
- Implemented in
BuzzerController(reportsbuzzerandbuzzer_is_active) - Implemented in
RGBController(reportsrgbandrgb_count)
- Controllers can now populate a
π Frontend & Web UI
- Settings navigation menu layout is now responsive
- Desktop/tablet (sm+): Left-aligned text, vertical layout
- Mobile (xs): Centered text, collapsed layout
v2.1.0
π Frontend & Web UI
Settings & Configuration
- Added JavaScript API for custom settings panels via
api.addSettingsPanel()and related functions - Settings page now allows consolidation of settings in a consistent UI
- Added custom settings panel to example firmware
Firmware Management
- Added ESP Web Tools firmware flasher integration
- Added Improv WiFi support to firmware upload page
- Added firmware manifest generation (
full_manifest.json) with list of all available firmwares - Enhanced manifest JSON to include title, board image, and description
π Networking & WiFi
- Fixed Improv WiFi implementation (both Bluetooth and WiFi now working)
- Re-factored network controllers to error if WiFi not connected and restart after Improv connects
- Improved WiFi reconnection logic
- When changing WiFi fails, now reconnects to original network
π οΈ Developer Experience & Build System
- Updated
make_release.pyto point todocs/releasesby default - Refactored git references: renamed
github_urltogit_urlfor consistency across the project - Git hash and URL links now conditionally displayed/linked based on availability
π Bug Fixes
- Fixed unauthorized message issue by skipping queue and sending directly for non-important messages
v2.0.1
- Fixed a pathing issue with the gulp script on Windows.
v2.0.0
Note: v2.0.0 represents a major architectural and usability milestone. While not yet declared βproduction-ready,β this release significantly expands framework capabilities, refines core systems, and stabilizes the frontend, protocol, and OTA infrastructure.
β¨ Major Features & Enhancements
Framework & Core Architecture
- HTML/CSS/JS assets are now being compiled from the framework library
- Improved handling of framework directory resolution across build environments
- Increased boot log capacity for better diagnostics
- Fixed duplicate channel loading bugs
- Controller timing interval averages now reset every minute
- Added safeguards and clearer error handling throughout core systems
Controller & Protocol System
- Added protocol support over MQTT
- Unified protocol command handling:
hello,login, andlogoutnow use the sameregisterHandler()mechanism- Protocol message handlers now receive a context parameter
- Consolidated OTA-related protocol commands into
OTAController - Fixed OTA message delivery bugs
OTA & Firmware Updates
- OTA public key moved out of
OTAController.hand made configurable - Improved OTA error reporting when firmware is missing
- Updated firmware release and build scripts
- Updated example firmware to use library versioning
- Fixed OTA message delivery issues
π Frontend & Web UI
Page System & Navigation
- Introduced a full dynamic page API:
App.addPage(),App.getPage(),App.removePage()- Page permissions, ordering, navbar visibility, and lifecycle hooks
- Added page lifecycle callbacks:
App.onStart(),Page.onOpen(),Page.onClose()
- Converted all built-in pages (
home,stats,config,settings,system,login,logout) to the new system - Renamed Control β Home
- Added expandable indicators to stats view
- Fixed login flow issues when navigating from logout
Frontend Architecture
- Refactored and standardized frontend APIs:
- Unified message handlers (
onMessage) - Standardized update and stats polling (
startUpdatePoller,startStatsPoller, stop methods)
- Unified message handlers (
- Expanded example firmware with more frontend and backend code.
UI / UX Fixes
- Fixed navbar link color state issues
- Fixed navbar layout on vertical mobile views
- Login form element added for autocomplete, etc.
- Startup melody selector hidden when no buzzer is configured
π¨ Static Assets, Gulp & Build Pipeline
- Major overhaul of static asset handling:
- All static files (HTML, CSS, JS, images) are now gulped
- New unified gulped file format
- Dynamic logo processing
- Project-specific CSS and JS loading
- Clean separation between framework and project CSS
- Improved gulp workflow:
- Clean temporary build artifacts automatically
- Removed
.gzand_gznaming from final paths and variables
- Removed deprecated and test files
- Reserved endpoints (
coredump,site.manifest, etc.) are now blocked by default - Removed OSHW logo
π‘ Networking, Wi-Fi & Provisioning
- Improved first-boot detection when bundling default
yarrboard.json - Enhanced Wi-Fi recovery:
- Holding boot for 5 seconds re-enables Improv Wi-Fi if connection fails
- Made
IMPROV_BLEoptional - Moved NimBLE BLE to an external dependency with a compile-time flag
π RGB & Buzzer
- RGB controller now supports
maxBrightness - Brightness scaling now respects max brightness
- RGB and buzzer support added to examples
π Documentation & Developer Experience
- Added PlatformIO installation instructions
- Fixed README errors and clarified readiness status
- Updated TODO and roadmap multiple times with future plans
- Improved example configuration and defaults
v2.0.0 lays the foundation for a stable, extensible, and project-aware Yarrboard ecosystem, with major improvements across protocol handling, frontend architecture, OTA, and build tooling.
v1.0.0
Initial release.