MeowOS
|
44d170413d
|
build: M2.91(0.7.86) fw_content — audiod a6e4c295(FPGA武装)/svc_power 39ae3aa2(充电权威链)/amsd da9a5004(注册自愈)/launcher 2aa61780(MIUIx+充电态轻刷)
|
2026-09-01 04:04:51 +08:00 |
|
MeowOS
|
997f89f879
|
ncm 三期三批: 歌曲对象瘦身(1324→608B)+滑动窗口(NCM_SONG_WINDOW=256, 取消1000截断支撑任意长度歌单)+播放快照解耦 — agent-251
- core/ncm_api.h: ncm_song_t 瘦身 id24/name128/art96/al96/pic256/dt int32 (1324B→608B)
- appstate.c 滑动窗口: song_ids 全量 trackIds 索引(16384) + songs[256] 窗口感知
(song_valid 位图/window_base/滑窗 memmove 保留重叠), ensure_range 批网格(100)对齐
预取, songmeta.c 盘缓存 <cache_dir>/meta/<id>.bin (回滚/二次进入 0 网络请求)
- playlist.c 触底分页退役→视口 ensure(±24 行), 占位行可直点(播放线程 fetch 物化),
footer 改视口区间/总数
- 播放兼容: g_play.play_song 快照(mu), run_song 起播物化后全链路(下载/歌词/IPC META/
播放页 UI)读快照——窗口滑出当前播放曲不崩; 边界 song_count→track_ids_count
- 验证(0 真实请求): pagination_sim 全 PASS(5191 无截断/52 批); window_sim 6000 首
全程下滚 750 步视口全物化/song_detail 恰 60 次/回滚+0 请求/播放 fetch 不滑窗;
core 宿主+qemu 全 PASS; mipsel -Wall -Wextra 0 warning, bss 2052068→1080900(-47%)
- 未部署真机(设备音频线排查中, 部署留主会话)
|
2026-09-01 04:03:01 +08:00 |
|
MeowOS
|
d8898afa09
|
fix(audiod): 开机武装 hbc3000 FPGA — 启动时无条件写 Output Port Switch(4.4→3/3.5→2/无插孔→4, 同值先写5强制重烧), 根治 PCM 启动内核死锁(未烧 FPGA 时第二次 hbc3000_start 挂死); port_name 补 4/5。真机验证: arm 日志正确+tone played=88200 underrun=0 不挂
|
2026-09-01 04:02:33 +08:00 |
|
MeowOS
|
ca2290e691
|
fix(amsd): 注册表扫空自愈 (agent-250) — 根因: svcd trigger=boot 拉起 amsd 时 TF 卡未挂载, 启动首扫打空挂载点且此后永不重扫 → am start 报 pkg not registered (M2.90 真机日志实证). 修: registry_scan 改合并式重扫(只刷静态字段, 运行时状态/DECLARE路由保留, 源不可达绝不清表) + 主循环自愈重扫(源未通 3s 快重试/常态 30s 合并重扫) + am rescan 手动触发 + 兼容 M2.90 固件 launcher 旧 5 段 EV LAUNCH(nt==5 无 chain, epoch 不再错当 pid). 宿主+qemu+真机全链 PASS: 空目录启动 4s 自愈出 3 App, 真机 am start dev.player.ncm→OK(真pid)→kill 全通. meow_amsd da9a5004 / am 9e323faf (fw_content.conf 已更新, 待 M2.91 入固件闭环冷启动)
|
2026-09-01 03:41:19 +08:00 |
|
MeowOS
|
7cb1bdace4
|
meowpanel: 新增 /api/audio(audiod MSG_AUDIO_QUERY→STATE 透传, 不在时 available:false)+ 前端「音频」页(5s轮询只读)与「字体」页(列表/上传进度态/导出/409冲突确认force重试); 后端 md5 015f9cf1
|
2026-09-01 03:40:28 +08:00 |
|
MeowOS
|
f149e24f28
|
充电态权威源 mp2731-charger/status(修 battery/status 撒谎恒 Discharging)
真机实测:设备充电中但 battery/status 恒 Discharging;权威源为
mp2731-charger/status(Charging/Full),回退链 fusb302-typec-source/online==1
→ 旧逻辑 battery/status==Charging || ac/online==1。电量仍读 battery/capacity。
- meow_svc_power: battery/status 命令充电判定走权威链(MEOW_PS_DIR 可重定向供宿主自测);
svc_power_authtest 补 6 用例(mp2731 Charging/Full/Discharging + 两级回退)全 PASS
- SDK meow_ui_sys: 状态栏充电态同权威链
- launcher util.c: 抽 batt_is_charging() 公共判定;meow_sys_light 1s 轻刷补充电态(插拔实时)
- bootmenu 无充电判定(仅读 capacity)/MeowPanel 透传 power 服务:均无需改
- 真机验证(充电窗口):新二进制 battery=88%(Charging),对照固件内旧版 88%(Discharging)
- hello/files/ncm 随 meow_ui.a(af6703f2) 重链已热更到卡(.new+mv,md5 对核一致)
md5: meow_svc_power 39ae3aa2 / meow_launcherd 2aa61780 / hello 2444c151 /
files 691db88b / ncm 89da63ed(仅重链,源码未动)
|
2026-09-01 03:25:01 +08:00 |
|
MeowOS
|
793a807ce3
|
tools: tonepcm2 支持设备参数(测 D1p) + PROBE_ONLY 模式(只探测不播放, 防挂死)
|
2026-09-01 03:16:52 +08:00 |
|
MeowOS
|
57509cd582
|
docs: 文档一致性整理 (agent-249) — 对齐 M2.90/0.7.85 + ncm A2: SDK 新增 §5.9 meow_audio_* 客户端 API + IME 九键数字盘注记; README 网易云三期+A2 audiod+PCM 挂死已知问题; APPS §3.7/§5 直开 hw:0,0 旧案标注被 meow_audiod 取代; SETTINGS audio.output/音量键 audiod 收口注记; FRAMEWORK §10.1 supervisor 树补 meow_audiod + 头部里程碑 M2.90; PLAN 头部截至 M2.90; SPEC_REF OPEN_QUESTIONS 摘要同步 (#4/#12/#17 清结)
|
2026-09-01 03:11:10 +08:00 |
|
MeowOS
|
697fd6ba9b
|
chore: gitignore audiod_chain_sim 构建产物
|
2026-09-01 01:21:09 +08:00 |
|
MeowOS
|
e0136213fe
|
ncm A2: 音频输出迁移 meow_audiod(SINK_AUDIOD 默认后端)— 修无声根因
- audio_out.c: 新增 SINK_AUDIOD 默认(SDK meow_audio_* 连 audiod);NCM_AUDIO_SINK=file/null/alsa
与 MEOW_AUDIO_DIRECT=1 保留调试后端;ALSA 保底修两大坑(hw_params 全放行初始化 + mask 清零
再单点)——旧 memset0 interval=「只能取0」→ HW_PARAMS 恒 EINVAL 即播放无声根因
- 新增 audio_out_pause:PAUSED 沿向 audiod 发 pause(停时钟不丢流);resume 流死自动重开
- player_manager: 注册 meow_audio_on_preempt → g_play 命令通道暂停;播放事件全量 meow_log
(open 参数/grant_*/write 错误节流/切歌/暂停/seek/done)
- appstate/app: /tmp/ncm_autoplay 真机联调 hook(仅播已缓存曲目,绝不发 song_url)
- bench/audiod_chain_sim.c: 真实 audiod_host 假 socket 全链离线回归 14 项全 PASS
- 验证: host 0 warning / WAV 回归 / qemu core PASS / mipsel 0 warning;真机 OPEN→grant 已通,
持续写帧被 M2.90 设备 PCM 播放内核硬挂死阻断(REPORT §16.3,4/4 复现,留主会话)
- ncm md5 db5b78ad9e8f40e6306484efe2a08eb3(已热更设备)
|
2026-09-01 01:17:21 +08:00 |
|
MeowOS
|
9bbc3a1467
|
chore: gitignore 诊断/bench 构建产物 (tools 二进制+ncm sim)
|
2026-08-31 23:03:06 +08:00 |
|
MeowOS
|
284c6ae6fd
|
docs(SPEC_REF): §4 新增 meow_audiod 权威记录(socket/号段/CLI/门控/抢占) + 音频硬件实测事实(cs43198-hifi-0 能力/ALSA UAPI 两坑/音量死镜像/混音器清单)
|
2026-08-31 23:01:56 +08:00 |
|
MeowOS
|
213ac28c95
|
docs(README): 同步 M2.89/M2.90 — meow_audiod 独占音频守护(含 supervisor 树/系统组件/目录清单)、meow_route 并入退役、MIUIx 主题、选单回归修复、面板字体 tar.gz、网易云三期; 版本头 0.7.85
|
2026-08-31 22:59:20 +08:00 |
|
MeowOS
|
942bdece78
|
build+tools: fw_content.conf 填 audiod/audio CLI md5; 新增诊断工具 sndprobe(PCM设备探测)/tonepcm2(HW_REFINE能力探测+写计时时钟验证) — 无声定位用。M2.90(0.7.85) 已打包 504bc74b 回验0diff
|
2026-08-31 22:45:43 +08:00 |
|
MeowOS
|
ade0a57353
|
A1: meow_audiod 独占音频服务(agent-244 骨架 + agent-246 真机收尾)
- meow_audiod:启动门控(/tmp/meow_boot_mode 非 meow exit 0)、IO/播放/路由三线程、
ring ~200ms、ALSA UAPI 独占直开、切率 mute-重配-恢复、抢占(后开赢+PREEMPTED)、
socket EOF 回收、xrun PREPARE 恢复;meow_route 轮询逻辑并入路由线程
- meow_audio CLI:status/tone/route/vol;services.d/audiod.conf(trigger=manual,on-fail)
- SDK meow_ui_audio.c 编进 meow_ui.a:懒连接/读线程分发 PREEMPTED 回调/EPIPE 标死/
无 audiod 返回 MEOW_ERR_NOENT 不隐式直开(MEOW_AUDIO_DIRECT=1 仅调试)
- launcher:确认 MeowOS 模式后 meow_svcd start audiod(double-fork best-effort 不阻塞)
- meow_route 退役:S89 预置换 audiod.conf + 清理旧 meow_route.conf(防拉起已删二进制
重启循环);fw_content.conf 删 meow_route、加 meow_audiod+meow_audio(md5 打包时填)
- 真机定位并修复 ALSA UAPI 两大坑(即 ncm 播放无声根因):
① hw_params 须全放行初始化(mask 全 1/interval [0,UINT_MAX]),memset 0 interval
等价只能取 0 → refine 必空 → HW_PARAMS 恒 EINVAL
② access/format mask 先清零再单点(pmask 只 OR),全 1 被 choose 成 MMAP_INTERLEAVED
→ write() 恒 EINVAL
- 附带修复:dev_write fd<0 防日志风暴丢 PCM 限频日志;SDK state 解析 app_id 截空白;
meow_ui.h 文档负错误码表述修正
- 验证:宿主 FILE sink 全 IPC 链+抢占+tone WAV 20/20,SDK 客户端 13/13;
qemu-mipsel 同过;真机 tone 44.1k/96k 切率 written=played、underrun=0、日志完整
- meow_ui.a 53a3edd2 → ncm 重链 d2031829(已热更到卡);launcher a2f932a1
|
2026-08-31 22:40:08 +08:00 |
|
MeowOS
|
94874107b6
|
fix(ncm/ui): 文案中文化+事实性错误修正 — 音质档位对齐官方口径(Hi-Res/无损/极高/较高/标准)、设置页topbar/sheet/确认框中文、页脚会员提示改写准确; 播放页页脚「左右滑切歌」改「左缘右滑返回 ・ ⟳ 切横屏」、空态/歌词态/顶栏中文; 歌单/搜索空态与登录页状态全中文。二进制随 246 重链后热更
|
2026-08-31 22:24:49 +08:00 |
|
MeowOS
|
33b4ae703c
|
README: 校正 meowpanel 二进制 md5 为最终构建 51ffc183(tmpdir 修复后重建)
|
2026-08-31 20:46:30 +08:00 |
|
MeowOS
|
d8b95c0aab
|
MeowPanel: 字体库 tar.gz 导入/导出 + 文件管理自然排序修复 + multipart 二进制边界修复
- 字体库导入/导出(用户 2026-08-31 定案):放弃 zip,与 .mpk 同构走 busybox 'gzip -dc | tar' 管道
(设备必带 tar/gzip,零新增依赖)。导入 POST /api/fonts/import(multipart file=<.tar.gz>,上限32MB,
?force=1 覆盖):tar -t 成员预校验(sanitize_member 拒绝对/../shell 危险字符,恰为三件套平铺)→
解压到临时目录 → opendir/lstat 锁(拒软链/目录/设备/多出条目/解压后超大)→ font.json 解析 family/weight
(safe_dir_segment 消毒)→ 覆盖冲突 409 → sha256_png/idx 仅 WARN → rename 到 MeowOS/fonts/<family>/<weight>/。
导出 GET /api/fonts/export?family=&weight=:tar -cf - | gzip -c 打包 <family>-<weight>.font.tar.gz 流式下载。
列表 GET /api/fonts:扫描三件套齐。前端设置页加「字体库」卡(导入 zip/tar.gz + 409 confirm 后 force=1 重试 + 导出按钮)。
- 文件管理排序修复:/api/files 排序改为目录优先 + 名称自然排序(数字感知 track2<track10,中文按无符号
字节序),替换原 strcasecmp 词法排序(用户报「很离谱」)。
- multipart 二进制边界修复(latent bug):strstr 遇数据内 NUL 提前停止 → memmem 语义 mem_find 字节安全查找,
修复字体 tar.gz/.mpk/二进制上传可能误吞后段的问题。
- 文档同步:docs/MEOWOS_SPEC_REF.md §5.2/§5.7.6、patch_v2/meowpanel/README.md 改 tar.gz 定案;
FONT_SYSTEM.md 无 zip 表述无需改。meow_font_import_zip/export_zip 语义注为 tar.gz(_tgz 可更名)。
- 宿主编译 0 warning(-Werror 亦过);宿主端到端:导入→导出→逐字节比对、损坏/缺件/坏json/穿越/软链/非gzip全拒、
自然排序样本全过;真机已部署(meowpanel md5 51ffc183,服务 running)并 curl 验证 font 端点 + 排序。
|
2026-08-31 20:45:52 +08:00 |
|
MeowOS
|
4e3f41a5a3
|
M2.90: MIUIx 风格包落地 + ui.style 一键切换闭环
- meow_ui_theme.c: 为 MEOW_STYLE_MIUIX 实现整套 light/dark 配色(暖基面+小米橙 primary
0xF57200/0xFF8C4A+蓝 tertiary;圆角 20/卡片 28、间距 12、细描边 1),与 MD3 可感知差异
- display.background 随 style×mode 派生 MIUIx 色板(bg_surfaces 增 style 参;图片背景保持各 style 默认面)
- meow_settings.c g_defs: ui.style 值域 'md3,miui'→'md3,miuix'(label Material You,MIUIx);
apply_value SET_ENUM 对存量 'miui' 兼容映射为 miuix
- settings_page s_commit: ui.style 分支 → meow_ui_set_style + paint_sb_right + meow_dirty_full 即时换肤
- font_theme s_ui_theme() 接 ui.style + MIUIx dark/light 表;main_menu 背景签名含 ui.style + 纯色底随 style 换族
- 宿主编译 -Wall -Wextra 0 warning;test_meow_ui_theme 四套 s×m 渲染全 PASS;
test_meow_ui_widgets/test_sdk_fixes 全 PASS(MD3 行为一致)
- 产物 md5: meow_ui.a a4231296 / launcher 9f97af1b(未部署走固件)/ hello e5527578 /
files 993e41ca / ncm 6b9eeb0f(三 App 已 .new+mv 热更到卡, 设备 md5 已核一致)
- 待后续: 状态栏图标集仍 MD3 一套(sb_icons.h 无 per-style 换集接口, MIUIx 仅换配色);
App 进程 SDK 主题缓存 g_loaded 不随 settings 外部改写重读, 运行中 App 下次启动才换肤
|
2026-08-31 20:17:51 +08:00 |
|
MeowOS
|
f23720f934
|
feat(ncm): 三期第二批 — 中文搜索接拼音IME+设置页做好(音质全档/缓存上限可设数字+清理缓存/关于)+缓存LRU淘汰接生产路径(写前写后+手动调低上限)
- 搜索页输入框 MEOW_IME_ASCII→MEOW_IME_PINYIN: 候选上屏UTF-8经 on_change 实时回写 g_st.search_query, 键盘「拼/英」「中」切换, 英文零回归; 搜索仍仅在点「搜索」时发 cloudsearch(风控)
- 设置页 5 行: 音质(Hi-Res 默认,Lossless/Exhigh/Higher/Standard 全档,core 既有降级链)/缓存上限(1~100GB 预设+「自定义」NUM IME 数字输入,默认10上限100)/清理缓存(显示当前占用,ncm_cache_clear)/退出登录/关于行
- 缓存淘汰接线: ncm_cache_evict 进生产路径 — player_manager(下载写前/写后)+cover(写前/写后)+appstate_save_settings(手动调低上限立即淘汰); 封面与 mp3 同池; 上限读设置值
- core 新增 ncm_cache_clear; 设置持久化走 meow_config_* → MeowData/dev.player.ncm/data
- bench/cache_evict_sim.c 离线回归(0网络) 6 组 PASS; pagination_sim/core(host+mipsel/qemu)/6页宿主渲染 全过; mipsel -Wall -Wextra 0 warning
(未动 sdk/、meow_launcherd/、vendor/;0 真实 NCM 请求;真机部署留用户)
|
2026-08-31 20:15:31 +08:00 |
|
MeowOS
|
1a239c5eab
|
docs: APPS.md §4.5 过期注记修正 — bootmenu 日志已在 MeowOS/logs(meow_boot_<bootts>.log),「仍用 MeowAPPs/logs 待统一」作废
|
2026-08-31 20:11:27 +08:00 |
|
MeowOS
|
673f85e4ab
|
docs: APPS.md §3.5 看门狗表对齐现状(虚拟返回键M2.21已移除/SIGUSR1仅裸沉浸App+SDK护栏) + KEY_CONTROL_DESIGN 偏差3/4标已落地(M2.81 NowPlaying横划+媒体键路由)
|
2026-08-31 20:08:27 +08:00 |
|
MeowOS
|
4e3edd7952
|
build: fw_content.conf M2.89 — launcher 3c1bf9c0(选单抢屏回归修复)/watchdog 6373d8e5(SIGUSR1不误杀框架App)/nyai 2858c3bd(导出exec相对化)/amsd c6c2eda2(陈旧revents丢连接修复)
|
2026-08-31 19:40:30 +08:00 |
|
MeowOS
|
6d1189eadc
|
fix(amsd): launcher 重启后 amsd 失联三修 — am 命令连接被陈旧 revents 提前关闭/ipc_xchg 无超时冻结/无自动重连
launcher 重启后 am start/kill (MSG_AMS_START/KILL 0x00A0/0x00A1) 不再转发到 launcher。
根因(均在 meow_amsd.c,launcher 无需改):
① am 命令连接被提前关闭(真根因):poll 循环 pfds[] 每圈未清零,上一连接关闭残留的
POLLHUP/POLLERR 落在 pfds[2+i];accept 后同圈用陈旧 revents 处理新连接 → 误判 HUP/ERR
提前 close(am 收 SIGPIPE/141)。launcher 重启后 EV 事件连接密集、每条约关闭 → 必触发。
修:每圈 memset(pfds,0,sizeof pfds),新连接当轮 revents=0、下轮才处理。
② ipc_xchg 无收发超时 → 阻塞 read 冻结整个单线程 amsd(launcher 接受但不回包窗口)。
修:设 SO_SNDTIMEO/SO_RCVTIMEO(tv_usec<1000000,否则 setsockopt 返 EINVAL 静默失效)。
③ ams_request_ctl 加指数短退避重试(2 次,250ms 基数),launcher 数秒内回来即自动恢复。
验证(宿主端到端):假 launcher 杀→重启 am start 恢复 OK;注入多条 EV 后 am list×10 全
exit=0(无 141);哑 launcher(接受不回包)am start ~2s 有界返回 ERR 且 amsd 存活可继续
am list。meow_amsd mipsel md5 c6c2eda2d63ac73c4b6fac29008e0c9b(am 不变 d687d8bc)。
不动 launcher/sdk/根目录文档。
|
2026-08-31 19:38:33 +08:00 |
|
MeowOS
|
21ff5e82ea
|
feat(sdk/ime): 数字键盘改居中九键布局 (1-9 自上而下 3x3,0 垫底居中,底行 ESC|0|退格+OK) + 全链重链 (meow_ui.a ee71b94a; hello 8cb81964/files 8b2b2373/ncm 4e975d6d 已热更到卡)。宿主 test_ime_fix/test_pinyin 全 PASS
|
2026-08-31 19:38:21 +08:00 |
|
MeowOS
|
1cfd124211
|
fix(launcher): M2.83 回归 — 开机选单期不抢屏。sysui S70 拉起 launcher 时 mode 文件未写+播放器未起,is_meow_mode()=find_hiby_pid<=0 恒真 → 误入 MeowOS 主屏,与选单/HibyOS 播放器抢 fb0+触摸(开机选 HibyOS 黑屏根因)。修: mode 文件缺失且 bootmenu 存活→怠速等写(不设上限,bootmenu 消失回退旧判定); hiby→怠速守护不碰 fb,轮询 mode 变 meow(热键切换)再落地主屏; 等待期被 sysui stop→直走退出尾
|
2026-08-31 19:33:26 +08:00 |
|
MeowOS
|
ee104f1b18
|
feat(ncm): 三期第一批 — 歌单真分页(取消256截断)+专辑封面ncm_cache+歌词后台加载补锁
[agent-239] 仅改 patch_v2/ncm_app/。
1. 歌单分页(REPORT §14.1): track/all 全 404(§13.1) 弃用, 回 detail(n=1)全量 trackIds
+ song_detail 分批(≤NCM_SONG_BATCH=100) 触底逐页加载。appstate_load_playlist_songs_page
offset=0 重建 song_ids[]/track_ids_count 载第0页, offset>0 追加(失败保留已载);
playlist.c g_pl_more=(song_count<track_ids_count && <NCM_SONG_MAX), 触底 g_ploffset=song_count
起下一页(保留滚动), 首屏失败整页空态+点按重试, 追加失败 snack+保留已载。NCM_SONG_MAX
256→1000(单页渲染上限, bss +~1MB), NCM_SONG_BATCH 64→100, 删 NCM_PLAYLIST_PAGE(track/all 遗留)。
2. 专辑封面(§14.2): cover.c 封面改走 ncm_cache(LRU, 键=djb2(url)→song_cov<h>.jpg 同池),
缓存命中免下载/未命中下载→open/write/commit 落盘, 仍写 cover_current.jpg 供 launcher;
顺带修真 bug: save_cover_raw 在已持 g_cm 临界区内再 lock(非递归死锁)→封面永不刷新, 改调用方持锁。
歌单列表/详情头块封面保持现状。
3. 歌词后台加载(§14.3): lyric_worker 已异步(§11)未改线程模型; 补 lyric.c g_lyric_mu 数据竞争锁,
写侧 lyric_parse 整段持锁(清空用 lyric_clear_nolock 免二次取锁), 读侧 lyric_count/line_at/
line_text/line_tl 逐次取锁, 消除 UI/IPC 与 worker 间数据竞争(原 §10.9 FM4 良性竞态)。
验证(0 真实 NCM 请求): bench/pagination_sim.c 离线 stub 驱动真实 appstate 分页函数全 PASS
(130首读全程/5191首封顶1000/空/越界无操作); mipsel build_ncm.sh 0 warning(text 842820/bss 2052068);
宿主 build_ncm_host.sh+MEOW_UI_DUMP home/playlist/player/lands 渲染正常无崩溃; host SDK_SRC 补
meow_pinyin(拼音IME py_predict 漏编致链接断)。ncm md5 b34bc1ed, ncm_host md5 1a2327e0。
未动 sdk/(主会话改 meow_ui_ime.c)/meow_launcherd/meow_amsd/vendor/core; 未 commit 它们。
|
2026-08-31 19:33:10 +08:00 |
|
MeowOS
|
5fac5e380d
|
fix(nyai): 导出 exec 绝对路径相对化 + gzip stderr 重定向 (agent-签名产签链路)
- cmd_export 原先对 app.json 的 exec(绝对路径,如 /usr/data/mnt/sd_0/MeowAPPs/<pkg>/<bin>)
误用 sanitize_member 剥前导 '/' 拼到包目录下,导致 access(<src>/usr/data/...) 必然失败,
所有真实 app 导出被拒(exec 文件不存在或不可执行),卡死「导出→产签」链路。
新增 exec_rel_to_pkg(): 按 ①src/ 前缀 ②/MeowAPPs/<pkg>/ 段(根路径不一致的沙箱/CI)
③相对路径 ④绝对但定位不到包目录→拒, 正确相对化 exec。
- install/upgrade 解包命令把 2>/dev/null 只绑到 tar,gzip stderr(footer trailing garbage /
损坏 crc error)会漏到用户输出;改 gzip 也重定向。
- 同链验证: 宿主 meow_sign/meow_verify_host/qemu-mipsel 验签矩阵通过; 真机(10.78.193.50)
无签 os.meow.*拒装/已签安装OK+.mpk.src/篡改拒装/降级拒装 全过; 装后已卸并恢复原状。
(devdocs 本地不入库; 产签实走记录+README 见 patch_v2/meow_sign/README.md §8)
|
2026-08-31 19:30:32 +08:00 |
|
MeowOS
|
92086129c5
|
fix(sdk/watchdog): 236 收尾 — sigusr1_guard 无日志目录时落 stderr 可观测; test_wd_fw 补 fw-app/裸沉浸/裸非沉浸三用例; hello/files/ncm 随 meow_ui.a(4020227c) 重链 (已热更到卡, watchdog 6373d8e5 待入 M2.89)
|
2026-08-31 19:12:51 +08:00 |
|
MeowOS
|
49c31f1901
|
docs: 全项目文档一致性审计同步 (agent-237) — README/FRAMEWORK_DESIGN/SDK/APPS/PLAN/SETTINGS/SPEC_REF 对齐 M2.88 现状(amsd/picker/签名2B/拼音IME/面板阶段C/ncm改名dev.player.ncm等),过期「未实现」表述按落地实况修正
|
2026-08-31 19:11:25 +08:00 |
|
MeowOS
|
d76f8bc4ba
|
fix(watchdog): 框架App前台时音量/媒体键让位SDK (agent-231) — 启动时经/proc/pid/exe反查app.json framework=1判定,音量/媒体分支 !g_fw_app 门控; 裸App/无SDK/不可读仍兜底(不造成功能真空); 顺手修wd_json_str两边界bug+死代码清理
meow_watchdog→68850d9d; 宿主14项全过; 待跟进: fw_content.conf的watchdog md5打包时更新
|
2026-08-31 19:00:53 +08:00 |
|
MeowOS
|
40b8e33b94
|
perf(sdk): clip_contains 逐像素函数调用→内联 (agent-235, MIPS汇编实证每像素省34指令,修demo滑动卡顿) + invalidate 分支加 clip 窗口收敛 overdraw
meow_ui.a→4ac08c6e; 三App重链已部署; 宿主四套件全PASS+视觉正确性验证; launcher不重链(不含绘制受影响路径,语义等价)
|
2026-08-31 18:59:54 +08:00 |
|
MeowOS
|
829ac3ba88
|
feat(meowpanel): 通知实时化+屏幕增量帧 (agent-234) — /api/notifications 优先 IPC 读 launcher 活跃集(source:ipc,超时回退TF), dismiss/clear 联动 launcher 内存; /api/screen.jpeg?delta=1 8x8块比对+变化块外接矩形子图(近静态27KB→804B), 前端canvas叠加+开关
meowpanel→24f53b40 已部署真机验证(通知实时出现/撤下联动/增量帧带宽实测)
|
2026-08-31 18:50:12 +08:00 |
|
MeowOS
|
e9b6b690c1
|
feat(sdk): 中文拼音输入法落地 (agent-229, 设计稿 IME_PINYIN_DESIGN.md) — 静态表词库(403音节+329词,rodata ~20.5KB,零堆)+引擎(meow_pinyin.c,音节切分DFS+联想)+SDK集成(MEOW_IME_PINYIN尾部追加零ABI破坏,组合条+候选栏+翻页+中英切换,英文零回归)
meow_ui.a→a7a9043e; hello/files/ncm重链已部署; test_pinyin 5项全过+test_ime_fix零回归
|
2026-08-31 18:34:51 +08:00 |
|
MeowOS
|
f34818037f
|
fix(launcher): 开机亮度停100竞态 (agent-230) — settings未读到前不盲写100, 挂起+读到后补应用; launcher aa6c95a4→8ebae666; 宿主4场景PASS
|
2026-08-31 18:21:40 +08:00 |
|
MeowOS
|
c7d02e66e9
|
fix(sdk): App内物理音量/媒体键无效真根因 (agent-226) — 本机物理键只更新EVIOCGKEY位图不进事件流(launcher用位图轮询故正常,SDK读流故App收不到); 输入线程加EVIOCGKEY位图轮询+120ms同码窗口去重(流+位图双源不双跳); 卡上三App已重链部署(hello 2a1316f7/files ef0082bc/ncm 42e67e15)
真机验证: 音量键改settings.conf+媒体键IPC转发链路通; 宿主全PASS
|
2026-08-31 18:11:04 +08:00 |
|
MeowOS
|
c041facd89
|
fix(ncm): 歌单详情LoadFailed——track/all端点不存在(404)回退detail+分批song_detail已验证链路; 列表误触改按下锁定行+拖动抑制 (agent-227, 真机验证256首出曲) + perf(meowpanel): 屏幕帧整数定点DCT(无FPU软浮点3.96s→0.19s/帧,实测4-5fps)+前端链式轮询防堆积+实测fps显示 (agent-228)
ncm→73422166 已部署; meowpanel→f310a00e 已部署
|
2026-08-31 17:40:04 +08:00 |
|
MeowOS
|
d394c73a7c
|
chore(build): fw_content.conf 对齐 M2.88(launcher/verify/power/amsd/am/route 全量 md5 刷新)+ S89 预置 meow_route.conf
|
2026-08-31 16:36:01 +08:00 |
|
MeowOS
|
fbdd77a72e
|
feat(meowpanel): 阶段C收尾——实时画面+远程遥控 (agent-224) — /api/screen.jpeg(fb0活动帧→自研最小baseline JPEG编码器,480x720≈24KB/帧,无libm零依赖) + /api/input/tap(坐标注入,BTN_TOUCH先行时序,本机触摸优先5s仲裁); 前端「屏幕」页(1fps可调,点击映射,息屏提示)
meowpanel→e98aec66 已部署; 真机验证: jpeg非全黑+注入tap拉起Files(日志+截图双证)
注: 注入走 write event1(实测本机可投递,未用uinput)
|
2026-08-31 16:21:11 +08:00 |
|
MeowOS
|
6c78a88b8c
|
feat(ncm): 二期功能批 (agent-222) — 专辑封面(al.picUrl+切歌换封面)+歌词后台加载+大歌单分页(/api/playlist/track/all 首50触底续载)+歌词字面\n修复+播放页豆腐块修
ncm→9c4a79f6 已部署卡上; 宿主离线样本全过(零新增网络请求)
|
2026-08-31 15:51:05 +08:00 |
|
MeowOS
|
57fd15e83d
|
docs(framework): amsd 二期 picker 契约标注已落地 (agent-225)
|
2026-08-31 15:47:20 +08:00 |
|
MeowOS
|
ab4da09e75
|
fix(sdk+launcher): 图标不渲染真根因(agent-219) — meow_ui_img.c scale_buf cover 采样把乘写成除(÷缩放比→采到源图左上角透明区,全丢); 改乘+居中裁剪偏移修正; 宿主旧测试用纯色图掩盖了该bug。+ main_menu App退出/结构变化重绘时 fb_pan_buf0_force 无条件pan回buffer0(防App翻页留buffer1致菜单残帧)
meow_ui.a→3e0ee8f7 launcher→9d0efc2f hello→9609ea6e files→90f5cf07 ncm→be8be221(均已上卡); 真机截图证据 .tmp/meowbug/fix1.png+fix_b2_after.png
|
2026-08-31 15:42:24 +08:00 |
|
MeowOS
|
05a19a9ea3
|
feat(sec): 签名鉴权 2B (agent-221) — meow_verify 多公钥数组+v2签名块(含ts,未来宽限,兼容v1)+meow_sign verify子命令+产签README; svc_power 面板身份精确路径绑定(删启发式,3反例验证)
meow_verify→6c2e8ed2; svc_power→306df962; qemu+宿主全过
|
2026-08-31 15:36:45 +08:00 |
|
MeowOS
|
249b6224ab
|
feat(route): meow_route 音频输出路由自动跟随插孔 (agent-220) — svcd托管,1s轮询switch state,4.4优先; 只写变化+读回校验+不重试风暴; 真机已部署运行(svcd tf conf)
meow_route fa2b80be; 主机模拟状态机全过+真机cset/cget往返验证; 物理插拔端到端待用户插耳机实测
注: 223 拼音IME设计稿已出(devdocs/plan/IME_PINYIN_DESIGN.md, 静态表方案~272KB, qemu验证通过)
|
2026-08-31 15:32:13 +08:00 |
|
MeowOS
|
e8deed88bd
|
fix(launcher): 图标区空白——menu_draw_icon 垫块+首字母先画、图片叠加(icon透明/解码失败时占位仍可见); 补 sys_mem_available_kb 实现(解锁OOM护栏编译) (agent-218)
launcher 333d6f53→9902f19c; 宿主test_host_icon PASS
|
2026-08-31 14:34:28 +08:00 |
|
MeowOS
|
228e9e79e0
|
fix(launcher): App暴毙后卡死根因——execpipe 裸阻塞 read 改 poll+2s超时(agent-214) + ams_drain_stdout 64KB有界 + reap_wait兜底5处裸waitpid + watchdog关继承fd + font_sha256_file popen改有界 + 既有警告清理; fix(ncm): cookie盐不随包名(旧登录态可解)
launcher 97c1b222→333d6f53; ncm→1124dbf2; 宿主harness stall/ok/orphan全过
|
2026-08-31 13:36:23 +08:00 |
|
MeowOS
|
efbd1d5a2f
|
chore: 随 meow_font.a 流式解码重链 hello/files/ncm(hello 42ebe4ec / files b2caccbc / ncm ce25cf21)
|
2026-08-31 13:28:56 +08:00 |
|
MeowOS
|
c0f7a95719
|
feat(font+sys): 字库内存纪律(agent-215)+sysui接管launcher监管(agent-216)
215: meow_font.c 流式分块解码(gbk峰值40→23.5MB, 逐字节校验一致) + 多字体槽5→4+16MB驻留预算; 量化: gbk稳态驻留17.3MB vs common 4.2MB(OOM主因); meow_font.a→67113c03 meow_ui.a→223d5401
216: bootmenu让位(sysui在则start launcher让位, 不在则exec兜底) + S70预置launcher.conf enabled=1(+旧设备升级迁移); launcher崩溃可自动拉起; bootmenu 4441822d / S70 e435affc / S90 e0ace111
216注: S70早启动与选单共存为真机重点观察项
|
2026-08-31 13:28:07 +08:00 |
|
MeowOS
|
90e28e7b7e
|
fix(ncm): 二维码随容器缩放(模块边长=(容器-32)/模块数,修内容长QR溢出卡片) + 夜间深灰底浅灰码 + slogan改繁体「音樂的力量」(用户定案)
|
2026-08-31 13:07:20 +08:00 |
|
MeowOS
|
f20e4cddd0
|
refactor(ncm): 包名 os.meow.ncm→dev.player.ncm(非系统应用,不用 os.meow.* 保留前缀;卡上目录+MeowData+logs 已同步迁移,登录态保留)
|
2026-08-31 12:50:32 +08:00 |
|