@feiyang666/dsh-mobile-remote 1.4.1 → 1.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/README.md +3 -2
- package/README.zh.md +3 -2
- package/RELEASE_NOTES.md +12 -26
- package/lib/client.js +978 -976
- package/lib/external.js +729 -729
- package/lib/index.js +110 -0
- package/lib/password.js +218 -218
- package/lib/qrcode.js +2300 -2300
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# 更新日志 / Changelog
|
|
2
2
|
|
|
3
|
+
## v1.4.2 (2026-08-21)
|
|
4
|
+
|
|
5
|
+
### 修复 / Fixed
|
|
6
|
+
- **移动端 Tooltip 常驻屏幕**(`lib/index.js` MOBILE_CSS):DSH 原生 Tooltip 气泡由 hover/focus 触发,触屏设备点击按钮后焦点停留、气泡一直显示在屏幕上(如「停止」「开始」「关闭菜单栏」等按钮的提示文字)。移动端直接隐藏 `[role="tooltip"]` 气泡,按钮仍保留 aria-label 无障碍名。
|
|
7
|
+
- **设置页未适配移动端**(`lib/index.js` MOBILE_CSS + MOBILE_JS):原生设置弹窗为 800px 双栏(188px 导航栏 + 内容列),手机上几乎无法使用。改为全屏单栏:
|
|
8
|
+
- 导航栏 → 顶部横向滚动胶囊标签(加大触控目标);
|
|
9
|
+
- 内容列独占剩余空间、边距收紧,各设置 section 获得完整宽度;
|
|
10
|
+
- 用 MutationObserver 识别设置弹窗(`role=dialog` 且直子元素为 `<nav>`)打上 `data-dsh-settings` 标记,**不依赖 harness 内部哈希类名**,harness 升级后仍可直接适配。
|
|
11
|
+
- **远程控制面板窄屏细节**(`lib/client.js`):设备详情 / 外网状态行的长文本允许换行(`overflowWrap`),行内放不下时允许换行(`flexWrap`),避免手机端溢出卡片。
|
|
12
|
+
|
|
3
13
|
## v1.4.1 (2026-08-20)
|
|
4
14
|
|
|
5
15
|
### 新增 / Added
|
package/README.md
CHANGED
|
@@ -149,7 +149,8 @@ So for users, **installing is one command** — no YAML editing, no manual file
|
|
|
149
149
|
- **Toggle**: `POST /__dsh_remote/toggle` → writes/removes a `webserver` override block in the profile's `cordis.patch.yml` → dsh's `watchUserPatches` (Cordis HMR) hot-reloads the webserver entry to re-listen.
|
|
150
150
|
- **Device count**: mobile-injected JS heartbeats every 30s; the host keeps an active-device map (90s TTL). Each heartbeat now reports full device metadata (screen / viewport / DPR / network / current page / language / platform), shown in the expandable device rows of the settings panel.
|
|
151
151
|
- **QR code**: `GET /__dsh_remote/qr?url=...` returns SVG.
|
|
152
|
-
- **Mobile polish**: `tapIndex` injects mobile CSS/JS — composer toolbar wraps on narrow screens, selects get width-capped, iOS inputs get 16px to prevent focus zoom; **DSH's native rail + hamburger drawer interactions are untouched
|
|
152
|
+
- **Mobile polish**: `tapIndex` injects mobile CSS/JS — composer toolbar wraps on narrow screens, selects get width-capped, iOS inputs get 16px to prevent focus zoom; **DSH's native rail + hamburger drawer interactions are untouched**;
|
|
153
|
+
- **Mobile settings page** (v1.4.2+): the native settings dialog becomes a full-screen single column on phones — the nav rail turns into a horizontally scrollable tab bar and the content column fills the remaining space; persistent native tooltip bubbles (e.g. the "stop / start / close sidebar" hints that stick on touch) are suppressed. The dialog is detected structurally, **not via harness-internal hashed class names**, so the plugin keeps working after DeepSeek Harness updates without modification.
|
|
153
154
|
|
|
154
155
|
---
|
|
155
156
|
|
|
@@ -174,7 +175,7 @@ This command does three things automatically:
|
|
|
174
175
|
|
|
175
176
|
The same works for other profiles — replace `web` with your profile name.
|
|
176
177
|
|
|
177
|
-
> Local tarball testing: `dsh plugin --profile web add C:\path\to\feiyang666-dsh-mobile-remote-1.4.
|
|
178
|
+
> Local tarball testing: `dsh plugin --profile web add C:\path\to\feiyang666-dsh-mobile-remote-1.4.2.tgz`
|
|
178
179
|
|
|
179
180
|
### 2. Restart and verify
|
|
180
181
|
|
package/README.zh.md
CHANGED
|
@@ -149,7 +149,8 @@ dsh --profile web --patch remote-control.patch.yml
|
|
|
149
149
|
- **开关**:`POST /__dsh_remote/toggle` → 写入 / 移除 profile `cordis.patch.yml` 的 `webserver` 覆盖块 → dsh `watchUserPatches`(Cordis HMR)热重载 webserver 行重新监听。
|
|
150
150
|
- **设备数**:移动端注入 JS 每 30s 心跳上报,host 维护活跃设备表(90s 过期)。每次心跳会上报完整设备元数据(屏幕 / 视口 / DPR / 网络 / 当前页面 / 语言 / 平台),设置面板的设备行可展开查看。
|
|
151
151
|
- **二维码**:`GET /__dsh_remote/qr?url=...` 返回 SVG。
|
|
152
|
-
- **移动端适配**:`tapIndex` 注入移动端 CSS/JS,composer 输入栏窄屏换行、选择器限宽、iOS 输入框 16px 防缩放;**不破坏 DSH 原生 rail +
|
|
152
|
+
- **移动端适配**:`tapIndex` 注入移动端 CSS/JS,composer 输入栏窄屏换行、选择器限宽、iOS 输入框 16px 防缩放;**不破坏 DSH 原生 rail + 汉堡抽屉交互**;
|
|
153
|
+
- **移动端设置页适配**(v1.4.2+):原生设置弹窗在手机上自动变为全屏单栏——导航栏变顶部横向滚动标签、内容区占满剩余空间;同时抑制触屏上常驻的原生 Tooltip 气泡(如「停止 / 开始 / 关闭菜单栏」提示文字)。通过结构标记识别设置弹窗,**不依赖 harness 内部哈希类名**,harness 升级后无需修改插件即可直接适配。
|
|
153
154
|
|
|
154
155
|
---
|
|
155
156
|
|
|
@@ -174,7 +175,7 @@ dsh plugin --profile web add @feiyang666/dsh-mobile-remote
|
|
|
174
175
|
|
|
175
176
|
其它 profile 同理,把 `web` 换成你的 profile 名即可(如 `dsh plugin --profile headless add ...`)。
|
|
176
177
|
|
|
177
|
-
> 想用本地 tarball 测试:`dsh plugin --profile web add C:\path\to\feiyang666-dsh-mobile-remote-1.4.
|
|
178
|
+
> 想用本地 tarball 测试:`dsh plugin --profile web add C:\path\to\feiyang666-dsh-mobile-remote-1.4.2.tgz`
|
|
178
179
|
|
|
179
180
|
### 2. 重启并验证
|
|
180
181
|
|
package/RELEASE_NOTES.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# dsh-mobile-remote v1.4.
|
|
1
|
+
# dsh-mobile-remote v1.4.2
|
|
2
2
|
|
|
3
|
-
**DeepSeek Harness 移动端远程控制插件** —— 在 Web UI 设置页内置「远程控制」:连接二维码、一键开关、在线设备数,让手机通过局域网访问并操控电脑上的 DeepSeek Harness
|
|
3
|
+
**DeepSeek Harness 移动端远程控制插件** —— 在 Web UI 设置页内置「远程控制」:连接二维码、一键开关、在线设备数,让手机通过局域网访问并操控电脑上的 DeepSeek Harness。本版聚焦**移动端体验补全**:修复提示文字常驻屏幕,让设置页在手机上真正可用。
|
|
4
4
|
|
|
5
5
|
## 安装方式
|
|
6
6
|
|
|
@@ -10,37 +10,23 @@ dsh plugin --profile web add @feiyang666/dsh-mobile-remote
|
|
|
10
10
|
|
|
11
11
|
安装完成后**重启 dsh web 服务**,打开 `http://127.0.0.1:3080` → **设置 → 远程控制** 即可使用。
|
|
12
12
|
|
|
13
|
-
## 本版更新(v1.4.
|
|
13
|
+
## 本版更新(v1.4.2)
|
|
14
14
|
|
|
15
|
-
###
|
|
15
|
+
### 📱 修复「提示文字常驻屏幕」
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
DSH 原生的按钮提示气泡(Tooltip)由 hover / focus 触发,在触屏设备上点击按钮后焦点会一直停留在按钮上,导致「停止」「开始」「关闭菜单栏」等按钮的提示文字一直显示在屏幕上。本版在移动端直接隐藏提示气泡(按钮仍保留无障碍 `aria-label`),界面干净清爽。
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
- **轮询复查**:`/status` 每 5s 复查日志——断线降级「连接中」(自动重连中)、token 不匹配降级「出错」,重连成功后自动恢复;
|
|
21
|
-
- **明确报错**:前端红色「出错」徽标 + 错误卡直接展示 frpc 真实原因(如 `token in login doesn't match token from configuration`),并附解决指引;
|
|
22
|
-
- **一键重试**:出错状态点开关即可 kill 旧进程重新绑定。
|
|
19
|
+
### 📲 设置页完整适配移动端
|
|
23
20
|
|
|
24
|
-
|
|
21
|
+
原生设置弹窗是 800px 双栏布局(188px 导航栏 + 内容列),手机上几乎无法使用。本版改为**全屏单栏**:
|
|
25
22
|
|
|
26
|
-
-
|
|
27
|
-
-
|
|
23
|
+
- 导航栏变成顶部**横向滚动胶囊标签**,触控目标 ≥ 36px;
|
|
24
|
+
- 内容列独占剩余空间、边距收紧,各设置区块(含「远程控制」面板)获得完整宽度;
|
|
25
|
+
- 通过 `MutationObserver` 识别设置弹窗结构(`role=dialog` 且首个子元素为 `<nav>`)打标适配,**不依赖 harness 内部哈希类名** —— DeepSeek Harness 后续升级后,本插件无需修改即可直接适配。
|
|
28
26
|
|
|
29
|
-
###
|
|
27
|
+
### 📐 远程控制面板窄屏细节
|
|
30
28
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
### 🗂 DSH 状态卡默认折叠
|
|
34
|
-
|
|
35
|
-
- 折叠态只显示摘要行(会话 / 工作区 / 插件 / 模型数),点击标题展开详情,节省面板空间。
|
|
36
|
-
|
|
37
|
-
### 🐛 修复
|
|
38
|
-
|
|
39
|
-
- 修复设置页空白崩溃(`status` 首次渲染为 `null` 时的守卫缺失)。
|
|
40
|
-
|
|
41
|
-
## 后端配套(dsh-update-server)
|
|
42
|
-
|
|
43
|
-
外网隧道详情、真实在线判定依赖中转端新接口(`/api/tunnel/stats`、`/heartbeat` 离线支持、成员端在线判定)。**旧后端不影响插件使用**:插件自动回退到 `/status` 接口。若要展示流量 / 连接数等丰富信息,请同步升级中转端(见 `dsh-update-server` 的 `DEPLOY_CHECKLIST.md`)。
|
|
29
|
+
设备详情 / 外网状态行的长文本在手机上允许换行,行内放不下时自动换行,不再溢出卡片。
|
|
44
30
|
|
|
45
31
|
## 已知事项
|
|
46
32
|
|