主题
XHIM Changelog
本文件记录晞晗IM(XHIM)对接入方可见的能力、兼容性和迁移变化。发布日期、 最终制品 Hash 和支持矩阵以对应版本的签名发布证据为准;Unreleased 内容不 代表已经形成可售卖的 Stable 制品。
格式参考 Keep a Changelog,产品版本遵循 SemVer。xhim_v1 是独立的 ABI generation,不等同于产品主版本号。
[Unreleased]
Added
- C++17 单一客户端内核、版本化
xhim_v1C ABI,以及 Apple、Android、 Windows、HarmonyOS 原生 Facade; - iOS/macOS、Android、Windows 和 HarmonyOS 一键 Easy Connect:公开配置 自动发现、Development 登录、账号隔离存储和 generation-fenced Business Credential Provider 自动续期;
- Go 参考服务端、PostgreSQL 存储、HTTPS/WSS 会话、增量同步和自托管管理后台;
- 可靠 Outbox、账号 Epoch/连接 Generation 隔离、消息分页、检索、已读、 编辑、撤回、失败重试和发送前取消;
- 群消息批量已读和逐消息已读成员 Facade:复用服务端权威单调 read watermark,返回 reader IDs、派生人数和截断信号,已覆盖 iOS、macOS、Android、Windows、HarmonyOS、Flutter、Electron 和 Web;
- 服务端权威的会话置顶/免打扰,以及账号加密数据库中的本地草稿;
- 统一 Call Session 控制面:邀请、接听、拒绝、结束、有序信令分页和 崩溃恢复已贯通 Server、Core/C ABI、Apple、Android、Windows、 HarmonyOS、Flutter、Electron 与 Web;RTC 凭证只在短期可清零对象中 交给客户 Provider,不持久化到本地投影;
- 好友申请、好友、黑名单、群成员、入群审批、管理员、禁言、群主转让和群资料;
- 文本、图片、语音、视频、文件、自定义消息及常用扩展消息合同;
- Apple SDK 新增头像专用上传/审核/资料发布 API;参考服务端增加隔离的
profile_avatar媒体用途和稳定公开头像路由,普通会话附件不能冒充头像; - 标准消息合同新增红包、转账与企业 OA 卡片;金额使用最小货币单位,资金清算、 风控、审批授权和权威状态继续由购买方业务服务负责;
- 新增跨端
text/markdown@1标准消息合同、强类型工厂和解码器;旧端使用 强制纯文本 fallback,SDK 不执行 HTML,安全渲染策略由宿主 Renderer 掌握; - iOS UIKit Demo 新增头像选择、手机号/密码修改、普通用户通知设置、原生 MapKit 位置卡片,以及“当前用户自动为群主 + 好友多选 + 手机号/晞晗号精确 添加”的建群流程;普通附件面板不再暴露技术性的自定义消息入口;
- Apple SDK 新增
XHIMQuoteContent与XHIMMergedForwardContent公开接收端 解码器;iOS UIKit Demo 完成长按气泡菜单、引用回复、常用表情、逐条/合并 转发和消息多选闭环; - 持久媒体任务、分片上传、稳定 C ABI 下载受理、严格 Range/partial 续传、 安全原子缓存、完整性校验、审核状态机和稳定
MediaRef; - APNs、FCM、华为 Push Provider 路由、设备失效治理、审计和管理后台操作;
- 独立只读 OfflineReader、通用异步请求取消和五端消费封装;
- 不含业务标识、路径、端点或凭证的稳定运行诊断快照,以及五端强类型读取接口;
- 首次立即重连、capped exponential Full Jitter、
Retry-After下限、稳定窗口 预算复位,以及五端可调用的无回调网络恢复提示; - PostgreSQL 备份、固定文件快照校验、隔离恢复演练、N/N-1 升级与回滚预检;
- shared/static、XCFramework/CocoaPods/SwiftPM、AAR/Maven、NuGet 和 HAR 制品构建及内容检查脚本;
- Android、Windows、HarmonyOS 受保护原生构建证明:绑定完整 Commit、Git Tree、干净工作区、工具链标识、架构、导出表和最终二进制 Hash,再由发行 OpenPGP 身份签名;
- SBOM、安全扫描、法务、容量、真机矩阵和签名发布证据的 fail-closed 门禁。
- 商业运营台账:客户、试用/订阅/续期/升级/OEM 订单、付款状态、 离线 Ed25519 授权签发/验签导入、替代链、暂停/恢复/撤销、续期预警、 MAU 计量和不可覆盖审计记录;
- 报价、订单范围、客户验收、SLA 和数据处理清单模板,并将未经法务/ 容量/真机验证的材料保持为明确的未审批状态。
- Kubernetes/Helm 高可用交付包:3 副本、零不可用滚动升级、 PodDisruptionBudget、Topology Spread、可选 HPA、NetworkPolicy 和独立
xhim-migrate升级 Hook;生产 PostgreSQL/S3/Secret 仍由客户基础 设施管理,Chart 不生成明文凭证。 - 独立业务后台 REST API:通过与 Admin Key 隔离的 Business Key 创建/更新用户、按真实查看者权限批量查资料、检查关系、幂等创建直聊、 签发指定平台客户端会话、创建/治理/解散群聊、 好友申请/审批/属性/删除、黑名单、入群申请/审批/退出、 代发/编辑/撤回文字或自定义消息,以及查询/撤销设备会话;未配置凭证时 路由不注册,且所有操作继续经过正式权限、策略、幂等、Push 和跨端 Sync 链路。
Changed
- 管理后台登录页改为独立的 XHIM 响应式界面,登录前不再展示后台主体;管理 页面资源改用相对路径,直接打开源码文件时能够完整展示静态预览并明确提示 正式后台入口,避免把资源加载失败误认为后台功能异常。
Security
新增基于 RFC 9420 / OpenMLS 0.8.1 的 E2EE Release Candidate:每设备 Ed25519 身份与 KeyPackage、Welcome/Commit 邮箱、消息和编辑 MLS 加密、 XChaCha20-Poly1305 分块附件、设备撤销联动以及 required 模式明文降级拒绝;
MLS 两阶段提交新增 SQLCipher Schema 25 发布日志、幂等分批 ACK、崩溃恢复 和 Provider ABI v4 pending-commit 探针,关闭 prepare/publish/finalize 之间的进程退出窗口;
自托管管理后台改为独立管理员账号密码登录,密码仅保存 bcrypt cost 12 以上哈希的 Base64;浏览器使用有时效的 HttpOnly/ SameSite=Strict 签名会话和同源 CSRF 校验,Admin Key 仅保留给可信 服务间调用;
Production 默认要求 HTTPS/WSS、签名 Endpoint 和真实 Product Adapter;
正式加密构建缺少 SQLCipher 或安全数据库 Key 时拒绝启动,不降级到明文;
稳定 C ABI 的数组元素 stride 固定为消息 192 bytes、会话 112 bytes;调用方 按
struct_size提供的输出容量会在所有同步/异步读取路径上进行边界校验, 截断结构和不足容量不会越界写入;群列表元素继续固定为 112 bytes;群名称、头像和资料 revision 通过独立的 88 bytes 平行 Profile 数组及
xhim_v1_social_page_get_group_profiles()暴露,避免旧接入方按历史 stride 遍历时发生错位;Push 注册默认限制为每账号 20 台设备(可配置上限 100),PostgreSQL 在同一 事务锁内确定性淘汰旧设备,设备投递使用固定有界 Worker;批次租约由 attempt fencing 标识并持续续期,旧 Worker 不能续租或完成已被其他副本回收的 通知;日志、响应和审计不暴露原始 Device Token;
本地媒体存储在根目录及每级路径执行 inode/type 复核,拒绝符号链接和特殊 文件;提交前后还会把已打开 FD 与命名目录项的 device/inode、链接数重新 对齐,采用分片锁与 no-replace 原子发布,避免并发覆盖和 TOCTOU 路径替换;
发布证据拒绝软链接、特殊文件、路径碰撞、旧产物复用和内容篡改。
OpenPGP 制品及证据签名绑定完整主密钥指纹;真机和容量附件绑定本地文件 SHA-256,PostgreSQL 校验与恢复共用同一只读快照,避免验证后替换。
商业门禁从单一私有只读 artifact snapshot 生成平台验签、Release Manifest、 SBOM、真机制品 Hash 和
SHA256SUMS,并在最终证据签名前再次逐项验签验 Hash;Windows Authenticode 固定完整 SHA-1/SHA-256 证书身份,NuGet 固定完整 SHA-256 signer fingerprint,不再匹配 Publisher 子串;PFX 和 NuGet 证书密码 不进入签名子进程 argv。
原生库同时嵌入严格分发版本和完整源码 Commit 标记;正式三端组包必须验证 受签 native build attestation,不能仅凭可伪造的文件名或包元数据声明来源。
Windows Client 销毁改为锁内摘取、锁外 native fence 的两阶段生命周期; 同步/异步重复销毁共享完成栅栏,请求 GCHandle 使用原子单所有者释放,避免 Credential 回调、请求完成和 Dispose 竞态造成互锁或二次释放。
商业授权私钥只允许位于离线签发环境;客户服务器只保存公钥。 授权导入在单一事务中同时验证签名、已确认订单、客户、版本、 Deployment/App/Feature/MAU/期限与续期替代链,签名合法但绑定错订单也会被拒绝;
授权撤销清单本身使用 Ed25519 签名并带有效期,服务器以 fail-closed 方式拒绝篡改、过期或命中撤销的授权。
Known limitations
- 当前阶段仍为 Commercial Beta。正式平台证书、生产域名/KMS、全平台真机、 独立安全扫描、真实容量报告和法务批准必须由发布环境提供并通过门禁;
- Call Session 控制面已可供接入,但实时音视频媒体质量不属于纯 IM 首发承诺;客户选定 RTC Provider 后仍需完成跨端真机、弱网、后台/ 锁屏和容量验收;
- Reference 下载缓存的 POSIX 安全文件端口已覆盖 Apple/Android/Harmony/ Linux,并提供不暴露路径、持有已打开 FD 的稳定 scoped reader ABI;Windows Reference 构建仍 fail closed,需在正式 Windows 产品包中补齐 reparse-point-safe 文件端口;
- 数据库 Schema 升级后不承诺旧内核可以重新打开,回滚必须遵循 升级与回滚指南。