AskaEth
|
0531603779
|
fix(devkit): M24 r1 评审 — P1 --with-sources 静默漏源码 + time64 归因更正
P1(阻断):stamp 命中时 main 提前 return,--with-sources 在 return 之后,
于是「先构建再 --with-sources」会打印成功、退出码 0、却不产出 src/。
- 把源码整理抽成 stage_sources(),stamp 命中路径先兑现 WITH_SOURCES 再返回;
整理后按钉住的 sha256 复核(sha 漂移/缺文件都重铺),任何失败即非零退出
- 新增 test_build_devkit.sh(12 项,秒级):stamp 命中下的 --with-sources、
src 缺文件/被改坏的自愈、--verify-only 的 MANIFEST 篡改检测
- skip 条件额外要求 MANIFEST 与 bin 逐条 sha 一致;--clean 同时清 out/src;
全新构建未带 --with-sources 时删除上次残留 src/(避免源码与二进制错配)
P2-a:top 排除理由改写。根因是 zig 0.17 musl 的 time64 ABI 错配(mips o32 是
ILP32 + 内核 4.4 无 time64 syscall,16B timespec 直传 32 位 syscall),不是
procps 的 bug;top 的 Mem 一栏是「百分比/总容量」不是 used GiB。新增 DEVKIT.md
§9 记录证据(vmstat -t 空列、usleep(0.5s)×10 实测 0s、sleep(1) 正常、ps lstart
正常),并说明 M16 的 patch_v2/sdk/meow_ui_time.c 可复用(本轮实测该 .o 独立
编译、仅 5 个 libc 未定义符号)但本轮不接入的取舍——需要单独 mission 做链接期
接管 + 全量回归,不是 -D 能修的。
P2-b:--with-sources 现在同时放 build_devkit.sh + DEVKIT.md(GPLv2 §3 的
"scripts used to control compilation");补 LGPL-2.1 §6 静态链接 libproc2 的
义务说明;MANIFEST/README.txt 写明 src/ 与 licenses/。
P2-c:lsof 内嵌 Termux musl 的 resolv.conf 路径记为工具链副作用(实测
lsof -i 约 3s 超时、-nP 瞬时;端口名/本机名不受影响),不换工具链。
P3:软链路径写实(/bin/ps、/usr/bin/{free,lsof,top});MANIFEST 用 zig version
而非 clang 版本;chmod 措辞改成检查挂载参数;--verify-only 增加 MANIFEST 逐条
sha256/体积比对且不再依赖 date;stamp 纳入 zig 完整版本;许可证复制失败即报错。
验证:test_build_devkit.sh 12/12 通过;--verify-only 通过(含 MANIFEST 对账);
独立工作区离线重建 85s/0 下载,六个二进制 sha256 与上一版逐字节一致;设备侧
二进制未变(sha 与 r1 真机验证过的一致)。
|
2026-11-06 19:29:27 +08:00 |
|
AskaEth
|
b52e6a08bc
|
feat(devkit): M24 静态 MIPS32r2 调试工具集 — vmstat/slabtop/free/ps/pmap/lsof
TF 卡 MeowOS/opt/devkit 用的交叉编译流水线:zig 0.17 musl 静态链接,
产物 fw_apps/devkit/{bin,MANIFEST.txt,licenses,README.txt}(gitignore 内)。
- build_devkit.sh:源码固定 版本+sha256+URL(ncurses 6.5 / procps-ng 4.0.4 /
lsof 4.99.4),缓存命中零联网;冷启动 3 次下载约 80s,重跑 0 次联网约 65s,
stamp 命中 1s 跳过;--force/--clean/--offline/--with-sources/--verify-only
- 自编静态 ncursesw 只为 slabtop(procps 的 slabtop 硬依赖 ncurses);
terminfo 目录钉到设备 /usr/share/terminfo,交互式 slabtop 可用
- 逐项自检 file/readelf(static、ELF32、mips32r2、0 NEEDED),任一不过即失败
- 不交付 top(真机输出不可信)、htop(卡上已有 3.5.3 且我们的更大)
- DEVKIT.md:许可证留痕(procps=GPL-2+ 需提供源码、ncurses=MIT、lsof=Purdue)、
可行性实测、上卡 PATH 与 busybox 同名关系、真机验证输出
|
2026-11-06 19:05:15 +08:00 |
|
AskaEth
|
1f692ae2a7
|
fix(ntp): M22 r1 评审 P2×3 — 孤儿 ntpd 收尸 / 日志失败不吞 hwclock / 锁自证
r1 评审 verdict=p2-3items,三条均已按评审给的修法修掉,且都补了可证伪的回归断言。
P2-1 SIGTERM 后遗留孤儿 ntpd,之后每次静默 skip 且 rc=0
- attempt() 把子进程记进全局 NTPD_CHILD 并落盘 <锁目录>/ntpd.pid;
新增 cleanup()(EXIT trap)先收尸子进程再释放锁;新增 on_signal()
(INT/TERM/HUP)清理后 exit 143——旧代码的 TERM trap 只清锁、不 exit,
被杀后还会继续跑完看门狗。
- 取代原来的 "pidof ntpd 就 skip":新增 reap_or_skip_ntpd(),用
/proc/<pid>/cmdline 是否含本锁目录来区分「我们自己遗留的孤儿」(收尸)
与「别人的常驻 ntpd」(让路)。崩溃后留下的 ntpd.pid 也据此校验,
pid 被复用时不会误判成外部 daemon(不会永久 skip)。
- S45 stop 不再按陈旧 pid 文件盲杀:只从 <锁目录>/<pid> 取持有者,
再核对 /proc/<pid>/cmdline 含 meow_ntpsync 才 kill。
P2-2 日志重定向失败导致 hwclock 根本不执行
- persist_rtc 改 ">/dev/null 2>>$LOG_FILE":hwclock 的 rc 与日志写入解耦。
- 新增 prepare_log():启动时在子 shell 里试写日志,不可写就整体退化 /dev/null。
必须用子 shell——`:` 是 POSIX 特殊内建,它的重定向失败会让 dash 直接
退出整个脚本(本单自测先踩到了,rc=2)。
P2-3 锁 mkdir→写 pid 有窗口,并发抑制非原子
- 锁的持有者改由 <锁目录>/<pid> 子目录自证(mkdir 原子),不再写 pid 文件;
读到空锁时给 3s 宽限而不是立刻判死。
- 清失效锁改用 mv 到 <锁目录>.stale.$$(rename 原子),并发清锁时只有
一个能成功,避免「抢锁失败方删掉胜方的锁」。
- 退出只删自己的锁:没有自己的 <pid> 子目录就不动锁目录。
验证
- 新增回归断言 11-16(run_tests.sh):SIGTERM 收尸/锁释放、遗留孤儿收尸、
日志不可写仍写 RTC、锁被占用不抢、死锁可接管、pid 复用不阻断。
- 可证伪性:新套件跑旧代码(c9f0cba 的 meow_ntpsync)→ 6 条 FAIL
(孤儿 alive、日志不可写 rc=1 且 hwclock 未执行、抢锁并发调 ntpd×3)。
再跑「仅回退 STALE_NTPD 硬化」的变体 → pid 复用那条 FAIL
(rc=0 但 RTC 未写,正是评审指出的静默失效)。
- dash 与 busybox ash 各 41/41 PASS,rc=0;dash -n / busybox sh -n 均 0 错。
- 时间断言放宽为负载容忍(宿主是多 agent 共享机,实测 sleep 5 能跑成 85s),
假 ntpd 改为挂 3600s,保证上界仍能证明是看门狗掐断而非自然退出。
fw_content.conf: meow_ntpsync md5 ad324e3f→f3c3abe4,
S45meow_ntpsync md5 25454a3f→115e7592(50meow_ntpsync 未改,md5 不变)。
|
2026-11-06 13:34:45 +08:00 |
|
AskaEth
|
c9f0cbaab6
|
feat(ntp): M22 网络校时 — 复用固件自带 ntpd + hwclock 回写 RTC
真机实测(0.8.47,2026-11-06)定位到的根因不是「没有 NTP 客户端」:
固件自带 ntp-4.2.8p14(/usr/sbin/ntpd)和 /etc/ntp.conf(4 个 pool.ntp.org),
但没有任何 init 脚本/进程启动它 —— 有客户端、没启动。
实测证据:
- RTC 存在且可读(/dev/rtc0,10003000.rtc),内核开机 hctosys=1,
冷启动不回到 1970 → 掉电保持;RTC 存 UTC(since_epoch == date +%s)。
- 但 RTC 会走慢且无人纠正:实测系统时间比 NTP 慢 49 s;把系统时间人为
拨错 4 h 后观察 65 s 无人纠正,RTC 也不跟随系统时间。
- UDP/123 出网正常(ntpd -q 一次成功 time set +48.877s);DNS/HTTP 正常。
- udhcpc 的 default.script 不处理 option 42,实测热点也不下发。
- ntpd -q 不会回写 RTC(步进后 sys-rtc 仍差 49 s)→ 必须 hwclock -w -u。
- ntpd 没有超时参数,无服务器时永久存活 → 必须自带看门狗。
- -p 形式的 server 首个 poll 要 ~64 s;配置里加 iburst 后 8 s 内返回。
实现(新增,不改任何基线文件):
- /usr/bin/meow_ntpsync:一次性校时器。复用 ntpd -q -g + 运行时生成的
iburst 配置;内置 IP 兜底(阿里/腾讯/Cloudflare)→ DNS 名兜底;
单次 15 s 看门狗、默认路由轮询、1 h 短路、进程锁、失败静默。
成功严格校时后 hwclock -w -u 回写 RTC(RTC 存 UTC,必须 -u)。
- /etc/init.d/S45meow_ntpsync:开机只 setsid 后台拉起并立即返回
(关键路径 +0 秒;后台最长约 150 s 自行退出),失败不阻断 init。
- /usr/share/udhcpc/default.script.d/50meow_ntpsync:只在 bound/renew
触发(设备上唯一可靠的「网络就绪」事件),后台拉起后立即 exit 0;
有 $ntpsrv(option 42)就优先用。基线 default.script 本就有 HOOK_DIR
循环,目录原本为空。
- tests/run_tests.sh:宿主沙箱单测(假 ntpd/hwclock/网络探测)。
验证:dash 与 busybox sh 各 sh -n 通过;单测两套 shell 各 23/23 通过;
真机(/tmp 下运行,未装系统目录)首跑 8 s rc=0、ntpd slew 成功、
RTC 由 1793940395 写成 1793940452(49 s 偏差被纠正)、hwclock -u -r 吻合;
二次运行 0 s 短路;-b -t 3 无网络 5 s 退出 rc=1;
DHCP 灌入不可达服务器 192.0.2.x 仍靠 IP 兜底在 ~10 s 内成功。
|
2026-11-06 12:49:13 +08:00 |
|
AskaEth
|
f9c2ea42a4
|
fix(boot): M21 r1 评审 P1 — bl_cap 把 cur=0 当「无有效值」照写 20(+P2 两处)
P1 根因(评审给的真机驱动证据链,已按其最小修法改):
/module_driver/pwm_backlight.sh 是 `insmod pwm_backlight.ko ... default_brightness=0
max_brightness=101`,模块 init 把 props.brightness 置 0 再 update_status(PWM 0 分支)→ 上电即灭屏;
该模块由 S11module_driver_default 加载,rcS 自然序排在 S11jpeg_display_shell 之后。于是:
- 函数入口那次 bl_cap:背光节点还不存在,写必然失败(no-op);
- fb0 出现后画图前那次 bl_cap:读到 cur=0,旧条件 `cur <= cap` 命中「只降不升」跳过分支,
20 从未写入 → 画图时刻亮度 0。
物理后果两头都是缺陷:面板仍亮则 logo 依旧亮(原问题没修);面板灭则 S11~S21 无可见 logo,
settings.conf 缺失时直到 launcherd 才亮屏(相对 stock「0.1s 后写 60」是回归)。
修改:
- bl_cap 判定改为「仅 1 <= cur <= cap 才视为已有有效值跳过;0 / 空 / 非数字一律照写」。
S22 抢写 1 的竞态保护不变(1 落在 1..20 → 仍跳过,不会被顶回 20)。
- 删掉函数入口那次 bl_cap(节点未建,必然 no-op,且是重定向报错的来源);只保留 fb0 就绪后、
画 logo 前那一次 —— 同一驱动脚本里 pwm_backlight.ko 先于 soc_fb.ko 加载,fb0 出现即节点就绪。
- 写入成功时打一行 `backlight: -> 20 (was N)` 便于刷机后复核;`2>/dev/null` 移到 `>` 之前,
节点未就绪时连重定向报错一起吞掉(P2-1)。
- S22:失败路径日志由「保持 S11 低亮度」改为「不改背光(当前 brightness=N)」(P2-2);写入失败
日志同样附当前读数;写入处的 2>/dev/null 次序一并改正。
- 头部注释按时序真相重写(驱动默认 0 = 灭屏,不是「上电很亮」)。
实测(沙箱重写 sysfs 路径 + stub cmd_jpeg_display/nanddump/sleep,dash 与 busybox 各一遍):
cur=0 → 画图时刻 20、结束 20(修复前 0/0);cur=1 → 1/1;cur=60、cur=101 → 20/20;
竞态(fb0 就绪前外部写 1)→ 画图时刻 1、结束 1(未被顶回);节点不可写时 stderr 0 行、仍画图、rc=0。
S22 19 用例全 rc=0(仅 usage rc=1,rcS 不可达)、sleep 调用 0、行为与改文案前一致。
S11 与 S22 内容均变 → fw_content.conf 两条 md5 同步更新为
3ad33301fb9f0884102a47e17a1985ed / 1a0aa33d6f806f3f1648168cc1d8b953
(未改动 meow_watchdog 那条:main tip dfde95b 仍是 553840cd,与本单无关,已在报告中提示。)
|
2026-11-05 22:04:16 +08:00 |
|
AskaEth
|
0ab23161b6
|
fix(boot): M21 开机 logo 亮度 — S11 画前压到 <=20 + 新增 S22brightness 按用户设置恢复
冷启动 logo 很亮:stock S11 是画完 logo 之后才写死 60,画图那一刻用的是面板上电默认高亮;
而 S11 早于 S21mount_ubifs,那时 /usr/data 未挂载、读不到 settings.conf,只能写死一个值。
- S11jpeg_display_shell:以基线(249220f2)为底,把背光压制挪到画 logo 之前(jpeg_display
函数体内、先于 cmd_jpeg_display),值 20(只降不升:S22 已写更暗则不覆盖);删除画完后
写死 60 的那行;/dev/fb0 等待、mtd5 主题判定、后台 jpeg_display & 语义不变;
主题判定 `==` 改 `=`(POSIX test,语义不变,便于宿主验证)。
- S22brightness(新):S21mount_ubifs 之后运行,读 /usr/data/meow/settings.conf 的
display.brightness,按 display.brightness_min 与 sysfs max_brightness clamp 后写入;
读不到/解析失败不改背光(保持 S11 低值)、无 sleep/重试、任何运行期失败 exit 0;幂等。
- scripts/build/fw_content.conf:登记两条(S11 覆盖基线同名文件、S22 新增),md5 实算,
说明列写清 S11 < S21mount_ubifs < S22 的顺序依赖。
- scripts/build/README.md:补「覆盖基线已有文件」语义(无条件 cp -f,不校验基线 md5、
也不跳过已存在文件;唯一基线校验仍是 hiby_player)。
固件需整包刷机才生效,未刷机、未写设备。
|
2026-11-05 22:04:16 +08:00 |
|
AskaEth
|
316d9d42c7
|
build(fw): 同步 watchdog 的 md5 到 M19 重编后的二进制
M19 把 meow_watchdog 重编为 ad8c1f2b(首次把 M6.23 的亮屏亮度修复真正编入),但
fw_content.conf 第 32 条仍 pin 旧值 553840cd,build_fw_apps.sh 的强校验会在该条中止。
本提交只改这一行 md5 与该条说明。
注:scripts/build/ 被 .gitignore:68 忽略,而这些文件本就已跟踪,故需 git add -f。
|
2026-11-05 21:54:23 +08:00 |
|
AskaEth
|
c811913c06
|
build(fw): M6.46 固件 — 编入 M7 杀后台修复 + M11 SDK 时钟修复(0.8.46)
- launcher bb2d5f12 (863160B) 重编,链 meow_ui.a 4c4a1554:
M7(bgmgr_can_kill 门控 framework→protected_app / 后台页 sub 指针持久化 /
am kill 走 meow_bg_terminate 与页面按钮同通道) + M11(meow_ui_time 按 o32 time32 取时、
链接期接管 __clock_gettime*)
- meow_amsd b698f176 (139252B) 重编:M7 am kill 同通道 + cmd_kill/cmd_start 失败原因细分
(am CLI 9e323faf 保持不动:am.c 自 ca2290e 未变,与仓库发布物一致)
- fw_content.conf 8 条源 md5 对齐:bootmenu 4441822d / watchdog 553840cd / audiod b122c9b8 /
meow_audio 891ab264 / netmgrd×2 20243ea1 / launcher bb2d5f12 / amsd b698f176;头注 M6.46/0.8.46
- build_fw_apps.sh:repack.sh 改 bash 显式执行(#!/usr/bin/env bash 在 su 下 bad interpreter)
- 打包 r3proii_m6_46.upt md5 66501aaf(42,930,176B):rootfs 38,756,352<=45,088,768,
unpack 0 diff,87 files/1 folder 与 m6_45 一致
- 卡上写 r3proii.upt(66501aaf),原 0.8.45(3f4a8ad3) 备份 r3proii.upt.bak.0.8.45;
写前写后 du -sk Music 均 199164544;未刷机(运行中仍 43ac2312 / 0.8.45)
|
2026-11-05 20:16:29 +08:00 |
|
AskaEth
|
06f872faf2
|
fix(fw): M6.42 收编audiod开机路由武装瘦身(防楔死) — 推卡
- audiod 重编 d833abce(0warning, glibc-dynamic≤2.17): 去无条件apply_route(5)→target双写,当前端口正确则跳过强烧,仅未武装/端口不对/读失败才写目标;保留M2.91防挂死武装(numid=9语义/popen有界超时/D态抛弃/io_thread未动)
- SDK未变(meow_ui.a 207630cb沿用); launcher 9013f843未变; netmgrd 9c345b2e/meow_audio 6864ec38/amsd 57e19cde 未变
- 固件 r3proii_m6_42.upt 6d7c1168(0.8.42, rootfs 38719488<=45088768, unpack 0 diff); 已上卡+备份r3proii_prev_m6_42=2a966f2b+rm recovery_all+升级重启; 设备已回网0.8.42
- reader eacd0e6c/files 01ad3f01 卡上已热更未动(不在固件)
- 注: audiod瘦身是驱动楔死缓解,需用户后续多boot复测(不在本收编范围)
|
2026-09-04 20:48:02 +08:00 |
|
AskaEth
|
4ce7a268a8
|
fix(fw): M6.41 收编启动失败原因透传+后台管理按钮点不动修复+主菜单微调 — 推卡(固件已上卡,设备待回网补reader热更+校准)
- launcher 9013f843(启动失败原因透传+后台管理按钮点不动修复+主菜单字体/样式微调) / reader 5a0c8776(左缘返回+view栈+字体瘦身+页位图释放)
- SDK未变(meow_ui.a 207630cb沿用),不重编meow_ui.a/不重链ncm/hello/files(files已热更01ad3f01不动)
- 固件 r3proii_m6_41.upt 2a966f2b(0.8.41, rootfs 38719488<=45088768, unpack 0 diff); 已上卡+备份r3proii_prev_m6_41=28191ae7+rm recovery_all+触发升级重启
- netmgrd 9c345b2e/audiod 9f47c8fd/meow_audio 6864ec38 未变; amsd 57e19cde 保持
- 注: 设备升级后未回网(WiFi已知问题,超~5分钟),reader热更+升级后验收+红线校准待设备回网后补
|
2026-09-04 19:50:55 +08:00 |
|
AskaEth
|
626a87a30d
|
fix(fw): M6.40 收编系统级音量翻页映射(MSG_KEY_PAGEUP/PAGEDOWN)+P1 MD3(select面板28/对话框按钮胶囊)+阅读器UI改版 — 推卡(固件已上卡,设备待回网验收)
- meow_ui.a 重编 207630cb(0warning): select面板28/对话框按钮胶囊h/2
- launcher f1980f4f(音量翻页系统映射) / hello 92c7ba17 / files 66bdb60d / reader 9c2a25e0(阅读器UI改版) / ncm e796282e
- 固件 r3proii_m6_40.upt 28191ae7(0.8.40, rootfs 38719488<=45088768, unpack 0 diff); 已上卡+备份r3proii_prev_m6_40=a671b8ba+rm recovery_all+触发升级重启
- netmgrd 9c345b2e/audiod 9f47c8fd/meow_audio 6864ec38 未变; amsd 57e19cde 保持
- 注: 设备升级后未回网(超8分钟),四App+面板热更与升级后验收待设备回网后补
|
2026-09-04 18:24:16 +08:00 |
|
AskaEth
|
b364b6371a
|
fix(fw): M6.39 收编SDK LazyGrid/LazyColumn/LazyRow MD3容器化+SDK全局App内底部上滑回桌面(系统手势优先) — 推卡
- meow_ui.a 重编 0fb87579(0warning): meow_list/lazygrid 默认container=1 + meow_ui_input_is_home_swipe/MEOW_EV_HOME
- launcher a21243b6 / hello 96d14310 / files a9de683f / reader 3e8be7cb / ncm 47954e2c (重链新meow_ui.a)
- 固件 r3proii_m6_39.upt a671b8ba(0.8.39, rootfs 38715392<=45088768, unpack 0 diff)
- netmgrd 9c345b2e/audiod 9f47c8fd/meow_audio 6864ec38 未变; amsd 57e19cde 保持
|
2026-09-04 14:01:26 +08:00 |
|
AskaEth
|
d0a5901ffb
|
fix(fw): M6.38 收编SDK对话框MD3细化+批②底部上滑回桌面+批6 ncm顶栏回播放页+批④面板后台列表+launcher UI微调+封面空artwork保留 — 推卡+面板热更
- meow_ui.a 重编 4c006844(0warning): meow_ui_dialog MEOW_SHAPE_EXTRA_LARGE 28
- launcher c9218411 / hello 63824093 / files c9309774 / reader 0d462111(未变,不拉对话框对象) / ncm 2b33b1dc
- 固件 r3proii_m6_38.upt 7b6ce4a5(0.8.38, rootfs 38715392<=45088768, unpack 0 diff)
- meowpanel 后端 fcb2f658 + web(index/css/js/mp_pages) 热更 MeowOS/opt/MeowPanel, /api/ams/bg 新增, 运行中新二进制
- netmgrd 9c345b2e/audiod 9f47c8fd/meow_audio 6864ec38 未变; amsd 57e19cde 保持
|
2026-09-04 13:23:56 +08:00 |
|
AskaEth
|
b3ce719742
|
fix(fw): M6.37 收编SDK默认列表MD3容器化(meow_listview_create默认container=1)重编meow_ui.a重链四App — 推卡
- meow_ui.a 重编 14f218d7(0warning): meow_listview_create默认container=1,行=surfaceContainer圆角卡+空隙+去分隔线+卡内tonal选中
- launcher e7fd28dd / hello c10a3ea5 / files 90a6e817 / reader 0d462111 / ncm 6f3967f8 (重链新meow_ui.a)
- 固件 r3proii_m6_37.upt a8dd8f54(0.8.37, rootfs 38715392<=45088768, unpack 0 diff)
- netmgrd 9c345b2e/audiod 9f47c8fd/meow_audio 6864ec38 未变; amsd 57e19cde 保持
|
2026-09-04 12:29:23 +08:00 |
|
AskaEth
|
4d0a8450e9
|
fix(fw): M6.36 收编全面MD3对齐+批①叠加/列表外距/后台图标/后台圆角卡+重编meow_ui.a重链四App — 推卡
- meow_ui.a 重编 d02c0f57(0warning): MD3对齐(meow_ui_widget/widgets:容器/胶囊/shape)+批①叠加共享判定+meow_img_pixels+meow_ui_audio
- launcher 0c4f3c10: MD3全面对齐(subpage/settings/bg/MENU列表圆角卡8px外距/按钮胶囊/状态层/shape)+批①叠加/穿透根治(7处转场)+顶栏后台按钮图标+后台管理页圆角卡
- 四App热更: ncm df149a9c / hello f3ac1fc0 / files f37d66c7 / reader b6cbc050(reader四格式冒烟全过)
- 固件 r3proii_m6_36.upt 91ccf411(0.8.36, rootfs 38715392<=45088768, unpack 0 diff)
- netmgrd 9c345b2e/audiod 9f47c8fd/meow_audio 6864ec38 未变; amsd 57e19cde 已M6.35收编
|
2026-09-04 12:00:59 +08:00 |
|
AskaEth
|
b23c6d53c4
|
fix(fw): M6.35 收编批③后台管理页(按钮化)+amsd FG/BG+i18n — 推卡
|
2026-09-04 02:57:26 +08:00 |
|
AskaEth
|
2f22e26de7
|
fix(fw): M6.34 收编批①后台常驻+宽限期+audiod A3/DSD+meow_img_pixels+重编meow_ui.a重链四App — 推卡
|
2026-09-04 02:00:39 +08:00 |
|
AskaEth
|
7e68313981
|
fix(fw): M6.33 收编launcher播放页占位符移除+封面空→复原恢复 — 推卡
|
2026-09-04 00:19:31 +08:00 |
|
AskaEth
|
76a22a6a91
|
fix(fw): M6.32 重编meow_ui.a+重链四App(播放页进度条取色+ncm列表gap)+面板透传 — 推卡+热更四App
- meow_ui.a 重编(86af4d29): SDK W_PROGRESS 改读 opts.bg/fg=轨道/填充(agent-408)
- launcher 513d7603: 播放页进度条/按钮局部重绘接取色(np_grad_row/np_page_bg_row/np_theme_widgets)
+ 链新 meow_ui.a + sdk meow_lyric/lyric_view/meow_img_color; 经固件 /usr/bin 刷入
- ncm 05ff05f1 重链新 meow_ui.a(agent-409 列表项 gap 已入源), hello f35495a5 / files 5d70b7b2 重链
- meowpanel.c: audio_fill 补透传 audiod target/volctl/codec(输出目标/音量AVRCP/编解码器)
前端 meowpanel.js 已前向兼容; 宿主 /api/audio JSON 验证含三键
- fw_content.conf launcher 0cdf940f -> 513d7603(M6.32)
- r3proii_m6_32.upt md5 8ce917ad(0.8.32, rootfs 38707200<=45088768, unpack 0 diff)
|
2026-09-03 23:42:46 +08:00 |
|
AskaEth
|
8971f6067b
|
fix(fw): M6.31 收编桌面歌词页封面修复+alsa.conf DEV自动识别(bt_dev) — 推卡
|
2026-09-03 22:43:05 +08:00 |
|
AskaEth
|
ef6eca86b1
|
fix(fw): M6.30 收编批5取色+蓝牙P2(audiod glibc-dynamic)+面板蓝牙卡 — 推卡+panel热更
|
2026-09-03 21:44:23 +08:00 |
|
AskaEth
|
a3679e3688
|
fix(launcher): M6.29 播放页任意右滑返回桌面(回退出np_gesture) — 推卡
|
2026-09-03 20:32:23 +08:00 |
|
AskaEth
|
0da68e4972
|
fix(fw): M6.28 收编桌面NowPlaying双页歌词页+歌词数据源+蓝牙P1(netmgrd/bt_page) — 推卡
|
2026-09-03 20:06:36 +08:00 |
|
AskaEth
|
29e13b2b5e
|
fix(netmgrd): M6.27 流量统计收编(pub_bytes/去lo) — 推卡+panel热更
|
2026-09-03 18:45:12 +08:00 |
|
AskaEth
|
4827cc8d92
|
fix(launcher): M6.26 播放页三键命中(push哨兵)+媒体卡片体FOCUS(点击开播放页) — 推卡
|
2026-09-03 14:54:41 +08:00 |
|
AskaEth
|
76eb2f4d1c
|
fix(bootmenu): M6.25 开机菜单/第二屏亮度按用户设置恢复(方案A:显示前读settings.conf写回) — 推卡
|
2026-09-03 14:40:56 +08:00 |
|
AskaEth
|
b5da7d7151
|
fix(launcher): M6.24 App内按电源键锁屏时序(松开边沿误判唤醒) — 推卡验收
|
2026-09-03 14:27:00 +08:00 |
|
AskaEth
|
ec8e43e1fd
|
fix(watchdog): M6.23 亮屏亮度按用户设置恢复(修 panel ON 固定60跳变) — 推卡
|
2026-09-03 14:12:21 +08:00 |
|
AskaEth
|
e448b9bfda
|
fix(launcher): M6.22 播放页返回根因修复 — np_exit 退出外层主循环(break错层级) — 推卡
|
2026-09-03 14:00:28 +08:00 |
|
AskaEth
|
e802cc678a
|
fix(launcher): M6.21 播放页返回诊断日志+阈值放宽(M6.20基础上) — 推卡
|
2026-09-03 13:50:40 +08:00 |
|
AskaEth
|
cd9d9da3bd
|
fix(launcher): M6.20 播放页右滑返回+顶部下滑通知中心+时钟1s刷新 — 推卡验收
|
2026-09-03 13:42:32 +08:00 |
|
AskaEth
|
3d70a3dd2c
|
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 推卡自刷验收全绿
|
2026-09-03 12:16:01 +08:00 |
|
AskaEth
|
c2ee7626a4
|
fw_content: M6.9 收编 launcher 94a33b7b(327 M7.0b 试点)
|
2026-09-02 18:38:25 +08:00 |
|
AskaEth
|
e67cc50afa
|
fw_content: M6.9 候选 netmgrd 20243ea1(期4)+powermgr 1ef2f8af(期3)
|
2026-09-02 16:29:42 +08:00 |
|
AskaEth
|
4e0e7441fd
|
fw_content: M6.8 收编 launcher 42b6633a(310四轮 锁屏自睡)
|
2026-09-02 15:31:07 +08:00 |
|
AskaEth
|
cf8b0da3bd
|
fix(fw_content): 拆分 launcher+watchdog 与 audiod+audio 两个合并行 — 修 watchdog/audio CLI 被吞进 desc 不打包
build_fw_apps.sh 以 `IFS='|' read -r src dst md5 desc` 解析,launcher 与 audiod 的 desc 后误并入了
meow_watchdog / meow_audio(CLI) 条目,导致这两个二进制在固件打包时被当作 desc 文本【不】作为独立
条目安装(M6.0 时本为独立行)。拆回各一行,md5 均已对源文件校验证实一致。
|
2026-09-02 13:05:29 +08:00 |
|
AskaEth
|
9d5301f931
|
fw_content: M6.6 收编 launcher 62c817c2(310三期)
|
2026-09-02 11:52:06 +08:00 |
|
AskaEth
|
c7ef1ebb04
|
fw_content: M6.5 收编 audiod b122c9b8(315 孤儿会话回收)
|
2026-09-02 10:10:36 +08:00 |
|
AskaEth
|
57676766c0
|
fw_content: M6.4 收编 launcher 56dac860(310二期 EVIOCGRAB 锁屏+名称截断)
|
2026-09-02 08:17:37 +08:00 |
|
AskaEth
|
202caaf66b
|
fw_content: M6.3 收编 launcher 136dc67c(309 设置页5s+310 锁屏三连)
|
2026-09-02 03:43:12 +08:00 |
|
AskaEth
|
55f0dfe91d
|
M6.2 备料: S89 amsd.conf 热更 exec→/usr/bin 迁移; fw_content 收编 launcher 03dfcf76(锁屏+门控+名字)/amsd 026cad52(UTF-8 名字)/S89 a1ef9d65
|
2026-09-02 02:39:11 +08:00 |
|
MeowOS
|
06307dc4b2
|
M6.1 备料: launcher start audiod→meow_audiod(服务名统一收尾, e6bdd091 含286设置页迁移); fw_content 收编 286 launcher/287 powermgr期2 aedaf519/276 netmgrd期3 62369ebe
|
2026-09-01 22:18:24 +08:00 |
|
MeowOS
|
cd4e2c247f
|
feat(S89): 服务名统一 meow_*(用户定案)——S89 迁移旧 audiod.conf/mdnsd.conf 为 meow_audiod.conf/meow_mdns.conf(stop+rm+预置);SPEC_REF/meow_svcd.md 同步。launcher main_menu.c 的 svcd start audiod 调用待 286 交还后改(避让同目录)
|
2026-09-01 22:08:29 +08:00 |
|
MeowOS
|
8e54b2c150
|
docs(repo): 公开 SDK 仓 MeowOS-SDK 拆仓说明 — README 加链接 + scripts/publish_sdk.sh(subtree split 命令 + 增量同步流程)
|
2026-09-01 21:15:35 +08:00 |
|
MeowOS
|
fcff0b0ac1
|
fw_content: M6.0 收编 meow_netmgrd/meow_net 双形态条目(8f9303b5, agent-276 期1)
|
2026-09-01 19:59:02 +08:00 |
|
MeowOS
|
cfeb9b775b
|
chore(fw_content): 待打包标注口径 M2.98→M6.0(版本定案:M3-M5 系列号被历史里程碑占用,M2.97 后跳 M6.0)
|
2026-09-01 19:48:47 +08:00 |
|
MeowOS
|
4a49901bc1
|
feat(S89): M6.0 预置 meow_netmgrd.conf + 存量热更 exec(/usr/data→/usr/bin) 迁移(同 powermgr 模式; NETMGR_DESIGN); fw_content.conf S89 行同步 f3bb197f
|
2026-09-01 19:47:44 +08:00 |
|
MeowOS
|
980d161972
|
fix(launcher/amsd): amsd MSG_AMS_START 拉起缺口——pending-start 抽 meow_ams_start 模块复用启动链 + 负错误码符修复
根因(真机日志实证,M2.92 遗留):meow_ams_pending_start_set 误返回正错误码
(-MEOW_ERR_BUSY=+8/-MEOW_ERR_INVAL=+1),ipc_dispatch 的 rc<0?-rc:MEOW_OK 把「有前台 App
拒绝/空包名非法」误判为 OK(0) → amsd 报 OK 但 pending 未置位 → App 永不拉起(am start 报 OK
但界面没出现/进程未起)。
launcher:
- 新增自包含模块 meow_ams_start.c/.h(ops 注入 launch=launch_app/launch_activity、
resolve=resolve_chain、log=logmsg):pending 状态 + 拉起决策 + picker 上下文。
- set 统一返回负 MEOW_ERR_*(根因修复);consume 复用既有启动链路真正拉起目标 App,
列表未就绪(state!=0)保留 pending 待 2s 重扫重试,不再静默丢弃。
- main_menu run_menu 改经 meow_ams_start_consume 消费(保留 launch_fail_toast/菜单收尾);
app_launcher 移除旧 g_ams_start/g_ams_pick_* 迁入模块;util meow_ipc_process 顶部同步 busy、
meow_ipc_init 末尾 meow_ams_launcher_init()。
- build_launcher.sh 编入 meow_ams_start.c;meow_launcher_internal.h 更新挂点声明。
amsd(协议层归属说明):cmd_start 的 busy 判定对照 launcher ACK 正幅度(busy=8),
原 (uint32_t)MEOW_ERR_BUSY=0xFFFFFFF8 永不匹配 → busy 落入 launcher offline,改 (uint32_t)(-MEOW_ERR_BUSY)。
验证:宿主 test_ams_start.c 33 断言全 PASS(合法->拉起链、activity chain 透传、空包名/非法/busy
不拉起不崩、列表未就绪保留 pending、无路由 NO ROUTE、启动失败 idx 回报、picker 取回);
launcher 目录全量回归 test_media/bgplay/depends/notif_panel/notif_tf/settings_brightness/
vol_ramp_jack/host_icon + test_font_tier/weight 全 PASS;mipsel -Wall -Wextra 0 warning。
新 md5:meow_launcherd a8200ae1b0aa68d7262749db87377d49、meow_amsd 7ddc677ce7938bc9b95c83c17bc78295。(M2.98 待打包,未刷机)
|
2026-09-01 19:40:29 +08:00 |
|
MeowOS
|
d4928224a5
|
feat(S89): M2.97 预置 meow_powermgr.conf + 存量热更 exec(/usr/data→/usr/bin) 迁移; fw_content.conf 同步 M2.97(launcher 899ac22c M4+depends / audiod 176c840d 电平监控+锥度 / watchdog 553840cd 锥度 / powermgr 469dddb7 新入固件 / nyai a7d24553 depends)
|
2026-09-01 19:11:42 +08:00 |
|
MeowOS
|
ed2ae10320
|
app.json 二进制依赖 depends:启动前检查(launcher)+ 安装提示(nyai)
需求(用户定案):App 复杂功能若依赖现成 Linux 二进制(板载 /usr/bin 或卡上
MeowOS/opt/bin)能效更好,声明后系统启动 App 前检查依赖是否存在。
- depends 行式声明:depends=curl,jq:optional,ffmpeg:required(无标注默认
required;也接受 :opt/:req;未知修饰符按 required 处理并 WARN;空项/超量丢弃)
- launch_app_chain 冷启动时按序查 /usr/bin/<name> 与 <卡>/MeowOS/opt/bin/<name>
(X_OK,两类命中即满足);缺 required → 不启动(toast「缺依赖: <name>」+ 日志,
沿用 CANNOT START 风格);optional 缺失 → 仅 WARN 放行;只在启动时查,不做周期复查
- nyai install 对包内 app.json depends 同查并提示(不阻断安装,缺 required 标注
「安装后启动将失败」)
- 新增 meow_dep.c(独立 TU,解析/检查/块原因),宿主测试 test_depends.c
解析矩阵 12 用例 + 假根检查路径 12 用例全 PASS;launcher/nyai mipsel 交叉
-Wall -Wextra 0 warning;launcher 现有宿主测试回归全过
- 文档:APPS.md §2.1 字段表 + docs/MEOWOS_SPEC_REF.md §5.5 同步;hello app.json
加 depends:curl:optional 示例
launcher md5 899ac22c10f596909d7f35ea685744de(fw_content.conf 已更新;/usr/bin
只读,留给主会话打包固件)
|
2026-09-01 18:28:07 +08:00 |
|