Commit Graph
74 Commits
Author SHA1 Message Date
ZXCLI 0c99f6e1b5 app+docs: 第三十九轮结案——官方条纹更不明显真因是我们开着官方从不开启的 7×7 细节增强(GPU 画布/Skia 预放大/合成截屏逐环 A/B 全部排除,暗区 ROW 0.31-0.46→0.14-0.23≈官方 0.15,设置页去掉误导推荐并注明代价,设备增强已恢复 0,123 单测全绿) 2026-10-07 05:18:51 +08:00
ZXCLI 6b3787d365 docs: 第三十八轮追加——同帧残差分解(显示链添加 ROW+0.146/COL+0.358,空间相关 0.994)、SearchSeparateLine/DoSomething/base 指针闭环排除、剩余两子问题与标定文件 diff 方向入档 2026-10-07 03:58:27 +08:00
ZXCLI 57ad4b71e9 docs: 第三十八轮追加——COL/ROW 波动性实验定案:跨 FFC 参考与跨连接均系统性稳定(NUC ROW 2.3-2.5/COL 4.7-5.7 counts,显示域 ROW 2.2×/COL 1.7×),排除设备状态随机性;下一轮主攻官方 NUC 域直接数据与标定表初始化路径 2026-10-07 03:53:42 +08:00
ZXCLI 83c5774c35 app+docs: 第三十八轮追加——同帧对照收敛差距:真机显示与 NUC dump 空间相关 0.994,鲁棒同口径下 COL 0.33 vs 官方 0.28 达标、ROW 0.22 vs 0.10 差 2.2×;640 中间级竖屏 2.25× 非整数致 GPU 列交替恶化已回退(保留 nativeOut 单级 9×/16× 整数);PIL F-mode resize 失真教训与 COL 波动待验项入档 2026-10-07 03:41:47 +08:00
ZXCLI 17c30ffd13 app+docs: 第三十八轮——raw 录制调试开关+逐级重放定案(参考减除消 98.4%,官方 13 函数二次核对无差异,NUC 域残差差 1.6×);显示链对齐官方两级(nativeOut 去 2× 内插 + 640×480 中间级低通),123 单测全绿 2026-10-07 00:29:55 +08:00
ZXCLI f38b246b39 docs: 第三十七轮交接——官方条纹更不明显的定位:逐行固定偏移(我们独有),逆向排除全部每帧候选;测量数据与下一步清单见渲染文档 §16 2026-10-06 21:30:48 +08:00
ZXCLI 595309735e app+csdk+docs: 修正上一轮最近邻2×的退化(颗粒/边沿台阶)——照片改为从160×120单级6×放大(官方ImageViewer同款),实时缓冲与csdk回退为插值2×;实测冷区|dx| 0.76×官方(更平滑),119单测全绿 2026-10-06 17:57:17 +08:00
ZXCLI 4a3916a2b7 app+csdk+docs: 按反汇编定案修复——官方安卓路径无 160→320 插值级(ImageViewer 无 FILTER_BITMAP 最近邻放大),我们的双线性 2× 自造交错细纹;实测冷区细条纹比 1.16/1.29→1.00/0.93,csdk 同加 upscale_nearest,119 单测全绿 2026-10-06 17:09:00 +08:00
ZXCLI 0be75fa8c3 docs: 冷区条纹量化——映射与列FPN一致、细纹理1.27×;冷区计数噪声超预算1.65×(只在大负d出现),排除阈值符号/band选择/参考/JPEG/显示链,留 fpaTempFix 图像链与 band0 gain 两条待验假设 2026-10-06 16:52:23 +08:00
ZXCLI e0709f9305 app+csdk+docs: 噪声预算真机实测(0.559σn 与理论一致,链路无额外噪声源)+ 修 MDT raw/NUC 配对与 LUT 32位语义;csdk 合入 android_lut/fpa_temp_fix(C 未编译,算法由 golden 测试锁定);118 单测全绿 2026-10-06 16:28:05 +08:00
ZXCLI 2290fbbafb app+docs: 真机验证——修实时全黑(ArrayStoreException)并补端到端测试;同场景 A/B 映射已对齐(平均4.5/255,逐计数差2级);复核确认 LUT 步进常数用反汇编公式即最优;剩余差异定位到计数噪声域 2026-10-06 15:45:19 +08:00
ZXCLI 6392bd89ee docs: 更正 7×7 细节增强结论——官方每帧虽调用但强度源 CFunctions+0x28 全库未写=0,实为空操作(与我们默认关一致) 2026-10-06 07:56:09 +08:00
ZXCLI a1dfb647ea app+docs: 按真机 libcxsdk 反汇编定案——灰度 LUT 改用 Android 版 HistDeRedundance(固定基值/pivot=两段均值/步进上限),曲线插值温度补 fpaTempFix;推翻上轮'参考帧累积'机制(CAccumulator 是 4 帧块平均,与我们等价) 2026-10-06 05:51:31 +08:00
ZXCLI 3510bdc774 app+docs: 参考帧窗口参数化(baselineFrames, 默认4)——实测延长到8会把开快门帧收进参考导致不稳定;结论:需快门感知的参考收集 2026-10-06 04:47:36 +08:00
ZXCLI 1d6c5e3e55 app+docs: 追查'官方更细腻'——定位到时域累积器(CAccumulator);实测证明差异在参考帧(FFC baseline)而非显示侧平滑;累积器已实现但默认关闭 2026-10-06 04:39:27 +08:00
ZXCLI d66d253f9f docs: 第二十九轮心跳(渲染差异=灰度 CDF 75% pivot,已修复并同刻实测对齐;csdk 同步状态) 2026-10-06 04:07:11 +08:00
ZXCLI 3b191e6bca app: 渲染对齐官方手机 App——关闭灰度 CDF 的 75% pivot(实测同刻灰度分布 60.2->81.2,官方 82.2;偏暗/低对比根因) 2026-10-06 04:05:37 +08:00
ZXCLI 95ae4d46dd docs: 渲染差异定位到调色板(铁虹表):官方手机 App 用 Android SDK 运行时生成的表,我们用 PC 表;窗口/LUT-CDF 已逐行排除(附实测证据) 2026-10-06 03:53:03 +08:00
ZXCLI 4f3bb50e4a docs: 第二十八轮心跳(温度链进 App 并真机验证;渲染差异收敛到 LUT-CDF,附下一步) 2026-10-06 03:36:57 +08:00
ZXCLI 604ab0cd7e docs: 手机端渲染差异定位(官方照片无数据块/亮度差复现;三 SDK 交叉验证把差异收敛到灰度 LUT-CDF 阶段) 2026-10-06 03:36:36 +08:00
ZXCLI 705ad27cac docs: 补记 BasePara2 线上偏移的确认方法(dump 报文按已知值定位) 2026-10-06 02:54:53 +08:00
ZXCLI 8560b83816 docs: 温度链数据源全部定位(v50=fpaTempFix、0xA4/A8=BasePara2.ATZeroErrorPoint/ATErrorSlope、斜率表现算、曲线A=我们的T2E表)——落地无未知项 2026-10-06 02:54:17 +08:00
ZXCLI e80d62050b docs: 温度链闭合——完整模型与官方输出平均差 13.9mC(0.014C);根因是 Hex-Rays 十进制字段(dev+0xA4)误读;附可直接落地的伪代码+DDT尾部布局+剩余数据源清单 2026-10-06 02:52:25 +08:00
ZXCLI 4198f9e163 docs: 温度链第二轮收敛——确定为 revise(band_map(counts)),斜率逐位吻合,仅剩恒定 -197mC 加性项(已排除项与下一步已记录) 2026-10-06 02:46:41 +08:00
ZXCLI 3d4bb65247 docs: 官方温度链 IDA 反编译取证(放射学分支+波段映射+修正项;DDT 尾部即标定记录;系数待钉)+ IDA MCP 接入记录 2026-10-06 02:38:56 +08:00
ZXCLI ce27a1bb82 docs: 官方 PC 端同帧逐像素对比(NUC 逐位一致、调色板一致、温度曲线系统差 +0.1/-0.7C、窗口规则差异、PC 采集链路与驱动坑) 2026-10-06 02:14:26 +08:00
ZXCLI ee6859877a android+docs: debug 日志默认关闭;操作手册升级为插图版
debug 日志:DebugLog 增加总开关 enabled(默认 false),log() 直接返回、
init() 不装崩溃钩子、startFile() 不建文件。要在设备上排查时改成 true 重新构建
即可,其它代码不动。关闭后崩溃仍按安卓常规方式可见(logcat AndroidRuntime +
系统弹窗),只是不再有落在相册目录旁的 debug_*.log。

