• 全新单提交:清除含敏感信息的旧历史(sudo 口令、内网 IP、SSH 密钥路径、热点 SSID、设备 MAC) • 本地开发文档/测试记录/构建脚本全部移入 gitignored 的 devdocs/ 与 scripts/build/(不入库) • 保留:MeowOS 源码(launcher/watchdog/bootmenu/meow_svcd/SDK)、项目规范文档、mips-repo 增补组件:SDK 统一日志+通知 API、meow_svcd 服务管理器、mips-repo 软件仓库
22 KiB
22 KiB
MeowOS 核心规范速查(MEOWOS_SPEC_REF)
单一速查来源。常量/路径照抄原文;矛盾处单列「已知矛盾/待确认」。 各条末尾
[源:XX.md]标注出处。
1. 文件系统路径
1.1 板载(NAND rootfs / /data)
- 设置持久化:板载
/usr/data/meow/settings.conf(UBIFS,小文件 <10KB,跨换卡保留)[SYSTEM_SETTINGS §2][MEOWOS_API §3] /etc/meowos_version:版本唯一来源(launcher 运行时load_meowos_version读;MEOWOS_VERSION宏仅作 dev 占位兜底)[DEV_NOTES #4]/tmp:tmpfs,开机清空;开机模式标记/tmp/meow_boot_mode、电源菜单/tmp/meow_power_menu{,_active}、app 沉浸/tmp/meowapp_state[BOOT_SELECTOR §1][KEY_CONTROL §9][APPS §3.5]- 日志启动缓冲
/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] - seccomp/分区(勿写):mtd0=uboot mtd1=kernel mtd2=rootfs mtd3=kernel2 mtd4=rootfs2 mtd5=ota(8M 标记) mtd6=userdata
[WORK_STATE]
1.2 TF 卡(挂载点 /usr/data/mnt/sd_0,exFAT)
/usr/data/mnt/sd_0/
├── Music/ # 播放器标准索引目录
├── MeowData/<pkg>/{data,cache} # 应用专属数据(exFAT 无软链,用 env 注入)
├── MeowAPPs/ # 应用(<app>/app.json+二进制+资源, fonts/, logs/, backgrounds/)
├── MeowOpt/ # 板载外部工具/二进制(如 mdnsd/,卡上加载,拔卡降级不崩)`[DEV_NOTES][meow_svcd.md]`
└── MeowOS/ # MeowOS 专属(一切非必要文件)
├── backups/settings/setting.bak # 设置导出默认路径
├── logs/ # 系统日志 meow_<bootts>.log + apps/...(见 §3 日志)
├── notifications/(转储区,保留最新 10MB,不被电源事件清)
├── opt/{bin,nyai,sources.list}, lib/, tools/
└── themes/charging/<id>/ # 充电屏主题(theme.json manifest)
[TF_CARD_LAYOUT §1][APPS 附录][NOTIFICATION_SYSTEM §5]
- 环境注入(launcher 每次启动 app 前):
MEOW_DATA_DIR/MEOW_CACHE_DIR/MEOW_LOG_DIR/MEOW_LOG_APP/MEOW_LOG_LEVEL/MEOW_ACTIVITY/MEOW_CHAIN;XDG:XDG_DATA_HOME/XDG_CACHE_HOME/XDG_CONFIG_HOME(=MeowData//{data,cache,config})[APPS 附录 §2][FRAMEWORK_DESIGN 附录 D2]
1.3 板载 vs TF 划分原则(拔卡降级)
- 板载只放稳定框架+KB 级设置;日志/字库/媒体等大件一律 TF 卡
[TF_CARD_LAYOUT §0][SYSTEM_SETTINGS §2] - 拔卡:launcher/bootmenu/SSH 不死;应用列表"未插卡"、日志回退内存环、字体回退点阵、opt 不可用——均优雅降级
[TF_CARD_LAYOUT §3] - 关键配置优先板载(无卡系统能跑);转储/日志可降级 → 卡,无卡 /tmp 回退
[DEV_NOTES #7] - rootfs 体积上限:45,088,768 B(≈45MB),回验 0 diff
[BOOT_SELECTOR §1][APPS §6]
2. IPC / 接口
2.1 launcher↔app env 注入
MEOW_LOG_DIR(卡日志目录,无卡不设)/MEOW_LOG_APP(app_id)/MEOW_LOG_LEVEL(本 app 级别,系统下发)/MEOW_ACTIVITY/MEOW_CHAIN;;...; [APPS §3.5][APP_LOG_MANAGER §3][FRAMEWORK_DESIGN §3]
2.2 meow_ipc 消息协议(AF_UNIX,全小端 LE)
- 帧头 16B:
magic=0x4D4F5701('MEOW'|1)/version=1/type/req_id/len;len上限 MEOW_IPC_MAX=4096;列表编码[u16 count]+NUL 串[FRAMEWORK_DESIGN §1] - 消息类型:
MSG_HELLO 0x0001↑ / ACK 0x0002↓ / ERR 0x0003↓ / REGISTER 0x0010↑ / SERVICE_OK 0x0011↓ / SERVICE_STOP 0x0012↑ / MSG_NOTIFY 0x0020↑ / NOTIFY_ACK 0x0021↓ / NOTIFY_DISMISS 0x0022↑ / NOTIFY_LIST 0x0023↓ / ACT_DECLARE 0x0030↑ / ACT_QUERY 0x0031↑ / ACT_RESULT 0x0032↓ / NAV 0x0040↑ / SHOW_ACTIVITY 0x0041↓ / SYS 0x00F0↓[FRAMEWORK_DESIGN §1] - 媒体:
MSG_META(元数据)、MSG_PLAYCTL(cmd 1=播放2=暂停3=上一首4=下一首5=seek)、MSG_PROGRESS[附录 B] - IPC 线程只读帧+解析+入队;状态变更主循环单写者(eventfd 唤醒,10ms 热键轮询非阻塞排空)
[FRAMEWORK_DESIGN §0][§6]
2.3 watchdog / supervisor 信号
- 应用返回键=SIGTERM(1s 后 SIGKILL 兜底);SIGUSR1 仅=沉浸左缘滑动手势,不是返回键
[APPS §3.5] - 强杀兜底:应用卡死 = 音量减连按 3 次(间隔 <hotkey_seq_gap)→SIGTERM→0.5s→SIGKILL
[APPS §3.5] - 全程禁:
killall hiby_player/SIGUSR1 发给播放器/走 hiby_player.sh(其sleep 1; reboot看门狗)/触碰 NAND/recovery_all[APPS §1.3][WORK_STATE] - 播放器信号:SIGSTOP/CONT 安全;SIGTERM 仅运行态(~2s)有效,T 态需先 SIGCONT;SIGKILL 兜底
[BOOT_SELECTOR §1] - supervisor(meow_bootmenu)接管关机/升级:播放器
exit(0)→真 poweroff;检测 mtd5=ota:kernel2→真 reboot[WORK_STATE][MIGRATION_AC 无]
2.4 按键信号全局接管(除电源菜单)[APPS §3.4.1][KEY_CONTROL §1]
- 红线:除电源菜单(允许电源=确认、音量=导航)外,所有按键由 MeowOS 全局接管——任何界面(含 MeowOS 设置页/应用列表/MeowAPP)不得私自定义按键映射;导航走触摸(返回钮/左缘左滑)
[APPS §3.4.1] -
键 code 语义 阶段 电源单击 116 息屏/亮屏 ✅ watchdog 电源长按 3s 116 电源菜单(关机/重启/回HibyOS/取消) ✅ launcher 一处绘制 电源长按 8s 116 强制关机 ✅ 音量+ 115 调音量(CS43198) ✅ 音量− 114 调音量 ✅ 播放/暂停 164 活跃媒体会话 🔵先抓住 上一曲 165 同上 🔵先抓住 下一曲 163 同上 🔵先抓住
2.5 热键 / 菜单 / 电源菜单 / 音量
- 热键(默认):按住电源 + 300ms~2.5s 内单击音量减(
meow.conf hotkey=power_voldown;历史hotkey=seq已退役)[APPS §4.2];v6.7 修正窗口下限 60ms(见矛盾 §A) - 电源菜单 5 按钮:关机/重启/回 HibyOS / 取消 /(+「升级模式」按钮)
[WORK_STATE][BOOT_SELECTOR] - 音量跳步:
audio.volume_stepint 1-5 默认 1;watchdog 每按下边沿一步(无线性渐变)[KEY_CONTROL §9 偏差2]
3. SDK 公共 API(meow_ui.h)—— 以实现定案为准
权威签名 =
patch_v2/sdk/meow_ui.h;MEOW_APP_SDK.md §3-§8 为设计蓝本。
3.1 关键常量
- 屏幕:480×720,24-bit RGB(
0xRRGGBB),内部转 RGB565;文本字号 28(标题/状态栏)/20(正文/按钮)[MEOW_APP_SDK §2] - keycode:POWER=116/VOLUMEDOWN=114/VOLUMEUP=115/PLAYPAUSE=164/PREVIOUS=19(注释标 KEY_PREVIOUSSONG,有疑)/NEXT=163
[meow_ui.h][KEY_CONTROL 注:165 才是 prevsong] - 事件:
on_key(code,is_down)/on_tap(x,y)/on_swipe(dir,dx,dy)/on_tick/on_swipe_progress(x_start,dx);MEOW_SWIPE_LEFT=0/RIGHT=1/UP=2/DOWN=3[meow_ui.h] - 主题:
MEOW_THEME_LIGHT/DARK/AUTO;meow_theme{bg,fg,accent,dim,font_title=28,font_body=20}[meow_ui.h] - 控件:
meow_list_source = int (*)(int idx,char *label,int len,void *ctx)([D2] 定案)[meow_ui.h] - 刷新率:
meow_ui_set_refresh_rate(60/30/15)/meow_ui_set_refresh_always_max(1)/meow_ui_effective_rate()/meow_ui_frames_presented()[meow_ui.h §7.1] - 状态栏:
meow_ui_set_statusbar(1/0)/meow_ui_statusbar_height()(非全屏=40,全屏=0)/meow_ui_set_fullscreen(on);状态栏高 MUI_SBAR_H=40[MIGRATION_AC §11.1][meow_ui.h] - 日志:
MEOW_LOG_DEBUG=0/INFO/WARN/ERROR;meow_log(lvl,fmt,...)/meow_log_set_level/meow_log_get_level[meow_ui.h §9] - 通知:见 §4。
3.2 render/控件/图片/输入/IME 签名(关键)
meow_ui_init(const meow_ui_opts*)(opts.width/height,0=自动读 fb)/meow_ui_shutdown/meow_ui_width(480)/meow_ui_height(720)- 绘制:
meow_ui_clear/put_px/fill_rect/draw_rect/draw_rect_round/fill_rect_alpha(color,alpha 0-255)/flush/flush_region - 文本:
meow_ui_text/text_right/text_center(x,y,utf8,size,color)/text_width/text_height - 图片:
meow_img_load_file/mem/free/w/h/meow_ui_img/scaled/alpha/cover(stb_image 解 PNG/JPEG/BMP,最近邻缩放,cover=居中裁方) - 控件:
meow_btn_create/slider_create/switch_create/list_create(count,src,ctx)/widget_free/draw/hit;meow_slider_set/get、meow_switch_set/get、meow_btn_pressed - IME:
MEOW_IME_ASCII/NUM;meow_ime_ctx{mode,buf[256],maxlen,on_change,ctx};meow_ui_text_input(阻塞)/_async/meow_ime_active/meow_ime_text(仅英文/数字 ASCII;键盘占底 ~300px) - 生命周期:
meow_ui_run(&ev)(阻塞)/meow_ui_request_exit();meow_ui_time_ms()(单调 ms)
3.3 实现定案(相对设计稿)[MEOW_APP_SDK §12][meow_ui.h]
- [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;[D7] 音量源=settings.confaudio.volume;[D8] 蓝牙读hciconfig30s 缓存;[D9] 状态读取器跑在meow_ui_run1s 节流(无独立线程);[D10] 全局返回默认语义="APP 未注册 on_swipe 时 SDK 默认退出;已注册交 APP"
4. SDK 之外系统组件
- 通知(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 meow_notify_register_type(cat)/meow_notify_send(const meow_notify*)(返回 id)/meow_notify_cancel(id)/meow_notify_active_count/count_in_type/has_active/urgency_str/category_str- 本阶段落点=SDK 内部活动表 + meow_log() 打日志;真实投递通知中心 UI / D-Bus 是后续任务
[meow_ui.h 注释]
- 常量:
meow_config_*(app 配置读写,走 meow_settings 后端)——SDK 缺失清单第 3,未定[WORK_STATE]meow_media_*(媒体会话)——依赖阶段 D 落地,未定[WORK_STATE]- 崩溃捕获/看门狗——规划中未定
[WORK_STATE SDK 缺失清单 #5] meow_notify_dbus(org.freedesktop.Notifications 桥)——已定,待实现[FRAMEWORK_DESIGN 附录 C]- meow_svcd 服务管理器(
patch_v2/meow_svcd/,mipsel 静态 ~99KB 进固件,不入卡)[meow_svcd.md]:- 类 systemd/systemctl,由 supervisor(meow_launcherd/bootmenu)
fork/exec托管;接入 supervisor 启动链为后续,接入用-f前台便于waitpid。 - 读 TF 卡
MeowOS/services.d/<name>.conf(目录式key=value,未知键忽略/前向兼容):exec(必填)/args/env/enabled(0=永不自动启动,默认0)/restart(always/on-fail/never,默认on-fail)/backoff_ms(默认1000)/max_restart(默认5)/cap(本阶段仅解析不实装)/trigger(boot/card-mount/wifi-up,默认card-mount)。 - 崩溃隔离:服务=svcd 独立子进程(
fork+execv),svcd 只waitpid/SIGCHLD感知;服务死不影响 svcd/supervisor;重启受backoff_ms退避防热循环。 - 状态机:
DISABLED/STOPPED/RUNNING/STOPPING/FAILED;稳定运行 30s 清零 restart_count。CLI:status/reload/start|stop|restart <name|all>/pid(AF_UNIX 单行文本/tmp/meow_svcd.sock)。
- 类 systemd/systemctl,由 supervisor(meow_launcherd/bootmenu)
- 卡上外部工具 =
MeowOpt/(TF 根下平级目录,如MeowOpt/mdnsd/mdnsd):MeowOS 启动时从卡加载,拔卡降级不崩[DEV_NOTES][meow_svcd.md]。 - mDNS 方案A(已拍板):用完整
mdnsd(994KB, mipsel 静态) 放 TFMeowOpt/mdnsd/mdnsd,由 meow_svcd 托管(需 root / setcapcap_net_bind_service,cap_net_raw);SAResponder(885KB) 因"单服务注册型"(只回单服务查询,无法按名访问设备)被排除。⚠️ 手机热点组播常在客户端间丢失 → mDNS 有风险,主机 DNS 兜底[DEV_NOTES 检查点]。 meow_settings_*(设置后端,已定)/meowcli/meow_sys_devattr/meow_devattr_set[MEOWOS_API]- 后台权限:
MSG_HELLO/MSG_REGISTER.flags扩展MF_BACKGROUND/MF_PLAYBACK;PERF_BACKGROUND/PERF_AUDIO_BACKGROUND(规划)[FRAMEWORK_DESIGN 附录 A]
5. 关键约定 & 约束
5.1 按键/手势/状态栏/全屏
- 按键全局接管(除电源菜单),见 §2.4
[APPS §3.4.1] - 左缘返回手势:手指从屏幕左缘 ≤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]
- 偏差:原「左缘+向左 mdx<-90」物理不可达 → 取「左缘向内(右)划 ≥90px」,事件仍报
- 全局状态栏:SDK 内置,默认显示(时钟/电量/WiFi/蓝牙/音量),1s 轻刷,z 最顶;仅 APP 声明全屏/
fullscreen:1才隐藏;非全屏 APP 须用meow_ui_statusbar_height()做 inset[meow_ui.h §3.1][MIGRATION_AC §3] - 沉浸:
app.json immersive:1→ launcher 写/tmp/meowapp_state=1→ 隐藏虚拟返回键,手势归 SDK[APPS §3.5][GESTURE_BACK §2.4]
5.2 主题
- 日/夜/自动:SDK
meow_theme内置meow_theme_light/dark;模式键display.theme_mode(SYSTEM_SETTINGS 记为manual/auto——与 SDK 枚举 light/dark/auto 冲突,见 §A);AUTO 判时段[SYSTEM_SETTINGS §1][MEOW_APP_SDK §8] - 背景图系统:
display.bg_mode(color/image)/display.bg_dark_color/display.bg_light_color/display.bg_image/display.bg_image_dark/bg_image_light/display.bg_overlay_alpha(0-255 默认 ~120);图片目录MeowData/backgrounds/(480×720 约束);叠加层颜色随主题(深=黑叠/白=白叠)[MAIN_MD3_PLAN §6][DEV_NOTES #12/#13] - 主界面背景:深色用 background(可选色)、浅色用 surface(白)
[DEV_NOTES #13]
5.3 通知配额/转储
- 每 App 最多 4 类型;每类型活动 ≤4;媒体单例(每 App 仅 1 条,可多 App);系统事件抽象为 App(
app_id=system) 走同一配额[NOTIFICATION_SYSTEM §7][meow_ui.h][DEV_NOTES #11] - 通知创建 10s 后自动转储到 TF
MeowOS/notifications/(保留最新 10MB ring,不被电源事件清);正常关机先转储再清板载;无卡可运行[NOTIFICATION_SYSTEM §8]
5.4 配置版本单点 / 刷新率 / 息屏
- /etc/meowos_version 版本单点(见 §1.1)
[DEV_NOTES #4] - 刷新率:
display.refresh_rateenum 60/30/15(默认 60);display.refresh_always_maxbool false(关=允许 60→30→15 降档)。governor:连续 12 帧超预算降一档,连续 4 批≈48 帧远低预算升一档[SYSTEM_SETTINGS §1][PERF_SCHEDULER][MIGRATION_AC §12.1] - 息屏:
display.screen_off_timeoutint 秒 默认 30(0=常亮);display.screen_off_modeenumpanel(面板下电+背光0+FBIOPBLANK)/black(背光0全黑+双击亮屏)[SYSTEM_SETTINGS §1] - 亮度 clamp:
display.brightness0-255 默认 101(clamp ≥display.brightness_min);display.brightness_min默认 1(M2.39 由 25 改 1)——与旧文档 25 冲突见 §A[SYSTEM_SETTINGS §1]
5.5 MeowAPPs 包结构 / .mpk / 数据
<pkg>/= 程序主体+app.json+资源;MeowData/<pkg>/{data,cache}= 数据;首次启动自动建 data/cache 并经 env 注入,exFAT 无软链[APPS 附录 §1/§2].mpk= tar.gz(app.json + meow 二进制 + 资源),不含 data/cache;导入校验 app.json/哈希→解压→数据 init→登入列表[APPS 附录 §3]- 包管理 CLI
nyai(静态 MIPS,部署MeowOS/opt/bin/nyai):install/remove/list/info/search/index/export/upgrade/scan;源MeowOS/opt/nyai/sources.list;索引Packages(Package/Version/Filename/Size/SHA256/Depends/Description)[APPS 附录 §5] - 应用数上限 8(单屏 8 行);扫描深度 1 级;
app.json字段:name(仅 ASCII)/exec(静态 MIPS32r2 ELF)/version/author + 扩展framework/immersive/icon/route.<id>/service.<svc>/fullscreen[APPS §2][MEOW_APP_SDK §9][FRAMEWORK_DESIGN §2]
5.6 冷启动充电屏
- 触发(三者同时):冷启动(
poweroff写/data/meow_cold_boot=1;reboot写 0)+ 在充电(AC online=1 或 battery status=Charging)+(开机瞬间一次性快照,判定后不回头)[CHARGING_SCREEN §0] - 热启动(reboot、含充电态 reboot)一律不进充电屏,走引导选单
[CHARGING_SCREEN §0] - 主题:
theme.charging=<id>(默认 default);MeowOS/themes/charging/<id>/theme.json;加载失败回退内置纯代码默认主题[CHARGING_SCREEN §1/§2]
6. 标志性 TODO / 未决(文档未定,勿凭猜实现)
- OPEN_QUESTIONS.md 待定 ❓:#1 背景图加载时机/缓存、#2 非 480×720 图如何处(拉伸/裁剪/回退)、#3 叠加层颜色联动、#4 背景色板具体枚举、#5 浅色主题文字对比度、#7 首期是否做应用图标、#8 通知来源(最大空白,M2 已定为 系统+IPC+D-Bus 三路)、#9 下拉手势 vs 左滑返回区分、#10 通知存储上限/FIFO、#11 媒体活跃会话判定、#12 多 app 音频混音/焦点、#13 web 实时画面 JPEG/WS、#14 远程输入注入仲裁、#16 主页左滑=侧边栏 vs 返回
[OPEN_QUESTIONS] - DEVELOPMENT_PLAN:阶段 0(bootmenu 双系统)待实现(M0-M4);阶段 B/E/F;M2-M6 阶段 D 里程碑未做
[DEVELOPMENT_PLAN] - 未定/待拍板:
meow_config_*/meow_media_*/崩溃捕获(见 §4);MeowOS 音频输出设置(只读还是可配);OTA 依赖 MeowPanel[WORK_STATE][OPEN_QUESTIONS #17/#18] - meow_svcd 待办:接入 supervisor 启动链(
-f前台 + waitpid,改固件有风险需另确认);capsetcap 真机实装(cap_net_bind_service,cap_net_raw);写MeowOS/services.d/mdnsd.conf落地 mDNS。services.d/svcd 尚未接入 supervisor,勿当作已跑起来。[WORK_STATE][meow_svcd.md]
7. 已知矛盾 / 待确认(⚠️ 别凭猜)
- A-1 热键窗口下限:APPS.md §3.1/§4.2 写「电源按下后 300ms~2.5s」;DEVELOPMENT_PLAN §0/阶段A 写「窗口下限 60ms(v6.7 修)。→ 以 60ms 为准,APPS.md 已过时。
- A-2 主题模式枚举:SYSTEM_SETTINGS §1
display.theme_mode=manual/auto(另设display.theme=dark/light);MEOW_APP_SDK §8 / meow_ui.hmeow_theme_mode=LIGHT/DARK/AUTO且直接跟随display.theme_mode。→ 两套枚举语义不一致;AUTO 时段:SYSTEM_SETTINGS 用可配theme_dark_start/end(分钟),SDK §12 用固定「6:00-18:00 日间」。WORK_STATE/DEV_NOTES 明言「时段判定 launcher/SDK 两份逻辑需抽共享纯函数」。→ DOM 键值 enum 与 SDK enum 需统一,时段判定需抽共享函数后再实现。 - A-3 亮度下限:
display.brightness_min默认 1(SYSTEM_SETTINGS §1,M2.39 由 25 改 1);但 MEOWOS_API §2.2「clamp ≥ brightness_min 默认 25」、MD3_UI_SPEC §3.2「亮度 clamp ≥25」仍写 25。→ 以 SYSTEM_SETTINGS(1) 为准,另两份文档陈旧。 - A-4 左缘返回阈值:MEOW_APP_SDK §6 / GESTURE_BACK 取「左缘 ≤24px + 向内划 ≥90px,抬手触发」;MIGRATION_AC §7 写「左缘 24px + 右滑 ≥65px 触发」。→ 90 vs 65 不一致(meow_ui.h 未给阈值,GESTURE_BACK + MEOW_APP_SDK 较权威=90,但确认真机前留疑)。
- A-5 通知 app_quota:NOTIFICATION_SYSTEM §7/meow_ui.h = 4 类型×每类型 4=16 条/App;SYSTEM_SETTINGS §1
notify.app_quota=16。FRAMEWORK_DESIGN §4「配额 ≤16/应用」。→ 口径可归并(4×4=16),但 SYSTEM_SETTINGS 未列 4/4 细分,建议实现以 meow_ui.h 的MEOW_NOTIFY_MAX_TYPES/MAX_PER_TYPE为准。 - A-6 KEY_PREVIOUS(code):KEY_CONTROL §3 明注「KEY_PREVIOUSSONG 是 165;19 是另一码」;meow_ui.h
#define MEOW_KEY_PREVIOUS 19 /* KEY_PREVIOUSSONG */注释标错。→ 19 的标签应改(值 19 非 prevsong;165 才是),属 meow_ui.h 注释误导。 - A-7 app 日志路径:APP_LOG_MANAGER §4 写
apps/<app_id>.log(单文件);meow_ui.h §9 / DEV_NOTES #9 为apps/<包名>/logs/<启动时间>_<pid>.log(每次启动新文件)——用户已纠正,勿用单文件。→ 以 meow_ui.h/DEV_NOTES(M2.51)为准,APP_LOG_MANAGER 目录小节过时。 - A-8 状态栏高:MEOW_APP_SDK §3.1「slim ~20-40px」;实际定案 40px([D6] MIGRATION_AC §11.1)。→ 取 40。
- A-9 SDK 通知转储:NOTIFICATION_SYSTEM §8「创建 10s 后自动转储到 TF」;meow_ui.h 现仅「活动表+meow_log 打日志,真实投递 UI/D-Bus 为后续」。→ 10s 转储/TF 尚未实现,属"已定未做"。
- A-10 版本来源细解:DEV_NOTES #4「/etc/meowos_version 唯一来源;MEOWOS_VERSION 宏仅 dev 占位永不动」;APPS.md §4.6「MEOWOS_VERSION 宏=单一来源,build 时 sed 写入 etc/meowos_version」。→ 两者都强调"写入同源",但"谁是源头"措辞矛盾;实践上 build 脚本 echo 生成 /etc/meowos_version,宏作屏显 dev 占位。
- A-11
MeowOS/opt/vsMeowOpt/:§1.2 树中MeowOS/opt/{bin,nyai,sources.list},lib/,tools/(nyai 包管 + 工具)与新增顶层MeowOpt/(板载外部工具/二进制,如 mdnsd)并存,命名仅大小写之差、语义可能重叠。→ 两者是否为同一用途/是否需归并待确认;当前按各自文档记录,勿混用。[各源标注见上]