@marktrue/dsh-mobile-remote 3.2.2-alpha.1 → 3.2.2-rc.1-app

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.
Files changed (353) hide show
  1. package/DSH-Remote-v3.2.2.apk +4 -0
  2. package/README.md +6 -253
  3. package/manifest.json +21 -0
  4. package/package.json +12 -65
  5. package/CHANGELOG.md +0 -1223
  6. package/CONTRIBUTING.md +0 -59
  7. package/FAQ.md +0 -111
  8. package/cordis.patch.yml +0 -14
  9. package/docs/00-/345/274/200/345/217/221/346/200/273/347/272/262.md +0 -125
  10. package/docs/01-PRD.md +0 -148
  11. package/docs/02-architecture.md +0 -249
  12. package/docs/03-api.md +0 -930
  13. package/docs/04-security.md +0 -100
  14. package/docs/05-test-cases.md +0 -366
  15. package/docs/06-install-run.md +0 -372
  16. package/docs/07-user-manual.md +0 -66
  17. package/docs/08-/346/211/251/345/261/225/345/274/200/345/217/221/346/214/207/345/215/227.md +0 -86
  18. package/docs/09-compatibility.md +0 -223
  19. package/docs/10-release.md +0 -929
  20. package/docs/screenshots/01-home.png +0 -0
  21. package/docs/screenshots/02-notifications.png +0 -0
  22. package/docs/screenshots/03-sessions.png +0 -0
  23. package/docs/screenshots/04-chat.png +0 -0
  24. package/docs/screenshots/05-settings.png +0 -0
  25. package/docs/screenshots/06-new-session.png +0 -0
  26. package/docs/screenshots/pgy-appstore.jpg +0 -0
  27. package/docs/screenshots/pgy-mobile-app.jpg +0 -0
  28. package/docs/screenshots/pgy-pc-client.jpg +0 -0
  29. package/docs/spec-app-auto-update.md +0 -143
  30. package/lib/account-usage.js +0 -145
  31. package/lib/app-alignment.js +0 -112
  32. package/lib/app-carrier-store.js +0 -1972
  33. package/lib/app-carrier.js +0 -609
  34. package/lib/client.js +0 -1174
  35. package/lib/desktop-form.js +0 -738
  36. package/lib/endpoint-registry.js +0 -165
  37. package/lib/git-read-bundled-provider.js +0 -255
  38. package/lib/git-read-service.js +0 -322
  39. package/lib/index.js +0 -9467
  40. package/lib/npm-update-source.js +0 -226
  41. package/lib/plugin-content-digest.js +0 -80
  42. package/lib/plugin-self-update.js +0 -997
  43. package/lib/plugin-update-controller.js +0 -274
  44. package/lib/plugin-update-log.js +0 -164
  45. package/lib/plugin-update-transaction.js +0 -322
  46. package/lib/plugin-update.js +0 -309
  47. package/lib/runtime-dependency-snapshot.js +0 -345
  48. package/lib/session-title-cache.js +0 -123
  49. package/lib/session-title-refresh.js +0 -261
  50. package/lib/tool-process.js +0 -20
  51. package/lib/update-fetch.js +0 -24
  52. package/lib/update-lock-arbiter.js +0 -170
  53. package/lib/update-supervisor.js +0 -346
  54. package/node_modules/ansi-regex/index.d.ts +0 -37
  55. package/node_modules/ansi-regex/index.js +0 -10
  56. package/node_modules/ansi-regex/license +0 -9
  57. package/node_modules/ansi-regex/package.json +0 -55
  58. package/node_modules/ansi-regex/readme.md +0 -78
  59. package/node_modules/ansi-styles/index.d.ts +0 -345
  60. package/node_modules/ansi-styles/index.js +0 -163
  61. package/node_modules/ansi-styles/license +0 -9
  62. package/node_modules/ansi-styles/package.json +0 -56
  63. package/node_modules/ansi-styles/readme.md +0 -152
  64. package/node_modules/camelcase/index.d.ts +0 -63
  65. package/node_modules/camelcase/index.js +0 -76
  66. package/node_modules/camelcase/license +0 -9
  67. package/node_modules/camelcase/package.json +0 -43
  68. package/node_modules/camelcase/readme.md +0 -99
  69. package/node_modules/cliui/CHANGELOG.md +0 -76
  70. package/node_modules/cliui/LICENSE.txt +0 -14
  71. package/node_modules/cliui/README.md +0 -115
  72. package/node_modules/cliui/index.js +0 -354
  73. package/node_modules/cliui/package.json +0 -65
  74. package/node_modules/color-convert/CHANGELOG.md +0 -54
  75. package/node_modules/color-convert/LICENSE +0 -21
  76. package/node_modules/color-convert/README.md +0 -68
  77. package/node_modules/color-convert/conversions.js +0 -839
  78. package/node_modules/color-convert/index.js +0 -81
  79. package/node_modules/color-convert/package.json +0 -48
  80. package/node_modules/color-convert/route.js +0 -97
  81. package/node_modules/color-name/LICENSE +0 -8
  82. package/node_modules/color-name/README.md +0 -11
  83. package/node_modules/color-name/index.js +0 -152
  84. package/node_modules/color-name/package.json +0 -28
  85. package/node_modules/decamelize/index.js +0 -13
  86. package/node_modules/decamelize/license +0 -21
  87. package/node_modules/decamelize/package.json +0 -38
  88. package/node_modules/decamelize/readme.md +0 -48
  89. package/node_modules/dijkstrajs/.travis.yml +0 -4
  90. package/node_modules/dijkstrajs/CONTRIBUTING.md +0 -8
  91. package/node_modules/dijkstrajs/LICENSE.md +0 -19
  92. package/node_modules/dijkstrajs/README.md +0 -18
  93. package/node_modules/dijkstrajs/dijkstra.js +0 -165
  94. package/node_modules/dijkstrajs/package.json +0 -60
  95. package/node_modules/dijkstrajs/test/dijkstra.test.js +0 -96
  96. package/node_modules/emoji-regex/LICENSE-MIT.txt +0 -20
  97. package/node_modules/emoji-regex/README.md +0 -73
  98. package/node_modules/emoji-regex/es2015/index.js +0 -6
  99. package/node_modules/emoji-regex/es2015/text.js +0 -6
  100. package/node_modules/emoji-regex/index.d.ts +0 -23
  101. package/node_modules/emoji-regex/index.js +0 -6
  102. package/node_modules/emoji-regex/package.json +0 -50
  103. package/node_modules/emoji-regex/text.js +0 -6
  104. package/node_modules/find-up/index.d.ts +0 -137
  105. package/node_modules/find-up/index.js +0 -89
  106. package/node_modules/find-up/license +0 -9
  107. package/node_modules/find-up/package.json +0 -53
  108. package/node_modules/find-up/readme.md +0 -156
  109. package/node_modules/get-caller-file/LICENSE.md +0 -6
  110. package/node_modules/get-caller-file/README.md +0 -41
  111. package/node_modules/get-caller-file/index.d.ts +0 -2
  112. package/node_modules/get-caller-file/index.js +0 -22
  113. package/node_modules/get-caller-file/index.js.map +0 -1
  114. package/node_modules/get-caller-file/package.json +0 -42
  115. package/node_modules/is-fullwidth-code-point/index.d.ts +0 -17
  116. package/node_modules/is-fullwidth-code-point/index.js +0 -50
  117. package/node_modules/is-fullwidth-code-point/license +0 -9
  118. package/node_modules/is-fullwidth-code-point/package.json +0 -42
  119. package/node_modules/is-fullwidth-code-point/readme.md +0 -39
  120. package/node_modules/locate-path/index.d.ts +0 -83
  121. package/node_modules/locate-path/index.js +0 -65
  122. package/node_modules/locate-path/license +0 -9
  123. package/node_modules/locate-path/package.json +0 -45
  124. package/node_modules/locate-path/readme.md +0 -122
  125. package/node_modules/p-limit/index.d.ts +0 -38
  126. package/node_modules/p-limit/index.js +0 -57
  127. package/node_modules/p-limit/license +0 -9
  128. package/node_modules/p-limit/package.json +0 -52
  129. package/node_modules/p-limit/readme.md +0 -101
  130. package/node_modules/p-locate/index.d.ts +0 -64
  131. package/node_modules/p-locate/index.js +0 -52
  132. package/node_modules/p-locate/license +0 -9
  133. package/node_modules/p-locate/package.json +0 -53
  134. package/node_modules/p-locate/readme.md +0 -90
  135. package/node_modules/p-try/index.d.ts +0 -39
  136. package/node_modules/p-try/index.js +0 -9
  137. package/node_modules/p-try/license +0 -9
  138. package/node_modules/p-try/package.json +0 -42
  139. package/node_modules/p-try/readme.md +0 -58
  140. package/node_modules/path-exists/index.d.ts +0 -28
  141. package/node_modules/path-exists/index.js +0 -23
  142. package/node_modules/path-exists/license +0 -9
  143. package/node_modules/path-exists/package.json +0 -39
  144. package/node_modules/path-exists/readme.md +0 -52
  145. package/node_modules/pngjs/.eslintignore +0 -2
  146. package/node_modules/pngjs/.eslintrc.json +0 -19
  147. package/node_modules/pngjs/.prettierignore +0 -3
  148. package/node_modules/pngjs/LICENSE +0 -20
  149. package/node_modules/pngjs/README.md +0 -429
  150. package/node_modules/pngjs/browser.js +0 -16096
  151. package/node_modules/pngjs/coverage/lcov-report/base.css +0 -354
  152. package/node_modules/pngjs/coverage/lcov-report/bitmapper.js.html +0 -881
  153. package/node_modules/pngjs/coverage/lcov-report/bitpacker.js.html +0 -554
  154. package/node_modules/pngjs/coverage/lcov-report/block-navigation.js +0 -77
  155. package/node_modules/pngjs/coverage/lcov-report/chunkstream.js.html +0 -647
  156. package/node_modules/pngjs/coverage/lcov-report/constants.js.html +0 -176
  157. package/node_modules/pngjs/coverage/lcov-report/crc.js.html +0 -200
  158. package/node_modules/pngjs/coverage/lcov-report/favicon.png +0 -0
  159. package/node_modules/pngjs/coverage/lcov-report/filter-pack.js.html +0 -593
  160. package/node_modules/pngjs/coverage/lcov-report/filter-parse-async.js.html +0 -152
  161. package/node_modules/pngjs/coverage/lcov-report/filter-parse-sync.js.html +0 -143
  162. package/node_modules/pngjs/coverage/lcov-report/filter-parse.js.html +0 -611
  163. package/node_modules/pngjs/coverage/lcov-report/format-normaliser.js.html +0 -359
  164. package/node_modules/pngjs/coverage/lcov-report/index.html +0 -426
  165. package/node_modules/pngjs/coverage/lcov-report/interlace.js.html +0 -365
  166. package/node_modules/pngjs/coverage/lcov-report/packer-async.js.html +0 -230
  167. package/node_modules/pngjs/coverage/lcov-report/packer-sync.js.html +0 -248
  168. package/node_modules/pngjs/coverage/lcov-report/packer.js.html +0 -467
  169. package/node_modules/pngjs/coverage/lcov-report/paeth-predictor.js.html +0 -128
  170. package/node_modules/pngjs/coverage/lcov-report/parser-async.js.html +0 -575
  171. package/node_modules/pngjs/coverage/lcov-report/parser-sync.js.html +0 -404
  172. package/node_modules/pngjs/coverage/lcov-report/parser.js.html +0 -950
  173. package/node_modules/pngjs/coverage/lcov-report/png-sync.js.html +0 -116
  174. package/node_modules/pngjs/coverage/lcov-report/png.js.html +0 -662
  175. package/node_modules/pngjs/coverage/lcov-report/prettify.css +0 -101
  176. package/node_modules/pngjs/coverage/lcov-report/prettify.js +0 -1007
  177. package/node_modules/pngjs/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  178. package/node_modules/pngjs/coverage/lcov-report/sorter.js +0 -169
  179. package/node_modules/pngjs/coverage/lcov-report/sync-inflate.js.html +0 -584
  180. package/node_modules/pngjs/coverage/lcov-report/sync-reader.js.html +0 -215
  181. package/node_modules/pngjs/coverage/lcov.info +0 -2177
  182. package/node_modules/pngjs/lib/bitmapper.js +0 -267
  183. package/node_modules/pngjs/lib/bitpacker.js +0 -158
  184. package/node_modules/pngjs/lib/chunkstream.js +0 -189
  185. package/node_modules/pngjs/lib/constants.js +0 -32
  186. package/node_modules/pngjs/lib/crc.js +0 -40
  187. package/node_modules/pngjs/lib/filter-pack.js +0 -171
  188. package/node_modules/pngjs/lib/filter-parse-async.js +0 -24
  189. package/node_modules/pngjs/lib/filter-parse-sync.js +0 -21
  190. package/node_modules/pngjs/lib/filter-parse.js +0 -177
  191. package/node_modules/pngjs/lib/format-normaliser.js +0 -93
  192. package/node_modules/pngjs/lib/interlace.js +0 -95
  193. package/node_modules/pngjs/lib/packer-async.js +0 -50
  194. package/node_modules/pngjs/lib/packer-sync.js +0 -56
  195. package/node_modules/pngjs/lib/packer.js +0 -129
  196. package/node_modules/pngjs/lib/paeth-predictor.js +0 -16
  197. package/node_modules/pngjs/lib/parser-async.js +0 -165
  198. package/node_modules/pngjs/lib/parser-sync.js +0 -108
  199. package/node_modules/pngjs/lib/parser.js +0 -290
  200. package/node_modules/pngjs/lib/png-sync.js +0 -12
  201. package/node_modules/pngjs/lib/png.js +0 -194
  202. package/node_modules/pngjs/lib/sync-inflate.js +0 -168
  203. package/node_modules/pngjs/lib/sync-reader.js +0 -45
  204. package/node_modules/pngjs/package.json +0 -73
  205. package/node_modules/qrcode/README.md +0 -770
  206. package/node_modules/qrcode/bin/qrcode +0 -159
  207. package/node_modules/qrcode/helper/to-sjis-browser.js +0 -2
  208. package/node_modules/qrcode/helper/to-sjis.js +0 -105
  209. package/node_modules/qrcode/lib/browser.js +0 -76
  210. package/node_modules/qrcode/lib/can-promise.js +0 -7
  211. package/node_modules/qrcode/lib/core/alignment-pattern.js +0 -83
  212. package/node_modules/qrcode/lib/core/alphanumeric-data.js +0 -59
  213. package/node_modules/qrcode/lib/core/bit-buffer.js +0 -37
  214. package/node_modules/qrcode/lib/core/bit-matrix.js +0 -65
  215. package/node_modules/qrcode/lib/core/byte-data.js +0 -30
  216. package/node_modules/qrcode/lib/core/error-correction-code.js +0 -135
  217. package/node_modules/qrcode/lib/core/error-correction-level.js +0 -50
  218. package/node_modules/qrcode/lib/core/finder-pattern.js +0 -22
  219. package/node_modules/qrcode/lib/core/format-info.js +0 -29
  220. package/node_modules/qrcode/lib/core/galois-field.js +0 -69
  221. package/node_modules/qrcode/lib/core/kanji-data.js +0 -54
  222. package/node_modules/qrcode/lib/core/mask-pattern.js +0 -234
  223. package/node_modules/qrcode/lib/core/mode.js +0 -167
  224. package/node_modules/qrcode/lib/core/numeric-data.js +0 -43
  225. package/node_modules/qrcode/lib/core/polynomial.js +0 -62
  226. package/node_modules/qrcode/lib/core/qrcode.js +0 -495
  227. package/node_modules/qrcode/lib/core/reed-solomon-encoder.js +0 -56
  228. package/node_modules/qrcode/lib/core/regex.js +0 -31
  229. package/node_modules/qrcode/lib/core/segments.js +0 -330
  230. package/node_modules/qrcode/lib/core/utils.js +0 -63
  231. package/node_modules/qrcode/lib/core/version-check.js +0 -9
  232. package/node_modules/qrcode/lib/core/version.js +0 -163
  233. package/node_modules/qrcode/lib/index.js +0 -12
  234. package/node_modules/qrcode/lib/renderer/canvas.js +0 -63
  235. package/node_modules/qrcode/lib/renderer/png.js +0 -78
  236. package/node_modules/qrcode/lib/renderer/svg-tag.js +0 -81
  237. package/node_modules/qrcode/lib/renderer/svg.js +0 -19
  238. package/node_modules/qrcode/lib/renderer/terminal/terminal-small.js +0 -85
  239. package/node_modules/qrcode/lib/renderer/terminal/terminal.js +0 -49
  240. package/node_modules/qrcode/lib/renderer/terminal.js +0 -9
  241. package/node_modules/qrcode/lib/renderer/utf8.js +0 -71
  242. package/node_modules/qrcode/lib/renderer/utils.js +0 -99
  243. package/node_modules/qrcode/lib/server.js +0 -138
  244. package/node_modules/qrcode/license +0 -10
  245. package/node_modules/qrcode/package.json +0 -77
  246. package/node_modules/require-directory/.jshintrc +0 -67
  247. package/node_modules/require-directory/.npmignore +0 -1
  248. package/node_modules/require-directory/.travis.yml +0 -3
  249. package/node_modules/require-directory/LICENSE +0 -22
  250. package/node_modules/require-directory/README.markdown +0 -184
  251. package/node_modules/require-directory/index.js +0 -86
  252. package/node_modules/require-directory/package.json +0 -40
  253. package/node_modules/require-main-filename/CHANGELOG.md +0 -26
  254. package/node_modules/require-main-filename/LICENSE.txt +0 -14
  255. package/node_modules/require-main-filename/README.md +0 -26
  256. package/node_modules/require-main-filename/index.js +0 -18
  257. package/node_modules/require-main-filename/package.json +0 -35
  258. package/node_modules/set-blocking/CHANGELOG.md +0 -26
  259. package/node_modules/set-blocking/LICENSE.txt +0 -14
  260. package/node_modules/set-blocking/README.md +0 -31
  261. package/node_modules/set-blocking/index.js +0 -7
  262. package/node_modules/set-blocking/package.json +0 -42
  263. package/node_modules/string-width/index.d.ts +0 -29
  264. package/node_modules/string-width/index.js +0 -47
  265. package/node_modules/string-width/license +0 -9
  266. package/node_modules/string-width/package.json +0 -56
  267. package/node_modules/string-width/readme.md +0 -50
  268. package/node_modules/strip-ansi/index.d.ts +0 -17
  269. package/node_modules/strip-ansi/index.js +0 -4
  270. package/node_modules/strip-ansi/license +0 -9
  271. package/node_modules/strip-ansi/package.json +0 -54
  272. package/node_modules/strip-ansi/readme.md +0 -46
  273. package/node_modules/which-module/LICENSE +0 -13
  274. package/node_modules/which-module/README.md +0 -58
  275. package/node_modules/which-module/index.js +0 -9
  276. package/node_modules/which-module/package.json +0 -41
  277. package/node_modules/wrap-ansi/index.js +0 -186
  278. package/node_modules/wrap-ansi/license +0 -9
  279. package/node_modules/wrap-ansi/package.json +0 -61
  280. package/node_modules/wrap-ansi/readme.md +0 -97
  281. package/node_modules/y18n/CHANGELOG.md +0 -35
  282. package/node_modules/y18n/LICENSE +0 -13
  283. package/node_modules/y18n/README.md +0 -109
  284. package/node_modules/y18n/index.js +0 -188
  285. package/node_modules/y18n/package.json +0 -39
  286. package/node_modules/yargs/CHANGELOG.md +0 -420
  287. package/node_modules/yargs/LICENSE +0 -21
  288. package/node_modules/yargs/README.md +0 -140
  289. package/node_modules/yargs/build/lib/apply-extends.d.ts +0 -2
  290. package/node_modules/yargs/build/lib/apply-extends.js +0 -65
  291. package/node_modules/yargs/build/lib/argsert.d.ts +0 -2
  292. package/node_modules/yargs/build/lib/argsert.js +0 -65
  293. package/node_modules/yargs/build/lib/command.d.ts +0 -64
  294. package/node_modules/yargs/build/lib/command.js +0 -416
  295. package/node_modules/yargs/build/lib/common-types.d.ts +0 -36
  296. package/node_modules/yargs/build/lib/common-types.js +0 -25
  297. package/node_modules/yargs/build/lib/completion-templates.d.ts +0 -2
  298. package/node_modules/yargs/build/lib/completion-templates.js +0 -50
  299. package/node_modules/yargs/build/lib/completion.d.ts +0 -21
  300. package/node_modules/yargs/build/lib/completion.js +0 -135
  301. package/node_modules/yargs/build/lib/is-promise.d.ts +0 -1
  302. package/node_modules/yargs/build/lib/is-promise.js +0 -9
  303. package/node_modules/yargs/build/lib/levenshtein.d.ts +0 -1
  304. package/node_modules/yargs/build/lib/levenshtein.js +0 -58
  305. package/node_modules/yargs/build/lib/middleware.d.ts +0 -10
  306. package/node_modules/yargs/build/lib/middleware.js +0 -57
  307. package/node_modules/yargs/build/lib/obj-filter.d.ts +0 -1
  308. package/node_modules/yargs/build/lib/obj-filter.js +0 -14
  309. package/node_modules/yargs/build/lib/parse-command.d.ts +0 -11
  310. package/node_modules/yargs/build/lib/parse-command.js +0 -36
  311. package/node_modules/yargs/build/lib/process-argv.d.ts +0 -2
  312. package/node_modules/yargs/build/lib/process-argv.js +0 -31
  313. package/node_modules/yargs/build/lib/usage.d.ts +0 -49
  314. package/node_modules/yargs/build/lib/usage.js +0 -540
  315. package/node_modules/yargs/build/lib/validation.d.ts +0 -34
  316. package/node_modules/yargs/build/lib/validation.js +0 -330
  317. package/node_modules/yargs/build/lib/yargs.d.ts +0 -274
  318. package/node_modules/yargs/build/lib/yargs.js +0 -1190
  319. package/node_modules/yargs/build/lib/yerror.d.ts +0 -4
  320. package/node_modules/yargs/build/lib/yerror.js +0 -11
  321. package/node_modules/yargs/index.js +0 -40
  322. package/node_modules/yargs/locales/be.json +0 -46
  323. package/node_modules/yargs/locales/de.json +0 -46
  324. package/node_modules/yargs/locales/en.json +0 -51
  325. package/node_modules/yargs/locales/es.json +0 -46
  326. package/node_modules/yargs/locales/fi.json +0 -49
  327. package/node_modules/yargs/locales/fr.json +0 -53
  328. package/node_modules/yargs/locales/hi.json +0 -49
  329. package/node_modules/yargs/locales/hu.json +0 -46
  330. package/node_modules/yargs/locales/id.json +0 -50
  331. package/node_modules/yargs/locales/it.json +0 -46
  332. package/node_modules/yargs/locales/ja.json +0 -51
  333. package/node_modules/yargs/locales/ko.json +0 -49
  334. package/node_modules/yargs/locales/nb.json +0 -44
  335. package/node_modules/yargs/locales/nl.json +0 -49
  336. package/node_modules/yargs/locales/nn.json +0 -44
  337. package/node_modules/yargs/locales/pirate.json +0 -13
  338. package/node_modules/yargs/locales/pl.json +0 -49
  339. package/node_modules/yargs/locales/pt.json +0 -45
  340. package/node_modules/yargs/locales/pt_BR.json +0 -48
  341. package/node_modules/yargs/locales/ru.json +0 -46
  342. package/node_modules/yargs/locales/th.json +0 -46
  343. package/node_modules/yargs/locales/tr.json +0 -48
  344. package/node_modules/yargs/locales/zh_CN.json +0 -48
  345. package/node_modules/yargs/locales/zh_TW.json +0 -47
  346. package/node_modules/yargs/package.json +0 -92
  347. package/node_modules/yargs/yargs.js +0 -14
  348. package/node_modules/yargs-parser/CHANGELOG.md +0 -601
  349. package/node_modules/yargs-parser/LICENSE.txt +0 -14
  350. package/node_modules/yargs-parser/README.md +0 -449
  351. package/node_modules/yargs-parser/index.js +0 -1032
  352. package/node_modules/yargs-parser/lib/tokenize-arg-string.js +0 -40
  353. package/node_modules/yargs-parser/package.json +0 -46
