docs: 仓库侧公开文档更新到 M2.71/0.7.66 + 系统框架(agent-157)

- README: 版本0.7.66; 系统组件/进程模型(meow_sysui+专项子服务)/launcher源码拆分+状态栏统一/SDK控件库(第一批通用基座+第二批Material)/§2.9系统框架+§2.10 MeowPanel/配置驱动打包/.mpk=tar.gz/文档索引/mtd5 ota:kernel2
- SPEC_REF: §3.4 SDK统一控件库+主题增强/§4专项子服务(perf/power+电源CLI全命令+二期os.meow鉴权/.mpk签名)/§5.1状态栏统一/§5.4版本0.7.66
- APPS: §1.3系统动作经专项服务(不直连sys_do_reboot/mtd5, 走meow_svc_power)/附录.o mpk包名os.meow.*约定+系统APP鉴权规划
- FRAMEWORK_DESIGN: §10.1专项子服务锚点+launcher源码拆分说明
- MEOW_APP_SDK: §5.8/§8.1 标注已实现(第一/二批+主题接口), 保留miui→miuix待定案/物理键焦点导航草案
- 无敏感(无密钥/密码/设备IP/监听地址); 未碰devdocs/一期代码/agent-155文件
This commit is contained in:
MeowOS committed 2026-08-30 23:01:59 +08:00
1 parent dcba5975a2
commit 898bc176c9
5 files changed
+103 -46

No files matched your search

