Repository navigation
Releases: Maopk/dsh-termux-kit
Release list
v1.13 — 控制台「自检」按钮 + CI
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 内容不变。
v1.12 — 控制台 1.21 + 桥 2.24 + 页面面板 0.10.0:启动、关闭、更新三件事都说真话
v1.12 — 控制台 1.21 · 桥 2.24 · 页面面板 0.10.0
一句话:把「启动 / 关闭 / 更新」这三件最常干的事,从"看起来能用"改成说的话和实际发生的事一致。
下载
| 产物 | 文件 | SHA256 |
|---|---|---|
| 控制台 App | dsh-console-v1.21.apk |
428f9ece8f5bacdb263766621e1ead7ba3f64a9b9a1226d1f6090b2ff35e93e1 |
| DSH 桥 App | dsh-bridge-v2.24.apk |
fa522055cbd90cc11a06a5f52ee33688d88d3b20214f0066c376693bbaac90b8 |
| 页面面板插件 | dsh-mobile-local-v0.10.0.tgz |
20959b42cac382445775b5de95c1637d8ce0217d8534fcf7ed8313cc69b7d636 |
sha256sum -c SHA256SUMS.txt本版修好的(都是真机实测踩出来的)
- 「从控制台启动 DSH 比点小组件慢得多」:真因不是慢 —— 页面其实是
dsh web自己打开的,
而控制台在日志里说"我没打开"(那句话与事实相反)。现在脚本把DSH_BOOT_OPEN=server|widget|none
当证据回传,控制台只念事实;没人开过时才自己开,且只说"已请求系统打开",不说"已经打开"。
启动类命令不再带--no-open:页面在就绪那一刻就出现,不必等最长 180 秒的通道恢复。
顺带更正一条被推翻的结论:"后台 App 一律发不出 am start"太绝对(持唤醒锁时实测能成功)。 - 关闭 DSH 不再把你拽到 WebAPK 界面:
dsh-close-window以前"为了按 Back 先把窗口切到前台",
那一下就是跳转本身。现在只在窗口本来就在前台时才按 Back;不在前台就什么都不动并如实说明。
有 adb 时改用静默force-stop,完全不切前台。 - 版本行把「发行版」说成了「仓库」:那一行读的是 GitHub Releases,文案却写"仓库",
于是出现"仓库只有 v1.14"这种与事实相反的话(用户拿截图抓到)。现在两个事实各说各的:
版本:v1.21 · 发行版还是 v1.14 · 仓库源码 v1.21(源码已推上去,只差发版)。 - 更新只升不降:
11_update-apps以前"下载最新发行版就装",真发生过把桥 v2.20 装到 v2.21 的机器上。
现在先比版本再下载:发行版更新才装 / 一样新跳过 / 本机领先拒绝降级 / 版本读不到跳过(--force可强制)。 - 面板「一点开就消失」(
T()读错作用域 →ReferenceError卸掉整棵子树)、
控制台「语言」只有标题没有选项(choices建好却没addView)、
桥的分类标题整串查表导致漏成英文(channels×3 /auto/up to date…)、
绿灯配「桥:未知」的自相矛盾(灯与文字各算一套)、滚到底露出一大块灰、分类 (N) 与实际条目对不上。
已知行为(不是 bug)
- 桥会被 vivo 回收,周期性掉线是常态;冷启动唤醒可能 20~40 秒。
- 没有 adb 时关窗口:如果那个窗口不在前台,我们不会去切它,而是跳过并说明(这正是"不要跳转"的要求)。
想让它静默关掉:把 Wi-Fi 和「无线调试」打开,有 adb 就可以。 - 后台启动 Activity "通常行、但不保证";要稳,仍然走 adb。
- 版本行里的"仓库源码"版本来自
master的ui/controls.json,可能受 CDN 缓存影响滞后几分钟。
三个产物怎么升
- 手机上:控制台 / 桥 App 里点「更新两个 App」,或在控制台版本行点一下(只有发行版更新时才可点)。
- 页面面板:
dsh plugin add ./dsh-mobile-local-v0.10.0.tgz(或把client.js放进 profile 的local/后pnpm install+ 刷新页面)。
v1.11 — 控制台 1.14 + 桥 2.20 + 页面面板 0.6:三处 UI 统一(同一份 ui/controls.json 生成),五分类,桥四态由一次 ping 判定,开关/按钮分清,每条控件都有说明
ui 1/3-3/3: console 1.14 + bridge 2.20 rebuilt on the generated contr…
v1.10 — 控制台 1.13 + 桥 2.19:adb 通道多了「修复 adb 通道」按钮(Wi-Fi 状态 → 无线调试开关 → 端口 → 连接 → 复核,卡在哪一步就说哪一步)
adb_ensure button on all three surfaces (tasksd + page panel + consol…
v1.9 — 桥 2.19(start 不再骗人:能拉起就拉起、拉不起就报错)+ adb 自恢复 droid-ensure
bridge 2.19: start tells the truth (queries + explicit component + on…
v1.8 — 桥 2.16(屏幕保持常亮不再动你的「自动锁屏」+ 装包脚本自己点到授权)
fix(screen): prefer "stay awake while charging", and say where to loo…
v1.7 — 桥 2.15(息屏真正生效)+ 清理修好 + 装包 51 秒
fix: the screen "keep" used an impossible value, the image cleanup ne…
v1.6 — 控制台 1.12 + 桥 2.14(不息屏幂等修复 + 按钮不再全大写)
fix(screen): keep must be idempotent — stacking it poisoned the saved…
v1.5 — 控制台 1.12 + 桥 2.12(项目网址 + 打开即查更新 + 一键更新)
feat: keep the screen awake for bridge work, project URL + update che…
v1.4 — 控制台 1.11 + 桥 2.11(桥的通知栏中文 + 日志持久化)
fix(bridge): the persistent notification was raw English; add i18n-ta…