@@ -0,0 +1,4 @@
1
+ [diffend] Oversized file quarantined before diffing.
2
+ name: package/DSH-Remote-v3.2.2.apk
3
+ size: 75947208 bytes
4
+ sha256: 4a77e87829857faf3c1e6460cebf2c0f6de98dd192e05ac4817ba7a501c23829
package/README.md CHANGED
@@ -1,256 +1,9 @@
1
- # DSH Remote(dsh-mobile-remote)
1
+ # DSH Mobile Remote App 载体(@marktrue/dsh-mobile-remote@3.2.2-rc.1-app)
2
2
 
3
- > 把 DeepSeek Harness 变成随身控制台:**手机远程操作电脑上的 agent** —— 发消息派活、看进度、收通知、审批决策、管理会话。电脑端跑着,人不在电脑前也能全程操作。(App 目前为 **Android 端**;**iOS 端未开发**——开发者无苹果设备,欢迎社区贡献,见 docs/09 §4)
3
+ 本包是 DSH Mobile Remote 的 **App 载体**,只承担数据分发角色:
4
4
 
5
- ## 截图
5
+ - `DSH-Remote-v3.2.2.apk`:与插件 3.2.2-rc.1 配对的 Android 安装包;
6
+ - `manifest.json`:schema 1 发布清单,描述同一次发布的两端产物身份与哈希。
6
7
 
