docs: 更新全客户端命名与构建分发文档
This commit is contained in:
+37
-9
@@ -3,18 +3,18 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>cdrop — Changelog</title>
|
||||
<meta name="generated-at" content="2026-06-28">
|
||||
<meta name="source" content="cdrop · docs branch">
|
||||
<title>Commilitia Drop — Changelog</title>
|
||||
<meta name="generated-at" content="2026-07-31">
|
||||
<meta name="source" content="Commilitia Drop · docs branch">
|
||||
<!-- RUNTIME_CSS -->
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<header class="page">
|
||||
<div class="meta">
|
||||
<h1>cdrop — Changelog</h1>
|
||||
<h1>Commilitia Drop — Changelog</h1>
|
||||
<p class="subtitle">时间倒序。细粒度迭代见 git 历史;本档只记录结构性 / 行为性变更与重要 fix。</p>
|
||||
<p class="timestamp"><time>2026-06-28</time> · <span>docs branch</span></p>
|
||||
<p class="timestamp"><time>2026-07-31</time> · <span>docs branch</span></p>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<!-- ACTIONS -->
|
||||
@@ -25,6 +25,21 @@
|
||||
|
||||
<p class="lede">本 Changelog 自 2026-05-22 起以 HTML 格式维护。此前之变更可从 main 分支 <code>git log</code> 取得;下表为近期较显著之 commit。</p>
|
||||
|
||||
<h2>2026-07-31 — 全客户端正式命名、认证迁移与构建分发收口</h2>
|
||||
|
||||
<p>Windows、macOS、iPhone、iPad、Web 与服务端完成一次面向用户文本和可诊断协议面的统一。正式产品名固定为 <strong>Commilitia Drop</strong>;桌面端移除 “Desktop” 后缀,每个平台只保留一份正式客户端。</p>
|
||||
|
||||
<ul>
|
||||
<li><strong>正式客户端矩阵</strong>:Windows 使用 Wails x86-64;macOS 继续使用 Wails ARM64;iPhone 与 iPad 共用 SwiftUI target;Web 使用 React SPA / PWA。原生 macOS target 仍是迁移候选,在功能对等、签名扩展和真机验收完成前不切换,也不作为第二个 macOS 客户端发布</li>
|
||||
<li><strong>用户可见命名与协议</strong>:应用显示名统一为 “Commilitia Drop”;登录回调改为 <code>commilitia-drop://auth-callback</code>;DataChannel 与 iOS 文件流 Scheme 改为 <code>commilitia-drop-file</code>;Bonjour 服务类型改为 <code>_commilitia-drop._tcp</code>;Auth Broker application key 原位迁移为 <code>commilitia-drop</code></li>
|
||||
<li><strong>内部身份兼容边界</strong>:Bundle ID、App Group、Keychain service、LaunchAgent label、环境变量、数据库与配置目录在不直接决定系统显示名时保持稳定,以保留既有权限、钥匙串和配置。稳定 AppId 本身不作为用户可见命名迁移对象</li>
|
||||
<li><strong>认证链修复</strong>:Broker、Caddy 与服务端 application key 同步后,修复桌面端“无法连接”以及 iPhone / iPad 在 Broker 批准后显示“登录失败”的问题;旧 session 允许失效,双移动端已重新登录验证</li>
|
||||
<li><strong>macOS 分发</strong>:复用既有 Developer ID Application 证书,对 Wails ARM64 app 与 DMG 完成 hardened runtime 签名、Apple 公证、staple 与 Gatekeeper 验证;正式分发只保留公证 DMG</li>
|
||||
<li><strong>Windows 与 iOS 安装</strong>:Windows x86-64 客户端已以唯一正式文件安装并更新登录启动项,当前产物尚无 Authenticode 签名;iPhone 与 iPad 全程使用 CLI、复用既有 Apple Development 证书覆盖安装,不打开 Xcode GUI、不创建新证书</li>
|
||||
<li><strong>分支收口</strong>:<code>native-transfer</code> 的原生数据面工作已并入 <code>main</code>,旧分支不再作为开发或发布入口</li>
|
||||
<li><strong>流程文档与验证</strong>:新增 <a href="CLIENT_BUILD_INSTALL.md">全客户端构建与安装手册</a>,记录 Web / 服务端、Broker、Windows、macOS、iPhone、iPad 的构建、签名、安装、分发和验证步骤。代码落点为 main commit <code>c480f0d</code></li>
|
||||
</ul>
|
||||
|
||||
<h2>2026-06-28 — 原生数据面收口:桌面 pion + iOS libwebrtc,逃离 WebView WebRTC 限制</h2>
|
||||
|
||||
<p>P2P 数据面(DataChannel 字节收发)从系统 WebView 的 JS 移出、改跑原生:桌面用 <code>pion/webrtc</code>(Go 进程),iOS 用 <strong>libwebrtc</strong>(<code>RTCPeerConnection</code>)。两端逃出 WebKit 写死的 256KB SCTP 接收窗与渲染器节流;JS 仅留信令 / 会话 / presence / 消息 / relay 编排。</p>
|
||||
@@ -32,7 +47,7 @@
|
||||
<ul>
|
||||
<li><strong>桌面 pion 数据面</strong>:吞吐专项定位两根因 —— WebView2 的 SCTP 处理活在渲染器进程内、窗口隐藏即被 backgrounding 节流(Windows host↔host 仍 100KB/s),WebKit usrsctp 接收窗写死 256KB。改由 Go <code>pion/webrtc</code> 跑数据面(<code>SetSCTPMaxReceiveBufferSize</code> 大 rwnd、真实 IP host 候选去 mDNS、Go 直接读写磁盘去 base64 桥),窗口状态与网络栈彻底解耦;引入 <code>p2pBackend</code> 抽象使 <code>transfer.ts</code> 编排零改动(<code>isDesktop()</code> 走 Go 桥、web / iOS 走 JS)。Win↔Mac 实测约 10MB/s</li>
|
||||
<li><strong>iOS libwebrtc 数据面(U1→U2 翻案)</strong>:先试 gomobile + pion(与桌面同引擎,U1),真机 POC 证伪 —— Go raw BSD socket 不与 iOS Network framework 集成(连接时好时坏 + 中途断流)。按闸退到 <strong>libwebrtc.framework</strong>(stasel/WebRTC M149 经 SPM、pin <code>149.0.0</code>),新增 <code>LibWebRtcEngine.swift</code> 端口桌面线协议;libwebrtc 原生集成 iOS 网络栈 + DcSCTP ~5MB 默认 rwnd</li>
|
||||
<li><strong>三端线协议逐字节对齐</strong>:DataChannel <code>cdrop-file</code>(ordered)、<code>meta</code> / 二进制分片(64KB) / <code>done</code> / <code>ack</code> 帧、16MB-4MB 水位背压、接收端 ack 追平完成、不冲突落盘 —— 桌面 pion ↔ iOS libwebrtc ↔ 浏览器 JS 互通。新增结构化日志把 pion 内部日志路由到宿主(真机无 stderr 时诊断连接);进度回调 ~10Hz 节流(高吞吐下每片一回调打满宿主主线程)</li>
|
||||
<li><strong>三端线协议逐字节对齐</strong>:DataChannel 当时名为 <code>cdrop-file</code>(2026-07-31 已迁移为 <code>commilitia-drop-file</code>),采用 ordered、<code>meta</code> / 二进制分片(64KB) / <code>done</code> / <code>ack</code> 帧、16MB-4MB 水位背压、接收端 ack 追平完成、不冲突落盘 —— 桌面 pion ↔ iOS libwebrtc ↔ 浏览器 JS 互通。新增结构化日志把 pion 内部日志路由到宿主(真机无 stderr 时诊断连接);进度回调 ~10Hz 节流(高吞吐下每片一回调打满宿主主线程)</li>
|
||||
<li>验证:环回端到端 20MB 逐字节完整性 + 模拟器全 app 编译 + web typecheck / build 过;iOS 真机已装、用户反馈“传输总体良好”,真网吞吐互通为剩余闸。设计依据见 <code>desktop/NATIVE-TRANSFER.md</code> §7/§8、<code>ios/PLAN.md</code> 决策 F</li>
|
||||
<li>commit <code>ab57afd</code>(桌面 pion)· <code>f1a00d1</code> · <code>349d94a</code>(iOS libwebrtc,native-transfer 分支)</li>
|
||||
</ul>
|
||||
@@ -205,23 +220,36 @@
|
||||
</main>
|
||||
|
||||
<footer class="page">
|
||||
<p>cdrop · docs branch · CHANGELOG</p>
|
||||
<p>Commilitia Drop · docs branch · CHANGELOG</p>
|
||||
</footer>
|
||||
|
||||
<!-- RUNTIME_SPRITE -->
|
||||
|
||||
<script type="text/markdown" id="md-source">
|
||||
# cdrop — Changelog
|
||||
# Commilitia Drop — Changelog
|
||||
|
||||
时间倒序。细粒度迭代见 git 历史;本档只记录结构性 / 行为性变更与重要 fix。
|
||||
|
||||
## 2026-07-31 — 全客户端正式命名、认证迁移与构建分发收口
|
||||
|
||||
Windows、macOS、iPhone、iPad、Web 与服务端完成面向用户文本和可诊断协议面的统一。正式产品名固定为 **Commilitia Drop**;桌面端移除 “Desktop” 后缀,每个平台只保留一份正式客户端。
|
||||
|
||||
- 正式客户端矩阵:Windows Wails x86-64;macOS 继续使用 Wails ARM64;iPhone / iPad 共用 SwiftUI target;Web 使用 React SPA / PWA。原生 macOS target 仍是迁移候选,完成对等与验收前不切换、不并行发布
|
||||
- 用户可见命名与协议:显示名 “Commilitia Drop”;回调 `commilitia-drop://auth-callback`;DataChannel / iOS 文件流 Scheme `commilitia-drop-file`;Bonjour `_commilitia-drop._tcp`;Broker application key `commilitia-drop`
|
||||
- 内部身份兼容边界:Bundle ID、App Group、Keychain service、LaunchAgent label、环境变量、数据库与配置目录在不直接决定显示名时保持稳定;稳定 AppId 本身不迁移
|
||||
- 认证链修复:Broker、Caddy 与服务端 application key 同步,修复桌面“无法连接”及 iPhone / iPad 批准后“登录失败”;旧 session 允许失效,双移动端已重登验证
|
||||
- macOS:复用既有 Developer ID Application 证书,Wails ARM64 app / DMG 完成 hardened runtime 签名、Apple 公证、staple 与 Gatekeeper 验证;正式分发只留 DMG
|
||||
- Windows / iOS:Windows x86-64 以唯一正式文件安装并更新登录启动项(当前尚无 Authenticode);iPhone / iPad 仅用 CLI 和既有 Apple Development 证书覆盖安装,不用 Xcode GUI、不建新证书
|
||||
- 分支收口:`native-transfer` 的原生数据面工作已并入 `main`,旧分支不再作为开发或发布入口
|
||||
- 新增全客户端构建与安装手册 `CLIENT_BUILD_INSTALL.md`;代码落点 main commit `c480f0d`
|
||||
|
||||
## 2026-06-28 — 原生数据面收口:桌面 pion + iOS libwebrtc,逃离 WebView WebRTC 限制
|
||||
|
||||
P2P 数据面从系统 WebView 的 JS 移出改跑原生:桌面 pion(Go),iOS libwebrtc(RTCPeerConnection)。两端逃出 WebKit 写死的 256KB 接收窗与渲染器节流;JS 仅留信令 / 会话 / presence / 消息 / relay 编排。
|
||||
|
||||
- 桌面 pion:吞吐两根因(渲染器节流 + 256KB rwnd)经 Go pion 根治(大 rwnd / 真 host 候选去 mDNS / 直接读写磁盘去 base64 桥);p2pBackend 抽象使 transfer.ts 编排零改动。Win↔Mac 约 10MB/s
|
||||
- iOS libwebrtc(U1→U2 翻案):gomobile + pion 真机证伪(Go raw socket 不与 iOS Network framework 集成),退 libwebrtc.framework(stasel/WebRTC M149 SPM pin 149.0.0),LibWebRtcEngine.swift 端口桌面线协议
|
||||
- 三端线协议逐字节对齐(cdrop-file ordered / meta + chunk(64KB) + done + ack / 16MB-4MB 水位 / ack 追平完成 / 不冲突落盘)互通;pion 日志路由宿主 + 进度 ~10Hz 节流
|
||||
- 三端线协议逐字节对齐(当时名为 cdrop-file,2026-07-31 已迁移为 commilitia-drop-file;ordered / meta + chunk(64KB) + done + ack / 16MB-4MB 水位 / ack 追平完成 / 不冲突落盘)互通;pion 日志路由宿主 + 进度 ~10Hz 节流
|
||||
- 环回 20MB 逐字节 + 模拟器全编 + web 双过;真机已装、真网吞吐为剩余闸。见 NATIVE-TRANSFER.md §7/§8、PLAN 决策 F
|
||||
- commit ab57afd(桌面 pion)· f1a00d1 · 349d94a(iOS,native-transfer 分支)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user