@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 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.1.tgz`
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.1.tgz`
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
1
+ # dsh-mobile-remote v1.4.2
2
2
 
3
- **DeepSeek Harness 移动端远程控制插件** —— 在 Web UI 设置页内置「远程控制」:连接二维码、一键开关、在线设备数,让手机通过局域网访问并操控电脑上的 DeepSeek Harness。本版聚焦**外网隧道真实状态诊断**:不再"假在线",token 鉴权失败 / 断线重连一目了然。
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.1)
13
+ ## 本版更新(v1.4.2)
14
14
 
15
- ### 🚦 外网隧道真实状态判定(核心)
15
+ ### 📱 修复「提示文字常驻屏幕」
16
16
 
17
- 之前插件把「frpc 进程存活」误判为「隧道在线」——frpc 即使登录被拒、隧道从未建立,面板也显示绿色「在线」(打开链接却是 502)。本版彻底修复:
17
+ DSH 原生的按钮提示气泡(Tooltip)由 hover / focus 触发,在触屏设备上点击按钮后焦点会一直停留在按钮上,导致「停止」「开始」「关闭菜单栏」等按钮的提示文字一直显示在屏幕上。本版在移动端直接隐藏提示气泡(按钮仍保留无障碍 `aria-label`),界面干净清爽。
18
18
 
19
- - **启动探测**:开启外网时读 frpc 日志,确认 `start proxy success` 隧道真正建立才算 `online`;
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
- - 隧道在线期间每 60s 向中转端上报心跳,`last_seen` 保持新鲜;
27
- - 停止隧道时主动上报 `offline`,配合后端在线判定让管理端 / 面板实时反映真实状态。
23
+ - 导航栏变成顶部**横向滚动胶囊标签**,触控目标 ≥ 36px;
24
+ - 内容列独占剩余空间、边距收紧,各设置区块(含「远程控制」面板)获得完整宽度;
25
+ - 通过 `MutationObserver` 识别设置弹窗结构(`role=dialog` 且首个子元素为 `<nav>`)打标适配,**不依赖 harness 内部哈希类名** —— DeepSeek Harness 后续升级后,本插件无需修改即可直接适配。
28
26
 
29
- ### ⚠️ FRP_TOKEN 占位符检测
27
+ ### 📐 远程控制面板窄屏细节
30
28
 
31
- - 中转端新增 `frpTokenWarning` 字段;插件面板检测到服务器 `.env` 的 `FRP_TOKEN` 仍是占位符时,显示黄色警告条并说明会导致隧道 502。
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