feat: 统一 Commilitia Drop 全客户端命名与分发
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# cdrop — Commilitia Drop
|
||||
# Commilitia Drop
|
||||
|
||||
跨 OS 剪贴板与文件传输服务。架构文档(`PROJECT_BRIEF.md` / `FRONTEND_DESIGN.md`)与 Changelog 位于 **`docs` 分支**:
|
||||
|
||||
@@ -23,7 +23,8 @@ git submodule update --init --recursive
|
||||
MVP(M0–M13)已上线 prod(OIDC PKCE 接入自建 Casdoor,Cloudflare Realtime TURN over TLS)。其后进入阶段二,已落地:
|
||||
|
||||
- **剪贴板同步**:单条覆写式云剪贴板(短 TTL 限暴露面)+ 文本消息一次性通道
|
||||
- **桌面客户端**:Wails v2(macOS universal `.app` + Windows `.exe`)—— 瘦客户端复用 web,业务全走后端 API;refresh_token 存系统密钥库(信封加密)
|
||||
- **桌面客户端**:Wails v2(macOS Apple Silicon `.app` + Windows x64 `.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),桌面客户端走原生系统通知(仅窗口非前台才弹)。文案按设备语言在服务端渲染(中简 / 中繁 / 英)
|
||||
@@ -31,6 +32,32 @@ MVP(M0–M13)已上线 prod(OIDC PKCE 接入自建 Casdoor,Cloudflare Re
|
||||
- **iOS Shortcut**:HS256 scoped token 手动签发路径(网页签发 UI 暂停)
|
||||
- **安全加固**:中继会话防耗尽、HS256 强制 jti、prod 强制 audience、TURN 短 TTL、OAuth 端点限流(详见 CHANGELOG)
|
||||
|
||||
### 正式客户端入口
|
||||
|
||||
同一平台只保留一份正式客户端;开发中的迁移 target 不进入下载或分发入口。
|
||||
|
||||
| 平台 | 当前正式客户端 | 说明 |
|
||||
|---|---|---|
|
||||
| Web | `web/` React SPA / PWA | 浏览器入口 |
|
||||
| Windows | Wails | 产物名 `Commilitia Drop.exe` |
|
||||
| macOS | Wails | 产物名 `Commilitia Drop.app`;当前仍是正式版本 |
|
||||
| iOS | SwiftUI | 主 target `CommilitiaDrop` |
|
||||
|
||||
`ios/CDrop` 中的原生 macOS target 仍是迁移候选。它在完成架构覆盖、功能对等、三语界面、
|
||||
签名扩展与真机验收前,不替换 Wails,也不得作为第二个 macOS 客户端分发。
|
||||
|
||||
面向系统与跨端诊断可见的协议标识也使用完整品牌命名空间:URL Scheme 为
|
||||
`commilitia-drop://`,WebRTC DataChannel 与 iOS 文件流 Scheme 为
|
||||
`commilitia-drop-file`,Bonjour 服务为 `_commilitia-drop._tcp`。Bundle ID、App Group、
|
||||
Keychain service、LaunchAgent label、环境变量与存储路径等不直接决定显示名的内部标识保持稳定。
|
||||
|
||||
Auth Broker 的 application key 会出现在 OAuth `app` 参数和 JWT scope 中,因此随本次更新把
|
||||
既有 `cdrop` application 原位改为 `commilitia-drop`,并将回调改为
|
||||
`commilitia-drop://auth-callback`;旧会话可直接失效并由各客户端重新登录。
|
||||
|
||||
全客户端正式构建、签名、公证、安装、服务端迁移与验证流程见
|
||||
[`docs/client-build-install.md`](docs/client-build-install.md)。
|
||||
|
||||
MVP 里程碑(历史记录):
|
||||
|
||||
| 里程碑 | 内容 | 状态 |
|
||||
@@ -164,4 +191,3 @@ env 见 [`.env.example`](.env.example) / `compose.snippet.yaml`。要点:
|
||||
5. 设 `CDROP_HS256_SECRET`(iOS Shortcut scoped token 用,不用可留空)
|
||||
6. 可选 `CDROP_CF_TURN_KEY_ID` + `CDROP_CF_TURN_API_TOKEN` 启用 Cloudflare Realtime TURN over TLS(不配则前端 STUN-only 兜底)
|
||||
7. 可选 `CDROP_VAPID_PUBLIC_KEY` + `CDROP_VAPID_PRIVATE_KEY` 启用 Web Push 推送通知(用 `just vapid-keygen` 生成一对;两者须同时设置,半对则拒启动;都留空则推送惰性关闭,不阻塞启动)。`CDROP_VAPID_SUBJECT` 可选(联系标识,留空回退站点 URL)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user