AskaEth
|
54750a63c5
|
feat(sdk): SDK 矢量字(meow_ft_*,§10.1)——上收阅读器 FreeType 管线
问题:SDK 位图字库(meow_font)只有离散字号档位,全字形 atlas 稳态 17.3MiB
(27MB 整机装不下)→ 大字库/大字号必出豆腐。阅读器 R1/R2 的 FreeType 管线已真机验证
(MiSans OTF),本 commit 将其上收 SDK,让任意 App 用上无级字号 + CJK 全字形。
设计(追加式,与位图字库并存):
- meow_ui_ft.c(独立 .o):meow_ft_load/unload/loaded/text/width/line_height/
ascender/descender/cache_set_slots/cache_slots/cache_used。底层按 READER_ENGINE_NOTES §5:
FT_New_Face(path) 按需读文件(零整载 anon);灰阶 FT_LOAD_RENDER|NO_HINTING|TARGET_LIGHT;
glyph LRU key=(px<<32)|cp,默认 512(~0.46MB),可配 256/1024;测宽不栅格化。
- meow_ui_gfx.c 只加两个薄封装 meow_gfx_ft_blend_px/dirty(写 back_buf + 标脏),
使 meow_ui_ft.o 不引入新依赖——「不调 meow_ft_* 的 App 零增量」(freetype 不拉入,已验证)。
- 降级:加载失败/无卡 → meow_ft_loaded()==0 → meow_ft_text 自动改走 meow_ui_text(位图字库,
5x7 兜底),绝不豆腐不崩;meow_ft_width/line_height 降级位图字库度量。
- FreeType 2.14.3 vendor 进 patch_v2/sdk/vendor/(gitignore)+ build_sdk.sh 可复现拉取+裁剪
构建(-DFT_DISABLE_ZLIB/BZIP2/PNG/HARFBUZZ/BROTLI=TRUE,静态 musl),freetype .o 编入
meow_ui.a,App 链接命令不变(meow_ui.a libz.a -lpthread)。
验证:
- 宿主 test_meow_ui_ft 5 项全 PASS(加载/渲染像素非空/宽度测量/LRU 淘汰/降级回退)。
- 全量 SDK 回归:widgets/sdk_fixes/dispatch/notif_gesture/overlay_suppress/listvirt/box/anim/
scroll/ime_fix/pinyin/notif_open/sb_collapse/theme/notify_ipc/audio_host/vol/str/config/
sdk_input_keys 全 PASS。
- 交叉 -Wall -Wextra 全 SDK TU 0 warning;qemu-mipsel 冒烟 PASS(mipsel FreeType 真光栅化)。
- meow_ui.a 新 md5 6ff5be9455f9e197b35fa120be012041(未重链不部署 App,四 App 免重链)。
MEOW_APP_SDK.md 补 §10.1 矢量字一节 + 公共头索引/§9 构建约定更新;.gitignore 忽略
patch_v2/sdk/vendor/ 与 test_meow_ui_ft 二进制。
|
2026-09-02 09:51:23 +08:00 |
|
AskaEth
|
3611cbbbde
|
sdk: sb_icons 扩充动作图标 + TopAppBar 位图图标支持
TopAppBar 动作项此前用字体码点(⚙↻⌕)绘制,4k 字库无这些码点→豆腐。改走位图:
- sb_icons.h 追加 15 个 Material Symbols Rounded 动作位图(settings/refresh/search/
play_arrow/pause/skip_next/skip_previous/arrow_back/close/add/check/lyrics/
queue_music/download/heart),FILL=1 实心与状态栏一致;sb_icons[] 只追加(0-14 不变),
动作索引 15-29。
- 生成脚本 tools/gen_action_icons.py(cairosvg svg→32x32 单通道 alpha,SVG 缓存
icons_src/ 可复现、断网可跑)。
- meow_ui_gfx.c 抽取图标 blit 像素核心 icon_blit_px,新增 meow_gfx_blit_icon_ink
(控件路径不标顶栏脏区);meow_gfx_blit_icon 状态栏路径行为不变。
- meow_ui_widget.c W_TOPAPPBAR 项支持位图模式:新 API meow_topappbar_set_item_icon
(w, idx, icon_idx),绘制取主题 onSurface/按压向栏底色淡 12%,文本项行为不变;
hit 用统一项宽。
- 公共头 widgets.h 加 MEOW_ICON_*(15-29) 枚举与 set_item_icon 声明;internal.h 声明
meow_gfx_blit_icon_ink。
- 宿主测试(test_meow_ui_widgets)加 topbar 位图图标绘制/命中/按压变淡 + 状态栏 blit
回归断言;test_umbrella 加 MEOW_ICON_* 编译期锁;MEOW_APP_SDK.md 补说明+索引表。
- 验证:宿主测试 ALL PASS(14项);交叉 zig 构建 0 warning;meow_ui.a 新 md5
1d69cdae55ab5dde3a98f5e2124f3656。
|
2026-09-02 03:24:46 +08:00 |
|
MeowOS
|
ad9778476a
|
fix(§10.5): 通知中心叠加媒体保活——播放中 App 不 SIGSTOP(修播放中滑通知中心音乐停)
- launcher: run_app_notif_overlay 入口 meow_media_app_playing() 判定(当前源+PLAYING+app_id 匹配)
→ 不 SIGSTOP/不 SIGCONT,App 续跑保 PCM;非播放中维持 SIGSTOP 模板;关闭时 unlink 标记挪到
恢复帧上屏后(防未冻结 App 抢 present 一帧回闪)。
- SDK gfx: present() 见 /tmp/meow_notif_active(env MEOW_NOTIF_ACTIVE_FILE 覆写)自抑上屏,
仅 App 进程(系统 UI/launcher 不抑制),200ms 节流 stat,脏区累积解除后一次上屏;
meow_gfx_overlay_suppressed_count 供单测断言。
- SDK input: 叠加期排空丢弃本进程 evdev 副本 + EVIOCGKEY 位图静默对齐(防面板点击被 App
双重消费/解除后边沿误判),进入沿复位触摸状态机。
- 宿主:新 test_overlay_suppress T1-T4 + test_media §8(8 用例)全 PASS;test_notif_*/
test_sdk_*/test_vol_ramp_jack 等回归全过;zig-mipsel -Wall -Wextra 全 TU 0 warning。
- meow_launcherd fbb82036(/usr/bin 只读待固件,fw_content.conf 已更)/ meow_ui.a d6242fc2 /
hello a073535a / files 2b799d07(已热更到卡);ncm 未重链(ncm_app 他 agent 在改)。
|
2026-09-01 15:23:32 +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
|
29e1b35da8
|
fix(sdk): App 退出日志兜底 — meow_ui_init 安装 SIGTERM/SIGINT 处理器(log_sig_exit: 直写 exit:sigterm 绕过缓冲+exit(0));修 watchdog 返回键杀 App 时日志只有 start 没有 exit 的问题;App 自装处理器(hello BYE)覆盖不受影响 + meow_ui.h 旧日志路径注释更正
meow_ui.a→049fa9db; hello→d0ac55cf; files→3b3bea05; launcher→4f223701; 宿主 widgets PASS
|
2026-08-31 05:30:04 +08:00 |
|
MeowOS
|
32a6a8ed1e
|
feat(sdk): 绘制期通用clip + view递归/on_event接线 (agent-195) — ①栈式clip rect(g_clip_stack[16]), 所有写像素原语过clip, meow_widget_draw push/pop控件矩形(含W_CUSTOM, 根治越界脏区), IME/模态顶层全屏不受影响 ②view enter/leave递归children + meow_view_dispatch_event(z降序子>父命中即消费); hello App层显式驱动退役
meow_ui.a→da4d3a7d; hello→c655ba43; 宿主4套件全PASS(含clip越界断言+view递归断言)
出入: W_SLIDER拇指在max处被裁(既有几何瑕疵可见化,待修); on_draw祖先已进入即画
|
2026-08-31 05:24:43 +08:00 |
|
MeowOS
|
896f391fee
|
fix(perf+sdk/ime): ①perf net_json 缺 network 对象闭合括号 → 全量 JSON 根对象不闭合/非法(MeowPanel /api/system jv_parse 失败根因,真机+python 双重证实)②IME flush 挂起(meow_gfx_flush_hold): 阻塞循环整周期只记脏、IME画完一次原子上屏,根治 on_tick 进度条与键盘同区两刷频闪 ③TextField on_change 只标脏不重画→改 meow_ui_invalidate 真重画,输入实时回显
meow_svc_perf fa073bf9→7ea196de; meow_ui.a d814d0ed→ece0ecdb; hello 2ce09466→f45ba051; launcher 9ca4c5e8→bd37c8b0(重链)
宿主验证: test_ime_fix/test_p1p2p3_repro/test_meow_ui_widgets 全 PASS; perf_host all 输出经 python json 校验合法
|
2026-08-31 03:11:35 +08:00 |
|
MeowOS
|
b8c36bd33c
|
fix(sdk/hello): M2.71控件真机bug批次 — 圆形进度脏区+整环修复/Slider拖动/Dialog·Sheet背景快照scrim不叠黑/Disabled圆角α/点击重置息屏/滑动跟手/IME残影·键位·主题配色/List选中点击 (agent-162)
|
2026-08-31 00:19:40 +08:00 |
|
MeowOS
|
9c733fcf73
|
feat(sdk): 控件库第二批 Material 子集(agent-152)
- 新增控件: Button五型(filled/tonal/outlined/text/elevated)/TextField(接IME: round外框idle-outline/focused-primary+占位+光标)/Card/Divider/Badge/Checkbox/Radio/ProgressBar(线圆, value=-1不定)/FAB/TopAppBar(标题+‹返回+动作)/NavigationBar(TabBar pageSwitcher)+TabBar(下划线)/LazyColumn/LazyRow(虚拟化+scroll clamp)
- Dialog(B③同构阻塞模态)/BottomSheet(B④), meow_ui_dialog.c
- meow_gfx 新增 fill_circle/line/ring_arc(无-lm, COS90象限查表)
- 结构体尾缀(对外opaque/calloc归零), 旧字段与create签名零破坏; meow_widget 类型扩到W_TEXTFIELD..W_FAB(17种)
- meow_ui.a=18c21da5 hello=5e31d919 launcher=4952261d(重编重链无回归); build_sdk 0warning; 宿主 test_meow_ui_widgets 全PASS+test_sb_collapse PASS+PPM目检正确
- 与 §5.8/§5.2-5.7 一致; 遗留真机观感/性能
|
2026-08-30 22:33:51 +08:00 |
|
MeowOS
|
e6f0b665e3
|
refactor(launcher): 拆分 meow_launcherd.c(9778行)→meow_launcherd/ 多文件(agent-149)
- 14 模块 .c + meow_launcher_internal.h(642): util/font_theme/fb_compositor/settings_page/power_menu/notif_center/app_launcher/main_menu/audio/backlight/net/keys/about/statusbar; meow_launcherd.c 已删
- 按行逐字搬移(0-diff), 118函数提升非static+47组extern(内部头), #if0退役区不编入(源码留.pre_split.bak)
- 关于本机小改: 作者 AskaEth/17 + info/item[13]防越界 + s_dd_modal 超高滚动(clamp/触摸滚动/音量键跟随/裁剪, 仅超高启用)
- build_launcher.sh 编译列表→模块; 文档/注释引用 meow_launcherd.c→模块/目录
- 编译0warning/-Wall -Wextra告警集与原文一致(77条无新增)/qemu-mipsel冒烟一致(--scan/--sysdump); launcher=c0799357(505KB; md5因多文件重编译与原文异,非回归依据)
- 备份 meow_launcherd.c.pre_split.bak/meow_launcherd.pre_split.bak; M2.69(0.7.64)已推卡并用户验证OK
|
2026-08-30 21:38:30 +08:00 |
|
MeowOS
|
1481ae00c4
|
fix(statusbar): 全屏状态栏收合 — 上移出屏+停渲染+热区28保留+左缘指示条屏顶(agent-146)
- 根因: launcher/App 双进程各持SDK态, hello运行时全屏(set_fullscreen+set_collapsed)只改App进程, launcher仍expanded→画28px+时序闪
- SDK render_off(yoff): 顶条内容整体上移+裁顶, 收合 statusbar_collapsed_render 只画4px提示线(无时钟/图标/值)
- 热区保留: meow_ui_statusbar_hotzone() 收合时返回28(渲染与热区事件分离)→收合仍可下滑
- 左缘指示条: meow_ui_swipe_hint y=statusbar_height()=4 平移屏顶
- 模式感知: /tmp/meowapp_sbar(App进程SDK写0展开/1收合/2隐藏, launcher读); launch_app循环新变立即叠(消半秒闪)+过渡期~20ms高频刷(动画平滑)
- meow_ui.a=ed0267a9 launcher=7ea80408 hello=1a3ff13e 0warning; 宿主 test_sb_collapse/test_sb_statusbar ALL PASS
- 遗留: 全屏上收观感/收合下App前台打开通知中心归④M3(meow_ui_sys_notif_pull桩)
|
2026-08-30 20:18:13 +08:00 |
|
MeowOS
|
03962fffac
|
fix(statusbar): present() 尊重 inset — App进程不写顶条28px区, 根治进App顶条黑1s(agent-145)
- 根因: App首帧 present() 全屏拷贝 meow_ui_gfx.c:739 把顶条区写成黑(g_back_buf新缓冲顶条行未初始化)→覆盖launcher叠画顶条; 下次叠加~1s后→黑1s
- 修: SDK present() 真实fb拷贝加 sb_clip 截断(App进程 !meow_ui_sys_render_enabled() 不写 ins 区[0,statusbar_height)); launcher(sb_clip=0)行为不变
- hello 零改动(SDK通用覆盖所有App); launcher立即预画(:9132)+1s刷新 结果不再被冲掉
- meow_ui.a=900205ea launcher=97b73cbf hello=91da9ab0 0warning; 宿主 test_sb_statusbar/test_sb_clamp ALL PASS
- ②App内下拉通知中心: 评估确认属 ④App内通知中心(M3)完整专项(launch_app不读触摸/输入移交竞态/SIGSTOP会话/不调meow_ipc_process), 未冒风险落固件, 标注M3
|
2026-08-30 19:54:48 +08:00 |
|
MeowOS
|
7300fc0a13
|
状态栏正确闭环(agent-142): 系统进程统一渲染+App不画+覆盖叠加+数据唯一+MD3图标式+主题换图标
- meow_ui_sys_set_system_mode: launcher置1才渲染, App默认0→不画状态栏; app_overlay_statusbar在launch_app循环~1s叠加28px顶条(不SIGSTOP App)
- 数据源唯一(launcher g_sys→meow_ui_sys_feed; wifi_level/batt/vol/bri/clock), 根治"launcher有亮度App没有"
- 右侧=MD3图标+变量值(statusbar_right_str文本退役→图标簇, 复用sb_icons.h/MEOW_SB_ICON_*/meow_gfx_blit_icon); 颜色随meow_theme
- ui.style换图标集(meow_ui_style/set_style读ui.style md3/miuix, MIUIx暂MD3占位)
- hello最小改动(redraw非全屏只清inset=28之下, 不冲系统顶条); 开放点: App不SIGSTOP/inset28/MIUIx占位/set_statusbar系统模式门
- meow_ui.a=3da5af7b launcher=a2b1c096 hello=67075741 0warning; 宿主test_sb_statusbar ALL PASS + render PPM目检(左时钟右亮度/WiFi/蓝牙/音量/电量)
- 遗留: 真机验证(无双画/数据一致/顶条叠加/inset/ui.style); 运行时fullscreen沉浸叠画待M3; MIUIx图标占位
|
2026-08-30 19:32:40 +08:00 |
|
MeowOS
|
6824defdf9
|
M2.60→M2.61 骨架: SDK Activity 栈 + 控件归属(agent-122) + 按钮去圈/即时重绘(agent-119) + SDK 模板文档(agent-121)
- SDK §6.1 三层控件模型: Activity栈(push/pop/active) + 页面控件归属 owner + meow_ui_global_* 骨架(②) + 系统级仅内部接口(③)
- meow_widget 加 owner; live_btn_hit/meow_widget_hit 仅 active activity 命中; touch_refresh stale 保护
- 根治"全屏页触摸主页按钮闪现"(跨页面控件残留); 控件对象复用弹栈不重建
- hello 迁移双 Activity(home/full): 全屏左滑=弹栈回主页, 根左滑=退出
- agent-119 按钮去圈(纯色accent+黑12/24%)+即时局部重绘保留; agent-121 SDK模板§5.3-5.7
|
2026-08-30 15:27:10 +08:00 |
|
MeowOS Dev
|
07c556e907
|
meow_svcd status 美化(117) + 按钮按住/点击样式+滑条黑残快照(118)
|
2026-08-30 14:30:25 +08:00 |
|
MeowOS Dev
|
19a001f007
|
全屏滑条统一路径+对比色(112/115) + 字体索引+查列表+丢失降级(113) + 文档刷新(114) + svcd CLI文档+mips-repo拆bins/mpk(116)
|
2026-08-30 14:14:30 +08:00 |
|
MeowOS Dev
|
b75ecce5de
|
字重结构+family→字重子菜单(agent-111: fonts/<family>/<weight>/, gen_font.py --weight, 两级扫描, s_font_dropdown子菜单) + 全屏左滑滑条修复(agent-112)
|
2026-08-30 13:42:41 +08:00 |
|
MeowOS Dev
|
e8fa373a2f
|
通知模型补全(agent-107: SDK icon+update_progress / IPC urgency+MSG_NOTIFY_PROGRESS / 存储 urgency+icon回退+progress / CSV加3列) + 全屏收合视觉+滑条(agent-108)
|
2026-08-30 13:02:17 +08:00 |
|
MeowOS Dev
|
a2673d5922
|
三特性: 字体分层(gen_font.py --charset + meow_font_reload_tier + font.load_full + 尺寸标记) + 全屏机制/状态栏收合(meow_ui_sys/input) + 通知#6 TF转储(CSV+10MB+开机清板载+内存表)
|
2026-08-30 11:46:29 +08:00 |
|
MeowOS Dev
|
0b4d1d3215
|
基座+设计文档(三特性): meow_ui.h 字体档/状态栏收合API + launcher fonts/fullscreen解析+env注入+通知dump钩子 + meow_ui_gfx.c 收合渲染+字体档; spec-ref/SYSTEM_SETTINGS/APPS/NOTIFICATION 三特性设计落档
|
2026-08-30 11:28:11 +08:00 |
|
MeowOS Dev
|
064635b3c4
|
WIP checkpoint (M2.53→M2.54 工作区): 字体归MeowOS/fonts+SDK跟随+多字体(进行中)+boot板载+状态栏28+亮度/音量修复+文档刷新
|
2026-08-30 03:27:24 +08:00 |
|
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 |
|