dsh-remote-web 0.7.6-beta.7 → 0.7.6-beta.8
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/lib/client.js +7 -1
- package/package.json +1 -1
- package/runtime/dsh-setup.mjs +15 -10
package/lib/client.js
CHANGED
|
@@ -1133,7 +1133,13 @@ window.__ModuleLoader__.load({
|
|
|
1133
1133
|
try { e.preventDefault(); } catch (err) { /* 忽略 */ }
|
|
1134
1134
|
setClicked(true);
|
|
1135
1135
|
dotMarkSeen(); // 用过入口 = 已了解位置 → 收起首次红点
|
|
1136
|
-
|
|
1136
|
+
// 2026-10-25(用户实测「点不动、只能从更多→设置里打开」):
|
|
1137
|
+
// 不再依赖 remoteNavOpen 的赋值时序/是否被调用过,直接走内部打开链;
|
|
1138
|
+
// 打开链内部自带兜底:侧栏候选 → 官方快捷键 → 更多/账号菜单 → 栏目点击。
|
|
1139
|
+
try {
|
|
1140
|
+
if (typeof remoteNavOpen === "function") remoteNavOpen();
|
|
1141
|
+
else openRemoteSettings();
|
|
1142
|
+
} catch (errOpen) { /* 绝不因打开失败抛到宿主 */ }
|
|
1137
1143
|
}
|
|
1138
1144
|
}, [
|
|
1139
1145
|
h("span", { className: "ico", key: "ico" }, "📱"),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-remote-web",
|
|
3
|
-
"version": "0.7.6-beta.
|
|
3
|
+
"version": "0.7.6-beta.8",
|
|
4
4
|
"description": "公网远程控制 DeepSeek Harness(dsh web):安装即得专属加密地址,人在外面也能用手机访问电脑上的 dsh——无需同一局域网/WiFi、无需公网 IP 与内网穿透,全程加密;手机端 100% 还原电脑体验(对话/工具/审批/设置)。技术用户可选自建服务,流量走自己的服务器。Remote control DeepSeek Harness (dsh web) from anywhere over the public internet — install, get an encrypted URL, use it from your phone on any network (dual-half cordis plugin: Settings panel + same-origin /dsh-remote routes). (2026-09 由 dsh-remote-ui 更名 / renamed from dsh-remote-ui; dsh-remote 的 dsh web 插件半,不是纯 UI/皮肤插件)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
package/runtime/dsh-setup.mjs
CHANGED
|
@@ -1679,20 +1679,22 @@ function releaseSpawnLock() {
|
|
|
1679
1679
|
}
|
|
1680
1680
|
|
|
1681
1681
|
// ---------- run:前台跑 bridge(带配置 + 自启动 watcher) ----------
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
// (DSH_BRIDGE_UPSTREAM)。dsh 换端口后它会让守护/桥永远连旧端口 → 设备掉线。
|
|
1685
|
-
// 插件每次装载都会把当前端口写进 .dsh-upstream,这里以文件为准校正进程环境(仅当文件合法且不同)。
|
|
1682
|
+
/** 以插件写入的 .dsh-upstream 为准校正进程内的旧上游环境变量(dsh 换端口后不再连旧端口)。 */
|
|
1683
|
+
function reconcileUpstreamEnvFromFile() {
|
|
1686
1684
|
try {
|
|
1687
1685
|
const fileUp = String(fs.readFileSync(path.join(CONFIG_DIR, UPSTREAM_FILE), "utf8")).trim().replace(/\/+$/, "");
|
|
1688
1686
|
const envUp = String(process.env.DSH_BRIDGE_UPSTREAM || "").trim().replace(/\/+$/, "");
|
|
1689
|
-
// 只在「继承到了旧的显式 env」时校正;env 为空时保持原有发现逻辑(文件可能过期,须走探测)。
|
|
1690
1687
|
if (envUp && /^https?:\/\/[^\s]+$/i.test(fileUp) && fileUp !== envUp) {
|
|
1691
|
-
console.log(`[dsh-remote] 忽略旧的上游地址 ${envUp
|
|
1688
|
+
console.log(`[dsh-remote] 忽略旧的上游地址 ${envUp} → 使用插件写入的最新地址 ${fileUp}(防端口漂移掉线)`);
|
|
1692
1689
|
process.env.DSH_BRIDGE_UPSTREAM = fileUp;
|
|
1693
1690
|
discoveredUpstream = fileUp;
|
|
1694
1691
|
}
|
|
1695
|
-
} catch { /*
|
|
1692
|
+
} catch { /* 无文件:保持原行为 */ }
|
|
1693
|
+
}
|
|
1694
|
+
|
|
1695
|
+
async function runBridge() {
|
|
1696
|
+
// 启动/每次拉起前都按插件写入的端口校正继承来的旧 env(旧 plist 可能钉着安装时的端口)
|
|
1697
|
+
reconcileUpstreamEnvFromFile();
|
|
1696
1698
|
// 去重(所有平台):自启动服务、登录任务、插件半的脱离进程兜底都可能拉起 watcher,
|
|
1697
1699
|
// 两个 bridge 会抢同一个设备登记 → 以 pid 文件为准。
|
|
1698
1700
|
//
|
|
@@ -1889,6 +1891,7 @@ async function runBridge() {
|
|
|
1889
1891
|
}
|
|
1890
1892
|
warnedDuplicateBridge = false;
|
|
1891
1893
|
|
|
1894
|
+
reconcileUpstreamEnvFromFile(); // dsh 可能刚重启并换了端口:拉起前再以最新端口文件为准
|
|
1892
1895
|
const alive = await checkUpstream();
|
|
1893
1896
|
if (alive && childStopped(bridgeProc)) {
|
|
1894
1897
|
starting = true;
|
|
@@ -2073,9 +2076,11 @@ async function setup(argv) {
|
|
|
2073
2076
|
if (!PINNED_UPSTREAM && pluginTargets.some((t) => t.name === "desktop")) {
|
|
2074
2077
|
const p = desktopAppPort();
|
|
2075
2078
|
if (p) {
|
|
2076
|
-
PINNED_UPSTREAM
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
+
// 🔴 2026-10-25:这里只能写运行时端口文件;**不能**回填 PINNED_UPSTREAM ——
|
|
2080
|
+
// 它会被写进 launchd plist 变成永久显式指定,dsh 换端口后守护/桥永远连旧端口
|
|
2081
|
+
// (用户实测 upstream_unreachable)。
|
|
2082
|
+
try { fs.writeFileSync(path.join(CONFIG_DIR, UPSTREAM_FILE), `http://127.0.0.1:${p}` + "\n"); } catch { /* 忽略 */ }
|
|
2083
|
+
console.log(`ℹ 桌面端在 127.0.0.1:${p} 监听 → 已写入运行时上游端口(不再钉进自启动配置)`);
|
|
2079
2084
|
}
|
|
2080
2085
|
}
|
|
2081
2086
|
} catch { /* 探测失败不阻断安装 */ }
|