**New Features**
* Runtime font accessors and new symbol fonts for text, launcher, statusbar, and shared icons.
* Added font height base setting to device.properties
* Text fonts now have 3 sizes: small, default, large
**Improvements**
* Renamed `UiScale` to `UiDensity`
* Statusbar, toolbar and many UI components now compute heights and spacing from fonts/density.
* SSD1306 initialization sequence refined for more stable startup.
* Multiple image assets replaced by symbol-font rendering.
* Many layout improvements related to density, font scaling and icon scaling
* Updated folder name capitalization for newer style
* Updated runtime gating to enable LilyGO T-Deck specific apps and services
* New device compatibility and model-detection APIs
* Added a buffer-overflow error code and message
* Updated GitHub Actions checkout to v4
* Adjusted an LVGL-related library version
* Device config now emits a T-Deck workaround flag when applicable
* Removed internal developer comments and minor cleanups
- Remove unnecessary CS work-around for Cardputers
- Don't compile WifiMock when not necessary
- Fix for running apps on devices without SPIRAM
- Disable backlight dimming by default
- Fix for `sdkconfig` generation: the keys that contained the MCU type in its name weren't properly upper-cased.
- Moved WiFi configuration property files to the user data path of the app instead of a fixed location.
- Moved more properties from `device.py` to `sdkconfig/default.properties`
- Fix for `device.cmake` device id parsing: separate basic property parsing from device id validation
- Created internal `tt::service::wifi::findServiceContext()`
- Changed Wi-Fi service id to lowercase (will change it for other services later)
- Implement generic ESP32 devices
- Updated GitHub Actions to first build the SDKs. These are now based on the generic device implementations and the build act as a filter before compiling the dozens of other devices. It should save on resources when boards fail to compile.
- Adapted code to C6 and P4 differences, heavily borrowed from from https://github.com/ByteWelder/Tactility/pull/394 written by @marciogranzotto, with some changes of my own
- Updated `device.py` to make the `[display]` section optional
- WiFi code cleanup
- When WifiConnect opens and SSID is filled in, automatically focus on the password field
- When no touch screen is present, toolbar close buttons should be automatically selected
- When `device.py` selects a device, print it on screen