# Changelog 本文件记录 `ShrinkNetwork` 在当前工作区中的包内变更。 ## [0.4.4] - 2026-11-10 ### Fixed - TCP 服务端:会话接收循环结束时不再读取已释放 socket 的 `RemoteEndPoint`,改用接入时记录的地址;此前客户端主动断开会抛出 `ObjectDisposedException`,`Disconnected` 事件丢失,上层仍向已断开会话发送并报 `Session N is not connected`。 - TCP 客户端:接收循环收尾同样改用连接时记录的地址,本地 `Stop()` 导致的读取中断按正常关闭处理,不再向 Unity 日志抛出 `ObjectDisposedException`。 - TCP 服务端:`Stop()` 后挂起的 accept 任务异常被观察,不再产生未观察的 `SocketException`。 ## [0.2.0] - 2026-05-18 ### Changed - 静态消息合同与静态 handler 的默认自动发现从运行时全域反射扫描切换为编译期注册表 `ShrinkNetworkGeneratedRegistry`。 - `ShrinkNetworkRuntime.Default` 启动时优先消费编译期消息/handler 清单,降低默认服务的注册开销。 - `RegisterHandlers(object target)` 的实例注册路径保持不变,继续服务于模组实例和运行时对象。 ## [0.1.0] - 2026-04-07 ### Added - 正式建立 RPC 优先的 Unity 网络层,包含服务、会话、路由、消息注册、权限与日志基础设施。 - 建立属性式注册模型:`[ShrinkNetworkMessage]`、`[ShrinkNetworkSubscriber]`、`[ShrinkNetworkSubscribe]`。 - 提供 `ShrinkJsonNetworkSerializer` 与 `ShrinkMessagePackNetworkSerializer`。 - 提供 `Loopback`、TCP、KCP 传输实现,以及独立服务器生成器与生成宿主链路。 - 新增会话令牌能力,`ShrinkNetworkPacket`、`ShrinkNetworkSession`、`ShrinkNetworkService` 支持令牌签发、回传与逐包校验。 - TCP 传输与生成宿主补上可选 TLS 接入。 - 宿主侧补上 `server.properties` 文本配置、协议版本窗口与基础指标摘要。 ### Changed - 运行时公共类型按真实语义收口可空性,覆盖消息元数据、权限、注册器、路由器、会话、服务、序列化器与传输层。 - `GetDefaultInitializer(...)` 现会为任意 `T[]` 生成 `Array.Empty()`,避免重新生成合同后数组默认值 warning 回弹。 - 当前工作区中 `ShrinkSDK.sln` 与独立宿主工程已重新收口到 `0 warning / 0 error`。