Skip to content

v1.13 — 控制台「自检」按钮 + CI

Latest

Choose a tag to compare

@Maopk Maopk released this 03 Oct 08:53
· 23 commits to master since this release

v1.13 — 控制台加「自检」按钮,CI 上线

控制台 1.22 · 桥 2.24 · 页面面板 0.10.1。这一版的主角是控制台里的「自检」按钮:一键在 Termux 里跑完整套 70 项自检,════ Result: … ════ 那行直接落进控制台历史,不用再敲命令行。

下载

产物 文件 SHA256
控制台 App dsh-console-v1.22.apk 89a329b0127d9a733f0f581b4bc05af245af46dd67636cb582797c814be27126
无障碍桥 dsh-bridge-v2.24.apk fa522055cbd90cc11a06a5f52ee33688d88d3b20214f0066c376693bbaac90b8
页面面板 dsh-mobile-local-v0.10.1.tgz 219634aa50d5db3c55638a18d9260e066574d6f79b7957233d146405f3bc0ff8

校验:把三个文件和 SHA256SUMS.txt 放进同一目录,sha256sum -c SHA256SUMS.txt。

新增

  • 控制台「自检」按钮(🩺,维护区):跑完整的 tests/selftest.sh —— 70 项(语法、12 个组件的 --dry-run、就绪回归、安全可逆的真跑、8099 端口上的一次性冷启动)。它要跑几分钟、会压手机负载,所以放控制台而不是桌面组件(桌面一次误触代价太大);按钮不带红色危险标记 —— 那套确认框是给重启/停机的口径,而套件自己会把会话杀手类检查标成 SKIP。
  • dsh-kit-update:一条命令把整套更新到最新 —— 快进合并仓库 → 刷新 ~/.local/bin → 刷新 12 个桌面组件;--check 只报告不动手。

修复(都是真机实测踩出来的)

  • 两个 App 的构建脚本不再"悄悄换一把签名钥匙":ks.jks 在 .gitignore 里、只存在于当初出包的那个目录,换一个构建目录就会生成新钥匙,签出来的包装不上手机(安装器只报一句 "App not installed",不解释原因)。现在按 DSH_KS → $SRC/ks.jks → ~/dsh-console/ks.jks(桥是 ~/droid-bridge/ks.jks)的顺序找一把已存在的密钥库,全都没有才新建,并打印用的是哪一个。
  • 面板 npm pack 不再把上一次的 tgz 打进包里(两个面板插件都加了 files 白名单):第一次打出来是 39.5 kB / 5 个文件,因为里面裹着上一次的 dsh-mobile-local-0.10.0.tgz。
  • 三个生成器不再写出 CRLF:在 Windows 上重生成 i18n/zh.json、两份 Lang.java、widgets/i18n.sh、面板 client.js 会把每一行都改掉(整文件 diff);CRLF 的 bash 库还会让每条文案带上一个尾随 \r。
  • 静态检查抓出来的真问题:tools/dsh-tasksd 的 last 恒为 null(取的是编译后正则的下标,异常又被外层吞掉);widgets/2_shutdown-dsh.sh、widgets/8_enable-wireless-adb.sh 两处双引号套双引号;7 处 cd 缺失败出口;tools/install-tools --check 不再顺手建目录;tests/selftest.sh 三处裸 $TMPDIR 在 set -u 下会中途断掉;12 个小组件的 HOME_DIR 不再写死手机路径。
  • 读 App 真源码的工具与断言都认环境变量(DSH_KIT_REPO / DSH_CONSOLE_DIR / DSH_BRIDGE_DIR / DSH_HOME_DIR):仓库不在 $HOME/dsh-termux-kit 时也能跑。

新增(CI)

.github/workflows/ci.yml 跑这个仓库自己能证的离线部分:bash -n 全量 + shellcheck、ruff + 逐文件 mypy + 编译检查、9 道数据源门禁(任务 id / 密钥 / UI 与数据源 / i18n 表 / Java 转义 / 安装一致性 / 面板渲染 / 文案审计)、widgets/common.sh 的 35 条单元断言,以及在容器里跑 tests/selftest.sh(需真机的检查显式列成清单,只记录、不判红)。钉版本的开发依赖在 requirements-dev.txt。

已知行为(不是 bug)

  • 三个产物的版本号各自独立,只 bump 改动过的那一个。
  • git pull 在本仓库不生效:master 没有上游,它只更新远端指针、一个文件都不合并(退出状态看着还像成功)。更新用 dsh-kit-update,或手工 git fetch origin && git merge --ff-only origin/master。
  • ks.jks(签名密钥)不在仓库里 —— .gitignore 明确不让它进公开仓库。它丢了就只能卸载重装 App。

三个产物怎么升

  • 控制台 / 桥:桌面小组件「11_更新APK」,或 ~/.local/bin/dsh-update(下载 → 校验 SHA256 → 安装,只升不降)。
  • 页面面板:cp plugins/dsh-mobile-local/client.js ~/.dsh/profiles/web/local/dsh-mobile-local/,再 (cd ~/.dsh/profiles/web && pnpm install --prefer-offline) 并刷新页面 —— 不用重启 DSH。

这一版是怎么发出来的(留个记录)

源码 91d2c19d(控制台 1.22 那批,CI 五个 job 全绿)→ 手机上 git fetch origin && git merge --ff-only origin/master(62 个文件)→ bash tools/install-tools → bash tools/install-widgets → bash apps/console/build.sh(先确认 ks.jks 还在)→ 重打面板 tgz(先 rm -f plugins/dsh-mobile-local/*.tgz)→ 三个资产上传。随后 fe6e60fe 只改了文档、工具与构建脚本,APK 内容不变。