Releases: ByteWelder/Tactility
v0.6.0
New boards
- CYD-2432S028RV3
- E32R32P
- M5Stack Cardputer
- M5Stack Cardputer v1.1
- M5Stack Cardputer Adv
- Waveshare S3 LCD 1.3"
- Waveshare S3 Touch LCD 1.28"
- Waveshare S3 Touch LCD 1.47"
App Hub
The App Hub app is basically a simple app store - and everything in it is free! 🎉
It's still very rudimentary:
You can list apps, view app details, install/update/uninstall them. There is no automatic update functionality yet. App updates are only mentioned in the app details screen.
Note: Don't close the app during installation, as the device eventually crashes after successfully installing the app. This will be addressed in the next Tactility update.
If you can't use the App Hub, or you want to install apps manually: extract them from the TactilityApps.zip below and put the .app files on an SD card. You can use the Files app to open the .app file and you will be prompted with a dialog to install them.
Apps are automatically installed to SD card when one is present. Otherwise they will be installed to /data.
New apps / app features
- App Settings: uninstall apps (can also be done from within App Hub, if the app was installed from there)
- App packaging: external apps files are now
.appformat, containing all relevant executables (for all supported hardware platforms), assets and a manifest. - Created the HAL for GPIO
- When Tactility starts, it checks
/dataand all SD cards for installed apps. These apps become visible in the app list. - Introduce UI scaling: this applies user interface improvements to devices with very small screens. All apps are updated to work well on these devices.
- Files app now supports deleting directories (recursively)
- Development service now supports
uninstallaction
Improvements & fixes
- I2C Scanner: Fix for crash when no I2C devices were found in the board configuration
- Add I2C and UART configurations to CYD-2432S028R
- External app errors now show up in an alert dialog on the device
- Improved stability of file reading/writing
- Development app/service: fix crash when sending large files
- Technical improvements to
LoaderServiceandGuiService - Keep track of launched apps and their response with
LaunchId - Implement support for
HttpdReqandesp_http_client, including SSL (up to v1.3) - Refactored the way that
elf_loaderexposes functionality to the external apps (pending PR at Espressif repo) AppManifestchanges (related to external apps)- Refactor/simplify
AppPathsandServicePaths. This is to make it work better with external apps. - Update dependencies (ESP-IDF, ILI9341 - maybe more)
- App configuration is simplified
- Board definitions are simplified. It now takes less manual actions to add a new board.
- Created
EstimatedPowerdriver and implemented it in all relevant boards (voltage-based "power remaining" estimate for the statusbar) - Fix for T-Lora Pager keyboard driver & device
- Various fixes for
Preferences - Fix for crash when connecting to open Wi-Fi
Other Changes
- Removed Log app
- Removed various internal apps to the TactilityApps repository for external apps.
/systemisn't visible in the Files app anymore/dataand/systemnow use a512 bytesector size instead of4096. This allows for more small files on a relatively small storage budget.- Increase stack size for the
maintask: this fixes a stack overflow when installing apps - Update SPI frequencies of all boards so they don't exceed the official specifications anymore
- Simplify GitHub actions by using matrices
- Renamed
Appproject toFirmware - Renamed
AppSimproject toFirmwareSim - Created re-usable web server (used for
DevelopmentServiceand later for Wi-Fi setup mode)
TactilitySDK
Too much to sum up.
One of the major improvements is support for certain C++ STL features such as std::string, std::vector, std::stack and std::deque.
Known Issues
- Emulator is broken
- App Hub crashes when you close it during app installation (when spinner is visible). The app does seem to get installed succesfully before the crash happens.
- CrowPanel Basic 3.5": Insufficient memory to load data into App Hub. You can manually download the apps and put them on an SD card to install them. A fix is expected in the future.
- CrowPanel Advance 3.5": Insufficient memory to load data into App Hub. You can manually download the apps and put them on an SD card to install them. A fix is expected in the future.
- Glitches on RGB screens when reading files (e.g. Waveshare LCD Touch 4.3")
- Small Waveshare displays: Touch is either not available, not implemented or hard to use. You can install apps manually to the SD card, but there is no guide for that yet. Ask on Discord if you want help with this.
v0.5.0
New boards
- LilyGO T-Lora Pager
- CYD 2432S028R
- CYD E28R32T
New apps / app features
- New app: Region & Language
- New external app: Calculator
- New external app: GraphicsDemo
- Launcher now has an optional power off functionality (used by T-Lora Pager).
- System Info:
- Improved layout for memory
- Added info about available storage
- When external apps fail to start, show an error on the device
Improvements
- Support for encoder wheels
- New drivers: BQ2770, TCA8418, ST7796, BQ25896, DRV2605 (power off only), Xpt2046SoftSpi, EstimatedPower (voltage-based battery status), Axp2101Power
- Fix for GPS init error on device start-up
- LVGL is now an optional feature for displays, paving the way for external non-LVGL displays
- Allow LVGL to be stopped & restarted.
- Introduce 'core' driver concept for LVGL and touch. This allows apps to talk to the hardware directly.
- Fixes for Gui and Statusbar service so they can be stopped & restarted at runtime
- Removed requirement for each
lv_textareainstance to register for keyboard events. This now happens automatically. - Background services now have a
State - Update to ESP-IDF 5.5
- And much more
- Added
PropertiesFileconcept and refactored various services to use.propertiesfiles to read/write configurations (boot, Wi-Fi, etc.) - Added support for overriding launcher app, and to automatically start an app from the launcher.
- Added support for provisioning boot and WiFi settings from SD card
- Added support for app translations
- All devices with extended ROM capacity are now using this capacity (results in larger
/datapartition) tt::hal::power::PowerDevicenow supports device power off- Xpt2046Touch driver improved
DispatcherandDispatcherThreadre-written to use C++ instead of C patternsPubSubrefactored to enforce type safety- All boards updated to newer code style
- HAL init completely refactored
- ... and much more!
- Development service now saves external apps to
/datainstead of/sdcard. This fixes issues with devices that don't have an SD card.
TactilitySDK
- Added
tt_hal_device_find() - Added various
tt_hal_display_*() - Added various
tt_hal_touch_*() - Added
tt_lvgl_start(),_stop()and_is_started() - Added
tt_app_start(),tt_app_start_with_bundle()andtt_app_stop() - Added various
tt_kernel_*()
Known board issues
CYD 2432-S024Shas a display glitchCrowPanel Basic 3.5": GraphicsDemo not working, System Info app doesn't show storage infoChatapp has UX issues
v0.4.0
New apps
- Calculator
- Notes
Improvements
- Implemented dark mode theme
- Buildscript prettified: shows more info about what is being built, and uses colours.
- Reduced desktop icon sizes for faster desktop rendering and smaller memory footprint on devices without PSRAM
TactilitySDK
- Introducing a new app build system (
tactility.py, seeExternalApps/HelloWorld/) - Implement new APIs for: WiFi, GPS, Preferences, Timezone
- Some cleanup with breaking changes (e.g. renamed enums)
Known board issues
2432s024chas a display glitch
v0.3.0
Newly supported boards
- CYD-2432S032C
- CYD-4848S040C
- CYD-8048S043C
- CYD-JC2432W328C
- CYD-JC8048W550C
- Elecrow Crowpanel Basic 2.8"
- Elecrow Crowpanel Advance 2.8"
- Elecrow Crowpanel Basic 3.5"
- Elecrow Crowpanel Advance 3.5"
- Elecrow Crowpanel Basic 5"
- Elecrow Crowpanel Advance 5"
- Waveshare ESP32 Touch LCD 4.3"
New apps
- GPS Settings: manage GPS devices and fetch coordinates
- Serial Console: connect to serial devices (e.g. GPS)
- Chat (alpha state): chat with nearby Tactility devices via an open WiFi interface
App improvements
- I2cScanner:
- Remember last selected bus/port
- Auto-scan when opening app
- Show device name if available
- Logs: Fix crash when not selecting filter
- Files: Use proper SD card mount point
- WiFi:
- Tapping a connected SSID disconnects it (instead of reconnecting)
- Improved auto-connect behaviour
Other improvements
- When launching external app, it now auto-registers in the application list
- Reduced splash screen time (1s, from 1.5s) and improved boot time (by 0.1 second)
- Optimized backlight for some devices (e.g. noise sound reduction)
- Fix for M5Stack CoreS3 I2C power
- Fix for GT911 touch driver (use correct I2C address)
Internal changes
- New SDK features via
TactilityC - Reworked
Appinterface (onStart()/onStop()is nowonCreate()/onDestroy()) - Major driver restructuring, created lots of re-usable driver subprojects
- Implemented device discovery: find various types of devices (
tt::hal::Device) tt::hal::Configurationnow uses smart pointers- Graphics driver performance improvements for many/most devices (use DMA buffers instead of PSRAM)
- Instead of using
tt::service::loader::functions, you can now usett::app::ones to start/stop apps etc. - Targeting C++23 now (from C++20)
- Implemented SPI HAL
- Implemented UART HAL
- Implemented GPS HAL
- Removed screenshot mode (
TT_SCREENSHOT_MODE) - I2C HAL locking API improved
- Fixed and/or improved flash scripts for all platforms
- Logging refactored, including new simulator log formatting
- Updated dependencies: elf_loader, esp_lvgl_port, and more
- Various new file utilities
- Merged
TactilityHeadless/intoTactility/ - Replace various C funtion pointer APIs to
std::functionones
Known board issues
- Boards with an RGB/i80 LCD Driver show glitches when reading/writing files or turning on WiFi:
WaveShare S3, Crowpanel 5" (both), - Crowpanel: UARTs now working? (maybe tx and rx swapped)
- M5Stack Core2: Grove port not configured yet
Known app issues
- Chat app might crash when WiFi is on while starting the app. Chat might not reliably receive messages.
v0.2.0
This is a preview release.
Changes
- New device implemented: unPhone (warning: still has a power drain issue when the device is off!)
- Fixed SD card compatibility issue for all devices
- It's now possible to start more than 1 external app at the same time
- External apps can now specify methods to create/destroy data, and it's easier to attach data
- Lots of internal fixes and improvements. Changed the way how apps & services are defined. Refactored TactilityCore to include more C++ safety measures (e.g. smart pointers)
- Updated to ESP-IDF v5.4
- Renamed "Yellow Display" device to "CYD 2432S024C"
Devices
- unPhone: There currently is a power drain issue where the device will drain the battery in the off state. It lasts about 3 days in off state.
- T-Deck: Works the best. No serious issues.
- Core2: Performance isn't great, but mainly entering WiFi credentials with on-screen keyboard is not great.
- CoreS3: SD card doesn't work and doesn't seem fixable (hardware issue). External I2C does not work (no voltage output on ports). Entering WiFi credentials with on-screen keyboard is not great.
- Yellow Board: Likely goes out-of-memory after connecting to WiFi, resulting in icon rendering issues. Works smoothly otherwise.
TactilitySDK
I do not suggest using the SDKs to build external apps, because the API is not stable yet. You're of course welcome to try it out and evaluate it.
HelloWorld.app.elf
This is an external app that you can store onto an SD card and run via the Files app.
Simulator
This should run on Linux (Intel/AMD64) and on Windows 11 with WSL+Ubuntu. See documentation for more info.
v0.1.0
This is a preview release.
Devices
Update: There's an SD card compatibility for all devices, that will be resolved in the next release.
- T-Deck: Works the best. No serious issues.
- Core2: Performance isn't great, but mainly entering WiFi credentials with on-screen keyboard is not great.
- CoreS3: SD card doesn't work and doesn't seem fixable (hardware issue). External I2C does not work (no voltage output on ports). Entering WiFi credentials with on-screen keyboard is not great.
- Yellow Board: Likely goes out-of-memory after connecting to WiFi, resulting in icon rendering issues. Works smoothly otherwise.
TactilitySDK
I do not suggest using the SDKs to build external apps, because the API is not stable yet. You're of course welcome to try it out and evaluate it.
HelloWorld.app.elf
This is an external app that you can store onto an SD card and run via the Files app.
Simulator
This should run on Linux (Intel/AMD64) and on Windows 11 with WSL+Ubuntu. See documentation for more info.