feat: M6.10–M6.19 批量收编 + M6.19 推卡验收
- M7 launcher 重写 5 期(虚拟化宫格/meow_theme 单一权威/横幅动画/自定义 PIN 键盘) - OOM 通用化(cachegov 上收 SDK)、自动切歌根治、meowpanel jv_free 泄漏修复、Hello 滚动卡顿修复 - ncm 歌词 UI / 媒体通知封面 / 封面分辨率 640 - 5 bug 修复:ncm 后台化 UI 叠层+点击穿透、再进 ncm 桌面叠层、播放页新旧 UI 叠层抢刷脏区(meow_ui_gfx 恢复边沿整帧重画)、PIN 亮屏亮度跳(keys.c meow_panel_on 按 settings_brightness_clamped 恢复)、通知中心封面显歌单封面(cover.c save_cover_raw 加 is_song + 命中块守卫) - 四 App 统一重链新 meow_ui.a 51caee4a;M6.19=0.8.19 固件 2d2331f2 推卡自刷验收全绿
This commit is contained in:
1 parent
c2ee7626a4
commit
3d70a3dd2c
176 files changed
+15507
-597
No files matched your search
@@ -14,7 +14,7 @@
|
||||
- `/etc/meowos_version`:版本唯一来源(launcher 运行时 `load_meowos_version` 读;`MEOWOS_VERSION` 宏仅作 dev 占位兜底)`[DEV_NOTES #4]`
|
||||
- **`/data/meow_boot_default`:开机默认权威标记(O_TRUNC 单值:`0`=MeowOS / `1`=HiByOS)**。由 launcher `meow_settings_save()` 在保存 `boot.default` 时同步写;bootmenu `set_boot_default_meow()`(写 0)/ launcher `set_boot_default_hiby()`(写 1)同文件同语义;bootmenu 开机读它定默认;init 读入不触发、不反向覆盖;`meow.conf` 不再承担 boot_default `[M2.61 同步修复][README][meow_settings.c][meow_bootmenu.c]`
|
||||
- `/tmp`:tmpfs,开机清空;开机模式标记 `/tmp/meow_boot_mode`、电源菜单 `/tmp/meow_power_menu{,_active}`、app 沉浸 `/tmp/meowapp_state`、**锁屏** `/tmp/meow_pin_unlock_once`(一次性解锁恢复口,launcher 锁屏页消费放行一次、重启自消)/`/tmp/meow_pin_locked`(电源菜单「主动锁」标志,重启消失)`[BOOT_SELECTOR §1][KEY_CONTROL §9][APPS §3.5][WORK_STATE 2026-09-02]`
|
||||
- **锁屏 PIN(M6.2 起,与面板同源 `system.pin`,规范 `SYSTEM_SETTINGS` 锁屏小节)**:设置键 `system.pin`=`<salt_hex>:<sha256_hex(salt||pin)>`(sha256+salt,格式与面板 `panel.pin` 全等,**绝无明文**;空=未设=锁屏关;`panel.pin` 已设时锁屏接受并首次验证成功后并入本键)+`system.pin_lock_on_wake`(息屏唤醒后锁屏,int 0/1,默认 1=开;开机不锁)+`system.pin_lock_until`(错 PIN 锁定的 epoch 截止戳,持久化防 launcher 重启清零)+`system.pin_fails`(连续错 PIN 计数 0-4,达 5 触发锁定并清零,持久化)。清/改:设置「安全→锁屏 PIN」页——设/改需旧 PIN 一次、**清除免旧 PIN**(物理持机即授权,仅二次确认)、`system.pin_lock_on_wake` 开关;**兜底**:SSH root 删 `system.pin` 键即解锁(无其它后门)。**锁屏模态演进**:M6.4 §310 二期 **EVIOCGRAB 独占触控**(锁屏层独占 grab,下层 App 完全收不到锁屏触摸)+主界面应用名截断;M6.6 §310 三期——**App 内手动息屏也触发锁屏** + **锁屏脏区全屏不透明底** + **300ms 重铺**。`[SYSTEM_SETTINGS §1][WORK_STATE 2026-09-02]`
|
||||
- **锁屏 PIN(M6.2 起,与面板同源 `system.pin`,规范 `SYSTEM_SETTINGS` 锁屏小节)**:设置键 `system.pin`=`<salt_hex>:<sha256_hex(salt||pin)>`(sha256+salt,格式与面板 `panel.pin` 全等,**绝无明文**;空=未设=锁屏关;`panel.pin` 已设时锁屏接受并首次验证成功后并入本键)+`system.pin_lock_on_wake`(息屏唤醒后锁屏,int 0/1,默认 1=开;开机不锁)+`system.pin_lock_until`(错 PIN 锁定的 epoch 截止戳,持久化防 launcher 重启清零)+`system.pin_fails`(连续错 PIN 计数 0-4,达 5 触发锁定并清零,持久化)。清/改:设置「安全→锁屏 PIN」页——设/改需旧 PIN 一次、**清除免旧 PIN**(物理持机即授权,仅二次确认)、`system.pin_lock_on_wake` 开关;**兜底**:SSH root 删 `system.pin` 键即解锁(无其它后门)。**锁屏模态演进**:M6.4 §310 二期 **EVIOCGRAB 独占触控**(锁屏层独占 grab,下层 App 完全收不到锁屏触摸)+主界面应用名截断;M6.6 §310 三期——**App 内手动息屏也触发锁屏** + **锁屏脏区全屏不透明底** + **300ms 重铺**;M6.7 锁屏页自睡(空闲超时自动灭屏);M6.8 310 四轮锁屏自睡 min(系统息屏,30s);M6.9 批A **锁屏期音量/播放/上下曲键转发**(EVIOCGRAB 独占真模态下下层收不到,锁屏本层显式边沿处理:音量 `settings_volume_adj`+`vol_ramp_tick`、播放/上下曲 `meow_media_playctl`)。`[SYSTEM_SETTINGS §1][WORK_STATE 2026-09-02]`
|
||||
- 日志启动缓冲 `/tmp/meow_boot.log`(256KB 滚动,卡出现后自动迁卡)`[APPS §4.5]`
|
||||
- IPC socket:`/usr/data/meow_ipc.sock`(AF_UNIX SOCK_STREAM,0666,backlog 4)`[FRAMEWORK_DESIGN §1][WORK_STATE]`
|
||||
- 专项服务 IPC socket:`/usr/data/meow_perf.sock`(meow_svc_perf,收 `MSG_PERF_QUERY→RESULT`)与 `/usr/data/meow_power.sock`(meow_svc_power,收 `MSG_POWER_ACTION→STATUS`),均 0666、可 `--sock`/`MEOW_IPC_{PERF,POWER}_SOCK` 覆盖;power 服务端以 `SO_PEERCRED uid==0` 基础鉴权 `[meow_svc_perf.c][meow_svc_power.c][meow_ipc.h]`
|
||||
@@ -139,12 +139,14 @@
|
||||
- **图标库 `sb_icons`(307,Material Symbols Rounded / MD3,单通道 alpha 32×32,生成 `tools/gen_action_icons.py`)**:索引只追加——状态栏 `MEOW_SB_ICON_WIFI=0..BATT_CHG=14` 原样保留;**动作** `MEOW_ICON_SETTINGS=15..MEOW_ICON_HEART=29`(设置/刷新/搜索/播放/暂停/上下曲/返回/关闭/添加/勾选/歌词/列表/下载/收藏),经 `meow_topappbar_set_item_icon(w,idx,MEOW_ICON_*)` 使 W_TOPAPPBAR 动作项画位图(`layout 见 meow_ui_widgets.h`)。
|
||||
- **图片降采样 `meow_img_downscale(img,maxdim)`(308)**:把解码图降到 ≤maxdim 边长以省内存(流媒体客户端封面 1448² RGBA 8.28MB→cap≤480px→0.78MB,-7.65MB),返回新 `meow_img*`。
|
||||
- **§10.1 矢量字 `meow_ft_*`(316,上收阅读器已验证的 FreeType 管线,`patch_v2/sdk/meow_ui_ft.c`)**:`meow_ft_new_face(path)`(`FT_New_Face` 按需读文件零整载 anon + glyph LRU 512(key=`(px<<32)|cp`,可配 256/1024)+ 灰阶 blend565);`meow_ft_draw_*`/`meas`/`free`(App **显式**调才用,`meow_ui_text` 位图路径零改动);加载失败/无卡自动降级 `meow_font`(绝不豆腐不崩)。与位图字库**并存**;FreeType 2.14.3 vendor 进 `patch_v2/sdk/vendor/`(gitignore)+ `build_sdk.sh` 裁剪构建(`-DFT_DISABLE_ZLIB/BZIP2/PNG/HARFBUZZ/BROTLI=TRUE`,静态 musl);**不调 `meow_ft_*` 的 App 零增量**(`meow_ui_ft.o`/freetype 链接器不拉取,无任何 FT 符号)。**SDK 演进主体收官**。
|
||||
- **M7.0a SDK 基座(326,`meow_ui.a 7fc83f77`,launcher 重写前置)**:**`meow_view` 事件接线**(`meow_view_dispatch_event` 接 `meow_ui_run` 主循环 + `on_enter/on_leave` 递归 children + 动态挂子修正);**`W_ICONBTN`**(圆形命中 + 按压态,`MEOW_ICON_*` 位图/自定义画布按钮,电源菜单/播放控制用);**主题色板导出/注入** `meow_theme_export/inject`(launcher `s_ui_theme` 薄壳读 SDK,为 M7.4 主界面/各页统一 `meow_theme` 权威铺路)。
|
||||
- **SDK 新增批次(lazygrid/select/swipe/cachegov/net,`meow_ui.a c3d6371b`)**:**§12.4 2 维虚拟化宫格 `meow_lazygrid`**(M7.4 主界面前置:count+cols+视口虚拟化,item 池有界 ≤`MEOW_LAZYGRID_POOL_MAX`=96,fling/snap 复用 §12.3 meow_scroll,`set_vsource/set_item_draw/set_empty_text`+`hit/tap_at`);**§5.8.9 枚举选择器 `meow_select`**(M7.2 设置页缺口 #4:BottomSheet+`meow_listview(SINGLE)` 单选,`create/add_item/set_on_change/open(阻塞返回 idx/-1)/free` + 一次性 `meow_select_show`,选项 ≤`MEOW_SELECT_MAX_ITEMS`=32);**§5.5 左滑删除 swipe-delete**(M7.3 通知中心缺口 #9:`meow_listview_set_swipe_delete(lv,enabled,on_delete,ctx)` + `swipe_begin/move/end/active/offset`,横滑删/纵向滚/点按 tap 三分);**§14.2 磁盘缓存治理 `meow_cachegov`**(OOM page-cache 治理 A 侧:L0 曲终整文件 DONTNEED / L1 丢已读前缀 / **L2 禁止**,10s 滚窗逐级回退,`cfg{enabled,keep_hot_bytes,min_hot_ahead,drop_mode,refault_backoff}` + `register/unregister/tick/drop_finished/set_cfg/note_refault/backoff_level/download_paused/prefetch_paused`);**§14.1 网络自愿通道 `meow_ui_net`**(netmgrd 期4:`meow_net_policy_check(host)` 0=allow/1=block + `meow_net_report(rx,tx)` best-effort)。权威签名 = `patch_v2/sdk/include/meow_{lazygrid,select,cachegov}.h` / `meow_ui_net.h`;蓝本 `MEOW_APP_SDK.md` §5.5/§5.8.9/§12.4/§14。
|
||||
|
||||
---
|
||||
|
||||
## 4. SDK 之外系统组件
|
||||
- **系统进程 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 统一监管)为渐进迁移,属系统基建线。**已迁移(M2.83)**:sysui 默认监护 `meow_svcd` + `meow_launcherd`(`/usr/data/meow/sysui.d/<name>.conf`,目录式复用 services.d 语义;`sysui.d/launcher.conf` `enabled=1`(restart=always/backoff=3000/max_restart=5),bootmenu 在 MeowOS 模式让位——sysui 在则不 exec launcher;mdns 是 svcd 服务子进程,不双重管理)。`[FRAMEWORK_DESIGN §10][MEOW_APP_SDK §6.1][NOTIFICATION_SYSTEM §9][patch_v2/meow_sysui/meow_sysui.md]`
|
||||
- **专项子服务(一期 M2.73 已落地,规划见 `devdocs/plan/SYSTEM_FRAMEWORK_SERVICES.md`)**:两个 **svcd 托管、板载 `trigger=boot`** 的专项子服务——`meow_svc_perf`(性能/系统只读聚合)、`meow_svc_power`(关机/重启/升级/回 HiBy 系统动作)。launcher 电源菜单与 MeowPanel 均改经这些服务 IPC 触发(不再直连 `sys_do_reboot`/爬 `/proc`)。**IPC**:perf 走 `/usr/data/meow_perf.sock` `MSG_PERF_QUERY→RESULT`;power 走 `/usr/data/meow_power.sock` `MSG_POWER_ACTION→STATUS`(服务端 `SO_PEERCRED uid==0` 基础鉴权)。**M2.73**:perf 增 **network** 子集(SYSTEM 子集输出:真实 WiFi `wpa_cli`/`ip` + 蓝牙 `hci0`/sysfs + `hostname_local`,单点权威源);power **升级写保护**(`upgrade` 写 mtd5 前校验卡根 `r3proii.upt` 存在+可读+常规文件+size>0,失败不写 mtd5/不重启;**只完整性不签名**,海贝官方固件无签名,期望 md5/hash 二期)与 **`dac status` 读板载 `settings.conf` 的 `audio.volume` 真实值**(`settings_get_int_trim`,弃 amixer dummy;`dac on/off` 因 cs43198 `pwr_gpio=-1` 无控制点→`MEOW_ERR_NODEV`)。新 md5:perf `7ea196de`(M2.75 补 network 闭合括号)、power `306df962`(2B 面板精确绑定)。**电源 CLI `meow_svc_power <cmd>`**(root 免鉴权、单一命令、不覆盖系统 shutdown/reboot):`shutdown`/`reboot[--hiby]`(强制回 MeowOS)/`upgrade`(写 mtd5=`ota:kernel2`,含写保护)/`set-default-meow`/`set-default-hiby` + `status`/`battery`/`reboot-reason`/`upgrade-status`/`screen on|off|timeout<秒>`/`dac on|off|status`。**二期签名鉴权已落地**(agent-185 2A / agent-221 2B):关键 IPC 只接受 **`os.meow.*`** 签权 + `.mpk` 打包签名验签(解包验签/导出保留签名;多公钥数组 + v2 签名块);读级命令鉴权已放宽到任意调用者(agent-189)。`[SYSTEM_FRAMEWORK_SERVICES][APPS 附录 §3][meow_svc_perf.c][meow_svc_power.c]`
|
||||
- **专项子服务(一期 M2.73 已落地,规划见 `devdocs/plan/SYSTEM_FRAMEWORK_SERVICES.md`)**:两个 **svcd 托管、板载 `trigger=boot`** 的专项子服务——`meow_svc_perf`(性能/系统只读聚合)、`meow_svc_power`(关机/重启/升级/回 HiBy 系统动作)。launcher 电源菜单与 MeowPanel 均改经这些服务 IPC 触发(不再直连 `sys_do_reboot`/爬 `/proc`)。**IPC**:perf 走 `/usr/data/meow_perf.sock` `MSG_PERF_QUERY→RESULT`;power 走 `/usr/data/meow_power.sock` `MSG_POWER_ACTION→STATUS`(服务端 `SO_PEERCRED uid==0` 基础鉴权)。**M2.73**:perf 增 **network** 子集(SYSTEM 子集输出:真实 WiFi `wpa_cli`/`ip` + 蓝牙 `hci0`/sysfs + `hostname_local`,单点权威源);power **升级写保护**(`upgrade` 写 mtd5 前校验卡根 `r3proii.upt` 存在+可读+常规文件+size>0,失败不写 mtd5/不重启;**只完整性不签名**,海贝官方固件无签名,期望 md5/hash 二期)与 **`dac status` 读板载 `settings.conf` 的 `audio.volume` 真实值**(`settings_get_int_trim`,弃 amixer dummy;`dac on/off` 因 cs43198 `pwr_gpio=-1` 无控制点→`MEOW_ERR_NODEV`)。新 md5:perf `7ea196de`(M2.75 补 network 闭合括号)、power `306df962`(2B 面板精确绑定)。**电源 CLI `meow_svc_power <cmd>`**(root 免鉴权、单一命令、不覆盖系统 shutdown/reboot):`shutdown`/`reboot[--hiby]`(强制回 MeowOS)/`upgrade`(写 mtd5=`ota:kernel2`,含写保护)/`set-default-meow`/`set-default-hiby` + `status`/`battery`/`reboot-reason`/`upgrade-status`/`screen on|off|timeout<秒>`/`dac on|off|status`。**二期签名鉴权已落地**(agent-185 2A / agent-221 2B):关键 IPC 只接受 **`os.meow.*`** 签权 + `.mpk` 打包签名验签(解包验签/导出保留签名;多公钥数组 + v2 签名块);读级命令鉴权已放宽到任意调用者(agent-189)。**M6.10 log 模块升级(337)**:perf `65f2059f` 挂「**卡死快照+perf 基线**」(主循环 `accept`→`poll` 化 + `snap_monitor_tick`:loadavg 超 `hang_load` 阈值落 `hang_*.snap`(全量 CPU/内存/进程/socket 现场)+`perf_*.log`(监控日志,60s/次、1MB 上限、每 boot ≤4 张、采集全走单文件 /proc 读);新增 `snap`/`snap-check` 子命令)+ crash `f02c4f45`(`log_cleanup_old` 前缀扩 `perf_*`/`hang_*` 入 logs/ 1GB 总纪律)。`test_snap_monitor` 18/18。`[SYSTEM_FRAMEWORK_SERVICES][APPS 附录 §3][meow_svc_perf.c][meow_svc_power.c]`
|
||||
- 通知(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`
|
||||
|
||||
Reference in new issue
Block a user