16 应用注册表
一份静态数据同时驱动启动器磁贴、详情页、状态与快捷启动栏。
为 M5Stack Tab5 打造的 16 应用 ESP-IDF 与 LVGL 个人操作系统,共用一个 SD 卡内容引擎。

MOD.01 / 记录 02
为 Tab5 打造的一套 16 应用个人操作系统,而不是一组互不相干的演示程序。
Claude 完成的固件归档现已作为本项目的主要技术记录保存于此。它包含 720 × 1280 竖屏启动器、真正实现的 Chrono-Deck、服务五个 MATCH 模块的 SD 卡内容引擎,以及刻意隐藏的设备签名。依赖硬件的遥测功能仍在源代码中清楚标记为后续工作。
[ 01 / 系统结构 ]
05 项功能

一份静态数据同时驱动启动器磁贴、详情页、状态与快捷启动栏。
轻触打开、长按查看详情、按组筛选、加入构建队列,并通过返回栈移动。
已经完整实现的默认表盘,整合时间、系统状态与如实标注的遥测占位数据。
旅程、厨房、作品、工作室与生活从 SD 卡的独立 JSON 目录读取内容,无需重新刷写。
四秒内轻触字标七次,才会出现不在注册表中的本地签名画面。
[ 02 / 构建状态 ]
如实记录
启动器、磁贴与详情系统、导航、Chrono-Deck、SD 卡挂载及共用模块内容引擎均已写入源代码。
RTC 与 SNTP 回写、电池、温度、CPU 负载、实时天气、FFT 与清单保存仍标记为待办。
35 个文件 · 约 3,986 行 · 16 个注册应用 · 5 个内容模块 · 双 OTA 分区布局。
[ 03 / ESP-IDF SOURCE ]

启动器由数据驱动,而不是逐页硬编码。应用 11–15 刻意共用一个内容引擎;更新模块内容只需修改可移除 SD 卡上的 JSON,无需重编固件。
typedef struct mos_app_s {
uint8_t id; /* 1..16, shown on the tile */
mos_group_t group;
const char *name;
const char *subtitle;
const char *content_dir; /* SD path for content apps */
void (*open)(const struct mos_app_s *self);
} mos_app_t;
#define MOS_APP_COUNT 16
extern const mos_app_t MOS_APPS[MOS_APP_COUNT];
/* Apps 11..15 share app_matchos_open().
* Their content_dir is the only difference: one JSON engine,
* five MATCH//OS modules, no firmware rebuild for new content. */未发现真实凭证 · 尚未在本站进行硬件编译验证
[ 04 / 隐藏印记 ]
7 TAPS · 4 SECONDS
字标在四秒内被轻触七次,才会打开这块没有磁贴、没有普通入口的本地画面。发现次数保存在设备 NVS;任何内容都不会传出设备。
#define MOS_EGG_TAPS_REQUIRED 7
#define MOS_EGG_WINDOW_US (4 * 1000 * 1000LL)
/* The private signature remains inside firmware .rodata. */
extern const char MOS_EGG_SIGIL[];
if (++s_taps >= MOS_EGG_TAPS_REQUIRED) {
s_taps = 0;
mos_egg_open();
}签名已嵌入 · 仅限本机