Changelog

This is the changelog of LcdMenu library. It contains information about the changes between versions.

LcdMenu v5.11.2

πŸ›  Enhancements

  • Refactor process methods in widget classes to streamline command handling and remove redundant edit mode checks by @forntoh in #346

  • Update increment/decrement logic based on step sign by @forntoh in #344

Full Changelog: https://github.com/forntoh/LcdMenu/compare/5.11.1…5.11.2

LcdMenu v5.11.1

πŸ› Bug Fixes

  • Add check for edit mode in MenuScreen polling logic by @forntoh in #343

  • Normalize step value in WidgetRange constructor to ensure it is alway… by @forntoh in #341

Full Changelog: https://github.com/forntoh/LcdMenu/compare/5.11.0…5.11.1

LcdMenu v5.11.0

πŸ›  Enhancements

  • Add ItemList, ItemRange & ItemBool classes for single value selection from lists, ranges & booleans by @forntoh in #338

  • Add clear method to MenuScreen for resetting menu items by @forntoh in #331

πŸ› Bug Fixes

  • Fix MenuScreen draw loop to prevent out-of-bounds access by limiting iteration to available items by @forntoh in #330

πŸ”¨ Chore Updates

  • Enhance release notes category labels with emojis for improved visibility and engagement by @forntoh in #340

πŸ“š Documentation Updates

  • Remove unused Doxygen configuration and UML diagrams for cleaner documentation by @forntoh in #339

Full Changelog: https://github.com/forntoh/LcdMenu/compare/5.10.0…5.11.0

LcdMenu v5.10.0

πŸš€ New Features

  • Dynamic Menu Updates: Added support for dynamically adding, removing, and updating menu items at runtime using new methods in MenuScreen. See the Dynamic Menu example for usage.

  • Submenu Screen Updates: Introduced ItemSubMenu::setScreen to dynamically update the submenu screen at runtime.

πŸ›  Enhancements

  • ``std::vector`` Adoption: Replaced static arrays with std::vector for menu items and widgets, improving flexibility and modernizing the codebase. See BaseItemManyWidgets and WidgetList.

  • Simplified ``WIDGET_LIST`` Macro: Removed the need to pass the size parameter for std::vector-based lists, reducing boilerplate code.

  • Improved Memory Management: Added methods to manage widgets dynamically in BaseItemManyWidgets, including addWidget, addWidgetAt, and removeWidget.

⚠️ Breaking Changes

  • Static Arrays Deprecated: Static arrays for menu items and widgets have been replaced with std::vector. Update your code accordingly:

// Old
static const char* colors[] = {"Red", "Green", "Blue"};
WIDGET_LIST(colors, sizeof(colors) / sizeof(colors[0]), 0, "%s");

// New
std::vector<const char*> colors = {"Red", "Green", "Blue"};
WIDGET_LIST(colors, 0, "%s");
  • Removed Deprecated Classes: ItemList, ItemIntRange, ItemFloatRange

  • Updated ``MenuScreen`` Constructor: The MenuScreen constructor now accepts a std::vector<MenuItem*> instead of a raw pointer array.

🧰 Compatibility

  • ArduinoSTL Requirement: For microcontrollers without native C++ support (e.g., Arduino Uno), install the ArduinoSTL library to use std::vector. See the Getting Started Guide for details.

πŸ› Bug Fixes

  • Fixed cursor handling in empty menus in MenuScreen.

  • Improved compatibility for platforms without full printf support by introducing custom_printf.

πŸ“š Summary

This release introduces significant improvements to flexibility and usability, with a focus on modernizing the codebase. While there are breaking changes, they simplify the API and improve maintainability. Be sure to review the migration guide to update your code.

Full Changelog: https://github.com/forntoh/LcdMenu/compare/5.9.0…5.10.0

LcdMenu v5.9.0

πŸš€ New Features

  • Allow dynamic assignment (use of reference values) to WIDGETS by @ShishkinDmitriy in #315

πŸ›  Enhancements

  • Allow dynamic assignment (use of reference values) to WIDGETS by @ShishkinDmitriy in #315

πŸ› Bug Fixes

  • Fixes crash on ESP when deactivating arrows by @forntoh in #319

πŸ“š Documentation Updates

  • Added usage documentation for reference values feature by @forntoh in #323

Full Changelog: https://github.com/forntoh/LcdMenu/compare/5.8.0…5.9.0

LcdMenu v5.8.0

πŸš€ New Features

  • Add LCD_I2C Library support by @Badn1nja in #303

πŸ›  Enhancements

  • Update pcf8574_i2c.ino by @Badn1nja in #307

πŸ› Bug Fixes

  • Fix unsigned integers may underflow in RangeWidget by @forntoh in #308

Full Changelog: https://github.com/forntoh/LcdMenu/compare/5.7.0…5.8.0

LcdMenu v5.7.0

πŸ›  Enhancements

  • Feauture/use index for widget list by @ShishkinDmitriy in #297