真机烟雾测试(小米 22041211AC,相机插着):出流正常、拍照成功(相册 19→20,
新增 MAG160C_20260912_153522.jpg)、崩溃 0、App 自身日志行数 0、无新日志文件。

插图版手册 docs/android_app/app_manual.md + manual_images/:
- 02_markers:标记结构解剖(准星/读数/引线/描边字),真机照片放大 3 倍并标注
- 03/04:横屏 960x720 与竖屏 720x960 的真实照片
- 05/06/07:设置、分析(含底部测量面板)、相册 真机截图
- 01_live_schematic:实时界面改为**自绘示意图**,因为实时 OSD 文字按握持角度预旋转
  (用户要求的可读性设计),手册拍摄时手机横放,截图里文字全是侧躺的无法阅读;
  其余界面文字本就水平,直接用截图。

图由 manual_images/MakeFigures.java 生成(裁剪缩放/放大标注/示意图绘制),
界面改动后重跑即可;原始截图存为 JPEG(PNG→JPEG 省约 8MB)作为可再生输入。
.class 已加入 .gitignore。

README 阅读顺序加入操作手册、结构表更新、里程碑补记根因级修复。105 项测试全绿。
2026-09-12 15:36:34 +08:00
ZXCLI 6ba90f2bb6 docs: 修正操作手册里的标记示意图(四臂+引线+右侧读数,与实际绘制一致) 2026-09-12 15:14:35 +08:00
ZXCLI e3f0729218 docs: 新增 App 操作手册 + README 里程碑/阅读顺序更新
docs/android_app/app_manual.md(新,223 行):
- 安装与首次连接(含"重启后 USB 授权失效需重新确认")
- 界面总览图、实时界面各控件、测温点增删
- 标记怎么读(准星/描边字/MAX-MIN/引线的含义)
- 相册、分析(离线测温)逐项操作
- 设置逐项说明,并标出**是否真正生效**:发射率/报警温度/语言目前仅保存未接入,
  云同步为占位——避免文档承诺 App 做不到的事
