From e9384e0c11209024f9a7b0fd7684827419909334 Mon Sep 17 00:00:00 2001 From: Ken Van Hoeylandt Date: Wed, 22 Oct 2025 23:15:33 +0200 Subject: [PATCH] Merge develop into main (#381) Various fixes and improvements --- Documentation/ideas.md | 7 +++++++ Tactility/Source/app/AppInstall.cpp | 4 ++-- Tactility/Source/app/boot/Boot.cpp | 11 +++++++---- Tactility/Source/app/development/Development.cpp | 1 + Tactility/Source/settings/BootSettings.cpp | 2 +- TactilityC/Source/tt_app.cpp | 2 ++ TactilityC/Source/tt_hal_uart.cpp | 2 ++ TactilityCore/Source/file/File.cpp | 3 ++- 8 files changed, 24 insertions(+), 8 deletions(-) diff --git a/Documentation/ideas.md b/Documentation/ideas.md index 3e13cfd7..d1bc80b8 100644 --- a/Documentation/ideas.md +++ b/Documentation/ideas.md @@ -1,7 +1,14 @@ # TODOs +## Before release + +- App Hub +- Fix Wi-Fi password(less) decryption crash +- Make better esp_lcd driver (and test all devices) + ## Higher Priority +- Calculator bugs (see GitHub issue) - External app loading: Check the version of Tactility and check ESP target hardware to check for compatibility Check during installation process, but also when starting (SD card might have old app install from before Tactility OS update) - Make a URL handler. Use it for handling local files. Match file types with apps. diff --git a/Tactility/Source/app/AppInstall.cpp b/Tactility/Source/app/AppInstall.cpp index 31acbfeb..f6c8220d 100644 --- a/Tactility/Source/app/AppInstall.cpp +++ b/Tactility/Source/app/AppInstall.cpp @@ -203,7 +203,7 @@ bool uninstall(const std::string& appId) { auto app_path = getAppInstallPath(appId); if (!file::isDirectory(app_path)) { - TT_LOG_E(TAG, "App %s not found at ", app_path.c_str()); + TT_LOG_E(TAG, "App %s not found at %s", appId.c_str(), app_path.c_str()); return false; } @@ -212,7 +212,7 @@ bool uninstall(const std::string& appId) { } if (!removeApp(appId)) { - TT_LOG_W(TAG, "Failed to remove app %d from registry", appId.c_str()); + TT_LOG_W(TAG, "Failed to remove app %s from registry", appId.c_str()); } return true; diff --git a/Tactility/Source/app/boot/Boot.cpp b/Tactility/Source/app/boot/Boot.cpp index 60bb1464..73f2d545 100644 --- a/Tactility/Source/app/boot/Boot.cpp +++ b/Tactility/Source/app/boot/Boot.cpp @@ -126,12 +126,15 @@ class BootApp : public App { #endif settings::BootSettings boot_properties; - if (!settings::loadBootSettings(boot_properties) || boot_properties.launcherAppId.empty()) { - TT_LOG_E(TAG, "Launcher not configured"); - return; + std::string launcher_app_id; + if (settings::loadBootSettings(boot_properties) && boot_properties.launcherAppId.empty()) { + TT_LOG_E(TAG, "Failed to load launcher configuration, or launcher not configured"); + launcher_app_id = boot_properties.launcherAppId; + } else { + launcher_app_id = "Launcher"; } - start(boot_properties.launcherAppId); + start(launcher_app_id); } static int getSmallestDimension() { diff --git a/Tactility/Source/app/development/Development.cpp b/Tactility/Source/app/development/Development.cpp index 9aca7aea..4ee54064 100644 --- a/Tactility/Source/app/development/Development.cpp +++ b/Tactility/Source/app/development/Development.cpp @@ -29,6 +29,7 @@ class DevelopmentApp final : public App { Timer timer = Timer(Timer::Type::Periodic, [this] { auto lock = lvgl::getSyncLock()->asScopedLock(); + // TODO: There's a crash when this is called when the app is being destroyed if (lock.lock(lvgl::defaultLockTime) && lvgl::isStarted()) { updateViewState(); } diff --git a/Tactility/Source/settings/BootSettings.cpp b/Tactility/Source/settings/BootSettings.cpp index d830c9ee..564028ee 100644 --- a/Tactility/Source/settings/BootSettings.cpp +++ b/Tactility/Source/settings/BootSettings.cpp @@ -11,7 +11,7 @@ namespace tt::settings { -constexpr auto* TAG = "BootProperties"; +constexpr auto* TAG = "BootSettings"; constexpr auto* PROPERTIES_FILE_FORMAT = "{}/settings/boot.properties"; constexpr auto* PROPERTIES_KEY_LAUNCHER_APP_ID = "launcherAppId"; constexpr auto* PROPERTIES_KEY_AUTO_START_APP_ID = "autoStartAppId"; diff --git a/TactilityC/Source/tt_app.cpp b/TactilityC/Source/tt_app.cpp index 0dd0a9a4..e66d8aad 100644 --- a/TactilityC/Source/tt_app.cpp +++ b/TactilityC/Source/tt_app.cpp @@ -5,6 +5,8 @@ #include #include +#include + extern "C" { constexpr auto* TAG = "tt_app"; diff --git a/TactilityC/Source/tt_hal_uart.cpp b/TactilityC/Source/tt_hal_uart.cpp index ff6f9093..00e363b8 100644 --- a/TactilityC/Source/tt_hal_uart.cpp +++ b/TactilityC/Source/tt_hal_uart.cpp @@ -1,6 +1,8 @@ #include "tt_hal_uart.h" #include +#include + using namespace tt::hal; struct UartWrapper { diff --git a/TactilityCore/Source/file/File.cpp b/TactilityCore/Source/file/File.cpp index 596b0906..6af278c6 100644 --- a/TactilityCore/Source/file/File.cpp +++ b/TactilityCore/Source/file/File.cpp @@ -381,8 +381,9 @@ bool readLines(const std::string& filePath, bool stripNewLine, std::function