πŸ› Bug Fixes

  • Update WidgetBool process method to restrict value changes to edit mode by @forntoh in #299

πŸ”¨ Chore Updates

  • Move shared deps into [env] by @ShishkinDmitriy in #301

  • Remove deprecated range item by @forntoh in #298

Full Changelog: https://github.com/forntoh/LcdMenu/compare/5.6.0…5.7.0

LcdMenu v5.6.0

πŸš€ New Features

  • Support for analog button array by @matej2005 in #296

Full Changelog: https://github.com/forntoh/LcdMenu/compare/5.5.1…5.6.0

LcdMenu v5.5.1

πŸ› Bug Fixes

  • Display timeout works only when a draw operation happens by @forntoh in #290

Full Changelog: https://github.com/forntoh/LcdMenu/compare/5.5.0…5.5.1

LcdMenu v5.5.0

πŸš€ New Features

  • Add ItemValue template class and polling support for menu items by @forntoh in #285

πŸ› Bug Fixes

  • Fix ItemToggle Duplicate Item When Refreshing Menu in Callback by @mriveralee in #286

Full Changelog: https://github.com/forntoh/LcdMenu/compare/5.4.1…5.5.0

LcdMenu v5.4.1

πŸ› Bug Fixes

  • Fix SSD1803A I2C LCD adapter cursor positioning and renderer by @forntoh in #284

  • Reset view index in ItemInput clear method for consistent state by @forntoh in #277

Full Changelog: https://github.com/forntoh/LcdMenu/compare/5.4.0…5.4.1

LcdMenu v5.4.0

πŸš€ New Features

  • Add Widgets Example Sketch by @forntoh in #262

  • Remove WidgetCharset class and introduce templated WidgetList class by @forntoh in #255

  • Add widget functionality into the library by @forntoh in #248

πŸ›  Enhancements

  • Update Examples to use Widgets by @forntoh in #260

  • Refactor ItemSubMenu class to inherit from BaseItemZeroWidget and update methods by @forntoh in #259

  • Enhance widget rendering to ensure that the active Widget is always visible by @forntoh in #258

  • Improve memory management and string handling in ItemInput class by @forntoh in #256

  • Remove WidgetCharset class and introduce templated WidgetList class by @forntoh in #255

  • Update ItemBack class to inherit from BaseItemZeroWidget by @forntoh in #252

  • Refactor item command class to use item widget by @forntoh in #251

  • Update logging mechanism with LOG macro in multiple classes by @forntoh in #250

πŸ› Bug Fixes

  • Bugfix: 4 bars appear when no indicators are being shown by @forntoh in #257

πŸ“š Documentation Updates

  • Comprehensive Documentation Update for Widgets and Menu Items by @forntoh in #275

Full Changelog: https://github.com/forntoh/LcdMenu/compare/5.3.1…5.4.0

LcdMenu v5.3.1

Full Changelog: https://github.com/forntoh/LcdMenu/compare/5.3.0…5.3.1

LcdMenu v5.3.0

πŸš€ New Features

  • Add support for additional board types by @forntoh in #246

πŸ›  Enhancements

  • Integrate Fast and Efficient String Formatting Library by @forntoh in #244

Full Changelog: https://github.com/forntoh/LcdMenu/compare/5.2.0…5.3.0

LcdMenu v5.2.0

πŸš€ New Features

  • Add Support for LCDs using SSD1803 controller by @forntoh in #243

  • Add View Shifting to MenuRenderer for Handling Long Text by @forntoh in #241

πŸ›  Enhancements

  • Delegate Rendering of Separator and Value to Renderer by @forntoh in #240

πŸ”¨ Chore Updates

  • Add release notes generation by @forntoh in #239

  • Add tagging options for PR types and update checklist. by @forntoh in #238

πŸ“š Documentation Updates

  • Fix typo in character-display.rst by @forntoh in #242

  • Update API references to use C++ syntax for better clarity and consistency by @forntoh in #237

Full Changelog: https://github.com/forntoh/LcdMenu/compare/5.1.0…5.2.0

LcdMenu v5.1.0

πŸš€ New Features

  • [Feat] Add Menu Renderer by @forntoh in #233

Full Changelog: https://github.com/forntoh/LcdMenu/compare/5.0.0…5.1.0

LcdMenu v5.0.0

πŸš€ New Features

  • Feature/move control to items by @ShishkinDmitriy in #199

Breaking Changes

  • This release introduces breaking changes. Please review the migration guide for details on how to update your code.

Full Changelog: https://github.com/forntoh/LcdMenu/compare/4.2.0…5.0.0

LcdMenu v4.2.0

πŸš€ New Features

  • Add SimpleNavConfig and deprecate processMenuCommand by @forntoh in #189