- 方向规则(文件跟随握持、预览锁定、录像方向在按下瞬间确定)
- 文件位置与 MDT 容器格式、远程预览双机用法、常见问题、已知限制
  (相册不列录像、红热调色板为近似、PDF/巡检未接入界面)

README.md:阅读顺序加入操作手册;仓库结构表更新;里程碑补记 2026-09-11~12
真机多轮联调的三个根因级修复(launchMode / SET_CONFIGURATION / 软件画布卡顿,
6.5→15.1fps)与同期完成项。

session_state.md 第二十四轮条目补记本轮新增文档。
2026-09-12 15:14:05 +08:00
ZXCLI f465831d8e android: 修正横屏拍摄方向——文件旋转跟随握持角度,不再只跟显示旋转
用户:"切到横屏拍照片和视频方向又不对了"。

根因:上一轮把文件旋转定成显示旋转(锁定 90° + 手动旋转),而这与手机物理姿态无关。
相机模组固定在手机上,手机转 90° 场景就在传感器画面里转 90°,文件必须跟着转,
否则横屏拍出来就是"竖幅文件里装着横躺的场景"。

修法(普通相机做法):文件旋转 = 显示旋转 + 握持角度(PhotoSaver.captureRotation,
握持角取自 DeviceOrientation.deg)。竖直/倒置 → 竖幅 720x960;两个横屏姿态 → 横幅
960x720,且两者相差 180°。录像在开始录制时采样一次(编码尺寸固定)。预览仍保持锁定
(用户此前明确要求),所以横屏文件不是预览截图,而是预览再转一个握持角。
真机复现时设备恰在 270° 姿态(gx=9.88, gy=-1.02 即 deg=270):
修复前 720x960 竖幅;修复后 960x720 横幅,把修复前文件转 -90° 与新文件逐像素比对
平均亮度差 5.06、转 +90° 为 40.94 —— 方向正确且只差这一转。录像 tkhd 960x720
97帧 0 丢弃;分析页读横幅照片 rot=0:MIN/MAX 各一个且与烧录标记重合。

