MeowOS for HiBy R3 Pro II — 公共发布版本(历史已重置)
• 全新单提交:清除含敏感信息的旧历史(sudo 口令、内网 IP、SSH 密钥路径、热点 SSID、设备 MAC) • 本地开发文档/测试记录/构建脚本全部移入 gitignored 的 devdocs/ 与 scripts/build/(不入库) • 保留:MeowOS 源码(launcher/watchdog/bootmenu/meow_svcd/SDK)、项目规范文档、mips-repo 增补组件:SDK 统一日志+通知 API、meow_svcd 服务管理器、mips-repo 软件仓库
This commit is contained in:
commit
245bee2946
136 files changed
+32730
No files matched your search
@@ -0,0 +1,72 @@
|
||||
# MeowOS 通知系统设计(M2 通知存储 + 分发,阶段 B/D 前置)
|
||||
|
||||
> 状态:设计稿定稿讨论中(2026-08-29,用户已给定多数决策)。按 FREWORKS §4/附C + 用户约定,遵循 freedesktop.org 通知规范。**实施前仅剩"应用配额"细节待深入讨论**(见 §7)。
|
||||
|
||||
## 1. 定位
|
||||
- MeowOS 通知中心的后端(存储+分发),是阶段 B 通知中心 UI + 阶段 D(M2 通知存储)的前提。
|
||||
- 生产者 = MeowAPP(原生 IPC)+ **系统事件(系统抽象为 App)** + 外部桌面 app(D-Bus 桥)。
|
||||
|
||||
## 2. 通知标准(freedesktop.org Desktop Notifications,用户约定)
|
||||
遵循 `org.freedesktop.Notifications`(D-Bus 接口),字段严格按标准:
|
||||
- **app_name**(来源应用名)
|
||||
- **replaces_id**(更新/替换通知 id;0=新建)
|
||||
- **app_icon**(图标,指 icon name 或 path)
|
||||
- **summary**(标题,单行)
|
||||
- **body**(正文,可多行)
|
||||
- **actions[]**(按钮,可选;动作回调)
|
||||
- **hints{}**(提示,含 `x-canonical-*`/progress/图片数据等;我们用 `hints` 传 target Activity、进度 percent 等)
|
||||
- **expire_timeout**(超时 ms;-1=常驻/ONGOING,0=不自动过期)
|
||||
- 返回新版通知 **id**。
|
||||
|
||||
**MeowOS 扩展**:`hints` 内加 MeowOS 专有键(如 `meow.target_activity`、`meow.progress`)用于通知中心点击跳转/进度条显示。媒体通知走 MPRIS(`org.mpris.MediaPlayer2`,另行)。
|
||||
|
||||
## 3. 双接口(FREWORKS 附C,已定)
|
||||
1. **原生 IPC**:MeowAPP 经 AF_UNIX socket 发 `MSG_NOTIFY`(FREWORKS §4 通定协议 0x0020)+ `MSG_NOTIFY_ACK`(0x0021)/`DISMISS`(0x0022)/`LIST`(0x0023)。
|
||||
2. **D-Bus 桥** `meow_notify_dbus`(独立小守护,链 libdbus/GDBus,系统总线注册 `org.freedesktop.Notifications`):收到标准 `Notify()` → 经 MeowOS IPC 后端入通知存储;后端关闭/动作 → 回发信号。libdbus-1/libdbus-glib/libgio 已确认可用。
|
||||
|
||||
## 4. 通知数据结构(存内存 + 转储)
|
||||
每通知字段(对齐 freedesktop + MeowOS):
|
||||
```
|
||||
id(uint32) / app_name / app_icon / summary / body / actions[] / hints{}
|
||||
expire_timeout / created_ms / dismissed / ongoing(bool)
|
||||
target_activity(可选, 来自 hints) / progress(可选 int)
|
||||
```
|
||||
统一从 IPC/D-Bus 两路解析入该结构。
|
||||
|
||||
## 5. 存储分层(用户已定 2026-08-29)
|
||||
- **关键配置优先板载**:设置类(notify.* 配额等)存板载 `/usr/data/meow/settings.conf`(B2a),确保**无卡时系统正常工作**。
|
||||
- **实时通知 → 本地内存**(板载,动态分配/ring)。
|
||||
- **超时/转储 → TF 卡** `MeowOS/notifications/`(**系统约定:系统文件统一放 MeowOS/ 下**,非 MeowData/——MeowData 是应用专属数据根)(转储区,如 notifications/<ts>.json 或 appended 日志)。
|
||||
- **无 TF 卡可运行**(本地内存态即可,不依赖卡;TF 卡在时才转储)。转储/日志类是可降级数据(无卡用 /tmp 回退),配置类永远板载。
|
||||
- **本地数据清理策略**:
|
||||
- 关机/重启前 → 清理本地内存通知数据(正常关机路径)。
|
||||
- 异常关机(重启后)→ 开机时识别并清理本地残留。
|
||||
- **TF 卡转储区**:保留**最新 10MB**(ring/截断),**不被电源事件清理**(持久留存)。
|
||||
|
||||
## 6. 通知生命周期(FREWORKS §4 已定,作参考)
|
||||
- 内存态:每应用**配额**(待讨论 §7),满丢最旧;ttl 过期(1s 粒度);ONGOING 常驻(服务死随清)。
|
||||
- 转储:超时/入 TF 卡区。
|
||||
|
||||
## 7. 【已定】应用配额(用户拍板,2026-08-29)
|
||||
- **每个 App 最多申请 4 个通知类型(category)**。
|
||||
- **每个类型活跃(未过期)通知上限 4 条**。
|
||||
- **媒体通知除外**:单个 App 只允许保留 1 个媒体通知;允许多个媒体 App 同时(多应用同时播放场景),UI/逻辑后期处理好。
|
||||
- 数据类型:`notify.category`(App 声明用哪些类型,≤4) / `notify.category_quota`(每类型 4,默认)。
|
||||
- 系统事件:系统也抽象为 App(`app_id=system`),同样走配额(系统通知也占"系统"App 的类型/条数配额)。
|
||||
- 配额只管**内存活跃态**;转储到 TF 的历史不受配额限制(只受 10MB 总量)。
|
||||
|
||||
## 8. 转储规则(用户拍板,2026-08-29)
|
||||
- **通知创建 10 秒后自动转储到 TF 卡**(无论是否过期/被清)——通知中心显示"最近 10 秒内活跃" + TF 归档历史。
|
||||
- **正常电源事件(关机/重启)触发清除板载通知数据之前**:先转储所有未上卡的通知,再清除板载。
|
||||
- **异常关机**:开机时清理板载残留通知数据。
|
||||
- TF 卡转储区 `MeowOS/notifications/`:保留**最新 10MB**(ring/截断),**不被电源事件清理**(持久留存)。
|
||||
- **无 TF 卡**:系统可运行(内存态通知即可),不依赖卡。
|
||||
|
||||
## 9. 通知中心 UI(阶段 B)
|
||||
- 状态栏下滑打开通知中心(用户已定),列表显示通知(app 图标 + summary + body + target Activity),点击按路由表解析跳转(M3 导航栈),下拉关闭/清除。**此部分依赖 M2 存储 + M3,后置。**
|
||||
|
||||
## 10. 分步实施建议
|
||||
1. **M2a 通知存储 + 原生 IPC**:按上面的配额(category 级)+ TTL 10s 转储钩子 + 系统事件源(系统作 App)。→ 可先落地。
|
||||
2. **M2b D-Bus 桥 meow_notify_dbus**(org.freedesktop.Notifications 桥接)。
|
||||
3. **M2c 转储 TF 卡 + 10MB 保留 + 关机前转储/开机清理**。
|
||||
4. M5 通知中心 UI(阶段 B)+ media 通知(MPRIS)。
|
||||
Reference in new issue
Block a user