Merge remote-tracking branch 'origin/main' into main

This commit is contained in:
Adolfo Reyna
2026-07-04 15:39:52 -04:00
396 changed files with 114753 additions and 2051 deletions
+1 -1
View File
@@ -7,7 +7,7 @@
namespace tt {
esp_err_t initPartitionsEsp();
bool initPartitionsEsp();
wl_handle_t getDataPartitionWlHandle();
} // namespace
@@ -2,13 +2,13 @@
#include <Tactility/app/AppManifest.h>
#include <map>
#include <string>
namespace tt::app {
bool isValidId(const std::string& id);
bool parseManifest(const std::map<std::string, std::string>& map, AppManifest& manifest);
/** Parses a manifest.properties file, auto-detecting the V1 (sectioned) or V2 (flat) format from its first line. */
bool parseManifest(const std::string& filePath, AppManifest& manifest);
}
@@ -0,0 +1,23 @@
#pragma once
#include <Tactility/app/AppManifest.h>
#include <map>
#include <string>
namespace tt::app {
bool getValueFromManifest(const std::map<std::string, std::string>& map, const std::string& key, std::string& output);
bool isValidManifestVersion(const std::string& version);
bool isValidAppVersionName(const std::string& version);
bool isValidAppVersionCode(const std::string& version);
bool isValidName(const std::string& name);
/** Parses a V1 (sectioned INI, e.g. "[app]versionName=...") manifest map. */
bool parseManifestV1(const std::map<std::string, std::string>& map, AppManifest& manifest);
/** Parses a V2 (flat dot-notation, e.g. "app.version.name=...") manifest map. */
bool parseManifestV2(const std::map<std::string, std::string>& map, AppManifest& manifest);
}
@@ -14,8 +14,6 @@
namespace tt::app::chat {
constexpr auto* CHAT_SETTINGS_FILE = "/data/settings/chat.properties";
struct ChatSettingsData {
uint32_t senderId = 0; // Unique device ID (randomly generated on first launch)
std::string nickname = "Device";
@@ -26,7 +24,6 @@ struct ChatSettingsData {
ChatSettingsData loadSettings();
bool saveSettings(const ChatSettingsData& settings);
ChatSettingsData getDefaultSettings();
bool settingsFileExists();
} // namespace tt::app::chat
@@ -0,0 +1,12 @@
#pragma once
#include <Tactility/app/App.h>
namespace tt::app::setup {
LaunchId start();
/** @return true if the setup wizard has already run to completion */
bool isCompleted();
}
@@ -5,7 +5,7 @@
namespace tt::app::timezone {
LaunchId start();
LaunchId start(bool saveTimeZone = false);
std::string getResultName(const Bundle& bundle);
std::string getResultCode(const Bundle& bundle);
@@ -7,16 +7,13 @@
#include <Tactility/service/Service.h>
#include <Tactility/service/loader/Loader.h>
#include <tactility/concurrent/dispatcher.h>
#include <cstdio>
#include <lvgl.h>
namespace tt::service::gui {
constexpr auto GUI_THREAD_FLAG_DRAW = (1 << 0);
constexpr auto GUI_THREAD_FLAG_INPUT = (1 << 1);
constexpr auto GUI_THREAD_FLAG_EXIT = (1 << 2);
constexpr auto GUI_THREAD_FLAG_ALL = (GUI_THREAD_FLAG_DRAW | GUI_THREAD_FLAG_INPUT | GUI_THREAD_FLAG_EXIT);
/**
* Output a log warning if the current task is the GUI task.
* This is meant for code that should either create their own task or use a different task to execute on.
@@ -28,7 +25,8 @@ class GuiService final : public Service {
// Thread and lock
Thread* thread = nullptr;
EventGroup threadFlags;
DispatcherHandle_t dispatcher = nullptr;
bool exitRequested = false;
RecursiveMutex mutex;
PubSub<loader::LoaderService::Event>::SubscriptionHandle loader_pubsub_subscription = nullptr;
@@ -46,6 +44,8 @@ class GuiService final : public Service {
static int32_t guiMain();
static void onGuiDispatch(void* context);
void onLoaderEvent(loader::LoaderService::Event event);
lv_obj_t* createAppViews(lv_obj_t* parent);
@@ -70,8 +70,6 @@ public:
void onStop(ServiceContext& service) override;
void requestDraw();
/**
* Show the on-screen keyboard.
* @param[in] textarea the textarea to focus the input for
@@ -99,6 +99,9 @@ public:
// Global accessor for controlling the WebServer service
void setWebServerEnabled(bool enabled);
// Returns whether the HTTP server is actually running right now (not just the persisted setting)
bool isWebServerEnabled();
// Get the pubsub for subscribing to WebServer events
std::shared_ptr<PubSub<WebServerEvent>> getPubsub();