新增 savedFileRotationFollowsTheGrip / landscapeGripsProduceLandscapeFiles。
105 项测试全绿。文档补记教训:文件方向是世界坐标问题、预览方向是屏幕坐标问题,
两者可以不同;这类"方向正确"必须用同一场景在不同姿态下可复现拍摄来验证。
2026-09-12 15:02:03 +08:00
ZXCLI 4c940fe773 android: 照片改为竖屏方向 + 标注风格重做(去白底,准星+描边字)+ 录像 3x 编码
照片方向(推翻上一轮的"传感器朝向"决定,用户明确否掉):
把显示旋转(锁定 90° + 手动旋转)与手动翻转一起烘进 JPEG,竖屏持机拍出来就是
竖屏 720x960,顺序与实时渲染器一致(先镜像再旋转)。温度数据不跟着转——probes/
NUC/extremes 仍在原始传感器空间,旋转只存在于呈现层;BLOCK_RENDER 升到 version 2
多存 rotDeg,旧文件(8B v1 块)解析为 rot=0,符合它们确实是传感器朝向的事实。
分析页映射改为直接复用 PhotoSaver.sensorToPhoto(...,1,1),杜绝两处各算一套。

标注风格(参考 FLIR/Testo 的仪表做法):
- 图标改为细线方形准星 + 四短臂(原为圆环+圆点):方框限定测量区域、四臂指明确切
  像素、中心镂空不遮挡被测点。
- 文字白字+深色描边(先描边后填充),去掉白色底板——白底挡住被测画面且像消费级 App;
  描边让文字在黑冷端和白色热端都读得清。
- 极值改用 MAX/MIN 大写 + 引线把读数连到自己的准星;颜色仍取白色(彩色标点在铁虹
  橙黄区会糊掉,区分靠文字)。

标注尺寸统一:AnnotSpec 的 320 单位是图像长边,实时界面原用 viewport.width()(竖屏
时是短边)去除 320,使实时标点只有照片的 3/4 大——这正是用户早先"照片标点太大"的
由来。现四处统一 max(w,h)/320。

录像清晰度:编码尺寸改为传感器 x3(竖屏 720x960),码率随像素数放大;帧的翻转+旋转
用一个 Matrix 一次 drawBitmap 完成,标点经 sensorToPhoto 落在同一变换下(矩阵复合
结果与 sensorToPhoto 按坐标推导核对一致)。实测 tkhd 720x960 / avc1 / 96帧 0丢失。

分析页"每个标记出现两次":不是坐标错,而是标签避让与绘制顺序有关——拍摄按
probes→MAX→MIN、分析按 MAX→MIN→probes,避让把标签推到不同位置。改为同序后叠加
完全重合(真机裁剪对比确认)。

排查方法:验证"文件里标记位置是否正确"不靠肉眼看截图叠加,直接解析 MDT 算期望像素
再统计该处中性白色像素数——据此一次证伪"旋转没生效":rot=90 处 markerPixels=
204/219/296/719,rot=0 处全为 0。

103 项测试全绿(新增 mirror x rotation 往返、旋转角点、v1→v2 渲染块兼容)。
2026-09-12 14:34:54 +08:00
ZXCLI 9e64c74ffe android: 录像标注日志给出完整判据 + 补充重启后真机验证记录
录像首帧日志原来只打印标记数量,无法判断"少了的标记是为什么少的"。现在一并
打印判据(probes 数量、trace 模式、minPos/maxPos、minC/maxC),录像里缺
max/min 时可直接从日志定位原因(追踪被关、极值尚未算出、重启清空了测点等)。

排查记录(重要):本轮一度以为录像丢了极值标记,实测日志
`annotation: 2 markers ... trace=BOTH minPos=159 maxPos=16269` 说明 probes=0、
2 个标记正好是 max+min ——标记本身是齐的,是我的读法错了(中途重装 APK 清空了
测点,我误把 2 当成"两个测点")。因此保留并强化了这条日志。

补充真机验证(重启冷启动 + 60s 稳定性):
- 重启后 USB 权限被系统清空、重新授权后一次成功,15.1fps、无重枚举
- 录像 99 帧 / 0 丢弃 / 1.6MB,极值标记确认烧入
- 长时间运行 15.1fps 稳定、开增强(8 档)单帧 9.2~9.4ms
- 照片/分析面板/底部面板三方数值完全一致
  (同帧照片 max 36.0 min 20.4 Pt1 21.7 Pt2 26.1 ↔ 面板 36.0/20.4/24.5 + 21.7/26.1)
- 文档记录:判断自绘画面帧率不能用 dumpsys gfxinfo(看不到 lockCanvas 绘制),
  必须用内置 MAG160C/render 日志。99 项测试全绿。