7
- | 首页 | 对话 | 通知 |
8
- |---|---|---|
9
- | ![首页](docs/screenshots/01-home.png) | ![对话](docs/screenshots/04-chat.png) | ![通知](docs/screenshots/02-notifications.png) |
10
-
11
- | 会话列表 | 设置 | 新建会话 |
12
- |---|---|---|
13
- | ![会话](docs/screenshots/03-sessions.png) | ![设置](docs/screenshots/05-settings.png) | ![新建会话](docs/screenshots/06-new-session.png) |
14
-
15
- | 外出访问:蒲公英 App(移动端) | 蒲公英 PC 客户端 | 应用商店搜索 |
16
- |---|---|---|
17
- | ![蒲公英移动端](docs/screenshots/pgy-mobile-app.jpg) | ![蒲公英PC客户端](docs/screenshots/pgy-pc-client.jpg) | ![应用商店搜索](docs/screenshots/pgy-appstore.jpg) |
18
-
19
- ## 功能
20
-
21
- > **推送与公网访问配置说明(重要)**:本项目的推送消息通道(Server酱 / ntfy / Bark / 自建等)与**非局域网使用方式**(蒲公英 / Tailscale / FRP 内网穿透等)**均为按需自配置,没有统一标准**——`cordis.patch.yml` 里的 `pushUrls`(推送通道)、`trustedHosts`(公网中继域名)、`lanBridge`(桌面版 LAN 桥)、`approvalMode`(审批位置:`both` 双端 / `mobile` 手机独占 / `desktop` 仅桌面,默认 `both`)等字段请**按自己的需求修改**,文档(docs/06、docs/04-security)只给示例与安全边界,不强制任何固定方案。
22
-
23
- - 📱 **手机远程操作**:发消息/派任务、流式回复、Markdown 渲染、token 用量、**微信式无限上翻**(滑到顶部自动加载更早 + 回到底部浮钮)
24
- - ❓ **问询/审批弹窗**:agent 思考中途要你拍板(选选项/输入自定义答案)或工具要权限(允许一次/拒绝)时,手机弹卡片——**与 PC 端同一待办,任一端回答两端同步消失**(v3.1.3 起默认双端呈现,`approvalMode` 可切手机独占/仅桌面)
25
- - 🔔 **系统通知**:agent 完成 / 需要你回答 / 失败 → 手机弹窗(Server酱 / ntfy / Bark 任选;同会话同类型自动聚合);通知页支持**单删/批量/清空**
26
- - 💬 **会话管理**:查看/切换/续接全部会话,标题与 PC 端实时同步,按工作区分组(子目录自动归属最近工作区),归档与 PC 端同源
27
- - ➕ **新建会话**:选 Agent 模式(标准/PTC/极简/创造)+ 选工作目录(跨盘浏览、可新建文件夹)
28
- - ⚙️ **配置对齐 PC 端**:模型、推理强度、权限预设(危险权限需风险确认)、**默认 Agent 预设 / 默认权限预设可直接修改**(作用于之后新建的会话)
29
- - 🏢 **模型提供商互通**:PC 端「设置 → 模型」与手机同一配置通道——37 个内置提供商(anthropic / openai / google / groq 等)手机可见可配(baseURL + API Key 即激活),模型选择器按提供商分组,设置页「模型提供商」可搜索/编辑/探测模型
30
- - 👀 **过程可见性**:活动条(思考中 / 正在调用工具实时状态行)+ 可折叠思考面板(默认只显示状态)
31
- - 🛠️ **会话工具**:运行中的后台任务实时卡片(可取消)+ 三页签弹层——任务 / 子代理(查看+中断)/ 目标(查看、创建、暂停、继续、标记完成,与 PC 端 goal 服务同源)
32
- - 🫧 **悬浮球**:透明鲸鱼常驻桌面——空闲灰 / 有任务·通知·余额低亮蓝+红点;单击迷你面板(运行中会话 / 通知 / 打开 App / 去充值),拖动贴边 5 秒自动缩进,双击开 App,长按退出;错过的通知也会补提示(气泡/横幅)
33
- - 💾 **体验打磨**:Agent 状态 bootstrap 同步(按钮/活动条即时反映 PC 状态)、下拉刷新收集地址(蒲公英/Tailscale 自动进候选)、聊天草稿保留(退出重进自动恢复)、首页改版(官方 logo / 新欢迎语 / 最近会话卡片滑动)、语言切换(中/英)
34
- - 📶 **扫码连接**:桌面 dsh 设置页出现「连接移动端设备」二维码 → 手机 App 扫码即连(免输 IP/口令)
35
- - 🩺 **环境诊断**:一键查看当前环境各项能力(含问询/审批桥状态),升级/排障一目了然
36
- - 🧩 **插件动作区**:第三方插件注册的动作自动出现在移动端(可选)
37
- - 🖼️ **原生 App**:`dsh-mobile-app/` 子目录,Flutter 原生实现,与网页端共享同一 API 与设计
38
-
39
- ## 两种使用形态
40
-
41
- | 形态 | 说明 |
42
- |---|---|
43
- | **原生 App(安卓,推荐)** | `dsh-mobile-app/` 构建 APK 安装;扫码连接、原生体验、系统通知 |
44
-
45
- ## 微信入口(可选):dsh-im
46
-
47
- 想「在微信里直接给 agent 说话派活」?**本插件不内置 IM 机器人**(那是另一层协议),官方推荐安装 **[@xmanrui/dsh-im](https://github.com/xmanrui/dsh-im)**——一个独立的 DeepSeek Harness 插件,支持微信(个人号扫码)/ 飞书 / 钉钉 / 企业微信 / QQ / Slack / Telegram / Discord / WhatsApp 等 9 种 IM 通道。与本插件互补:
48
-
49
- - **dsh-im**:微信/IM 对话入口(在微信里直接聊天派活、收到回复)
50
- - **本插件**:手机控制台(进度 / 审批 / 会话管理)+ **干活完成提醒**(推送桥,不依赖 App 常驻后台)
51
-
52
- 装法(电脑端):`dsh plugin add @xmanrui/dsh-im` → 微信扫码登录 → 完成。干活完成提醒走本插件推送桥(docs/06 §6:企业微信机器人 / Server酱 / Bark 任选)。
53
-
54
- ## 架构
55
-
56
- ```
57
- 手机(原生 App) ──HTTP/SSE──► 电脑上的 dsh 进程(本插件)
58
- │ ctx 服务(agents/sessions/llm/…)
59
- │ /api 桥(与 PC 端 GUI 同一协议)
60
- ▼
61
- dsh 内核(会话唯一真源)
62
- ```
63
-
64
- - **会话唯一真源在 PC 端**:移动端不存状态,实时读写——天然一致,不存在"同步"
65
- - **移动端零插件感知**:核心功能只依赖 dsh 内核语义;个性化(模型/权限/预设)全部动态读取
66
- - **桌面端/命令行双形态兼容**:同一 profile,插件自动加载
67
-
68
- ## 安装(部署者 3 步)
69
-
70
- > 🤖 **让 DSH 的 agent 自动安装**:直接告诉 agent「按本仓库 docs/06 安装 dsh-mobile-remote 插件」即可。agent 默认会采用下面的「方式一」,拉取的就是**当前正式版**(main 分支永远保持完整可发布状态,版本号与最新 Release 一致)。需要与手机 App 精确配对时,把依赖写成 `"dsh-mobile-remote": "github:201222-L/dsh-mobile-remote#v3.0.0"`。
71
-
72
- ### 方式一:命令行 dsh web(web 版流程)
73
-
74
- ```powershell
75
- # 1. 在 profile 声明插件
76
- # 编辑 C:\Users\<你>\.dsh\profiles\web\package.json,dependencies 加:
77
- # "dsh-mobile-remote": "file:<本插件路径>"
78
-
79
- # 2. 安装依赖
80
- cd C:\Users\<你>\.dsh\profiles\web
81
- corepack pnpm install
82
-
83
- # 3. 启用插件(cordis.patch.yml,见下方配置节)后启动
84
- npx @deepseek-ai/dsh web
85
- ```
86
-
87
- ### 方式二:DeepSeek Harness 桌面端(当前主线)
88
-
89
- 安装插件后**重启 DSH Desktop** 即可(desktop profile 自动加载;移动端经插件 **LAN 桥**,默认 `0.0.0.0:3080`,见 「LAN 桥」节与 docs/06 §4b)。
90
-
91
- ### LAN 桥(桌面版必开,手机局域网直连)
92
-
93
- ```yaml
94
- # cordis.patch.yml(mobile-remote 行 config 内)
95
- lanBridge:
96
- enabled: true
97
- port: 3080
98
- host: 0.0.0.0
99
- ```
100
-
101
- > ⚠️ **不要覆盖 webserver 行**:桌面版(0.1.1-rc.2)webserver 强制回环(覆盖 host 直接报错),移动端用上方 LAN 桥;**web 版默认已是 `0.0.0.0:3080`,无需覆盖**——仅当你想改端口时才写覆盖行,且**必须写全必填字段**(`host` + `port`),否则启动报 `$port missing required value`(`--dump-config`/smoke 测不出来,只有真启动才暴露)。
102
-
103
- ```yaml
104
- # 仅 web 版需要改端口时适用:覆盖 webserver 行必须写全字段!
105
- - id: webserver
106
- config:
107
- host: 0.0.0.0
108
- port: 3080
109
- ```
110
-
111
- ## 配置(cordis.patch.yml)
112
-
113
- ```yaml
114
- - insert:
115
- - id: mobile-remote
116
- name: dsh-mobile-remote
117
- config:
118
- path: /m
119
- authToken: <访问口令,留空=关闭认证>
120
- pushUrls: [] # 见下方推送配置
121
- # pushContent: standard # 默认 minimal:推送只含事件类型+会话短码(核心内容不外出);standard 才含标题/详情
122
- # rateLimit: { maxFailures: 10, windowMs: 60000, blockMs: 60000 } # 登录失败限流
123
- # trustedHosts: ["<内网穿透中继地址>"] # 仅 frp 等中继方案需要,见 docs/06 §5B
124
- ```
125
-
126
- ## 桌面设置页入口(客户端模块)
127
-
128
- 插件启用后,dsh 设置页会出现**「连接移动端设备」**一页:显示连接二维码(含地址+口令)、电脑地址列表与口令(可复制)。手机 App 扫此二维码自动连接。该页数据仅电脑本机可读取(`/m/api/qr-config` 仅允许 loopback 访问)。
129
-
130
- ## 推送配置(可选,3 分钟)
131
-
132
- > 不配置则无系统推送,其余功能不受影响。三种任选,也可同时配置多个(事件会推送到全部通道)。同会话同类型 60 秒内合并(`pushCooldownMs` 可调),通知中心按会话聚合。
133
- > **隐私(v2.6 起)**:推送默认只含「事件类型 + 会话短码」,会话标题/错误详情等核心内容不经过第三方通道;确需完整内容(信任通道时)设 `pushContent: standard`。
134
-
135
- ### Server酱(微信推送,最省事)
136
-
137
- 1. 手机微信扫码打开 https://sc3.ft07.com/sendkey → 复制 **API URL**(形如 `https://<uid>.push.ft07.com/send/<key>.send`,免备案;老 Turbo 接口 sctapi.ftqq.com 已不可用,2026-08 实测)
138
- 2. 配置:
139
-
140
- ```yaml
141
- pushUrls:
142
- - name: 微信
143
- url: https://<uid>.push.ft07.com/send/<sendkey>.send
144
- format: serverchan
145
- ```
146
-
147
- > ⚠️ Server酱³ 免费版**每天限 5 条**(AUTH 40001),需更多条数请升级。
148
-
149
- ### ntfy(安卓系统通知栏,原生弹窗)
150
-
151
- 1. 手机安装 ntfy App(Google Play / F-Droid / 酷安)
152
- 2. 生成随机主题并订阅:`dsh-<随机串>`(例如 `dsh-a1b2c3d4e5f6`)
153
- 3. 配置:
154
-
155
- ```yaml
156
- pushUrls:
157
- - name: 系统通知
158
- url: https://ntfy.sh/<你的主题>
159
- format: ntfy
160
- ```
161
-
162
- ### Bark(iPhone)
163
-
164
- 1. iPhone 安装 Bark App → 复制推送 key
165
- 2. 配置:
166
-
167
- ```yaml
168
- pushUrls:
169
- - name: Bark
170
- url: https://api.day.app/<你的key>
171
- format: bark
172
- ```
173
-
174
- ### 验证
175
-
176
- 配置后重启,让 agent 跑一个任务——手机收到"✅ 任务完成"通知即成功。
177
-
178
- ## 手机使用
179
-
180
- 0. **下载 App**:[GitHub Releases](https://github.com/201222-L/dsh-mobile-remote/releases/latest) 下载 `DSH-Remote-vX.Y.Z.apk` 安装(或按 dsh-mobile-app/README 自行构建)
181
- 1. 与电脑同一 WiFi;**人不在家**用蒲公英组网等虚拟组网方案(已实测,见 docs/06 §5,App 自动切换地址)
182
- 2. 打开 App →「扫码连接」对准桌面 dsh 设置页二维码(或手动输地址+口令)
183
- 3. 首页直接发消息派活;对话页实时流式回复;通知页看完成/提问/失败
184
-
185
- ## ⚠️ 注意事项
186
-
187
- **安全**
188
- - 访问口令(`authToken`)是唯一凭据:**每台电脑用不同口令**,扫码二维码含口令,请勿截屏转发;怀疑泄露立即更换(改配置重启后二维码自动更新,旧码作废)。
189
- - 仅限局域网/可信内网使用;**禁止将 3080 端口映射/穿透到公网**(详见 docs/04-security.md)。
190
- - `/m/api/qr-config`(桌面二维码数据)仅允许电脑本机读取。
191
-
192
- **使用**
193
- - 会话数据实时存于 PC 端;删除插件/断网不影响已存会话,重装后自动恢复。
194
- - agent 处理上一轮时继续发消息会**排队**(dsh 机制),移动端会提示"正在处理上一轮"。
195
- - 新建会话选的工作目录不在任何已注册工作区时,PC 端按"未分组"显示;在工作区子目录下会自动归属。
196
-
197
- **已知限制**
198
- - 移动端默认以普通模式展示对话时间线与工具活动摘要;可切换调试模式查看原始参数/结果、事件元数据与未知可见事件。图片/Markdown 结果支持预览,文件结果可下载到应用私有目录(保存后提示完整路径,系统相册/下载列表不收录);旧服务端未保存的详情会明确显示不可用。协议/运行时元数据(会话标题、模型选择等)只出现在调试模式;系统提示词、请求快照与压缩摘要不呈现。
199
- - 长任务期间建议等待上一轮完成再发新消息,避免排队混乱。
200
- - 归档(archive)会话与 PC 端同源显示,行为一致。
201
- - 问询/审批弹窗链路随内核版本走对应机制:0.1.2-rc.1+ 为 Agent 作用域瀑布 + 插件 answerer(`both` 双端呈现走内核 `$events` 远程事件通道,与 PC 端 GUI 同通道);更早内核走 `apiProxy` 帧桥(私有协议,未来大版本可能断桥,插件干净降级、随版本更新恢复)。手机不弹时先跑环境诊断看 `approvalMode`/`remoteEvents`(见 FAQ「问询/审批弹窗类」)。
202
- - 通知删除只清记录不"静音":同会话同类新事件仍会产生新通知。
203
- - App 构建签名:正式分发须自建 keystore(换签名 = 换应用,用户需重装重扫);详见 docs/06 §8.2 与 docs/09 §6。
204
- - **与 dsh-web 的移动端远程(`@linxin666/dsh-remote-web-ui`)同装会冲突**:对方把手机页面/API 整体写死在 `/m` 前缀(不可配置),本插件默认也挂在 `/m`——两者抢同一路由前缀可能导致异常/崩溃。共存方法:给本插件配 `path: /mr`(任意非 `/m` 单段)并重启 DSH,手机 App 自动适配无需重装(详见 FAQ「设备/兼容类」)。
205
-
206
- ## 环境诊断
207
-
208
- 设置页 → 环境诊断:检测服务(agents/sessions/llm/权限/预设/工作区)与端点实测,`✅/❌` 一目了然,含检测时间。**升级 dsh 后先跑一次诊断**,红了就是需要适配的地方。
209
-
210
- ## 兼容性
211
-
212
- - **dsh 版本**:v3.1.2/v3.1.3 基线为 **`0.1.2-rc.1` 服务包 = DSH Desktop v2.0.5**(approval/request 瀑布 answerer、`$events` 远程事件双端审批、RPC 网关直通、桌面浏览器门禁适配);v3.0.0–v3.1.1 基线 **`0.1.1-rc.2` = DSH Desktop v2.0.2**(`commands.execute` 四参、桌面版强制回环 → LAN 桥)。更低版本按功能降级,服务依赖与降级行为详见 **[docs/09-compatibility.md](docs/09-compatibility.md)**
213
- - **平台(App)**:Android 7.0+ 全品牌(渲染 Impeller 自动回退;实测小米 17 Pro Max);**iOS 未开发**(开发者无苹果设备,Dart 代码已平台无关,欢迎社区贡献,见 docs/09 §4)
214
- - **平台(桌面)**:Windows/macOS;命令行 dsh web 与桌面端均支持(纯 headless 形态插件静默无操作)
215
- - **个性化**:模型/权限/Agent 预设动态读取 PC 端真实目录,用户自定义自动出现;自定义动作经 `mobileActions` 注册自动上架
216
- - **深度魔改 web profile**(禁用标准服务):对应功能自动降级,不崩溃——诊断页可查每个服务状态
217
-
218
- ## 版本与兼容
219
-
220
- - **版本号统一**:App 版本 = 插件版本 = git tag(如 `v3.0.0` = App 3.0.0+5 + 插件 3.0.0)。GitHub Releases 每个版本同时提供两个附件:`DSH-Remote-vX.Y.Z.apk`(手机装)与 `dsh-mobile-remote-vX.Y.Z.tgz`(电脑插件包,`pnpm add <路径>` 或 `npm install -g` 安装)。
221
- - **版本差矩阵**(一句话:谁旧谁吃亏,但都不崩):
222
-
223
- | 组合 | 结果 |
224
- |---|---|
225
- | 同版本 | ✅ 完美 |
226
- | 插件新 + App 旧 | ✅ 老功能正常,新功能不可见(协议只加不删,未知帧一律忽略) |
227
- | App 新 + 插件旧 | ✅ 老功能正常,新功能提示升级 |
228
- | 破坏性变更 | ❌ 禁止——已发布接口只加字段(docs/08 约定) |
229
-
230
- - 插件源码按 git tag 锁定版本:`"dsh-mobile-remote": "github:201222-L/dsh-mobile-remote#v3.0.0"`(不带 `#` 取最新)。
231
- - 实际配对可在 App **设置 → 关于 → 版本**(`App vX · 插件 vY`)或环境诊断页对照。
232
-
233
- ## 文档
234
-
235
- - `README.md` — 项目总览:功能、安装、配置、注意事项
236
- - `FAQ.md` — 常见问题速查(连接/使用/安全/弹窗/设备)
237
- - `CHANGELOG.md` — 版本历史
238
- - `CONTRIBUTING.md` — 贡献指南
239
- - `docs/00-开发总纲.md` — 产品规划、阶段划分、决策记录
240
- - `docs/01-PRD.md` ~ `docs/07-user-manual.md` — 需求/架构/API/安全/测试/部署/手册
241
- - `docs/08-扩展开发指南.md` — **二次开发:动作区、自定义推送、页面/App 定制、分享你的版本**
242
- - `docs/09-compatibility.md` — **兼容性:内核耦合点、降级行为、多品牌/苹果端、已知问题、签名**
243
-
244
- ## 开发
245
-
246
- ```
247
- lib/index.js 服务端:路由、认证、事件桥、catalog、会话、通知、动作、推送、默认配置
248
- lib/client.js 桌面 GUI 客户端模块(设置页「连接移动端设备」)
249
- dsh-mobile-app/ Flutter 原生 App(扫码连接 + 全部移动界面)
250
- tools/ 验证脚本(e2e-check / phase1-check / push-test)
251
- prototype/ 界面原型(v7 定稿,设计参考)
252
- ```
253
-
254
- ## 许可
255
-
256
- [MIT](LICENSE)
8
+ 本包**没有**可执行入口(无 main/exports/bin),不包含插件代码或安装脚本,
9
+ 也不是 DSH 插件/bundle。它由 `@marktrue/dsh-mobile-remote@3.2.2-rc.1` 的精确别名依赖随插件一起安装。
package/manifest.json ADDED
@@ -0,0 +1,21 @@
1
+ {
2
+ "schema": 1,
3
+ "app": {
4
+ "version": "3.2.2+27",
5
+ "file": "DSH-Remote-v3.2.2.apk",
6
+ "size": 75947208,
7
+ "sha256": "4a77e87829857faf3c1e6460cebf2c0f6de98dd192e05ac4817ba7a501c23829"
8
+ },
9
+ "plugin": {
10
+ "version": "3.2.2-rc.1",
11
+ "file": "dsh-mobile-remote-v3.2.2-rc.1.tgz",
12
+ "size": 3847085,
13
+ "sha256": "0f3b1591b60e89c0150568ea0d6c4802d107fc0aed5ab5cf0b272fa2c1789062",
14
+ "contentSha256": "8e883f22847305b065daacf2e5749e77524d9c9d95d21ea79ae8c2e6402a6358"
15
+ },
16
+ "version": "3.2.2+27",
17
+ "apk": "DSH-Remote-v3.2.2.apk",
18
+ "size": 75947208,
19
+ "sha256": "4a77e87829857faf3c1e6460cebf2c0f6de98dd192e05ac4817ba7a501c23829",
20
+ "notes": "## v3.2.2-rc.1(build 27,issue #39 + upstream v3.2.2)— NPM-only 自动更新 + 上游 v3.2.2 并入\n\n> 插件 `3.2.2-rc.1` / App `3.2.2+27` / 载体 `3.2.2-rc.1-app`。本 fork 的预发布候选线;经 GitHub Actions 发布到 npm(`rc` dist-tag)。\n\n### 随上游并入的改动(main v3.2.2 基线,`09dd2934`)\n\n本分支基于 upstream/main 的 v3.2.2 发布提交,以下上游已交付内容一并保留:\n\n#### 审批兜底(真机验收修复)\n\n- 下游返回 `unavailable` 不再抢先应答:仅在桌面给出**真实答复**时才收手机卡;下游 unavailable 时保留手机条目,等 `/respond` 或手机侧 fail-close 超时给出最终结果。\n- 回归覆盖:下游立即 unavailable 时手机仍可作答,且结果以手机为准。\n\n#### 对话轮次导航(PR #42)\n\n- 一期:对话页右侧刻度轨按轮次跳转;长会话定位修复(尺寸缓存、有符号估算、尝试次数上界、尾部安全网)。\n- 二期:接入宿主 `turnOutline` 投影,未加载轮次以短淡刻度显示,点它按 200 条/页有界跨页加载后定位;用户主动滚动即取消,四种终止结果均有明确说明。\n- 新增只读端点 `GET /m/api/turn-outline?sessionId=`:四态(`available` / `empty` / `capability-missing` / `read-failed`)+ 稳定错误码、5 秒有界等待、冷折叠串行(并发 1)+ 有界队列(8)、按体积 256 KB 截断并显式标 `truncated`。\n- 能力位 `capabilities.turnOutline` 按宿主是否真的挂载投影判定;旧插件/旧 App 双方都能降级到既有行为;长会话跨页跳转的限制如实标注。\n\n#### App 在线本地通知(#46)\n\n- SSE 在线且 App **不在前台**时,`approval/requested` 与 `question/requested` 直接弹系统本地通知(Android 13+ 首次启动请求通知权限);点通知直达该会话的待办卡。\n- 同一 `rpcId` 5 分钟内只提醒一次(SSE 重连/回放会重放未结算帧);回到前台自动清掉系统通知;`pushUrls` 退为「App 被杀/离线」时的兜底。\n- Android 构建开启 core library desugaring(`desugar_jdk_libs 2.1.5`),满足通知库要求。\n\n#### 二维码地址优选(#49)\n\n- 新增纯函数 `orderQrAddresses`:默认仍是「局域网私有地址优先」;**仅当机器上没有任何 `10./192.168.x/172.16-31` 地址时**,才把 Tailscale CGNAT(`100.64/10`)提到最前。\n- 7 项回归覆盖排序与端到端载荷选择;`docs/03-api.md` 同步。\n\n### 更新源与安全\n\n- 插件更新唯一来源为宿主有效 npm 配置(`@marktrue:registry` 优先,未设置时用默认 `registry`),手机不直连 npm,registry 凭据不下发。\n- 稳定版跟随 `latest`;预发布跟随自身通道(`alpha` / `rc`);carrier 使用精确 `<插件完整版本>-app` 并由 `app` tag 约束。\n- 校验 npm `dist.integrity`、插件内容哈希、载体清单、APK 身份与签名;缺 carrier、元数据不一致、降级一律 fail-closed,不改 profile、不触发重启。\n- profile 依赖保持精确 npm 版本,不保留长期 `file:` tarball;回滚恢复更新前精确 spec。\n- 旧 carrier 缺轻量元数据时:仅用户显式操作后准备并校验 carrier,先展示真实 App build,再要求最终确认;最终 POST 前不改 profile。\n\n### 手机 / 桌面\n\n- 移除 App 更新源菜单;App-only 入口改名「检查 App 更新」。\n- 插件更新详情与安装日志合并为可折叠、可复制的脱敏面板,按 opId + 序号回放,重启后仍可查看。\n- 新增「更新进度」卡片:六步时间线、当前阶段、已用时、目标版本、最近一行 pnpm 输出;失败直接显示可读原因与稳定码。\n- 完成后等待宿主固定 App 发布就绪再显示完成;「检查 App 更新」自动接续,无需回首页刷新。\n- 历史失败/未确认事务不再阻塞 App 更新;APK 按 sha 复用,安装未完成给出可执行指引。\n- 桌面「连接移动端」同步显示阶段文本与最新输出。\n\n### 其他随分支并入\n\n- Git 标签页设置顺序与 SSE 取消回归覆盖补齐。\n\n### 平台\n\n- Windows:npm/pnpm 经 shell 调用,缺失客户端给出稳定原因;桌面原生自更新仍受 `restart-unsupported` 限制(Linux/WSL 宿主可完成自更新)。\n\n\n### 上游原文(v3.2.2,`09dd2934`)\n\n以下为上游 main 的 v3.2.2 发布条目原文(标题层级已下移以适配本节):\n\n#### v3.2.2(2026-10-27,issue #46 / #49,PR #42)— 在线本地通知 + 轮次导航 + 二维码组网地址优选 + 审批兜底修复\n\n> 版本:插件 `3.2.2` / App `3.2.2+25`。\n> 验收门禁:`node --test test/*.mjs`(200 通过 + 1 平台跳过)、`timeline-contract`(125)、`account-usage`(15)、`account-usage-adversarial`(19)、`flutter analyze`(0 issue)、`flutter test`(509)。\n\n##### 审批兜底:下游 unavailable 不再抢答(真机验收发现)\n\n- `dualRoute` 原来把「下游返回 `unavailable`」也当成先答:没有任何桌面 `$events` 客户端时,内核转发立刻给 `unavailable`,插件会同时收掉手机侧卡片——手机根本来不及作答。\n- 现在只在桌面给出**真实答复**时才收手机卡;下游是 `unavailable` 时保留手机条目,等 `/respond` 或手机侧 fail-close 超时给出最终结果。\n- 新增回归:下游立即 `unavailable`,手机仍可作答且结果以手机为准;把修复回退该用例即变红。\n\n##### 对话轮次导航(PR #42)\n\n- **一期**:对话页右侧刻度轨按轮次跳转;长会话里的定位修复(尺寸缓存、有符号估算、尝试次数上界、尾部安全网)。\n- **二期**:接入宿主 `turnOutline` 投影,已加载轮次正常显示、未加载轮次以短淡刻度显示,点它按 **200 条/页**有界跨页加载后定位;用户主动滚动即取消,四种终止结果(覆盖成功 / 到顶不可达 / 页数上限 / 用户取消)都有明确说明。\n- **新增只读端点** `GET /m/api/turn-outline?sessionId=`:四态(`available` / `empty` / `capability-missing` / `read-failed`)+ 稳定错误码、5 秒有界等待、冷折叠串行(并发 1)+ 有界队列(8)、按体积 256 KB 截断并显式标 `truncated`。\n- **能力位** `capabilities.turnOutline`:按宿主是否真的挂载投影判定,不按版本号推断;旧插件/旧 App 双方都能降级到既有行为。\n- 已知限制(如实标注):轮次特别多的长会话,跨页跳转可能失败或流畅度一般。\n\n##### App 在线本地通知(#46)\n\n- SSE 在线且 App **不在前台**时,`approval/requested` 与 `question/requested` 直接弹系统本地通知(Android 13+ 首次启动请求通知权限);点通知直达该会话的待办卡。\n- 文案:`需要授权:<工具名>` + 理由;`需要你回答` + 首个问题;同一 `rpcId` 5 分钟内只提醒一次(SSE 重连/回放会重放未结算帧)。\n- 回到前台自动清掉系统通知(App 内已有卡片与横幅,避免重复打扰);`pushUrls` 退为「App 被杀/离线」时的兜底。\n- Android 构建开启 core library desugaring(`desugar_jdk_libs 2.1.5`),这是该通知库的硬性要求。\n\n##### 二维码地址优选(#49)\n\n- 新增纯函数 `orderQrAddresses`:默认仍是「局域网私有地址优先」;**仅当机器上没有任何 `10./192.168.x/172.16-31` 地址时**,才把 Tailscale CGNAT(`100.64/10`)提到最前,避免校园网/热点等场景首选到不可达地址。\n- 7 项回归覆盖排序与端到端载荷选择;`docs/03-api.md` 同步。"
21
+ }
package/package.json CHANGED
@@ -1,79 +1,26 @@
1
1
  {
2
2
  "name": "@marktrue/dsh-mobile-remote",
3
- "version": "3.2.2-alpha.1",
4
- "description": "DSH Mobile:把 DeepSeek Harness 变成随身控制台——手机远程发消息派活、看进度、收通知、审批决策、管理会话;配套 Flutter App(当前 Android 端,iOS 未开发)",
5
- "type": "module",
6
- "main": "lib/index.js",
7
- "scripts": {
8
- "release:carrier:check": "node dsh-mobile-app/tools/publish-carrier-check.mjs"
9
- },
10
- "exports": {
11
- ".": "./lib/index.js",
12
- "./client": "./lib/client.js",
13
- "./package.json": "./package.json"
14
- },
3
+ "version": "3.2.2-rc.1-app",
4
+ "description": "DSH Mobile Remote App 载体(与 @marktrue/dsh-mobile-remote@3.2.2-rc.1 配对):随插件分发 APK 与发布清单,仅作数据分发,无运行入口。",
5
+ "appVersion": "3.2.2+27",
6
+ "pluginContentSha256": "8e883f22847305b065daacf2e5749e77524d9c9d95d21ea79ae8c2e6402a6358",
15
7
  "files": [
16
- "lib",
17
- "docs",
8
+ "DSH-Remote-v3.2.2.apk",
9
+ "manifest.json",
18
10
  "README.md",
19
- "FAQ.md",
20
- "CHANGELOG.md",
21
- "CONTRIBUTING.md",
22
- "LICENSE",
23
- "cordis.patch.yml",
24
- "!docs/adr",
25
- "!docs/agents",
26
- "!docs/design"
11
+ "LICENSE"
27
12
  ],
28
13
  "dsh": {
29
- "client": {
30
- "platform": "web",
31
- "inject": [
32
- "@deepseek-ai/dsh-client-runtime",
33
- "@deepseek-ai/dsh-client-ui-settings"
34
- ]
35
- },
36
- "bundle": {
37
- "patch": "./cordis.patch.yml"
38
- }
14
+ "appCarrier": true
39
15
  },
40
- "keywords": [
41
- "deepseek",
42
- "dsh",
43
- "mobile",
44
- "remote",
45
- "agent"
46
- ],
16
+ "private": false,
47
17
  "license": "MIT",
48
- "dependencies": {
49
- "qrcode": "^1.5.4"
50
- },
51
- "bundleDependencies": [
52
- "qrcode"
53
- ],
54
- "optionalDependencies": {
55
- "@marktrue/dsh-mobile-remote-app": "npm:@marktrue/dsh-mobile-remote@3.2.2-alpha.1-app"
56
- },
57
- "peerDependencies": {
58
- "@deepseek-ai/dsh-credentials": ">=0.1.0-rc.6 <0.3.0",
59
- "@deepseek-ai/dsh-llm": ">=0.1.0-rc.6 <0.3.0",
60
- "@deepseek-ai/dsh-sandbox-policy": ">=0.1.0-rc.6 <0.3.0",
61
- "@deepseek-ai/dsh-scope": ">=0.1.0-rc.6 <0.3.0",
62
- "@deepseek-ai/schemastery": ">=3.18.1",
63
- "dsh-codex-connect": ">=0.1.0-alpha.4.5"
64
- },
65
- "peerDependenciesMeta": {
66
- "dsh-codex-connect": {
67
- "optional": true
68
- }
69
- },
70
18
  "publishConfig": {
71
- "registry": "https://registry.npmjs.org",
72
- "access": "public"
19
+ "access": "public",
20
+ "tag": "app"
73
21
  },
74
22
  "repository": {
75
23
  "type": "git",
76
24
  "url": "git+https://github.com/marktrue-ahu/dsh-mobile-remote.git"
77
- },
78
- "homepage": "https://github.com/marktrue-ahu/dsh-mobile-remote#readme"
25
+ }
79
26
  }