Files
ShrinkModFramework/CHANGELOG.md
T
cneicy d15bf00512
Publish UPM package / publish (push) Successful in 3s
Publish NuGet packages / publish (push) Successful in 2m18s
feat: 公开宿主组合加载 API、Forge 风格依赖版本区间与加载顺序、程序集解析策略
- ShrinkModComponentDiscovery.Discover 公开:只发现、不执行生命周期
- ShrinkModLoader.LoadComposed / ShrinkModCordisRuntime.ApplyComposedAsync:宿主提供元数据组合加载,支持纯数据包与 IShrinkModWrapper 公开真实实例
- 公开 TryAttachEventBusInstance,随生命周期逆操作释放
- 依赖新增 VersionRange(Maven/Forge 区间语法)与 Ordering(Before/After)
- AssemblyResolvePolicy 可限制跨模组程序集解析
2026-11-10 07:39:22 +08:00

4.7 KiB
Raw Permalink Blame History

Changelog

本文件记录 ShrinkModFramework 在当前工作区中的包内变更。

[0.3.8] - 2026-11-10

Added

  • 公开 ShrinkModComponentDiscovery.Discover,从显式授权 DLL 列表生成延迟组件源,保留 SHA-256 revision;发现不运行生命周期或提交当前 revision。
  • 新增 ShrinkModLoader.LoadComposed 与 ShrinkModCordisRuntime.ApplyComposedAsync,复用 ContextHost 可逆生命周期、依赖排序、热替换和失败恢复。
  • 新增源的 WithMetadata / CreateDataOnly 和 IShrinkModWrapper.PublicInstance,支持清单依赖、无入口数据包及真实实例句柄。
  • 公开 TryAttachEventBusInstance;组合加载自动绑定公开实例,失败、替换及卸载时释放。
  • 依赖支持 Maven 风格版本区间、并集及 None/Before/After 排序;保留 minimumVersion 和原三参数构造函数。
  • 新增 AssemblyResolvePolicy,按请求程序集、请求名称和授权候选路径限制解析。
  • 新增宿主组合回归测试与 Tools~/HostTests 独立 .NET harness。

Changed

  • 清单元数据或排序前驱变化会重新协调对应组件;宿主组合由宿主重新提交,内置 watcher 不覆盖清单。
  • 恢复旧组件前先恢复程序集解析 revision,保证回滚实例使用旧解析集合。
  • UPM 与共享 NuGet 升级至 0.3.8;Godot 适配 NuGet 升至 0.1.7,以发布新的共享依赖引用。

[0.2.4] - 2026-08-28

Changed

  • 精确依赖 ShrinkEventBus 2.0.1。

[0.2.3] - 2026-08-28

Added

  • 新增 ShrinkModLoader.LoadAuthorized(settings, authorizedDllPaths),只从调用方提交的精确 DLL 白名单加载外部模组。
  • 恢复公共入口 ShrinkModRuntimeBootstrap.InitializeDriver(...),供安全启动链显式初始化运行时驱动。

Changed

  • ContextHost 与旧加载路径不再递归扫描外部模组目录;revision 刷新只复用已授权路径。
  • autoLoadOnStartup、enableExternalDllMods、watchExternalModsDirectory 默认关闭。
  • ShrinkModFrameworkSettings 优先从标准 ShrinkSDK 资源目录加载,创建菜单同步写入该目录。

Fixed

  • 授权 DLL 替换失败时继续恢复此前已提交的 SHA-256 revision 与模组组合。

[0.2.1] - 2026-08-26

  • 将 EventBus 生成器源码和 fixture builder 收敛到各自 UPM 包的 Tools~,并为独立包导出提供随包分析器回退。
  • 修正 Unity 2022 中 PackageInfo 的命名空间冲突,确保包可独立编译。

[0.2.0] - 2026-08-24

Added

  • 新增 ShrinkModContextHost / ShrinkModComponentSource,把模组生命周期、Registry、Network handler 与 Harmony lease 纳入可逆组件事务。
  • 新增真实外部 DLL fixture 测试,覆盖失败替换恢复、损坏文件、依赖缺失、watcher 去抖与删除卸载。
  • 注册表新增 owner namespace、显式优先级覆盖、同优先级冲突拒绝和覆盖候选诊断;owner 卸载时会恢复下一个覆盖或基础项。
  • ShrinkModContext 新增 RegisterContent / OverrideContent,模组不再手工传入 owner;查询改为 IReadOnlyShrinkModRegistry<T>。

Changed

  • ShrinkModLoader 默认使用 ContextHost;外部 DLL 以 SHA-256 作为 revision,同内容幂等。
  • watcher 监听新增、修改、删除与重命名,并把 burst 文件事件折叠为一次主线程组合提交。
  • 移除允许任意完整键的 ShrinkModRegistry.Register(owner, key, value);基础内容必须通过 owner namespace 注册。

Fixed

  • 新模组 apply 失败时同时恢复旧组件组合和外部 DLL revision 缓存,避免失败程序集继续被当作当前版本。
  • 删除 DLL 时同步清理程序集解析路径缓存;EditMode 创建 watcher driver 时不再调用 DontDestroyOnLoad。

[0.1.0] - 2026-04-07

Added

  • 建立模组声明与生命周期基础:[ShrinkMod]、[ShrinkModDependency]、IShrinkMod、ShrinkModBase、ShrinkModLoader、注册表与运行时设置。
  • 默认启动入口改为 [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterAssembliesLoaded)] 自动引导,不再强依赖场景内手挂 bootstrap。
  • 支持扫描和增量装载外部 DLL 模组。
  • 预留可选 Harmony 热补丁与模组网络同步抽象层。
  • 新增 ShrinkSDK/Mod/导出 Mod SDK 开发包,可导出给外部模组开发者使用的 GeneratedModSdk/。
  • 新增 ShrinkSDK/Mod/生成仓库内模组模板(推荐),可在当前 Unity 工程内快速生成模组模板。
  • 新增 ShrinkSDK/Mod/生成外部模组模板,可生成独立 DLL 模组工程。

Changed

  • 运行时目录结构统一拆分为 Bootstrap / Core / Metadata / Registry / Loading / Network / Integration。
  • README 同步更新新的目录结构、模板入口、SDK 导出方式与推荐工作流。