Repository navigation
Releases
DSH Pal 0.1.1 — 修复新版 DSH 桌面端左右侧边栏
修复内容
左侧边栏只显示遮罩、点不动
新版 DSH 桌面端(2026-11-06)在窄窗口下自己渲染了一套抽屉遮罩 [data-sidebar-mask](z-index:70)。App 注入的手机侧栏层级低于它,整块被盖住:侧栏其实渲染了,但用户只能看到一层灰、点不到。
- 侧栏层级抬到遮罩之上,并在运行期读取遮罩实际
z-index自适应,桌面端以后调整层级也不会再被盖。 - 关闭时同步收起桌面抽屉,避免遮罩残留在页面上。
侧栏展开后,点旁边空白处收回
由 App 在捕获阶段统一处理:点侧栏以外收起,点侧栏内部不收起;并阻止事件继续传播,避免桌面自身的开关再执行一次(会重新打开)。
右侧边栏点开后按钮消失、没有反应
随仓分发的 remote-web-ui 插件有一条
[class$="_frame"][data-sidebar-collapsed] { grid-template-columns: 0 minmax(0,1fr) 0 !important }。
新版桌面端把三列宽度交给它之后,手机窄屏的第三列恒为 0,右栏面板即使 position:absolute;width:100% 也撑不开,表现为「按钮没了、点了没反应」。
- App 在手机断点内用更高特异性保持单帧单列,右栏继续绝对定位全屏。
兼容性复查(随新版桌面端)
对话与流式输出、悬浮助手正文提取、主题与配色、插件/自动化任务/上下文洞察面板、文件上传钩子均复测正常;App 依赖的页面结构在会话、右栏与各面板下都能命中。
已知限制
- 平板熄屏启动的前台服务超时仍在排查。
- 部分插件接口返回 403/401 时,状态区会显示「N 项插件接口受限」,那是桌面端插件状态计数,不影响文字对话与已启用的功能。
- 仅在小米 2407FRK8EC / Android 16 / WebView 151 上实测,其他 ROM 与平板未覆盖。
安装
覆盖安装即可,会保留现有数据与连接配置(不要卸载)。校验 SHA-256 见附件 SHA256SUMS.txt。
DSH Pal 0.1.0
这是什么
DSH Pal 0.1.0 正式版。本版只改日志与诊断能力,不改连接、配对、VPN、路由与重试行为。
日志可观测性改造
导出的
un-log.txt 末尾会自动附一段 === 诊断摘要 ===,不用连电脑、不用敲命令就能看出故障在哪:
- 结果:成功 / 降级 / 失败
- 阶段:卡在哪个导航阶段(DNS / TCP / TLS / 等响应头 / 脚本执行 / 挂载 / 就绪)——最后一条
Stage:就是卡点 - 三跳:手机→中继、中继→电脑、电脑→DSH 各自通不通;没探测到的写「未知」,不猜
- 页面:资源完成数、React 是否挂载(
rootChildren=0即未挂载)、失败脚本数 - 脚本:报错文件的文件名与行号,最多 3 条
- 缓存:命中/未命中、字节数异常项(远小于预期 = 截断的坏缓存)
- 网络:制式、代理、Private DNS、WebView 版本(偏旧会标注)
- 建议:最多 3 条,每条都对应上面的实际证据
正文新增可搜索行头:Stage:、Nav:(卡住时每 2 秒一条)、Probe:(DNS/TCP/TLS/响应头分段耗时)、Diag:(三目标并行探测)、Console:(带文件名与行号)、JSError:、Inject:、Dom:、Res:、MixedContent:。
同时修复:混合内容日志不再把 http 洗成 https(协议敏感证据保真);日志容量提升到内存 600 条 / 文件 192 KiB,关键事件按类别预留不被心跳挤掉;重复心跳合并计数。
验证
- 405 个 Kotlin 单测全过
- 真机验证(红米 2407FRK8EC / Android 15,本 Release 的 APK):覆盖安装成功、数据保留,
build=0.1.0,阶段链 nav-req→html→script-eval→app-mount→ready 共 1755ms,Res fail=0,Dom rootChildren=1 - 正式签名
d3de1002…,非 debuggable,80.75 MB - 覆盖安装保留现有数据(不卸载、不清数据)
仍未验证
平板、其他 ROM、部分第三方插件组合;故障路径(DNS 失败 / TLS 失败 / 白屏)没有真机复现,只有单测与离线构造验证。
校验
SHA-256 见同 Release 的 SHA256SUMS.txt:
38CA8742D73E4B553CBF1CF5CBCB9DA76D75D6AB4DE9F6AE890C38C2A51FE648 DSH-Pal-0.1.0.apk
DSH Pal 0.1.0-alpha.7 — 全局交互重做、悬浮鲸鱼娘与连接可靠性
相比 0.1.0-alpha.2,这一版重心是移动端全局交互与布局重做,顺带补上悬浮角色和连接可靠性。检查更新、公告是收尾项,不是主角。
本版主线
一、全局交互与布局重做(alpha.3 / alpha.4)
- 修复移动样式解析失败:
mobile-layout.css里有四行损坏的选择器/字符串——真机上整份移动样式根本没解析出规则。此前看到的显示效果不能当作移动样式已生效。 - 手机左栏改为位移+遮罩动画:退出整页 View Transition 快照流程。空闲时预准备好侧栏,之后本地开合保留工作区、会话列表和滚动内容。
data-dsh-left-closed只表示本机隐藏,不改桌面布局配置,原页面仍拥有功能和数据。 - 手机右栏独立动画(
phone-right-motion.js):收起后保留插件面板和文件预览,提供本地重开入口;隐藏后释放聊天触摸,重开恢复面板内容。 - 焦点与返回键处理:本地隐藏的侧栏通过
inert隔离焦点/触摸;窗口切宽屏自动恢复原界面;返回处理识别本地展示状态,避免隐藏侧栏吞掉返回操作。 - 性能:避免聊天内容变化反复扫描侧栏;标签切换只更新指示器;日志改 LazyColumn(保留 120 条上限,采集策略不变);加入从真实设备提取的 UI Baseline Profile(预编译清单,不是网页绘制加速器)。
- 按压反馈:按钮/标签/菜单项/会话树节点用局部按压反馈,正文与输入区域保留选择复制能力,不全局拦截长按。
- 插件兼容回退:侧栏增强能力缺失时安全回退,不展示固定空白面板。
二、悬浮鲸鱼娘(alpha.5)
- 设置 → 悬浮助手(默认关闭),需授予「显示在其他应用上层」权限。
- 支持贴壁形态、安全快捷输入。
- 部分 ROM 还需允许「后台弹出界面」,否则角色能显示但无法返回 App。此权限由系统管理,应用不自动授予。
三、连接可靠性(alpha.6)
修的是真实设备上抓到的故障,不是猜测:
- 启动页掩盖真实故障:主文档 HTTP 503 先于
onPageStarted到达,后者清空了错误信息 → 现在保留真实错误。 - 反复重连:原生侧反复 nudges 会破坏页面持有的 pending/live socket → 已修。
- 弱网误判:弱网启动时误判为失败 → 已修正,并保留进行中的资源下载。
- 后端短暂不可用:安全恢复已配对的工区,不用重新配对。
- 浏览器模式加载页:恢复资源数量、完成体积、失败数和等待时间统计。
四、国内 IPv4 备用通道
- 新增 国内 IPv4 通道与复刻工具:Sakura Frp 免费国内 IPv4 TCP 节点 + 官方自动 HTTPS + 本地动态端口网关。
- 实测:Android 16 手机、联通移动数据下,进入真实工作区、读取既有会话与文件差异、验证重开与前后台返回。
- 边界:这是绕开原 Relay 的独立备用入口,不代表第三方 Relay 存储故障已修复;其他运营商、Android 17、长期可用性未验。免费限额和节点可能变化。
- 每位用户用自己的账号和配对,工具只提供复刻步骤,不含任何凭据。
五、收尾项
- 设置 → 更新与公告(alpha.7):版本检查、显式下载、系统安装确认。不会自动下载 APK。
- 公告列表、已读记录与提醒。
updates/announcements.json当前为空,在线公告需发布者后续同步。 - 关于页补充开发者 B站个人主页。
- 首页扫码自动识别连接方式。
使用前提
- 电脑端必须先运行 DSH 和远程访问插件,手机不在本地运行模型。
- VPN 在线 ≠ 已完成配对。发现入口可用 ≠ 业务全部打通。
- 悬浮助手默认关闭;媒体岛依机型/ROM。
- 更新检查与在线公告需要发布者同步
updates/announcements.json和 Release 附件,当前仅本地功能可用。
本次实际验证
已通过:
| 项目 | 结果 |
|---|---|
| 构建 | :app:assembleRelease BUILD SUCCESSFUL(JDK21 / SDK36 / Gradle 8.14.4 / AGP 8.13.2 / Kotlin 2.3.20) |
| Kotlin 单测 | 全部通过(含新增 AppRelease / FloatingTaskInfo / OverlayDocking / PairingQr / QuickReplyTarget / UpdateDownload 等) |
| JS 布局回归 | 四组 PASS + 新增 test-browser-health、test-connection-recovery、test-page-ready 全 PASS |
| APK 签名 | apksigner verify 通过(v2),证书与 alpha.1/alpha.2 相同,可覆盖升级 |
| 非 debuggable | ✅ 无 application-debuggable |
| 包名/版本 | com.dsh.mobile / versionCode 8 / versionName 0.1.0-alpha.7 |
| 应用名 | DSH Pal |
| ABI | arm64-v8a、armeabi-v7a |
| 左右栏真机触摸 | Android 16 手机实测开合、会话/插件导航、文件预览滚动、按钮长按 |
| 左栏展开耗时 | 约 63–110ms(网页侧采样,含采样开销;非固定倍数宣传) |
| 文件预览滚动 | 0 → 约 263 CSS 像素,内容高约 7303 / 视口约 616 CSS 像素 |
| 国内 IPv4 通道 | Android 16 + 联通移动数据:进入工作区、读既有会话与文件差异、重开与前后台返回 |
尚未验证(如实说明):
- 平板未测。平板前台服务超时问题不在本版修复范围。
- 其他 ROM、所有第三方插件、极重会话未逐一验收。
- 公网业务连通性未完整端到端验收。
- WireGuard 仍无真实服务端验收。
- 更新检查/公告的在线链路未验证(公告文件为空,Release 侧未配置)。
- 悬浮助手仅在 Android 16 手机验证,其他 ROM 的后台弹出界面行为未知。
- 左栏耗时数据来自网页侧采样,未做同负载完整 A/B 帧率实验,不宣称恒定高帧率。
已知问题
- 平板熄屏启动约 30 秒后前台服务超时退出(
ForegroundServiceDidNotStartInTimeException/ DshLiveService)。未修复,不在本版范围。 - 第三方 Relay 存储故障导致的 503 仍存在;本版提供的是绕开它的国内 IPv4 备用入口,不是修复。
- WireGuard 无真实服务端验收。
- 悬浮助手依 ROM 的后台弹出界面权限策略,部分机型可能只显示角色但无法返回 App。
- 更新与公告的在线分发链路尚未配置完成,当前仅本地功能可用。
- 媒体岛依机型系统,非全部设备可用。
安装与升级
- 最低系统:Android 8.0(API 26),目标 API 36。
- 架构:arm64-v8a / armeabi-v7a,不支持 x86。
- 从 alpha.1 / alpha.2 升级:直接覆盖安装,同签名,不清数据、保留配对。
- 从更早的 debug 签名测试包升级:签名不同需先卸载一次(会清数据)。
校验与反馈
文件:DSH-Pal-0.1.0-alpha.7.apk
大小:84,375,925 字节(80.47 MB)
SHA-256:74C49890E985BB5911E2D0824063CEE1D2B1F4A08A6F9CA63F80782A59452C43
签名证书 SHA-256:D3:DE:10:02:EB:B4:CE:39:25:93:A8:55:70:71:BD:0D:62:5A:77:CD:91:6E:5C:FF:5E:3F:B8:AA:79:B6:0A:1E
Get-FileHash .\DSH-Pal-0.1.0-alpha.7.apk -Algorithm SHA256反馈请附:App 版本 / Android 版本 / ROM / WebView 版本 / 连接方式 / 插件组合 / 复现步骤 / 脱敏日志。
不要上传:配对链接、Cookie、Tailscale 授权链接、WireGuard 私钥、私人会话。
许可
- 应用代码:Apache-2.0。
- 鲸鱼娘角色与其他素材:按各自许可分发,保留署名,角色素材遵循 CC BY-NC-SA 4.0,不包含任意商业使用授权。
- MiSans、DSHgo(MIT)、Tailscale / Go(BSD)、WireGuard 等详见仓库内
THIRD_PARTY_LICENSES.md。
开发预览,不是稳定版。问题请提到 Issues。
DSH Pal 0.1.0-alpha.2 — 回填 B站演示视频链接
这是 DSH Pal 的第二个公开开发预览,相比 0.1.0-alpha.1 只做了一处功能补充,兼容性状态不变。
本版变更
- 关于页补充哔哩哔哩演示视频链接:此前显示「待配置」,现为可点击跳转 → https://b23.tv/8o1bX3M
(视频标题:「电脑还在跑,我先溜了!给 DSH 做个手机搭子|DSH Pal 开源」) - README 同步补充 B站入口
versionCode2 → 3,versionName0.1.0-alpha.2
未包含其他功能或修复改动。 两个历史问题(平板熄屏启动、公网加载验收)本版均未处理。
主要功能
- DSH 手机/平板工作台:在 Android 上打开电脑端 DSH 的网页工作台,补了移动布局适配。
- 任务通知:折叠显示步骤,展开显示简短说明与最近步骤。
- 媒体岛:仅兼容机型/ROM 支持,默认关闭。
- 多入口连接管理:Relay、Cloudflare Tunnel、其他 HTTPS/frp、Tailscale、WireGuard、Wi-Fi 直连、USB 数据线分开管理。
- 静态资源缓存、移动布局、诊断导出:含分类开关和脱敏日志导出。
使用前提
- 电脑端必须先运行 DSH 和远程访问插件。手机不在本地运行模型。
- VPN 在线不等于已完成 DSH 配对。发现入口可用,也不等于业务全部打通。
- 不同连接通道需要各自的基础设施(Relay 需要插件、Cloudflare 需要隧道、Tailscale 需要同网、WireGuard 需要自定义服务端)。
- 媒体岛默认关闭,且依赖机型和 ROM。
本次实际验证
已通过:
| 项目 | 结果 |
|---|---|
| 构建 | :app:assembleRelease BUILD SUCCESSFUL(JDK21 / SDK36 / Gradle 8.14.4 / AGP 8.13.2 / Kotlin 2.3.20) |
| Kotlin 单测 | 175 个全部通过(:app:testDebugUnitTest) |
| JS 布局回归 | 四组全部 PASS:test-web-layout-syntax、test-web-right-layout、test-web-drawer、test-web-viewport |
| Kotlin 编译 | 改动后单独跑 :app:compileReleaseKotlin 通过 |
| APK 签名 | apksigner verify 通过(v2 scheme),证书与 alpha.1 相同,可覆盖升级 |
| 非 debuggable | ✅ 产物无 application-debuggable 标记 |
| 包名/版本 | com.dsh.mobile / versionCode 3 / versionName 0.1.0-alpha.2 |
| 应用名 | DSH Pal |
| 支持 ABI | arm64-v8a、armeabi-v7a |
| B站链接 | 短链解析有效(HTTP 200 → BV1nUxP6jEa5),视频标题已核对 |
| 左右栏交互 | 已验收通过(维护者在 0.1.0-alpha.1 真机实测;本版未改动相关代码) |
| 冷启动 / 权限流程 | alpha.1 真机实测通过(冷启动 247ms 无崩溃);本版未改动相关代码 |
尚未验证(如实说明):
- 远程连接的端到端流程未完成验收。维护者测试环境访问公网入口时域名不可达(已排查为网络环境问题,不是 App 缺陷),因此没能走完「配对 → 加载工作台 → 实时通道」全链路。这属于测试条件不足,不代表 App 连接功能有问题,也不代表已通过。
- 通知开关、文件上传等交互路径未逐一回归。
- WireGuard 完全没有真实服务端验收。
- 平板单独场景未测。
- 本版(alpha.2)未在真机重新安装验证;手机当前装的是 alpha.1,两者除关于页一处文字链接外无代码差异。
已知问题
- 平板熄屏状态下启动,约 30 秒后前台服务超时退出(
ForegroundServiceDidNotStartInTimeException/ DshLiveService)。根因尚未隔离,未修复。 - 公网入口加载的验收受测试网络限制:维护者测试时所用网络访问公网入口域名不可达(已排查为网络环境问题,非 App 缺陷)。因此公网通道的完整加载流程尚未完成端到端验证,请以你自己的网络环境实测为准;遇到问题请附诊断日志。
- WireGuard 没有真实服务端验收,不能按「已可用」看待。
app/src/main/assets/mobile-layout.css中有 12 处中文乱码(aria-label属性选择器),会导致这部分移动布局规则永远匹配不到真实元素。已知缺陷,未在本版修复。- 部分插件组合、平板通知详情、短横屏大键盘重负载动画仍待完善。
- 媒体岛依机型系统,非全部设备可用。
安装与升级
- 最低系统:Android 8.0(API 26),目标 API 36。
- 架构:arm64-v8a / armeabi-v7a。不支持 x86,模拟器不适用。
- 从
0.1.0-alpha.1升级:直接覆盖安装即可,签名相同,无需卸载,不会清数据。 - 从更早的 debug 签名测试包升级:签名不同,无法直接覆盖,需要先卸载(会清掉 App 内连接配置与配对信息,请先记下需要的信息)。此后所有版本签名固定,可正常覆盖更新。
校验与反馈
文件:DSH-Pal-0.1.0-alpha.2.apk
大小:82,225,503 字节(78.42 MB)
SHA-256:1F6F754DE18E94262E8B64048DFE140452488AA0426EEACB89D93524F53F36B4
签名证书 SHA-256:D3:DE:10:02:EB:B4:CE:39:25:93:A8:55:70:71:BD:0D:62:5A:77:CD:91:6E:5C:FF:5E:3F:B8:AA:79:B6:0A:1E
校验方法:
Get-FileHash .\DSH-Pal-0.1.0-alpha.2.apk -Algorithm SHA256提交 Issue 时请附:App 版本 / Android 版本 / ROM / WebView 版本 / 连接方式 / 插件组合 / 复现步骤 / 期望与实际 / 脱敏日志。
不要上传:配对链接、Cookie、Tailscale 授权链接、WireGuard 私钥、私人会话内容。
许可
- 应用代码:Apache-2.0。
- 鲸鱼娘角色与其他素材:按各自许可分发,保留署名,角色素材遵循 CC BY-NC-SA 4.0,不包含任意商业使用授权。
- MiSans、DSHgo(MIT)、Tailscale / Go(BSD)、WireGuard 等详见仓库内
THIRD_PARTY_LICENSES.md。
不能理解为整个 APK 内所有素材都可任意商用——代码许可不覆盖角色与美术素材。
这是开发预览,不是稳定版。功能与兼容性都会继续迭代,问题请提到 Issues。
DSH Pal 0.1.0-alpha.1 — 首次公开开发预览
这是 DSH Pal 的首次公开开发预览,适合愿意反馈问题的用户;兼容性仍在完善,请先读下面的已知问题再决定是否安装。
主要功能
- DSH 手机/平板工作台:在 Android 上打开电脑端 DSH 的网页工作台,补了移动布局适配。
- 任务通知:折叠显示步骤,展开显示简短说明与最近步骤。
- 媒体岛:仅兼容机型/ROM 支持,默认关闭。
- 多入口连接管理:Relay、Cloudflare Tunnel、其他 HTTPS/frp、Tailscale、WireGuard、Wi-Fi 直连、USB 数据线分开管理。
- 静态资源缓存、移动布局、诊断导出:含分类开关和脱敏日志导出。
使用前提
- 电脑端必须先运行 DSH 和远程访问插件。手机不在本地运行模型。
- VPN 在线不等于已完成 DSH 配对。发现入口可用,也不等于业务全部打通。
- 不同连接通道需要各自的基础设施(Relay 需要插件、Cloudflare 需要隧道、Tailscale 需要同网、WireGuard 需要自定义服务端)。
- 媒体岛默认关闭,且依赖机型和 ROM。
本次实际验证
已通过(本机执行):
| 项目 | 结果 |
|---|---|
| 构建 | :app:assembleRelease BUILD SUCCESSFUL(JDK21 / SDK36 / Gradle 8.14.4 / AGP 8.13.2 / Kotlin 2.3.20) |
| Kotlin 单测 | 175 个全部通过(:app:testDebugUnitTest) |
| JS 布局回归 | 四组全部 PASS:test-web-layout-syntax、test-web-right-layout、test-web-drawer、test-web-viewport |
| APK 签名 | apksigner verify 通过(APK Signature Scheme v2) |
| 非 debuggable | ✅ 产物无 application-debuggable 标记 |
| 包名/版本 | com.dsh.mobile / versionCode 2 / versionName 0.1.0-alpha.1 |
| 应用名 | DSH Pal |
| 支持 ABI | arm64-v8a、armeabi-v7a |
| 冷启动 | 小米 2407FRK8EC(Android 16 / HyperOS V816 / arm64-v8a / WebView 151.0.7922.170)实测冷启动 247ms,无崩溃 |
| 权限流程 | 通知权限弹窗正常,授权后进入连接方式选择页 |
| 左右栏交互 | 已验收通过:在 0.1.0-alpha.1 上实测左右栏展开/收起、嵌套滚动正常 |
尚未验证(如实说明):
- 远程连接的端到端流程未完成验收。本机测试环境访问公网入口时域名不可达(已排查为网络环境问题,不是 App 缺陷),因此没能走完「配对 → 加载工作台 → 实时通道」全链路。这属于测试条件不足,不代表示 App 连接功能有问题,也不代表已通过。
- 通知开关、文件上传等交互路径未在本次构建上逐一回归。
- WireGuard 完全没有真实服务端验收。
- 平板单独场景未测(本次只有手机)。
已知问题
- 平板熄屏状态下启动,约 30 秒后前台服务超时退出(
ForegroundServiceDidNotStartInTimeException/ DshLiveService)。根因尚未隔离,未修复。 - 公网入口加载的验收受测试网络限制:维护者测试时所用网络访问公网入口域名不可达(已排查为网络环境问题,非 App 缺陷)。因此公网通道的完整加载流程尚未完成端到端验证,请以你自己的网络环境实测为准;遇到问题请附诊断日志。
- WireGuard 没有真实服务端验收,不能按「已可用」看待。
app/src/main/assets/mobile-layout.css中有 12 处中文乱码(aria-label属性选择器),会导致这部分移动布局规则永远匹配不到真实元素。已知缺陷,未在本版修复。- 部分插件组合、平板通知详情、短横屏大键盘重负载动画仍待完善。
- 媒体岛依机型系统,非全部设备可用。
安装与升级
- 最低系统:Android 8.0(API 26),目标 API 36。
- 架构:arm64-v8a / armeabi-v7a。不支持 x86,模拟器不适用。
- 直接安装 APK 即可,或
adb install DSH-Pal-0.1.0-alpha.1.apk。
校验与反馈
文件:DSH-Pal-0.1.0-alpha.1.apk
大小:82,225,503 字节(78.42 MB)
SHA-256:332217ED758241D5EF20A712D0D91B631DC53691D178C8609407D109B036282B
签名证书 SHA-256:D3:DE:10:02:EB:B4:CE:39:25:93:A8:55:70:71:BD:0D:62:5A:77:CD:91:6E:5C:FF:5E:3F:B8:AA:79:B6:0A:1E
校验方法:
Get-FileHash .\DSH-Pal-0.1.0-alpha.1.apk -Algorithm SHA256提交 Issue 时请附:App 版本 / Android 版本 / ROM / WebView 版本 / 连接方式 / 插件组合 / 复现步骤 / 期望与实际 / 脱敏日志。
不要上传:配对链接、Cookie、Tailscale 授权链接、WireGuard 私钥、私人会话内容。
许可
- 应用代码:Apache-2.0。
- 鲸鱼娘角色与其他素材:按各自许可分发,保留署名,角色素材遵循 CC BY-NC-SA 4.0,不包含任意商业使用授权。
- MiSans、DSHgo(MIT)、Tailscale / Go(BSD)、WireGuard 等详见仓库内
THIRD_PARTY_LICENSES.md。
不能理解为整个 APK 内所有素材都可任意商用——代码许可不覆盖角色与美术素材。
这是开发预览,不是稳定版。功能与兼容性都会继续迭代,问题请提到 Issues。