@mrrisega/dsh-remote 0.6.6-beta.1 → 0.6.6-beta.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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mrrisega/dsh-remote",
|
|
3
|
-
"version": "0.6.6-beta.
|
|
3
|
+
"version": "0.6.6-beta.2",
|
|
4
4
|
"description": "手机远程控制 DeepSeek Harness · Remote control DeepSeek Harness (dsh web) from any phone browser — 100% 全功能 App 级体验:发消息、看工具执行、审批权限、改设置、管凭据,含特权操作,免内网穿透。一条命令安装 npx @mrrisega/dsh-remote。Mobile remote control for DSH, self-host or SaaS, no server needed on LAN.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"deepseek-harness",
|
|
@@ -54,9 +54,7 @@
|
|
|
54
54
|
"_comment:test:plugin": "DSH_RELAY_SKIP_SERVICE=1 = 测试隔离:插件加载时不做真实系统操作(npx 补装 / launchctl / 重启 harness);需要真实分支的用例自行 unset(见 account-switch / runtime-provision / harness-restart 用例注释)",
|
|
55
55
|
"test:plugin": "DSH_REMOTE_TELEMETRY=0 DSH_RELAY_SKIP_SERVICE=1 node --test --test-concurrency=1 packages/dsh-remote-web/test/*.test.mjs",
|
|
56
56
|
"test:bridge": "node --test clients/dsh-remote/test/*.test.mjs",
|
|
57
|
-
"check": "node --check clients/dsh-remote/dsh-bridge.mjs && node --check clients/dsh-remote/e2ee-shim.mjs && node --check dsh-setup.mjs && node --check packages/dsh-remote-web/lib/index.js && node --check packages/dsh-remote-web/lib/client.js && bash -n deploy/install-open.sh
|
|
58
|
-
"sync:alias": "node scripts/sync-legacy-alias.mjs",
|
|
59
|
-
"check:alias": "node scripts/sync-legacy-alias.mjs --check",
|
|
57
|
+
"check": "node --check clients/dsh-remote/dsh-bridge.mjs && node --check clients/dsh-remote/e2ee-shim.mjs && node --check dsh-setup.mjs && node --check packages/dsh-remote-web/lib/index.js && node --check packages/dsh-remote-web/lib/client.js && bash -n deploy/install-open.sh",
|
|
60
58
|
"release:tarballs": "bash scripts/release-tarballs.sh"
|
|
61
59
|
},
|
|
62
60
|
"dependencies": {
|
|
@@ -1812,7 +1812,7 @@ const PLUGIN_ID = "dsh-remote-web";
|
|
|
1812
1812
|
const PLUGIN_LEGACY_IDS = ["dsh-remote-ui"];
|
|
1813
1813
|
const PLUGIN_ALL_IDS = [PLUGIN_ID, ...PLUGIN_LEGACY_IDS];
|
|
1814
1814
|
/** 插件自身发布版本(与 dsh-remote 根包同步递增)。 */
|
|
1815
|
-
const PLUGIN_VERSION = "0.6.6-beta.
|
|
1815
|
+
const PLUGIN_VERSION = "0.6.6-beta.2";
|
|
1816
1816
|
const UPDATE_LOG = ".dsh-update.log";
|
|
1817
1817
|
const UPDATE_MARKER = ".dsh-update-running";
|
|
1818
1818
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-remote-web",
|
|
3
|
-
"version": "0.6.6-beta.
|
|
3
|
+
"version": "0.6.6-beta.2",
|
|
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",
|
|
@@ -28,18 +28,32 @@ const indexSrc = readFileSync(INDEX, "utf8");
|
|
|
28
28
|
const clientSrc = readFileSync(CLIENT, "utf8");
|
|
29
29
|
|
|
30
30
|
test("清单:dsh.client 不得声明不存在的宿主包(幻影 inject 会让插件永不装载)", () => {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
31
|
+
// 注:旧名别名包 dsh-remote-ui 已于 2026-09-15 退役并从仓库删除(npm 上已 deprecate),
|
|
32
|
+
// 因此这里只校验当前插件包 dsh-remote-web。
|
|
33
|
+
const pkg = "packages/dsh-remote-web/package.json";
|
|
34
|
+
const manifest = JSON.parse(readFileSync(join(REPO, pkg), "utf8"));
|
|
35
|
+
const client = manifest.dsh && manifest.dsh.client;
|
|
36
|
+
assert.ok(client, `${pkg} 应有 dsh.client`);
|
|
37
|
+
assert.equal(client.platform, "web");
|
|
38
|
+
const inject = client.inject || [];
|
|
39
|
+
assert.deepEqual(inject, [], `${pkg} 的 inject 必须为空:我们的浏览器半只 require("react"),不需要任何宿主包`);
|
|
40
|
+
for (const name of inject) {
|
|
41
|
+
assert.ok(!/dsh-client-runtime|dsh-client-collection/.test(name), `inject 里不得出现不存在的包名:${name}`);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
test("旧名别名包确已退役:目录/同步脚本/发布步骤都不应再存在", () => {
|
|
46
|
+
assert.ok(!existsSync(join(REPO, "packages", "dsh-remote-ui")), "别名目录应已删除");
|
|
47
|
+
assert.ok(!existsSync(join(REPO, "scripts", "sync-legacy-alias.mjs")), "别名同步脚本应已删除");
|
|
48
|
+
const root = JSON.parse(readFileSync(join(REPO, "package.json"), "utf8"));
|
|
49
|
+
for (const k of ["sync:alias", "check:alias"]) {
|
|
50
|
+
assert.ok(!(k in root.scripts), `package.json 不应再有 ${k}`);
|
|
42
51
|
}
|
|
52
|
+
assert.ok(!/check:alias/.test(root.scripts.check || ""), "check 不应再引用别名校验");
|
|
53
|
+
// 但**旧名清理/迁移逻辑必须保留**:老用户升级依赖它
|
|
54
|
+
const setup = readFileSync(join(REPO, "dsh-setup.mjs"), "utf8");
|
|
55
|
+
assert.match(setup, /PLUGIN_LEGACY_IDS/, "安装器必须保留旧名清理(老用户升级路径)");
|
|
56
|
+
assert.match(setup, /dsh-remote-ui/, "旧名清理里应仍认得 dsh-remote-ui");
|
|
43
57
|
});
|
|
44
58
|
|
|
45
59
|
test("清单:浏览器半只依赖 shell 提供的 react(不 require 宿主客户端包)", () => {
|