2026-09-12 13:46:08 +08:00
ZXCLI e43e93025e android: 修正增强档位说明(写反了)+ 分析页测温点沿用照片数值
上一提交把档位含义写成了「越高纳入越多弱对比区域」,方向是反的。按公式
amplitude = strength*(center-mean)/divisor, divisor = max(max-mean, mean-min, mapStrength),
mapStrength = strength*gain*2>>8 重新推导:
- 弱对比区域 divisor 被 mapStrength 兜住 → 幅度 = 128/gain,与档位无关;
- 强边缘 divisor 由对比度主导 → 幅度随档位线性增长;
- 门槛 mapStrength <= range*32 → 档位越高弱对比区域被整个排除(正是噪声所在处)。
即高档位是「更锐但更挑」。设置页文案与 DetailEnhance 文档已改正,
并加 theLevelRaisesTheContrastGateAndDropsWeakDetail 锁定
(range=60 窗口:8 档 mapStrength 1500 通过、16 档 3000 被拒)。
真机 HF 实测 0.365(关) / 0.438(6档) / 0.433(8档),与推导一致。

分析页测温点原先前先重新测量 NUC,于是照片上烧录的 Pt2 26.1℃ 与面板 25.9℃
不一致(与极值同一类漂移)。现在优先用文件记录的 tempMc——照片上印的就是它,
仅在记录缺失时才测量。真机确认照片/面板/极值三方数值完全一致。

真机(小米 22041211AC/Android12/MIUI,重启后冷启动):15.1fps 稳定、单帧 6.1~6.6ms、
6/8 档 9.9~10.3ms、拍照 extremes=2、分析页只有一个 min/max 且与照片重合、
底部面板可见(36.0/20.4/24.5)。101 项测试全绿。
2026-09-12 13:36:10 +08:00
ZXCLI f41668d5d1 android: 修正 7x7 细节增强的混叠系数(原实现把增益乘了两遍,画面满噪点)
官方 FilterDetailEnhancement_Simple 把「增益缩放后」的 k = strength*gain*2>>8 只
传给 map(决定阈值与 divisor 下限),混叠系数用的是**原始 strength**。本移植最初
两处都用 k,等于把细节再乘一遍增益:真机 level 2 满屏噪点。改为原始 strength 后
HF 能量与关闭档基本相同(0.47-0.51 vs 0.46-0.47),边缘仍被增强。

细节校正:
- 一个有用的推论:每档的边缘强度其实与档位无关(化简为 128/gain),档位只决定
  哪些窗口通过对比度阈值——所以调高档位是"纳入更多弱对比区域",不是"推得更狠"。
  据此把档位从 0-4 扩到 0/1/2/3/4/6/8(官方 MAG_SetDetailEnhancement 钳 0..32)。
- 官方 App 自身不调用 SetDetailEnhancement(jadx 全量搜索无此符号),SetEX 是数码
  变焦 ROI 与增强无关;故无法据此对齐官方默认档,保持用户可见设置、默认关闭。

测试:
- 新增 blendUsesTheRawStrengthNotTheGainScaledOne 黄金值用例(推导写在注释里),
  把 bug 改回去会立刻失败(已实测验证)。
- 原 gainScalesTheEffect 改为 gainDoesNotAmplifyNoiseOnAFlatField + gainBelowOneIsANoOp,
  因为修正后增益不再缩放混叠幅度。98 项测试全绿。

顺带修复(同一轮真机复现):
- no_device 死锁:首次 connect 撞上相机重枚举时停在「无相机」,且紧随其后的
  ATTACHED 广播被 800ms 防抖丢弃 → 永久无画面。防抖/退避改为延后重试,no_device
  也安排 1.5s 重试(scheduleRetry 单槽位、最新优先)。
- 手机平放时加速度计 x/y≈0,迟滞逻辑保留旧姿态角导致 OSD 文字整体转 90°;
  改为 tilt<4m/s² 判定平放、姿态归零。
- 录像帧缺 max/min 标记:probesAsMarks() 现在一并返回,录像与实时画面一致。

真机(小米 22041211AC/Android12/MIUI):15.1fps 稳定、单帧 6-9ms(开增强 11ms)、
拍照与分析页标记一致且各只有一个 min/max、设置跨冷启动持久化、
屏幕熄灭时渲染停止无空转(CPU 3.7%)。
2026-09-12 05:04:50 +08:00
ZXCLI 4ebdca109a android: 实时画面卡顿根因是软件画布(6.5→15.1fps),标注统一 + 7x7 细节增强
卡顿: 热像走 SurfaceView.lockCanvas 的软件画布, 每帧在 CPU 上做 320x240 ->
~810x1080 双线性放大 + 清整屏, 实测只有 6.5 帧/秒、单帧 134ms。dumpsys gfxinfo
看不到这条路径(只统计 Compose), 故给渲染线程加自测量日志才定位到。改用
lockHardwareCanvas(API29+, 旧系统回退) 后 15.1 帧/秒、单帧 6.4ms。
同时消除每帧垃圾: 复用翻转缓冲/标记列表, 色条改预渲染位图; 温度扫描从主线程
移到 Dispatchers.Default。