+3
View File
@@ -30,6 +30,7 @@
- 只允许触碰:TF 卡(`/usr/data/mnt/sd_0`)、`/usr/data`、bind-mount 覆盖点
- **绝不写 NAND 分区**;调试全程 bind-mount/直接替换可写卷文件,重启即回退,变砖风险为零
- **系统动作(关机/重启/升级/回 HiBy)统一经专项服务触发**:App/组件不直连 `sys_do_reboot`、不写 NAND、不写 mtd5 —— 改走 `meow_svc_power`(IPC,root 免鉴权、单一命令、不覆盖系统 shutdown/reboot);升级 = 写 mtd5=`ota:kernel2`(引导 kernel2 自动刷,见 `docs/MEOWOS_SPEC_REF.md` §1.2)。**二期**:关键 IPC 只接受 `os.meow.*` 包名鉴权。`[devdocs/plan/SYSTEM_FRAMEWORK_SERVICES.md]`
- hiby_player.sh 看门狗:`hiby_player 退出 → sleep 1 → reboot`。**SIGSTOP 不触发**(进程未退出);**严禁 killall hiby_player**,须先杀 hiby_player.sh 父 shell 再手动拉起
- **若 meow_launcherd 意外死亡(SIGKILL/崩溃)且播放器被冻结**:手动恢复 `kill -CONT $(pidof hiby_player)`(守护进程自身 SIGTERM 路径会自动 SIGCONT)
@@ -392,6 +393,8 @@ MeowData/<package>/
3. 触发**首次启动数据初始化**(建 `MeowData/<包名>/{data,cache}`);
4. 登入应用列表。
- **后续**:Web 后台(阶段 C)提供上传/安装/卸载/导出 `.mpk` 界面;本地文件管理器可调用安装程序 UI(`meow_pkg_install` 的交互入口)。
- **签名(Ⅱ期,见 `devdocs/plan/SYSTEM_FRAMEWORK_SERVICES.md §6`)**:`.mpk` 增加 `signature`(sha256 + 设备密钥/证书,**签名覆盖 `app.json` 的 `package`** 以防伪造 `os.meow.*` 包名);`meow_pkg_install`/`nyai install` **解包验签**,**验签失败/`os.meow.*` 无签名 → 拒绝安装**;`meow_pkg_export`/`nyai export` **保留签名**(不二次签名)。
- **包名 `os.meow.*` 约定 + 系统 APP 鉴权规划(Ⅱ期)**:`os.meow.*` 为 MeowOS 系统应用保留反域名前缀(如 `os.meow.hello` 示例);**非系统(第三方)App 不得使用 `os.meow.*`** 前缀——`.mpk` 签名规划强制签名覆盖 `package`,且 `os.meow.*` 无签名即拒绝安装,从源头防伪造系统包名。**二期关键 IPC 鉴权**:只接受 `os.meow.*` 系统包(关键 IPC 走 `os.meow.*` 鉴权,拒绝第三方),第三方走受限能力。
### 4. 实现挂点(MeowOS/launcher)
- 启动应用入口统一调 `meow_app_prepare(pkg)`:建 `MeowData/<包名>/{data,cache}` + 设 MEOW_DATA_DIR/CACHE_DIR,失败回退提示。
+13
View File
@@ -137,6 +137,19 @@ meow_sysui(系统进程总监,meow_svcd 托管;最小依赖/不渲染/最
├─ 未来媒体服务 / MeowPanel(后置)
```
> **专项子服务(扩展,见 `devdocs/plan/SYSTEM_FRAMEWORK_SERVICES.md`)**:把**系统复用功能收敛到系统框架**,
> 新增两个 **svcd 托管、板载 `trigger=boot`** 的专项子服务挂在 svcd 之下——`meow_svc_perf`(性能/系统只读聚合)、
> `meow_svc_power`(关机/重启/升级/回HiBy 系统动作)。launcher 电源菜单与 MeowPanel 均改为**经这些服务 IPC 触发**,
> 不再直连 `sys_do_reboot`/爬 `/proc`。属 §10 supervisor 树的一种**既有托管模式的扩展**(服务仍为 svcd 子进程,
> 崩溃隔离/subreaper 语义不变,不改变本节定案;Ⅱ期补 .mpk 签名与关键 IPC 的 `os.meow.*` 鉴权)。电源 CLI 为
> `meow_svc_power <cmd>`(root 免鉴权、单一命令、不覆盖系统 shutdown/reboot),命令一览见 `docs/MEOWOS_SPEC_REF.md` §4。
> **launcher 源码拆分(M2.69 落地,纯代码组织重构,不影响本 §10 进程模型)**:`patch_v2/meow_launcherd/meow_launcherd.c`
> (曾 9778 行单文件)拆为 `patch_v2/meow_launcherd/` 多模块(14 模块
> `main_menu/statusbar/settings_page/power_menu/notif_center/app_launcher/fb_compositor/audio/backlight/net/about/font_theme/keys/util`
> + 共享头 `meow_launcher_internal.h`;`build_launcher.sh` 列模块)。二进制名 `/usr/bin/meow_launcherd`(bootmenu `LAUNCHER_BIN`)
> 不变、行为不变(见 README §2.3)。
> **托管关系澄清**:定案中的「meow_sysui(新增,meow_svcd 托管)」指 sysui 由**开机启动链**拉起(现网 S89 init.d/S90 bootmenu 归属,后续归 sysui 自身),并居于 svcd **之上**为总监——**不是** svcd 的子进程。监管方向固定:**sysui 总监 → svcd 被监管 → 服务为 svcd 子进程**。即便将来引导顺序先起 svcd 再起 sysui,此方向不变。
**监管语义(权威)**:
+23 -21
View File
@@ -479,7 +479,7 @@ void meow_ui_panel_set_collapsed(meow_panel *p, int collapsed);
> **性质**:控件层的**演进蓝图**(后续实现权威)。把现有最小控件集(§5)与设计模板(§5.2-§5.7)收敛到**统一控件架构**——一个 `meow_widget` 基座承载「标准控件(SDK 内置)」与「自定义画布(App 提供 render/hit 回调)」,二者**同构**;并给出**三大通用化设计**:① 可组合布局(Row/Column/Box + Spacer);② Modifier 式通用 Options(`meow_widget_opts`,通吃所有控件);③ 统一状态机(enabled/selected/focused/pressed,触摸 + 物理键焦点)+ MD3 完整语义色板(日/夜自动切换)。
>
> **本小节只定架构与 API 草案**,均为「草案/待定案」,不随 B1 落地;实现以 `meow_ui.h` 为准。**不破坏**既有 btn/slider/switch/list(§5)与设计模板(§5.2-§5.7)——既有 create 签名一字不改,Options/状态机走**新增挂载器**(§5.8.2/§5.8.3)。**移植 Compose/Flutter 的思想而非照搬**(见 §5.8.7 取舍)。
> **✅ 已实现(M2.70/M2.71,详见 §5.8.8 分批)**:第一批 = 通用基座(§5.8.1-§5.8.5,M2.70/0.7.65);第二批 = Material 组件子集(§5.8.6,M2.71/0.7.66)。实现以 `meow_ui.h` / `meow_ui_widget.c` 为准;下文仍保留「草案/待定案」表述处对应**未落地**的部分(如物理键整页焦点导航、弹性布局子项),勿当作已实现。**不破坏**既有 btn/slider/switch/list(§5)与设计模板(§5.2-§5.7)——既有 create 签名一字不改,Options/状态机走**新增挂载器**(§5.8.2/§5.8.3)。**移植 Compose/Flutter 的思想而非照搬**(见 §5.8.7 取舍)。
#### 5.8.0 一句话定位
@@ -665,29 +665,29 @@ meow_widget *meow_layout_spacer(int w, int h);
- **局部刷新**:交互仍只刷变化区(`meow_ui_flush_region`),布局不导致整页重排;仅 arrange 时算一次坐标。
- **嵌套**:布局可作另一布局的子控件(Row 内嵌 Column),arrange 递归。
#### 5.8.6 Material 组件子集(后续追加批次)
#### 5.8.6 Material 组件子集(第二批,已实现 M2.71/0.7.66)
> **性质**:Material 3 组件子集,**后续追加批次**(不随第一批基座落地)。基于「统一控件架构 + Options + 状态机 + MD3 色板」实现,观感对齐 MD3、本地化到主题语义色。每项一句用途:
> **性质**:Material 3 组件子集,**第二批追加批次**(基于第一批基座落地,M2.71 已实现)。观感对齐 MD3、本地化到主题语义色。每项一句用途(API 见 `meow_ui.h`,实现见 `meow_ui_widget.c` `meow_*_create`):
| 组件 | 一句用途 | 批次 |
|---|---|---|
| TextField | 单/多行文本输入(复用 IME §5.1) | 后续 |
| Card | 圆角容器卡片(`surfaceContainer` 底 + 可选描边/状态层) | 后续 |
| Divider | 横向/纵向分隔线 | 后续 |
| Badge | 角标(红点/计数) | 后续 |
| Checkbox | 复选(`selected` 态 + `primary` 勾) | 后续 |
| Radio | 单选(单选组;`selected` 态) | 后续 |
| ProgressBar | 线性/圆形进度(确定性 + 不定性) | 后续 |
| Button(五型) | filled / tonal / outlined / text / elevated(`meow_btn` 扩展五型,Options 区分) | 后续 |
| TopAppBar | 顶部标题栏(标题 + 返回 + 操作) | 后续 |
| NavigationBar | 底部导航栏(图标 + 文字) | 后续 |
| TabBar | 顶部分页 Tab(swipe 联动 §5.2) | 后续 |
| BottomSheet | 底部面板(复用 §5.7 B④ 面板) | 后续 |
| Dialog | 弹窗(复用 §5.6 B③ 弹窗) | 后续 |
| FloatingActionButton | 悬浮操作钮(圆角增强;无投影,仅描边/状态层近似) | 后续 |
| 列表容器 | 可滚动列表(复用 §5.5 A② listview) | 后续 |
| TextField | 单/多行文本输入(复用 IME §5.1) | ✅ 第二批 |
| Card | 圆角容器卡片(`surfaceContainer` 底 + 可选描边/状态层) | ✅ 第二批 |
| Divider | 横向/纵向分隔线 | ✅ 第二批 |
| Badge | 角标(红点/计数) | ✅ 第二批 |
| Checkbox | 复选(`selected` 态 + `primary` 勾) | ✅ 第二批 |
| Radio | 单选(单选组;`selected` 态) | ✅ 第二批 |
| ProgressBar | 线性/圆形进度(确定性 + 不定性) | ✅ 第二批 |
| Button(五型) | filled / tonal / outlined / text / elevated(`meow_btn` 扩展五型,Options 区分) | ✅ 第二批 |
| TopAppBar | 顶部标题栏(标题 + 返回 + 操作) | ✅ 第二批 |
| NavigationBar | 底部导航栏(图标 + 文字) | ✅ 第二批 |
| TabBar | 顶部分页 Tab(swipe 联动 §5.2) | ✅ 第二批 |
| BottomSheet | 底部面板(复用 §5.7 B④ 面板) | ✅ 第二批 |
| Dialog | 弹窗(复用 §5.6 B③ 弹窗) | ✅ 第二批 |
| FloatingActionButton | 悬浮操作钮(圆角增强;无投影,仅描边/状态层近似) | ✅ 第二批 |
| 列表容器 | 可滚动列表(复用 §5.5 A② listview) | ✅ 第二批 |
> **说明**:多数 Material 组件是**既有设计模板(§5.2-§5.7)的「MD3 观感化」**——如 Card=圆角容器、BottomSheet 复用 §5.7 面板、Dialog 复用 §5.6 弹窗、TabBar 联动 §5.2 分页、列表容器复用 §5.5 listview。故 Material 子集**不重复造结构**,只把这些模板的绘制观感对齐 MD3 语义色 + 统一基座。**首批不实现**(见 §5.8.8)。
> **说明**:多数 Material 组件是**既有设计模板(§5.2-§5.7)的「MD3 观感化」**——如 Card=圆角容器、BottomSheet 复用 §5.7 面板、Dialog 复用 §5.6 弹窗、TabBar 联动 §5.2 分页、列表容器复用 §5.5 listview。故 Material 子集**不重复造结构**,只把这些模板的绘制观感对齐 MD3 语义色 + 统一基座。**第二批已实现(M2.71/0.7.66,见 §5.8.8)**。
#### 5.8.7 取舍 / 不做(移植思想而非照搬)
@@ -702,7 +702,7 @@ meow_widget *meow_layout_spacer(int w, int h);
#### 5.8.8 分批实现建议
**第一批 = 通用基座**(先行;落地后 all 控件升级地基):
**第一批 = 通用基座(✅ 已实现,M2.70/0.7.65;落地后 all 控件升级地基)**:
1. **MD3 语义色板扩展**(§5.8.4):`meow_theme` 尾部追加语义色字段 + 日/夜取值 + 映射旧字段(bg/fg/accent/dim);`meow_theme_get` 返回新板。
2. **统一 Options**(§5.8.2):`meow_widget_opts` + `meow_widget_set_opts/get_opts`;标准控件绘制读 opts。
3. **统一状态机**(§5.8.3):`enabled/selected/focused/pressed` 状态位 + `meow_widget_state/set_state/enabled/selected`;标准控件绘制叠状态层;`disabled` 阻断 hit/pressed。
@@ -710,7 +710,7 @@ meow_widget *meow_layout_spacer(int w, int h);
5. **可组合布局**(§5.8.5):`meow_row/column/box + meow_layout_add/arrange + spacer`;固定尺寸子项先做,算绝对坐标(与绝对定位兼容)。
6. **实时按压刷新扩展**:把 `g_live_btns[]`(仅 W_BTN)扩展为「按活动 Activity 分区」控件注册集(§6.1 ①),供标准 + 自定义画布共用按压态即时刷新。
**第二批 = Material 组件子集**(§5.8.6):TextField/Card/Divider/Badge/Checkbox/Radio/ProgressBar/Button 五型/TopAppBar/NavigationBar/TabBar/BottomSheet/Dialog/FloatingActionButton/列表容器——基于第一批基座实现,多数复用既有设计模板(§5.2-§5.7)的「MD3 观感化」。
**第二批 = Material 组件子集(✅ 已实现,M2.71/0.7.66,§5.8.6)**:TextField/Card/Divider/Badge/Checkbox/Radio/ProgressBar/Button 五型/TopAppBar/NavigationBar/TabBar/BottomSheet/Dialog/FloatingActionButton/列表容器——基于第一批基座实现,多数复用既有设计模板(§5.2-§5.7)的「MD3 观感化」。
**同步重编注意(关键)**:`meow_ui_theme` 追加字段 / `meow_widget` 结构变化 → **`meow_ui.a` ABI 变化** → 需按 §9/§10「**同步重编 hello**(App 也链 `meow_ui.a meow_font.a libz.a -lpthread`)」一并处理;`build_sdk.sh` 一键重编 + `hello_app/build_hello.sh` 重链。**B1 既有控件与模板零改动**(§5.8.1/§5.8.2 均向后兼容)。
@@ -864,6 +864,8 @@ void meow_theme_remove_listener(meow_theme_listener cb);
### 8.1 主题增强:顶级主题 `ui.style` × 明暗 `display.theme` × 背景 `display.background` [源:2026-08-30]
> ✅ **已实现(M2.70/0.7.65 起)**:`meow_ui_set_style`/`meow_ui_style`(`MEOW_STYLE_MD3/MIUIX`)、`meow_theme_get`(MD3 语义色板 + 风格参数 + 背景 surface/bg)、状态栏图标随 `ui.style` 换集(详见 §3.1「同一个状态栏」)。**MIUIx 当前仅 md3 生效**(MIUIx 深度细节留后续迭代);`meow_settings.c g_defs` 的 `miui` 值对齐为 `miuix` 待定案(见 §8.1.1 注)。
> **一句话**:主题 = **顶级主题风格族(`ui.style`:MD3 / MIUIx)× 明暗(`display.theme`:dark / light)** 共同决定「整套配色 + 控件形态 + 背景底」。`display.background` **不再是独立全局维度**,而是「当前 style × 当前 mode」下**可选背景底选项集**——**可选集与默认随 style / mode 切换一起变**。**切明暗** → 同 style 的浅/深背景自动切换(修复"浅色不搭");**切 style** → 整套配色 + 背景换族(修复"背景仅对主页生效/只有深色")。本定案建立在 §5.8.4 的 MD3 语义色板之上(色板 = MD3 语义色;本节管 style×mode 选哪套 + 风格参数 + 背景源)。
#### 8.1.1 主题模型(三键语义)
+53 -23
View File
@@ -3,7 +3,7 @@
> 把 HiBy R3 Pro II 便携播放器(君正 X1600,MIPS32r2 / mipsel / musl 静态软浮点,480×720,无 GPU 软渲染)变成一个可扩展的「第二系统 + 应用框架」。
> MeowOS 与官方 HibyOS 共存于同一台设备:开机由引导选单二选一;启动后 MeowOS 作为主控层,提供自己的桌面 UI、应用框架、服务管理与系统组件。
>
> 版本:**M2.65(0.7.60)**(版本号单点 = 板上 `/etc/meowos_version`,见「构建」)。
> 版本:**M2.71(0.7.66)**(版本号单点 = 板上 `/etc/meowos_version`,见「构建」)。
>
> 许可证:Apache-2.0(见 [`LICENSE`](LICENSE))。本仓库为非官方第三方项目。
@@ -15,7 +15,7 @@
- **双系统共存**:官方 HibyOS 原样保留;开机引导选单决定本次进入哪个系统(MeowOS / HibyOS),两者互斥运行,任一时刻只跑一个。
- **应用框架**:一套 C 应用 SDK(`meow_ui`),第三方 App 用统一控件 / 输入 / 主题 / 字体 / 通知 API 开发,无需自读帧缓冲、自读输入、自管返回——把每个 App 都要踩一遍的坑收口到框架里。
- **系统组件**:状态栏、通知中心、电源菜单、全局左缘返回手势、主界面(应用列表)、设置页、服务管理器、mDNS 广播。
- **系统组件**:状态栏、通知中心、电源菜单、全局左缘返回手势、主界面(应用列表)、设置页、服务管理器、mDNS 广播;系统进程总监 `meow_sysui`(M2.71);专项子服务 `meow_svc_perf` / `meow_svc_power`(一期在跑);MeowPanel 外部管理面板。
- **进程隔离**:系统 UI 渲染进程与 App 进程相互独立,App 卡死不会冻结整个 UI。
**面向谁**:
@@ -40,16 +40,18 @@
```
init (rcS)
├─ /etc/init.d/S70meow_sysui 系统进程总监(meow_sysui,S70,M2.71 引入;监管 svcd,launcher 由 bootmenu 拥有)
├─ /etc/init.d/S89meow_svcd 开机自启 meow_svcd(服务管理器)
├─ /etc/init.d/S90meow_bootmenu Supervisor / 开机引导选单
│ ├─(选 MeowOS)拉起 meow_launcherd ← 系统 UI 渲染宿主
│ │ └─ 用户点 App → fork/exec MeowAPP + meow_watchdog(每 App 一个)
│ └─(选 HiByOS)exec hiby_player
└─ meow_svcd 托管的服务(如 meow_mdns)= 独立子进程
│ ├─ meow_mdns 及 services.d 服务 = 独立子进程
│ └─ 专项子服务(一期)= meow_svc_perf / meow_svc_power
└─ /etc/init.d/S90meow_bootmenu Supervisor / 开机引导选单
├─(选 MeowOS)execv meow_launcherd ← 系统 UI 渲染宿主
│ └─ 用户点 App → fork/exec MeowAPP + meow_watchdog(每 App 一个)
└─(选 HiByOS)exec hiby_player
```
- **当前 supervisor = `meow_bootmenu`**:开机引导选单(决定进入哪个系统),并接管关机 / 升级;系统组件由它 / init 逐个拉起。
- **目标架构(设计定案,见 `docs/MEOWOS_SPEC_REF.md` §4,属「系统基建线」)**:新增统一的 `meow_sysui` 系统进程总监,监管 launcher / svcd / mdns / 媒体服务 / MeowPanel——一个进程崩只拉起它,绝不级联、绝不拖垮自身。这是定案与渐进迁移方向,**当前固件仍以 `meow_bootmenu` 为 supervisor**。
- **进程总监 `meow_sysui`(M2.71 已落地,`/usr/bin/meow_sysui` + `S70meow_sysui`)**:监管系统进程,**一个崩→只拉起它,绝不级联、绝不拖垮自身**。自身最小依赖、不渲染、不承载重逻辑 → 最稳。当前默认只监护 `meow_svcd`(launcher 仍由 bootmenu 的 `execv` 拥有,`enabled=0` 防双重拉起,移交见后端让位);`meow_mdns` 是 svcd 的服务子进程(不双重管理)。配置 `sysui.d/` 目录式(复用 services.d 语义),见 `patch_v2/meow_sysui/meow_sysui.md` 与 `docs/MEOWOS_SPEC_REF.md` §4。
- **专项子服务(一期在跑,规划见 `devdocs/plan/SYSTEM_FRAMEWORK_SERVICES.md`)**:新增两个 **svcd 托管、板载 `trigger=boot`** 的专项子服务——`meow_svc_perf`(性能 / 系统只读聚合)、`meow_svc_power`(关机 / 重启 / 升级 / 回 HiBy 系统动作)。launcher 电源菜单与 MeowPanel 改经这些服务 IPC 触发,不再直连 `sys_do_reboot`/爬 `/proc`。电源 CLI `meow_svc_power <cmd>`(root 免鉴权、单一命令、不覆盖系统 shutdown/reboot)。**二期**补关键 IPC 只接受 `os.meow.*` 鉴权 + `.mpk` 打包签名验签。
- **隔离保证(现已落地)**:系统组件各自独立进程;App 进程与系统 UI 渲染进程独立;svcd 的**每个服务是独立子进程**(服务崩只重启该服务,不拖垮 svcd)。任何 App / 服务崩溃都不冻结系统 UI。
### 2.2 双系统引导(bootmenu)
@@ -62,9 +64,11 @@ init (rcS)
### 2.3 launcher —— 系统 UI 渲染宿主
`/usr/bin/meow_launcherd`(源码 `patch_v2/meow_launcherd/`)是 MeowOS 的核心进程,负责渲染**系统级 UI**:
`/usr/bin/meow_launcherd`是 MeowOS 的核心进程,负责渲染**系统级 UI**。**二进制名不变**(`/usr/bin/meow_launcherd`,bootmenu `LAUNCHER_BIN` 指向它),源码 M2.69 起由单文件 `patch_v2/meow_launcherd/meow_launcherd.c`(9778 行)**拆分为多模块**(`patch_v2/meow_launcherd/`,14 模块:`main_menu/statusbar/settings_page/power_menu/notif_center/app_launcher/fb_compositor/audio/backlight/net/about/font_theme/keys/util` + 共享头 `meow_launcher_internal.h`;`build_launcher.sh` 列模块)——逻辑更清晰、便于并行开发,行为不变。
- 状态栏(28px:时钟 / 电量 / WiFi / 蓝牙 / 音量);
负责渲染:
- **状态栏(统一系统进程渲染)**:由 launcher 作为**唯一渲染主体**(主界面与 App 前台用**同一个**状态栏实例,App 不画、不做「样式一样的两套实现」);右侧 **MD3 图标 + 变量值**(时钟/电量/WiFi/蓝牙/音量,数据源唯一由 launcher 统一喂/取,两边必然一致);**全屏收合**:状态栏向上收出屏顶、只留提示线,**顶部保留 28px 热区**(仍可下滑通知中心)+ 左缘指示条;随主题 `ui.style` 换图标集。
- 通知中心(顶部下滑展开,launcher 渲染,功能见 §2.6);
- 电源菜单、全局左缘返回手势、全屏提示线;
- 主界面(应用列表)、设置页。
@@ -93,6 +97,11 @@ init (rcS)
- **系统 UI 归属与进程隔离(核心)**:状态栏 / 通知中心 / 电源菜单 / 全局返回滑条等**系统级组件由系统进程(launcher)渲染,App 进程不渲染系统 UI**;SDK 系统组件 API **仅供系统进程链接调用**,App 拿不到、不可自建悬浮层 / 全局叠加。
- 控件 API:`meow_ui_activity_push/pop`(Activity 栈)、`meow_btn/slider/switch/list_create`、`meow_ui_global_add/remove`(② 层)。对象不随 pop 销毁(复用),弹栈回来自动恢复命中。
**SDK 控件库(统一控件架构,M2.70/M2.71 两批落地,见 `MEOW_APP_SDK.md` §5.8)**:
- **第一批 = 通用基座(M2.70/0.7.65)**:`meow_widget` 基座统一标准控件与自定义画布;`meow_widget_opts`(Modifier 式通用 Options,`meow_widget_set_opts`);统一状态机 `MEOW_WS_ENABLED/SELECTED/FOCUSED/PRESSED`(`meow_widget_set_state`);`meow_widget_custom_create`(自定义画布,App 提供 render/hit 回调);布局 `meow_row/column/box` + `meow_layout_add/arrange` + `spacer`;主题接口 `meow_ui_set_style` / `meow_theme_get`(MD3/MIUIx × 明暗 + 背景全局源)。
- **第二批 = Material 组件子集(M2.71/0.7.66)**:Button 五型(`meow_btn_create_variant`)/ TextField(IME)/ Card / Divider / Badge / Checkbox / Radio / ProgressBar / FAB / TopAppBar / NavigationBar / TabBar / LazyColumn/LazyRow / Dialog / BottomSheet。
- 既有 `meow_btn/slider/switch/list_create` 签名一字不改(向后兼容),Options/状态机走新增挂载器。
### 2.5 服务
- **meow_svcd(服务管理器)**:类 systemd/systemctl,`/usr/bin/meow_svcd`,`etc/init.d/S89meow_svcd` 开机自启。**每个服务 = svcd 的独立子进程**(fork+execv),服务崩只重启它,不拖垮 svcd。
@@ -129,6 +138,22 @@ init (rcS)
贯穿子系统的键(详见 `SYSTEM_SETTINGS.md` / `docs/MEOWOS_SPEC_REF.md`):开机 `boot.default`、刷新率 `display.refresh_rate`(60/30/15)、亮度 `display.brightness`(clamp ≥ `display.brightness_min`,下限 **1**)、息屏 `display.screen_off_timeout`(默认 30s)、主题 `display.theme_mode`、主机名 `system.hostname`(=meowos)、字体 `font.file`/`display.multi_font`/`font.load_full`、通知配额 `notify.*` 等。
### 2.9 系统框架 / 专项服务
把**系统复用功能收敛到系统框架**(`devdocs/plan/SYSTEM_FRAMEWORK_SERVICES.md`,一期在跑):meow_sysui 派生 → meow_svcd 托管 → IPC。新增两个 **svcd 托管、板载 `trigger=boot`** 的专项子服务:
- **`meow_svc_perf`**(性能 / 系统只读聚合);**`meow_svc_power`**(关机 / 重启 / 升级 / 回 HiBy 系统动作)。
- **电源 CLI `meow_svc_power <cmd>`**(root 免鉴权、单一命令、**不覆盖**系统 shutdown/reboot):`shutdown` / `reboot`(强制回 MeowOS)/ `upgrade`(写 mtd5)/ `set-default-hiby` / `reboot --hiby` + `status` / `screen` / `dac` / `battery` / `reboot-reason` / `upgrade-status`。
- launcher 电源菜单与 MeowPanel 均**改为经这些服务 IPC 触发**,不再直连 `sys_do_reboot` / 爬 `/proc`。
- **二期**:关键 IPC 只接受 `os.meow.*` 鉴权 + `.mpk` 打包签名验签(防伪造包名,解包验签 / 导出保留签名)。
- **开机默认**:权威标记 `/data/meow_boot_default`(单值 O_TRUNC:`0`=MeowOS / `1`=HiByOS)。
### 2.10 MeowPanel(外部管理面板)
- **协议**:`devdocs/plan/MEOWPANEL_PROTOCOL.md`(31 端点)。
- **前端**:`patch_v2/meowpanel/web/`(MD3/MIUIx 双主题 + 宝塔式 + 浏览日夜)。
- **外置部署**:`MeowOS/opt/MeowPanel/` + `services.d` 经 svcd + sysui 管理,**无卡依赖最小化**;`/usr/bin/nyai` 装 `.mpk`;launcher 的 `meow_pkg_export` / `nyai export` 导出 tar.gz(busybox tar + gzip,不需 zip)。
---
## 3. 目录结构
@@ -136,11 +161,12 @@ init (rcS)
> 标注「入库」= 本仓库已提交;未标注的为**本地构建 / 开发资产**(gitignore 不入库,需本地生成)。
- **`patch_v2/`(入库)**—— MeowOS 核心源码:
- `bootmenu/` 引导选单 + Supervisor(`meow_bootmenu`)
- `meow_launcherd/` launcher(系统 UI 宿主)、`meow_ipc`、`meow_settings`、`meow_font`、`meow_notif`、`meow_card_path.sh`
- `sdk/` meow_ui SDK 源码 + `build_sdk.sh`(→ `meow_ui.a`)
- `bootmenu/` 引导选单 + Supervisor(`meow_bootmenu`,`LAUNCHER_BIN=/usr/bin/meow_launcherd`)
- `meow_launcherd/` launcher(系统 UI 宿主,**多模块**:`main_menu/statusbar/settings_page/power_menu/notif_center/app_launcher/fb_compositor/audio/backlight/net/about/font_theme/keys/util` + `meow_launcher_internal.h` + `build_launcher.sh`)、`meow_ipc`、`meow_settings`、`meow_font`、`meow_notif`、`meow_card_path.sh`
- `sdk/` meow_ui SDK 源码 + `build_sdk.sh`(→ `meow_ui.a`;含**统一控件库**:widget/theme/activity/global/dialog/ime/img/input/log/notify/sys/vol)
- `hello_app/` 示例 App(`hello.c` + `build_hello.sh`)
- `meow_svcd/` 服务管理器;`meow_watchdog/` 应用看门狗;`meowpkg/` 包管理;`uinput_tap/`
- `meow_sysui/` 系统进程总监(`meow_sysui` + `S70meow_sysui` + `meow_sysui.md`)
- `meow_svcd/` 服务管理器;`meow_watchdog/` 应用看门狗;`meowpkg/` 包管理(`nyai.c`);`uinput_tap/`
- **`mips-repo/`(入库)**—— mipsel 交叉编译软件仓库:`bins/`(`meow_mdns` / `mdnsd` 等二进制工具 + `build.sh` + `manifest.md`)、`mpk/`(`.mpk` 应用包)。
- **`docs/`(入库)**—— `MEOWOS_SPEC_REF.md` 权威速查总索引。
- **`font/`(入库)**—— 字形系统:`gen/gen_font.py` 生成器、`meow_font.c/.h` 渲染库、`demo/`、`src/`(字体源文件)。
@@ -167,13 +193,14 @@ patch_v2/hello_app/build_hello.sh # 链 meow_ui.a + libz.a + -lpthread → hel
```
产物放 TF 卡 `MeowAPPs/os.meow.hello/`(见「部署」)。
**3. 构建固件(本地流程)**
**3. 构建固件(本地流程,配置驱动通用化)**
固件 = 官方 v1.4 固件基线 rootfs + SSH 工具集 + MeowOS 系统组件(`meow_bootmenu` / `meow_launcherd` / `meow_watchdog` / `meow_svcd` / `meow_mdns` + 相关 init 脚本 + `/etc/meowos_version`)。特点:
固件 = 官方 v1.4 固件基线 rootfs + SSH 工具集 + MeowOS 系统组件(`meow_bootmenu` / `meow_launcherd` / `meow_watchdog` / `meow_svcd` / `meow_mdns` / `meow_sysui` / `nyai` + 相关 init 脚本 + `/etc/meowos_version`)。特点:
- 打包脚本 `scripts/build/build_fw_apps_m2NN.sh` 是**本地构建工具(gitignore 不入库)**——本仓库只提交源码与文档,需本地交叉工具链 + 官方固件基线 rootfs 才能复现。
- 打包脚本 `scripts/build/build_fw_apps.sh` 是**配置驱动**的通用脚本(`-c fw_content.conf -v <ver> -o <out.upt> [-b <base>]`):`fw_content.conf` 清单逐条 `src|dst|md5|desc`,**`.upt` 条目 md5 配置化**(`md5` 空=不校验,填了=构建前强校验源文件,不一致即中止)。历史逐版 `build_fw_apps_m2NN.sh` 保留(本地,方便对照/回退)。这些是**本地构建工具(gitignore 不入库)**——本仓库只提交源码与文档,需本地交叉工具链 + 官方固件基线 rootfs 才能复现。
- **rootfs 上限 45,088,768 B(≈45MB)**;产物 `fw_apps/r3proii_m2NN.upt`。
- `/usr/bin` 各组件为静态 MIPS32r2;版本号以 `/etc/meowos_version` 为单点。
- `/usr/bin` 各组件为静态 MIPS32r2;版本号以 `/etc/meowos_version` 为单点(`build_fw_apps.sh -v` 写入)。
- **`.upt` 容器 md5 不可复现**(repack 时间戳),以**内容级 0 diff 回验**为准。
- 外围 CLI(curl/socat/tmux/jq/…)已迁 TF 卡 `MeowOS/opt/bin/`(不进固件);固件**不含** SDK 库(`meow_ui.a` 只随 App 链接),`hiby_player` 保持官方原样。
> 第三方开发者通常**不需要**重打包固件:用 `build_hello.sh` 类似方式构建 SDK App 后直接部署到 TF 卡即可热更新(见「部署」)。
@@ -192,7 +219,7 @@ patch_v2/hello_app/build_hello.sh # 链 meow_ui.a + libz.a + -lpthread → hel
- TF 卡布局见 `TF_CARD_LAYOUT.md`。App 目录 `MeowAPPs/<package>/`(`package` = `app.json` 的 `package`,如 `os.meow.hello`):`app.json` + 静态 MIPS 二进制 + 资源;数据在 `MeowData/<package>/{data,cache}`。
- **热更新**:把构建产物放入 `MeowAPPs/os.meow.hello/` 即可;launcher 每次打开菜单重扫卡,立即可见。App 二进制/资源在卡上;拔卡会优雅降级(应用列表"未插卡"/字体回退/日志回退内存环),不崩系统。
- 应用日志:`MeowOS/logs/apps/<package>/logs/<ts>_<pid>.log`(每次启动新文件,单文件 2MB 轮转、每 App 总量上限)。包管理 CLI `nyai`(放 `MeowOS/opt/bin/nyai`):`nyai install <pkg>/<file.mpk>` 等。
- 应用日志:`MeowOS/logs/apps/<package>/logs/<ts>_<pid>.log`(每次启动新文件,单文件 2MB 轮转、每 App 总量上限)。包管理 CLI `nyai`(放 `MeowOS/opt/bin/nyai`):`nyai install <pkg>/<file.mpk>` 等。**`.mpk` = tar.gz**(app.json + 二进制 + 资源,不含 data/cache);launcher 的 `meow_pkg_export` / `nyai export` 导出 tar.gz(busybox tar + gzip,不需 zip);二期加打包签名验签(见 APPS.md)。
**TF 卡目录(关键)**
```
@@ -281,8 +308,8 @@ patch_v2/hello_app/build_hello.sh # 链 meow_ui.a + libz.a + -lpthread → hel
| 文档 | 内容 |
|---|---|
| `docs/MEOWOS_SPEC_REF.md` | **权威速查总索引**(首选入口):路径 / 常量 / 接口 / 约定 + 「已知矛盾 / 待确认」清单 |
| `FRAMEWORK_DESIGN.md` | Activity / 通知 IPC 框架协议(AF_UNIX socket、路由表、导航栈、后台权限、媒体会话、freedesktop/MPRIS/XDG 对齐) |
| `MEOW_APP_SDK.md` | SDK 设计:架构分层、绘制/控件/图片/输入/主题/字体/通知 API、三层控件模型、Activity 栈、动画与性能 |
| `FRAMEWORK_DESIGN.md` | Activity / 通知 IPC 框架协议(AF_UNIX socket、路由表、导航栈、后台权限、媒体会话、freedesktop/MPRIS/XDG 对齐);§10 进程模型 / 系统 UI 归属 / 专项子服务 |
| `MEOW_APP_SDK.md` | SDK 设计:架构分层、绘制/控件/图片/输入/主题/字体/通知 API、三层控件模型、Activity 栈、动画与性能;**§5.8 控件层架构升级(统一控件/Options/状态机/布局 + Material 子集)、§8.1 主题增强(MD3/MIUIx × 明暗 + 背景源)** |
| `APPS.md` | MeowAPPs 应用规范:目录、`app.json` 字段、生命周期、边界、返回键、`.mpk` 包与 `nyai` |
| `NOTIFICATION_SYSTEM.md` | 通知系统:freedesktop 标准、配额、TTL/转储、存储分层 |
| `SYSTEM_SETTINGS.md` | 设置子系统:统一存储 + `meow_settings_*` C API + 变更通知 + 导入导出 |
@@ -290,6 +317,9 @@ patch_v2/hello_app/build_hello.sh # 链 meow_ui.a + libz.a + -lpthread → hel
| `DEVELOPMENT_PLAN.md` | 路线图与分阶段计划(**部分已过时,以实际进度为准**) |
| `GESTURE_BACK_DESIGN.md` / `KEY_CONTROL_DESIGN.md` / `PERF_SCHEDULER.md` | 左缘返回 / 按键契约与信号 / 帧率调度 |
| `mips-repo/README.md` | mipsel 软件仓库(`bins/` 工具 + `mpk/` 应用包)与 meow_svcd CLI |
| `patch_v2/meow_sysui/meow_sysui.md` | 系统进程总监 meow_sysui:监管模型、`sysui.d/` 配置、与 bootmenu/svcd 的托管关系 |
| `devdocs/plan/MEOWPANEL_PROTOCOL.md` | MeowPanel 外部管理面板协议(31 端点)(devdocs,gitignored) |
| `devdocs/plan/SYSTEM_FRAMEWORK_SERVICES.md` | 系统框架专项服务(perf/power + 电源 CLI + 二期 `os.meow.*` 鉴权 / .mpk 签名)(devdocs,gitignored) |
> 文档收敛规则:新功能在对应权威文档(`MEOW_APP_SDK.md` / `APPS.md` / `SYSTEM_SETTINGS.md` 等)补小节;新增决策/检查点记录在本地开发文档;过时的一次性设计归档。
@@ -301,6 +331,6 @@ patch_v2/hello_app/build_hello.sh # 链 meow_ui.a + libz.a + -lpthread → hel
- **性能铁律:局部脏区刷新,不整屏重绘**。渲染走 `back_buf` + `meow_present(dirty)`(脏区矩形合并集、相交吸 bbox、超过阈值转全屏、裁可视区);状态栏时钟 / 格按需局部标脏;等垂直同步 + 单次原子 memcpy。刷新率调度 `display.refresh_rate` 60/30/15 + 自适应降档(连续 12 帧超预算降一档、远低预算升一档)。
- **rootfs 上限 45,088,768 B(≈45MB)**;`/usr/bin` 各组件静态 MIPS32r2。
- **板载存储极小**(`/data` 约 16MB):只写 KB 级设置(`/usr/data/meow/settings.conf`);日志 / 字库 / 媒体 / 应用一律写 TF 卡;无卡优雅降级(不崩不死)。
- **mtd 分区**(勿写 NAND):mtd0=uboot、mtd1=kernel、mtd2=rootfs、mtd3=kernel2、mtd4=rootfs2、mtd5=ota(8M 标记)、mtd6=userdata。
- **mtd 分区**(勿写 NAND):mtd0=uboot、mtd1=kernel、mtd2=rootfs、mtd3=kernel2、mtd4=rootfs2、mtd5=ota(8M 标记,写入 `ota:kernel2` 引导 kernel2 自动升级;`meow_svc_power upgrade` 走此)、mtd6=userdata。
- **安全红线**:不要远程 kill 常驻 `meow_launcherd`(整机重启);`hiby_player` 只能 SIGSTOP/SIGCONT,严禁 killall / 对其发未注册信号(如 SIGUSR1 导致整机重启)/ 走 `hiby_player.sh`;严禁触碰 NAND / `recovery_all`;播放器不能「杀+重拉」(HGL 连续内存)。
- 本仓库为**非官方第三方项目**,修改并与官方固件共存;刷机有一定的变砖风险(可用官方固件刷回),请自行评估。所有「真机验证」项请以实机为准。
+11 -2
View File
@@ -115,10 +115,18 @@
- [D1] `meow_ui_opts` 补 width/height;[D2] `meow_list_source` 定案签名;[D3] 内部 `meow_gfx_fill_round/blit_rgba/mark_dirty`(非公共);[D4] 新增 `meow_theme_defaults(mode)`/`meow_theme_current()`;[D5] `on_swipe_progress`+`meow_ui_swipe_hint(x)`+内部 `MEOW_EV_SWIPE_PROGRESS`/`meow_input_inject`;[D6] 状态栏高=40(后续用户定 40→28);[D7] 音量源=settings.conf `audio.volume`;[D8] 蓝牙读 `hciconfig` 30s 缓存;[D9] 状态读取器跑在 `meow_ui_run` 1s 节流(无独立线程);[D10] 全局返回默认语义="APP 未注册 on_swipe 时 SDK 默认退出;已注册交 APP"
- **构建取向(已知设计,非缺陷)**:`build_sdk.sh` 用 `-I../meow_launcherd` 引 `meow_ipc.h`(`meow_notify_ipc.c` 复用共享协议头),故 SDK 编译期依赖 launcher 头、**非独立库**;**运行时无碍** —— App 只链 `meow_ui.a`(含 meow_font.o),不会链入 launcher 符号。SDK 编译依赖 launcher 头属已知设计,勿当作耦合错误。
### 3.4 SDK 统一控件库 + 主题增强(M2.70/M2.71 落地)`[MEOW_APP_SDK §5.8/§8.1][meow_ui.h][meow_ui_widget.c]`
> 定位:把 §5(最小控件集)与设计模板(§5.2-§5.7)收敛到**统一控件架构**;实现分两批(§5.8.8)。
- **第一批 = 通用基座(M2.70/0.7.65)**:`meow_widget` 基座统一标准控件/自定义画布;`meow_widget_opts`(Modifier 式 Options,`meow_widget_set_opts`/`meow_widget_opts_get`,0/-1 用默认);统一状态机 `MEOW_WS_ENABLED/SELECTED/FOCUSED/PRESSED`(`meow_widget_set_state`/`meow_widget_state`/`meow_widget_enabled`/`selected`);`meow_widget_custom_create`(自定义画布,App 给 render/hit 回调,`W_CUSTOM`);布局 `meow_row/column/box`+`meow_layout_add/arrange`+`spacer`;MD3 语义色板(§5.8.4)+ 主题接口 `meow_ui_set_style`(`MEOW_STYLE_MD3/MIUIX`)`/meow_theme_get`。
- **第二批 = Material 组件子集(M2.71/0.7.66)**:`meow_btn_create_variant`(五型)/`meow_textfield_create`(IME)/`meow_card_create`/`meow_divider_create`/`meow_badge_create`/`meow_checkbox_create`/`meow_radio_create`/`meow_progress_create`/`meow_progress_circular_create`/`meow_fab_create`/`meow_topappbar_create`/`meow_navigationbar_create`/`meow_tabbar_create`/`meow_lazycolumn_create`/`meow_lazyrow_create`/`meow_dialog_create`/`meow_sheet_create`。
- **兼容**:既有 `meow_btn/slider/switch/list_create` 签名一字不改(Options/状态机走新增挂载器);`meow_ui_theme`/`meow_widget` 结构变化 = **`meow_ui.a` ABI 变化** → 需同步重编 hello(§5.8.8)。
- **主题增强(§8.1)**:主题 = **顶级风格族 `ui.style`(md3/miuix)× 明暗 `display.theme`(dark/light)** 共同决定「整套配色+控件形态+背景底」;`display.background` 为「style×mode」派生的**可选背景底选项集**(非独立维度);状态栏图标随 `ui.style` 换集。⚠️ **`miui`/`miuix` 命名待定案(保留,勿拍板)**:`MEOW_APP_SDK §8.1` 用 `miuix`;`SYSTEM_SETTINGS §1` 注明 `meow_settings.c g_defs` 现值 `"md3,miui"`(label "Material You,MIUI"),实现时把 `g_defs` 的 `miui` 对齐为 `miuix`(**MIUIx 未实现,当前仅 md3 生效**)。
---
## 4. SDK 之外系统组件
- **系统进程 supervisor 树(源:2026-08-30 定案)**:`meow_sysui`(新增,meow_svcd 托管)= 系统进程总监,监管 launcher/svcd/mdns/未来媒体服务/MeowPanel,**一个崩→只拉起它,绝不级联**;`meow_launcherd`=系统 UI 渲染宿主(状态栏/通知中心/电源菜单/全局手势,与 APP 进程独立);`meow_svcd`=服务管理器(服务全子进程化,svcd 自身不死);APP 进程只渲染自己内容,崩不连累系统 UI。**系统组件渲染归系统进程(launcher),APP 进程不渲染系统 UI**(SDK 系统组件 API 仅系统进程可链,App 不可自建悬浮层);通知中心 UI 渲染主体=系统进程,数据经 IPC 从通知存储读。现网(bootmenu execv launcher + S89 svcd 自启)→ 定案(sysui 统一监管)为渐进迁移,属系统基建线。`[FRAMEWORK_DESIGN §10][MEOW_APP_SDK §6.1][NOTIFICATION_SYSTEM §9]`
- **系统进程 supervisor 树(源:2026-08-30 定案;M2.71 已落地 `meow_sysui`)**:`meow_sysui`(`patch_v2/meow_sysui/meow_sysui.c`,~113KB;`etc/init.d/S70meow_sysui` 开机拉起,早于 S89)监管系统进程,**一个崩→只拉起它,绝不级联**;`meow_launcherd`=系统 UI 渲染宿主(状态栏/通知中心/电源菜单/全局手势,与 APP 进程独立);`meow_svcd`=服务管理器(服务全子进程化,svcd 自身不死);APP 进程只渲染自己内容,崩不连累系统 UI。**系统组件渲染归系统进程(launcher),APP 进程不渲染系统 UI**(SDK 系统组件 API 仅系统进程可链,App 不可自建悬浮层);通知中心 UI 渲染主体=系统进程,数据经 IPC 从通知存储读。现网(bootmenu execv launcher + S89 svcd 自启)→ 定案(sysui 统一监管)为渐进迁移,属系统基建线。**sysui 当前默认只监护 `meow_svcd`**(`/usr/data/meow/sysui.d/<name>.conf`,目录式复用 services.d 语义;launcher 由 S90meow_bootmenu 的 execv 拥有,登记但 `enabled=0` 防双重拉起;mdns 是 svcd 服务子进程,不双重管理)。`[FRAMEWORK_DESIGN §10][MEOW_APP_SDK §6.1][NOTIFICATION_SYSTEM §9][patch_v2/meow_sysui/meow_sysui.md]`
- **专项子服务(一期在跑,规划见 `devdocs/plan/SYSTEM_FRAMEWORK_SERVICES.md`)**:两个 **svcd 托管、板载 `trigger=boot`** 的专项子服务——`meow_svc_perf`(性能/系统只读聚合)、`meow_svc_power`(关机/重启/升级/回 HiBy 系统动作)。launcher 电源菜单与 MeowPanel 均改经这些服务 IPC 触发(不再直连 `sys_do_reboot`/爬 `/proc`)。**电源 CLI `meow_svc_power <cmd>`**(root 免鉴权、单一命令、不覆盖系统 shutdown/reboot):`shutdown`/`reboot`(强制回 MeowOS)/`upgrade`(写 mtd5=`ota:kernel2`)/`set-default-hiby`/`reboot --hiby` + `status`/`screen`/`dac`/`battery`/`reboot-reason`/`upgrade-status`。**二期**:关键 IPC 只接受 **`os.meow.*`** 鉴权 + `.mpk` 打包签名验签(解包验签/导出保留签名)。`[SYSTEM_FRAMEWORK_SERVICES][APPS 附录 §3]`
- 通知(SDK `meow_notify_*`,M2.53 最小版 `[meow_ui.h §9.1]`):
- 常量:`MEOW_NOTIFY_MAX_TYPES=4`/`MEOW_NOTIFY_MAX_PER_TYPE=4`/`MEOW_NOTIFY_MAX_MEDIA=1`/`MEOW_NOTIFY_TIMEOUT_ONGOING=-1`/`MEOW_NOTIFY_TIMEOUT_NEVER=0`
- 分类:`CAT_GENERAL/MESSAGE/EMAIL/EVENT/PROGRESS/MEDIA(=5)/COUNT`;紧急度 `URG_LOW/NORMAL/HIGH/CRITICAL`
@@ -149,6 +157,7 @@
- **左缘返回手势**:手指从**屏幕左缘 ≤24px** 向内(右)划 **≥90px**,**抬手(release 边沿)才触发** `MEOW_SWIPE_LEFT`("左滑=返回"契约);过程以 `on_swipe_progress` 实时上报 + SDK 自动画顶部进度条 `meow_ui_swipe_hint(x)`(5px 高,top,theme accent 色);x<=0 清条。**中部左/右滑不是返回**(中部右滑→SWIPE_RIGHT,中部左滑→落 TAP)`[MEOW_APP_SDK §6][GESTURE_BACK §2.2/§3]`
- 偏差:原「左缘+向左 mdx<-90」物理不可达 → 取「左缘向内(右)划 ≥90px」,事件仍报 `MEOW_SWIPE_LEFT` `[GESTURE_BACK §3]`
- **全局状态栏**:SDK 内置,默认显示(时钟/电量/WiFi/蓝牙/音量),1s 轻刷,z 最顶;仅 APP 声明全屏/`fullscreen:1` 才隐藏;非全屏 APP 须用 `meow_ui_statusbar_height()` 做 inset `[meow_ui.h §3.1][MIGRATION_AC §3]`
- **状态栏统一(M2.66 收敛,「同一个状态栏」正确闭环)**:状态栏是**某一个渲染主体**(系统进程 launcher)——主界面与 App 前台用**同一个**状态栏实例,**App 进程不渲染、不自绘、不叠加**(§10.2/@`FRAMEWORK_DESIGN §10.2`);App 前台时状态栏作为**系统叠加层**盖在内容之上(复用 fb 双缓冲备份/恢复/pan);**数据源唯一由 launcher 统一喂/取**(时间/电量/WiFi/音量/亮度)→ 两边必然一致(根治 M2.66「桌面有亮度、App 没有」的不一致)。右侧为 **MD3 图标 + 变量值**(随 `ui.style` 换图标集)。**全屏收合**:状态栏向上收出屏顶、只留提示线,**顶部保留热区**(仍可下滑通知中心)+ 左缘指示条(见 §3.1/A-13/§5.1)。`[FRAMEWORK_DESIGN §10.2]`
- **全屏机制(M2.5x,`app.json fullscreen` 即 app 级 + `route.<id>.fullscreen` 即 activity 级)**:launcher 启动 app/切 activity 时据声明**预先设 SDK 全屏**(env `MEOW_FULLSCREEN`)。进入/退出全屏:**状态栏向上收出屏顶、只留一条提示线高度**(非全隐藏),带上收/恢复的**自然过渡动画**。**全屏下保留**:左缘返回手势 + 顶部动态伸缩提示线;顶部下滑仍可展开通知中心,但**顶部热区缩小**(不影响全屏 app)`[源:用户 2026-08-30]`(细化既有「全屏=隐藏状态栏/隐藏返回键」的表述,见 §7 A-13)
- 沉浸:`app.json immersive:1` → launcher 写 `/tmp/meowapp_state=1` → 隐藏虚拟返回键,手势归 SDK `[APPS §3.5][GESTURE_BACK §2.4]`
- **横向分页设计模板(M2.5x 预留,见 `MEOW_APP_SDK.md` §5.2)**:主页/子页多页横向滑动复用的设计模板(参照 HibyOS 播放器主页横划进播放页)。与左缘返回/顶部下滑**按起始位置分流**互斥——左缘 ≤热区→**左滑返回**(§5.1);中部左/右滑→**页切换**;顶部下滑→**通知中心**。实现要点:相邻页各预渲染一张快照、切换只 blit 快照 + 跟手平移/吸附(vsync ≤60 帧、零 UI 重算)。**注**:模板 API 为「草案/待定案」,当前未实现 `[源:2026-08-30]`
@@ -190,7 +199,7 @@
- **⑨ 面板「跟手下拉、半程可回」(launcher 侧,M2.65)**:面板打开/关闭由触发式 180ms 过渡升级为**手指拖动实时跟手**——顶部热区下拉 `progress = 手指位移映射`(复用 `mnp_anim_off`,∈[0,1024],1:1 跟手);松手 `progress≥40%×1024≈410` → 时间轴补到 1024(展开);`<阈值 或 反向拖回` → 回弹到 0 收回(半程取消);关闭同理可跟手。与行左滑(⑦ 横向主导)/列表滚动(竖向溢出)/`meow_edge_back`(左缘)互斥分流。`[NOTIFICATION_SYSTEM §9]`
### 5.4 配置版本单点 / 刷新率 / 息屏
- /etc/meowos_version 版本单点(见 §1.1)`[DEV_NOTES #4]`
- **现行:M2.71(`/etc/meowos_version` = `0.7.66`;M2.70/0.7.65、M2.69/0.7.64、M2.68/0.7.63 …)**;版本单点 = `/etc/meowos_version`(见 §1.1,`build_fw_apps.sh -v` 写入)`[DEV_NOTES #4][fw_content.conf]`
- 刷新率:`display.refresh_rate` enum 60/30/15(默认 60);`display.refresh_always_max` bool false(关=允许 60→30→15 降档)。governor:连续 12 帧超预算降一档,连续 4 批≈48 帧远低预算升一档 `[SYSTEM_SETTINGS §1][PERF_SCHEDULER][MIGRATION_AC §12.1]`
- 息屏:`display.screen_off_timeout` int 秒 默认 **30**(0=常亮);`display.screen_off_mode` enum `panel`(面板下电+背光0+FBIOPBLANK)/`black`(背光0全黑+双击亮屏) `[SYSTEM_SETTINGS §1]`
- 亮度 clamp:`display.brightness` 0-255 默认 101(clamp ≥ `display.brightness_min`);`display.brightness_min` 默认 **1**(M2.39 由 25 改 1)——**与旧文档 25 冲突见 §A** `[SYSTEM_SETTINGS §1]`