Files
MeowOS-For-R3P2/docs/MEOWOS_SPEC_REF.md
T
MeowOS Dev 245bee2946 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 软件仓库
2026-08-30 01:12:34 +08:00

22 KiB
Raw Blame History

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_step int 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.conf audio.volume;[D8] 蓝牙读 hciconfig 30s 缓存;[D9] 状态读取器跑在 meow_ui_run 1s 节流(无独立线程);[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)。
  • 卡上外部工具 = MeowOpt/(TF 根下平级目录,如 MeowOpt/mdnsd/mdnsd):MeowOS 启动时从卡加载,拔卡降级不崩 [DEV_NOTES][meow_svcd.md]。
  • mDNS 方案A(已拍板):用完整 mdnsd(994KB, mipsel 静态) 放 TF MeowOpt/mdnsd/mdnsd,由 meow_svcd 托管(需 root / setcap cap_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]
  • 全局状态栏: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_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]

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,改固件有风险需另确认);cap setcap 真机实装(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.h meow_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/ vs MeowOpt/:§1.2 树中 MeowOS/opt/{bin,nyai,sources.list},lib/,tools/(nyai 包管 + 工具)与新增顶层 MeowOpt/(板载外部工具/二进制,如 mdnsd)并存,命名仅大小写之差、语义可能重叠。→ 两者是否为同一用途/是否需归并待确认;当前按各自文档记录,勿混用。 [各源标注见上]