PMon Dev
|
e0bd64fe81
|
chore(release): 1.1.2 —— 交付包统一命名 inkwatch-arm64-<版本>.apk
配合项目定名「墨观 InkWatch」:
- client/README.md 的发布步骤改为输出 inkwatch-arm64-*.apk,
并标注「包名与 FFI 符号仍是 pmon」(两件事,见 docs/rename-inkwatch.md)
- pubspec 版本 1.1.1+11 → 1.1.2+12
真机核验(F50):
- 界面标题「墨观 采集端」;APK 内 AndroidManifest 含「墨观」、不含 PMon
- 因未改 applicationId,覆盖安装成功 —— 本地配置与会话令牌原样保留。
若改了包名,这一步会变成「装成另一个 App」,要重装并重新认领
生产已同步:~/pmon → ~/inkwatch。容器名与卷名(pmon_pg_data)均未变,
4 个容器 Up 18 hours healthy;从新路径 compose 照常认得 ——
这正是「只改显示名、不动 compose project name」的价值所在。
|
2026-09-16 12:14:58 +08:00 |
|
PMon Dev
|
427994853c
|
merge(main): 合入「墨观 InkWatch」改名(分支沿用主干显示名)
|
2026-09-16 12:09:53 +08:00 |
|
PMon Dev
|
b3db58df06
|
rename: 项目对外名定为「墨观 InkWatch」
<user> 2026-09-16 定名。本次只改**用户看得见的那一半**,
内部标识(包名 / FFI 符号 / applicationId / compose project name / 卷名 / 数据库名)
一律保持 `pmon` 不动 —— 理由与"若要彻底改名该怎么做"见 docs/rename-inkwatch.md。
已改:
· 界面标题:采集页「墨观 采集端」、查看页「墨观 查看端」、MaterialApp.title「墨观」
· 桌面图标名 android:label="墨观"(刻意短,避免被系统截断)
· 前台服务通知「墨观 正在采集」
· 日志前缀 [PMon] → [inkwatch](**刻意用 ASCII**:中文在 Dart AOT 里按 UTF-16LE
存,拿 grep -F 核验恒为 0 —— 这个坑踩过,日志前缀别用中文)
· pubspec description 换成正式描述(顺手清掉 Flutter 模板残留 "A new Flutter project.")
· README / docs 抬头与标题;方案文档改名
docs/pmon-v4-architecture.md → docs/inkwatch-v4-architecture.md(引用同步)
· 命名约束落地:对外文案不得出现"监视/监听/追踪/窥"类词
(方案 2.1:产品不提供任何绕过对方操作的隐蔽监控能力,这是过审与杀软信誉的前提)
刻意没改(改了会出事):
· Dart 包名 pmon_client —— 全部 import 失效,纯风险无收益
· applicationId com.pmon.pmon_client —— 已装机变成"另一个 App",无法覆盖升级、
令牌与设备归属断链。越接近上架越不该改
· Rust 39 个 _pmon_* FFI 符号 —— 要与 .so 严格配对
· ★ docker compose 的 name: pmon —— **它是卷名锚点**(pmon_pg_data),
改成 inkwatch 会让 compose 去找一套新空卷 = 生产清库。
故在其上方加了防呆注释,防止后来者顺手改掉
新增 docs/rename-inkwatch.md:完整记录改了什么、没改什么、为什么,
以及"若要连内部标识一起改"的正确顺序与风险评估(结论:不建议)。
验证:客户端 282/282、dart analyze 干净、codec/protocol 离线契约通过。
|
2026-09-16 12:09:53 +08:00 |
|
PMon Dev
|
5a860cd555
|
feat(eink): 水墨屏专属版面 —— 横屏默认 / 极简 / 字号统一(1.1.1)
<user> 2026-09-16 的四条要求,逐条落地并各有可执行断言:
① 横屏为默认、可切竖屏
· 新增配置 einkLandscape(默认 true);看板里的「转屏」按钮切换并落盘
· 屏幕方向由宿主锁(SystemChrome),看板只发指令、保持"纯展示"以利测试
· 列数按**可用空间宽高比**决定(宽→3 列 / 高→2 列),不写死方向 ——
Flutter 只拿得到一个矩形,分屏/折叠/多窗口下方向与矩形并不一致
② 聚焦核心数据、隐藏次要信息与冗余控件
· 在线时顶部只有「实心圆 + 设备名」:形状已表达在线,
"在线"二字与"数据新鲜"都是冗余;一旦离线/疑似/未知才把状态与原因铺出来
· 底部两行说明合并为一行("最后刷新 xx" + "每 N 秒自动刷新" → "xx · 每 N 秒")
③ 对比度与刷新
· 延续零动画(静止等待图标、NoSplash、无无限动画),有源码结构断言守着
· 支撑"永不溢出":横屏/竖屏/极窄/极矮/极宽多套尺寸全部覆盖
④ 统一字体与样式(避免字号大小不一)
· PmonEinkText 收敛为 5 档(label 与 action 同号,靠字重而非字号区分);
界面里**不得写就地字号**,有源码断言(`fontSize: 数字` 即红)
· 数值改为「大数值 + 小单位」:此前 `1.42 Mb/s` 整串按 40px 渲染宽 360px,
而 3 列时每格仅 207px → 统一比例被拖到 0.575,**一屏数值全被它压小**
· 全屏数值共用**同一个**缩放比例(按最长那条算);
并改用**实测字形二次收敛**替代纯线性估算(渲染期文本宽度非线性,
实测在极窄格 + 极长值时溢出 3.7~9.3px);最外层留一层 FittedBox 兜底,
保证"绝不裁掉内容"(正常尺寸下它不生效,同号不受影响)
· 数值加**无损紧凑化**(`310.00` → `310`):只删数学上无信息的零尾,绝不四舍五入
实测(F50 代跑):
· 横屏 3 列 × 2 行、大数值 + 小单位、数值明显大于标签 —— 见 dist/水墨屏走查/03
· 竖屏**未能在 F50 干净验证**(它的 wm size/density 覆盖 + 强制旋转使 Flutter 视口
变成近正方形,于是按设计走了 3 列)。竖屏布局由 widget 测试覆盖
(536×724 → 2 列),待真机(Neo2)上机复核。
测试:客户端 321/321;其中 eink_board_test 32 项。
变异测试:把"统一缩放"退回"逐格 FittedBox"会被"渲染高度一致"那条抓住。
主干 main 不受影响 —— 本分支相对 main 只新增、未修改任何主干代码。
|
2026-09-16 01:27:49 +08:00 |
|
PMon Dev
|
b585d780e0
|
feat(eink): 水墨屏专属版本(iReader Neo 2 副屏)
从主干(1.0.9)长出,**只新增、不改动主干**。本提交带过来的是
已交付的水墨屏看板 1.1.0 那批改动(下一步会在此基础上做横屏与统一字号):
· ui/eink_board.dart 单台设备大字看板(6 大格、一屏放下)
· ui/eink_mode.dart 全局零动画开关 + 静止等待指示
· ui/theme.dart PmonEink 三档明度令牌 + statusGlyph 形状化状态
· host/app_config.dart einkMode / einkRefreshSec(默认关,不影响彩色版)
· 平台通道 setKeepScreenOn(副屏常亮)
· 刷新节流 数据每秒到,只在间隔到点重建
之后本分支会继续做:横屏为默认、竖屏可切、隐藏次要信息、统一字体与样式。
主干(main)不含以上任何代码。
|
2026-09-16 01:06:51 +08:00 |
|
PMon Dev
|
f632672a82
|
feat: PMon V4.0 功能开发收口(1.0.9)—— 主干
把 V4.0 骨架以来的全部功能开发固化为主干基线,内容包括:
· client/ 全量 Android/macOS 客户端(Flutter + Rust 核心)
· server/ 网关、业务服务、仓储层
· deploy/ compose、Dockerfile、init.sql + migrate.sql(幂等迁移)
· shared/ tests/ 协议、编解码、指标清单与全部测试套件
· docs/ README 架构方案与运维手册
本轮之前修复的主要缺陷(详见各文件注释与 client/README.md):
· 首次部署路径(init.sql 的 device_tokens 建表顺序)
· 每 20 分钟硬切以外的设备身份漂移与**设备归并**(shared/device-identity.js)
· 配置无版本号、无校验导致的病态残留(host/config_migration.dart)
· 数据库迁移从不执行(deploy/migrate.sql + compose 的 migrate 服务)
验证:客户端 282/282、全量回归 20 套件 0 失败。
⚠️ 水墨屏专属实现(看板、水墨屏令牌、einkMode、常亮)**不在本分支**,
由 feature/eink 承载,主干不受其影响。
|
2026-09-16 01:06:24 +08:00 |
|