dsh-mobile 0.8.5 → 0.8.7
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 +37 -1
- package/CONTRIBUTORS.md +16 -4
- package/README.en.md +19 -13
- package/README.md +15 -11
- package/THIRD_PARTY_NOTICES.md +2 -2
- package/apps/mobile/README.md +15 -7
- package/apps/mobile/README.zh-CN.md +15 -7
- package/apps/mobile/release.json +3 -3
- package/assets/brand/plugin-icon.png +0 -0
- package/docs/ATTACH_EXISTING_FRPS.en.md +2 -2
- package/docs/CLIENT_MODULES.en.md +1 -1
- package/docs/CLIENT_MODULES.md +1 -1
- package/docs/CPOLAR_SUBDOMAIN.en.md +1 -1
- package/docs/CPOLAR_SUBDOMAIN.md +1 -1
- package/docs/IROH.en.md +5 -5
- package/docs/IROH.md +6 -6
- package/docs/MOBILE_COMPOSER_TOOLBAR.en.md +2 -2
- package/docs/MOBILE_COMPOSER_TOOLBAR.md +2 -2
- package/docs/MOBILE_PLUGIN_ADAPTATION.en.md +9 -0
- package/docs/MOBILE_PLUGIN_ADAPTATION.md +9 -0
- package/docs/MOBILE_PLUGIN_BASELINE.en.md +1 -1
- package/docs/MOBILE_PLUGIN_BASELINE.md +1 -1
- package/docs/README.md +1 -1
- package/docs/WEB_PUSH.en.md +21 -5
- package/docs/WEB_PUSH.md +21 -5
- package/index.mjs +6 -0
- package/lib/cli.js +104 -9
- package/lib/cli.js.map +1 -1
- package/lib/client.js +406 -16
- package/lib/client.js.map +1 -1
- package/lib/index.d.mts +40 -1
- package/lib/index.mjs +404 -35
- package/lib/index.mjs.map +1 -1
- package/lib/mobile-layout.js +177 -0
- package/lib/mobile-layout.js.map +1 -1
- package/native/iroh-host/README.md +10 -4
- package/package.json +8 -4
- package/packages/question-fixes/package.json +1 -1
|
@@ -5,11 +5,11 @@ This crate owns one authenticated iroh endpoint and its paired peer registry. It
|
|
|
5
5
|
## Commands
|
|
6
6
|
|
|
7
7
|
```powershell
|
|
8
|
-
cargo build --locked -p dsh-mobile-iroh-host
|
|
9
|
-
./target/debug/dsh-mobile-iroh-host host --data-dir <private-directory> --pair --proxy-target 127.0.0.1:3443
|
|
8
|
+
cargo build --locked --manifest-path native/Cargo.toml -p dsh-mobile-iroh-host
|
|
9
|
+
./native/target/debug/dsh-mobile-iroh-host host --data-dir <private-directory> --pair --proxy-target 127.0.0.1:3443
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
-
The parent owns stdin and stdout. Closing stdin or sending `shutdown` closes the endpoint, active peer connections and their proxy tasks, then emits `stopped`. One OS file lock prevents simultaneous hosts from using the same data directory. Corrupt or unreadable identity/paired-device files fail startup rather than generating a new identity or opening a new pairing window.
|
|
12
|
+
Run both commands from the repository root; the workspace root is `native/`, so cargo still writes to `native/target` (on Windows the debug binary is `dsh-mobile-iroh-host.exe`). The parent owns stdin and stdout. Closing stdin or sending `shutdown` closes the endpoint, active peer connections and their proxy tasks, then emits `stopped`. One OS file lock prevents simultaneous hosts from using the same data directory. Corrupt or unreadable identity/paired-device files fail startup rather than generating a new identity or opening a new pairing window.
|
|
13
13
|
|
|
14
14
|
Windows opens the verified private lock file without delete sharing, so its active pathname cannot be unlinked or renamed to bypass the lock. On Unix, the profile directory must remain exclusively application-owned and its `host.lock` pathname must not be manually removed while a host runs: advisory file locking does not prevent a process with the same UID from unlinking a locked inode. A compromised current user is outside the local credential isolation model.
|
|
15
15
|
|
|
@@ -61,6 +61,12 @@ The control stream remains owned for the entire connection. EOF, protocol error,
|
|
|
61
61
|
|
|
62
62
|
Each later bidirectional stream begins with `{"version":1,"type":"proxy"}` plus a newline, then carries unmodified TCP bytes. QUIC's authenticated transport protects network replay; this carrier does not accept standalone approvals or decisions. The host bounds concurrent connections, per-peer/global proxy streams, handshake time, proxy discriminator time and loopback connect time. Streams that exceed capacity are reset rather than queued indefinitely. Long-running authenticated payload streams remain open until the gateway, peer or owner closes them.
|
|
63
63
|
|
|
64
|
+
## Downloaded release and pin
|
|
65
|
+
|
|
66
|
+
The plugin does not build this crate on the user's machine. It downloads the pinned `dsh-mobile-iroh 0.1.0-alpha.1` release for the current platform from the npm CDN, verifies the byte length and SHA-256, and only then promotes the executable into plugin-private storage; an already installed companion with a verified copy is reused instead of downloading. The authoritative bytes and hashes are `src/iroh-component.ts` line 14 (`IROH_VERSION`) and lines 34-49 (per-platform entries: Windows x64 14,865,920 bytes, Linux x64 24,451,352 bytes).
|
|
67
|
+
|
|
68
|
+
Local and CI builds use `npm run build:iroh-host` (`scripts/build-iroh-host.mjs`), not the debug command above. It builds the release profile through `native/Cargo.toml`, copies the binary from `native/target/release` to `bin/` under its published name (`dsh-mobile-iroh-host-win32-x64.exe` or `dsh-mobile-iroh-host-linux-x64`), checks the executable header and prints `bytes`/`sha256` for the release manifest. CI runs the same script on both targets (`.github/workflows/ci.yml:436`).
|
|
69
|
+
|
|
64
70
|
## Verification
|
|
65
71
|
|
|
66
|
-
`cargo test --locked -p dsh-mobile-iroh-core -p dsh-mobile-iroh-host` includes real offline QUIC endpoints, handshake rejection, durable pairing and Hello ACK, same-peer replacement, raw HTTP/cookies/WebSocket/binary forwarding, revocation, control EOF and persistence failure. These checks do not establish Android WebView integration, production DSH authorization or public-network support. Process-level smoke is owned by the repository's JavaScript harness.
|
|
72
|
+
`cargo test --locked --manifest-path native/Cargo.toml -p dsh-mobile-iroh-core -p dsh-mobile-iroh-host` includes real offline QUIC endpoints, handshake rejection, durable pairing and Hello ACK, same-peer replacement, raw HTTP/cookies/WebSocket/binary forwarding, revocation, control EOF and persistence failure. These checks do not establish Android WebView integration, production DSH authorization or public-network support. Process-level smoke is owned by the repository's JavaScript harness.
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-mobile",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.7",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "DeepSeek Harness 移动端适配与安全访问插件,支持局域网、远程连接、Android App 和手机浏览器。",
|
|
6
|
+
"icon": "assets/brand/plugin-icon.png",
|
|
6
7
|
"type": "module",
|
|
7
8
|
"workspaces": [
|
|
8
9
|
"packages/question-fixes"
|
|
@@ -10,12 +11,12 @@
|
|
|
10
11
|
"bin": {
|
|
11
12
|
"dsh-mobile": "lib/cli.js"
|
|
12
13
|
},
|
|
13
|
-
"main": "./
|
|
14
|
+
"main": "./index.mjs",
|
|
14
15
|
"types": "./lib/index.d.mts",
|
|
15
16
|
"exports": {
|
|
16
17
|
".": {
|
|
17
18
|
"types": "./lib/index.d.mts",
|
|
18
|
-
"default": "./
|
|
19
|
+
"default": "./index.mjs"
|
|
19
20
|
},
|
|
20
21
|
"./client": {
|
|
21
22
|
"default": "./lib/client.js"
|
|
@@ -23,6 +24,7 @@
|
|
|
23
24
|
"./package.json": "./package.json"
|
|
24
25
|
},
|
|
25
26
|
"files": [
|
|
27
|
+
"index.mjs",
|
|
26
28
|
"lib/**/*.mjs",
|
|
27
29
|
"lib/cli.js",
|
|
28
30
|
"lib/**/*.d.mts",
|
|
@@ -42,6 +44,7 @@
|
|
|
42
44
|
"assets/mobile-push/icon-180.png",
|
|
43
45
|
"assets/mobile-push/icon-192.png",
|
|
44
46
|
"assets/mobile-push/icon-512.png",
|
|
47
|
+
"assets/brand/plugin-icon.png",
|
|
45
48
|
"cordis.patch.yml",
|
|
46
49
|
"README.md",
|
|
47
50
|
"README.en.md",
|
|
@@ -113,6 +116,7 @@
|
|
|
113
116
|
"build:iroh-host": "node ./scripts/build-iroh-host.mjs",
|
|
114
117
|
"check:funnel-licenses": "node ./scripts/funnel-third-party-licenses.mjs",
|
|
115
118
|
"check:funnel-licenses:full": "node ./scripts/funnel-third-party-licenses.mjs --full-check",
|
|
119
|
+
"check:notices": "node ./scripts/check-third-party-notices.mjs",
|
|
116
120
|
"check:mobile-release": "node ./scripts/check-mobile-release.mjs",
|
|
117
121
|
"check:dsh-compatibility": "node ./scripts/check-dsh-compatibility.mjs",
|
|
118
122
|
"smoke:dsh-boot": "node ./scripts/smoke-dsh-mobile-boot.mjs",
|
|
@@ -166,7 +170,7 @@
|
|
|
166
170
|
"test:watch": "vitest",
|
|
167
171
|
"typecheck": "tsc --noEmit",
|
|
168
172
|
"prepack": "npm run check:version && npm run check:docs && npm run check:funnel-licenses && npm run build",
|
|
169
|
-
"verify": "npm run check:version && npm run check:docs && npm run check:companion-package && npm run check:funnel-licenses && npm run check:mobile-release && npm run typecheck && npm run test && npm run build && npm pack --dry-run",
|
|
173
|
+
"verify": "npm run check:version && npm run check:docs && npm run check:companion-package && npm run check:funnel-licenses && npm run check:notices && npm run check:mobile-release && npm run typecheck && npm run test && npm run build && npm pack --dry-run",
|
|
170
174
|
"smoke:plugin-portal-layers": "node ./scripts/smoke-plugin-portal-layers.mjs",
|
|
171
175
|
"smoke:opaque-chrome": "node ./scripts/smoke-opaque-chrome.mjs",
|
|
172
176
|
"smoke:rightbar-fullscreen": "node ./scripts/smoke-rightbar-fullscreen.mjs"
|