πŸ› Bug Fixes

  • Remove dependencies [fix for #203] by @forntoh in #215

  • Make global util functions inline by @ShishkinDmitriy in #192

Full Changelog: https://github.com/forntoh/LcdMenu/compare/4.1.0…4.2.0

LcdMenu v4.1.0

New Features ⭐️

  • Menu Command Processor Helper for Rotary Encoder by @forntoh in #185 A helper function was added to handle menu navigation using a rotary encoder. This makes it easier for developers to implement rotary-based navigation for their LCD menus, streamlining the interaction process. It allows smoother scrolling through menu items and simplifies input with just a rotary encoder.

Enhancements:

Bug Fixes:

  • Code Cleanup: Removed unused print statements to improve code quality.

Full Changelog: https://github.com/forntoh/LcdMenu/compare/4.0.0…4.1.0

LcdMenu 4.0.0

This release introduces a major refactor of the display management system, aimed at making it more modular and flexible. The key change is the introduction of a display interface abstraction that decouples the display logic from the specific hardware, allowing for easier integration of different display types.

What’s Changed

  • Display Interface Abstraction: * A new DisplayInterface class has been introduced to define a common interface for all display types. * This interface allows developers to easily swap out display implementations (e.g., LCD, OLED) without modifying the core logic.

  • Implemented LiquidCrystalI2CAdapter to support LiquidCrystal_I2C displays.

  • Implemented LiquidCrystalAdapter to support LiquidCrystal displays.

  • Improved Modularity and Flexibility: * By decoupling the display management logic from the specific hardware, the system is now more modular and easier to extend with new display types. * The menu and cursor handling logic has been adapted to work seamlessly with the new interface, ensuring backward compatibility while providing enhanced flexibility.

  • Debug mode is now turned off by default

Bug Fixes and Improvements

  • Memory Management: Optimized the handling of dynamic memory allocation to prevent memory leaks and improve stability.

  • Code Cleanup: Refactored the codebase for better readability and maintainability. Deprecated functions and variables have been removed or replaced with more efficient alternatives.

  • Documentation: Updated and expanded the documentation to reflect the new architecture and features.

Breaking Changes

  • API Changes: The introduction of the DisplayInterface class and its implementation may require changes to existing projects. Users must update their code to work with the new interface and adapters.

  • Some methods and features directly tied to the LiquidCrystal_I2C library have been refactored or removed. Please review the migration guide for details on how to update your code.

Full Changelog: https://github.com/forntoh/LcdMenu/compare/3.5.6…4.0.0

LcdMenu 3.5.6

Chore Updates

  • Make isAtTheStart and isAtTheEnd public by @forntoh in #172

Full Changelog: https://github.com/forntoh/LcdMenu/compare/3.5.5…3.5.6

LcdMenu 3.5.5

  • #167 Update condition to check if cursor is at the top and bottom. by @forntoh in #170

Full Changelog: https://github.com/forntoh/LcdMenu/compare/3.5.4…3.5.5

LcdMenu 3.5.4

  • BugFix: After setCursorPosition navigation is broken by @forntoh in #165

Full Changelog: https://github.com/forntoh/LcdMenu/compare/3.5.3…3.5.4

LcdMenu 3.5.3

  • BugFix: Fixed setText and getSubMenu not working by @forntoh in #164

Full Changelog: https://github.com/forntoh/LcdMenu/compare/3.5.2…3.5.3

LcdMenu 3.5.2

  • BugFix - Charset Input value copied to all Input items on screen by @forntoh in #159

Full Changelog: https://github.com/forntoh/LcdMenu/compare/3.5.1…3.5.2

LcdMenu 3.5.1

  • BugFix - Update ItemList only in edit mode by @forntoh in #154

  • Add more logging functions by @forntoh in #155

  • Do not update screen anymore when bounds reached for ItemProgress by @forntoh in #156

Full Changelog: https://github.com/forntoh/LcdMenu/compare/3.5.0…3.5.1

LcdMenu 3.5.0

  • Added menu event serial logs by @forntoh in #151

  • ⭐️ ⭐️ ⭐️ Added Menu Control Helpers by @forntoh in #152 As of today, you no longer need to manage navigation commands on the menu yourself, a few helpers were added to help reduce the amount of code you write, check the docs to see how to use them.

Full Changelog: https://github.com/forntoh/LcdMenu/compare/3.4.0…3.5.0

LcdMenu 3.4.0

  • Moved utils and constants to utils directory by @forntoh in #149

  • Allow a current progress to be set on ItemProgress by @PaulEmich in #150

  • @PaulEmich made their first contribution in #150

Full Changelog: https://github.com/forntoh/LcdMenu/compare/3.3.4…3.4.0

LcdMenu 3.3.4

  • fix: compilation error with standard lcd by @andcan in #142

  • @andcan made their first contribution in #142

Full Changelog: https://github.com/forntoh/LcdMenu/compare/3.3.3…3.3.4

LcdMenu 3.3.3

  • Update bug_report.yml by @forntoh in #130

  • Separated utils definition from declaration by @forntoh in #135

Full Changelog: https://github.com/forntoh/LcdMenu/compare/3.3.2…3.3.3