@marktrue/dsh-mobile-remote 3.2.2-alpha.1-app → 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.
@@ -1,4 +1,4 @@
1
1
  [diffend] Oversized file quarantined before diffing.
2
2
  name: package/DSH-Remote-v3.2.2.apk
3
- size: 75947212 bytes
4
- sha256: efc260a6b1513fd068b5bb3f2fd17fa5589ded3d9bbe52e0323c466c0dbb1ca1
3
+ size: 75947208 bytes
4
+ sha256: 4a77e87829857faf3c1e6460cebf2c0f6de98dd192e05ac4817ba7a501c23829
package/README.md CHANGED
@@ -1,9 +1,9 @@
1
- # DSH Mobile Remote App 载体(@marktrue/dsh-mobile-remote@3.2.2-alpha.1-app)
1
+ # DSH Mobile Remote App 载体(@marktrue/dsh-mobile-remote@3.2.2-rc.1-app)
2
2
 
3
3
  本包是 DSH Mobile Remote 的 **App 载体**,只承担数据分发角色:
4
4
 
5
- - `DSH-Remote-v3.2.2.apk`:与插件 3.2.2-alpha.1 配对的 Android 安装包;
5
+ - `DSH-Remote-v3.2.2.apk`:与插件 3.2.2-rc.1 配对的 Android 安装包;
6
6
  - `manifest.json`:schema 1 发布清单,描述同一次发布的两端产物身份与哈希。
7
7
 
8
8
  本包**没有**可执行入口(无 main/exports/bin),不包含插件代码或安装脚本,
9
- 也不是 DSH 插件/bundle。它由 `@marktrue/dsh-mobile-remote@3.2.2-alpha.1` 的精确别名依赖随插件一起安装。
9
+ 也不是 DSH 插件/bundle。它由 `@marktrue/dsh-mobile-remote@3.2.2-rc.1` 的精确别名依赖随插件一起安装。
package/manifest.json CHANGED
@@ -1,21 +1,21 @@
1
1
  {
2
2
  "schema": 1,
3
3
  "app": {
4
- "version": "3.2.2+26",
4
+ "version": "3.2.2+27",
5
5
  "file": "DSH-Remote-v3.2.2.apk",
6
- "size": 75947212,
7
- "sha256": "efc260a6b1513fd068b5bb3f2fd17fa5589ded3d9bbe52e0323c466c0dbb1ca1"
6
+ "size": 75947208,
7
+ "sha256": "4a77e87829857faf3c1e6460cebf2c0f6de98dd192e05ac4817ba7a501c23829"
8
8
  },
9
9
  "plugin": {
10
- "version": "3.2.2-alpha.1",
11
- "file": "dsh-mobile-remote-v3.2.2-alpha.1.tgz",
12
- "size": 3846507,
13
- "sha256": "ba0b19983021d764533df54de961780377d6907c78b3db012759159506faefd7",
14
- "contentSha256": "a93a0554c6d14645958b83a137389c989c3c07eb5ff88196e4114bb06f0ef172"
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
15
  },
16
- "version": "3.2.2+26",
16
+ "version": "3.2.2+27",
17
17
  "apk": "DSH-Remote-v3.2.2.apk",
18
- "size": 75947212,
19
- "sha256": "efc260a6b1513fd068b5bb3f2fd17fa5589ded3d9bbe52e0323c466c0dbb1ca1",
20
- "notes": "## v3.2.2-alpha.1(build 26,issue #39 + upstream v3.2.2)— NPM-only 自动更新 + 上游 v3.2.2 并入\n\n> 插件 `3.2.2-alpha.1` / App `3.2.2+26` / 载体 `3.2.2-alpha.1-app`。本 fork 的独立预发布线;仅发布到本地 registry 做本机验收,不触发公共 npm 发布或 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 宿主可完成自更新)。"
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
21
  }
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@marktrue/dsh-mobile-remote",
3
- "version": "3.2.2-alpha.1-app",
4
- "description": "DSH Mobile Remote App 载体(与 @marktrue/dsh-mobile-remote@3.2.2-alpha.1 配对):随插件分发 APK 与发布清单,仅作数据分发,无运行入口。",
5
- "appVersion": "3.2.2+26",
6
- "pluginContentSha256": "a93a0554c6d14645958b83a137389c989c3c07eb5ff88196e4114bb06f0ef172",
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",
7
7
  "files": [
8
8
  "DSH-Remote-v3.2.2.apk",
9
9
  "manifest.json",