From adfd2912a541e29e95a8e4221896f3ec2f6633b1 Mon Sep 17 00:00:00 2001 From: commilitia Date: Sun, 28 Jun 2026 19:49:37 +0800 Subject: [PATCH] =?UTF-8?q?docs=20=E6=9E=B6=E6=9E=84=E6=8F=8F=E8=BF=B0?= =?UTF-8?q?=E8=A1=A5=E5=8E=9F=E7=94=9F=E6=95=B0=E6=8D=AE=E9=9D=A2=EF=BC=9A?= =?UTF-8?q?ios/PLAN=20=C2=A7=E9=99=84=20=E5=AF=B9=E7=85=A7=E8=A1=A8=20+=20?= =?UTF-8?q?README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ios/PLAN.md §附「与桌面端策略对照」表「引擎」行原写「桌面 Go 原生 / iOS 复用 web/src JS(无头)」,未反映数据面已下沉原生——改为「JS 编排 + 原生数据面」(桌面 Go/pion、iOS libwebrtc),并加表下数据面对称说明(决策 F) - README.md「已落地」补「原生数据面」条:P2P 数据通道从 WebView JS 下沉原生(桌面 pion / iOS libwebrtc),逃 256KB rwnd 与渲染器节流,信令/中继/编排留共享 JS 引擎 --- README.md | 1 + ios/PLAN.md | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a247de7..a16eca2 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,7 @@ MVP(M0–M13)已上线 prod(OIDC PKCE 接入自建 Casdoor,Cloudflare Re - **剪贴板同步**:单条覆写式云剪贴板(短 TTL 限暴露面)+ 文本消息一次性通道 - **桌面客户端**:Wails v2(macOS universal `.app` + Windows `.exe`)—— 瘦客户端复用 web,业务全走后端 API;refresh_token 存系统密钥库(信封加密) +- **原生数据面**:P2P 数据通道从系统 WebView 的 JS 下沉到原生——桌面走 Go/pion、iOS(原生 SwiftUI 客户端)走 libwebrtc——逃出 WebKit / WebView2 写死的 256KB SCTP 接收窗与渲染器节流;信令 / 中继 / 编排仍由共享 JS 引擎统一,三端共享同一线协议(详见 docs 分支 `CHANGELOG`) - **浏览器免重登 + PWA**:可安装为独立 PWA;浏览器侧 refresh_token 不再进 JS,改由服务端 HttpOnly cookie 会话持有(AES-256-GCM 落盘),关闭重开自动免重登(7 天滑动失活),设备名随会话持久化(抗 PWA 存储清除) - **推送通知**:页面 / PWA 关闭时,收到文件、消息、传输完成或失败以系统通知提醒;页面打开时仍走应用内提示。网页走 Web Push(VAPID,覆盖浏览器 / Android / iOS 16.4+ 已安装 PWA),桌面客户端走原生系统通知(仅窗口非前台才弹)。文案按设备语言在服务端渲染(中简 / 中繁 / 英) - **扫码登录**:临时借用陌生设备时,陌生设备显二维码、已登录手机扫码批准即可登入(微信 / WhatsApp 网页版模型)。批准方选“信任此设备(7 天)”或“仅此次(1 小时)”,授予的是受限访客会话(能收发文件,不能改账号 / 不能再批准别的设备 / 不能签发长效 token)。三密钥分离:二维码只含批准信息,会话只投递给持私有轮询密钥的原设备,偷拍二维码者拿不到会话。身份仍源自 OAuth provider,cdrop 自维护薄账户层 + 自签会话令牌(详见 `AUTH.md`) diff --git a/ios/PLAN.md b/ios/PLAN.md index 10d6267..e3f7a68 100644 --- a/ios/PLAN.md +++ b/ios/PLAN.md @@ -306,7 +306,7 @@ iOS 界面引入与 web 一致的品牌资产与字体栈——这是强约束 | 维度 | 桌面(Wails) | iOS(arch A) | |---|---|---| | UI | 复用 `web/src` | 原生 SwiftUI(分叉,PARITY 管) | -| 引擎 | Go 原生 | 复用 `web/src` JS(无头) | +| 引擎 | JS 编排(`web/src`,与 UI 同 WebView)+ **Go/pion 数据面** | JS 编排(`web/src`,离屏无头)+ **原生 libwebrtc 数据面** | | 桥方向 | JS-UI 顶层 → Go | SwiftUI 顶层 → 无头 JS | | refresh_token | Go keyring | iOS Keychain | | 登录 | loopback PKCE | `ASWebAuthenticationSession` / 扫码 | @@ -314,3 +314,5 @@ iOS 界面引入与 web 一致的品牌资产与字体栈——这是强约束 | 剪贴板 | Go Monitor 实时双向 | 控制中心手动两控件(纯原生 REST) | | 平台判定 | `isDesktop()`(`window.runtime`) | `isIOSShell()`(`window.webkit.messageHandlers`) | | 分发 | Dropbox 旁加载 | 旁加载(非 App Store) | + +> **数据面对称(2026-06-28)**:两端结构同构——共享 JS 引擎跑编排(信令 / relay / presence / 状态机),P2P 数据面下沉原生(桌面 Go/pion、iOS libwebrtc),逃 WebView WebRTC 的 256KB rwnd 与渲染器节流;三端共享同一线协议。详见 `desktop/NATIVE-TRANSFER.md`(决策 F)。