标注统一: 新增 AnnotSpec(唯一几何定义) + MarkerPainter(唯一绘制例程), 实时/
分析/照片/视频共用, 极端值标签改用 max/min; 照片按传感器朝向 3x 分辨率保存。
修 placeLabel 不判重叠(min 与 max 印成一团), 现支持让位。

分析对齐: 极端值漏了 sensorToPhoto 映射(落在左上角几十像素内), annotateJpeg
忽略照片镜像(另存时标记镜像到另一侧), 两处已修。

新增 BLOCK_EXTREMES(0x5BB5B562) 存拍摄时的极值位置/温度: 分析页重扫 NUC 不可能
逐位复现 live 结果, 真机出现过两个相距几像素的 min。

分析面板被导航栏遮挡: UiInsets.navPx 改可观察状态并加 padding。

7x7 局部细节增强(官方 FilterDetailEnhancement_Simple 逐行移植), 强度换算
level shl 3 经 MAG_SetDetailEnhancement(钳 0..32)核对一致; 设置页新增
"图像增强" 0-4 级, 默认关闭(无官方参考输出), 不影响逐位基线。

真机验证(小米 22041211AC/Android12/MIUI): 15.1fps、拍照含 2 探针+2 极值、
照片与分析页标记位置/风格一致且各只有一个 min/max、分析数值与照片吻合、
增强 2 级细节明显且不掉帧。测试 96 项全绿。
2026-09-12 04:20:16 +08:00
ZXCLI 376b8389ea android: fix launchMode (singleTask) root cause of reconnect storm; drop SET_CONFIGURATION reset; fix analysis temp units, NUC block size, viewer back keys 2026-09-12 02:30:05 +08:00
ZXCLI 4cb6e69ea4 android: fix analysis temperatures (store calibrated NUC data), marker sizing, bottom data panel; split album (zoom/delete) from analysis tab 2026-09-12 00:05:49 +08:00
ZXCLI 15a7127287 android: fix recording crash+save, gallery viewer unreachable, back key, settings persistence; photo orientation+annotations, analyzable MDT probes, trace mode 2026-09-11 23:26:27 +08:00
ZXCLI 3704ee797b android: settings screen scrollable + wire dead rows (language/about) + instant orientation apply 2026-09-11 03:59:55 +08:00
ZXCLI f7bca894ba android: revert image to locked orientation (user decision); keep official-style manual rotate/flip settings 2026-09-11 03:50:56 +08:00
ZXCLI 464cfcb5e8 android: fix real-device defects (temp double-conversion, FFC temp jump, image orientation per grip, remote raw+metadata stream) 2026-09-11 03:01:13 +08:00
ZXCLI 0919f5e186 docs+analysis: independent verification guide for phases A-F (calibrated scanners, self-tested commands) 2026-09-11 01:10:18 +08:00
ZXCLI 8e1312a137 android: phase Z wrap-up (docs, release build, camera feature optional, APK) 2026-09-11 00:57:46 +08:00
ZXCLI 512508e629 android: LAN remote preview (UDP discovery + raw-frame TCP stream, client-side rendering) 2026-09-11 00:54:13 +08:00
ZXCLI f8b3200464 android: visible-light PIP overlay (camera2, draggable, 3 sizes) 2026-09-11 00:31:00 +08:00
ZXCLI c34940e6fd android: cloud module scaffold (retrofit, opt-in, disabled by default) 2026-09-11 00:22:25 +08:00
ZXCLI b7a928e23d android: vendor palette extraction tooling (+exact tables if found) 2026-09-11 00:15:39 +08:00
ZXCLI 656d419f81 android: MDT temperature decode + analyzer probe UI 2026-09-10 23:43:19 +08:00
ZXCLI 06c1f30b13 android: lifetime query + cali consistency check + real-device checklist 2026-09-10 23:34:10 +08:00
ZXCLI 087e15cb19 docs: execution plan for remaining backlog (written for no-vision executor model) 2026-09-10 23:18:49 +08:00