diff --git a/CHANGELOG.md b/CHANGELOG.md
index c4c0765..ea318b6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,183 @@
All notable changes to this package will be documented in this file.
+## [2.3.2-preview] - 2025-02-27
+
+### Fixed
+
+- (2.3.1) 修复小游戏平台下载器不生效的问题。
+- (#480) 修复了Unity工程打包导出时的报错。
+
+### Added
+
+- 下载器新增参数:recursiveDownload
+
+ ```csharp
+ ///
+ /// 创建资源下载器,用于下载指定的资源依赖的资源包文件
+ ///
+ /// 下载资源对象所属资源包内所有资源对象依赖的资源包
+ public ResourceDownloaderOperation CreateBundleDownloader()
+ ```
+
+- 新增CustomPlayMode模式
+
+ ```csharp
+ ///
+ /// 自定义运行模式的初始化参数
+ ///
+ public class CustomPlayModeParameters : InitializeParameters
+ {
+ ///
+ /// 文件系统初始化参数列表
+ /// 注意:列表最后一个元素作为主文件系统!
+ ///
+ public List FileSystemParameterList;
+ }
+ ```
+
+## [2.3.1-preview] - 2025-02-25
+
+**资源加载依赖计算方式还原为了1.5x版本的模式,只加载资源对象实际依赖的资源包,不再以资源对象所在资源包的依赖关系为加载标准**。
+
+### Improvements
+
+- 优化OperationSystem的更新机制,异步加载的耗时降低了50%。
+- 优化了Debugger窗口的显示页面,BundleView页面增加资源包的引用列表。
+- 优化了Reporter窗口的显示页面。
+
+### Fixed
+
+- 修复了怀旧依赖模式下,TAG传染不正确的问题。
+
+## [2.3.0-preview] - 2025-02-19
+
+### Improvements
+
+资源收集窗口列表元素支持手动上下拖拽排序!
+
+资源扫描窗口列表元素支持手动上下拖拽排序!
+
+### Added
+
+- 新增了UIElements扩展类ReorderableListView
+
+- 新增初始化方法
+
+ ```csharp
+ public class YooAssets
+ {
+ ///
+ /// 设置异步系统参数,快速启动模式的开关
+ /// 注意:该模式默认开启
+ ///
+ public static void SetOperationSystemQuickStartMode(bool state)
+ }
+ ```
+
+- 新增打包构建参数
+
+ ```csharp
+ public class BuildParameters
+ {
+ ///
+ /// 旧版依赖模式
+ /// 说明:兼容YooAssets1.5.x版本
+ ///
+ public bool LegacyDependency = false;
+ }
+ ```
+
+### Fixed
+
+- (#472) 修复了Unity6平台,TableView视图无法显示问题。
+- 修复了微信小游戏和抖音小游戏未正确使用插件的卸载方法。
+
+## [2.2.12] - 2025-02-14
+
+### Improvements
+
+- WebGL网页平台支持文件加密。
+- 微信小游戏平台支持文件加密。
+- 抖音小游戏平台支持文件加密。
+
+### Fixed
+
+- (#466) 修复了微信小游戏文件系统查询机制不生效!
+- (#341) 修复了微信小游戏的下载进度异常问题。
+- (#471) 修复了Unity2019,Unity2020平台上,TableView视图无法显示的问题。
+
+### Added
+
+- 新增了ResourcePackage.UnloadAllAssetsAsync(UnloadAllAssetsOptions options)方法
+
+ ```csharp
+ public sealed class UnloadAllAssetsOptions
+ {
+ ///
+ /// 释放所有资源句柄,防止卸载过程中触发完成回调!
+ ///
+ public bool ReleaseAllHandles = true;
+
+ ///
+ /// 卸载过程中锁定加载操作,防止新的任务请求!
+ ///
+ public bool LockLoadOperation = true;
+ }
+ ```
+
+## [2.2.11] - 2025-02-10
+
+### Improvements
+
+- AssetArtScanner配置和生成报告的容错性检测。
+
+### Fixed
+
+- (#465) 修复了特殊情况下,没有配置资源包文件后缀名构建失败的问题。
+- (#468) 修复了安卓平台二次启动加载原生文件或加密文件失败的问题。
+
+## [2.2.10] - 2025-02-08
+
+### Improvements
+
+- 新增了可扩展的AssetArtScanner资源扫描工具,详细请见官方说明文档。
+- 优化了AssetBundleReporter页面。
+- 优化了AssetBundleDebugger页面。
+- 优化了微信小游戏文件系统的缓存查询机制。
+- 优化了抖音小游戏文件系统的缓存查询机制。
+
+### Fixed
+
+- (#447) 修复了Unity2019平台代码编译错误问题。
+- (#456) 修复了在Package未激活有效清单之前,无法销毁的问题。
+- (#452) 修复了内置文件系统类NeedPack方法总是返回TRUE的问题。
+- (#424) 适配了Unity6000版本替换了过时方法。
+
+### Added
+
+- 新增了SBP构建管线构建参数:BuiltinShadersBundleName
+
+- 新增了SBP构建管线构建参数:MonoScriptsBundleName
+
+- 新增了全局构建管线构建参数:SingleReferencedPackAlone
+
+ ```csharp
+ ///
+ /// 对单独引用的共享资源进行独立打包
+ /// 说明:关闭该选项单独引用的共享资源将会构建到引用它的资源包内!
+ ///
+ public bool SingleReferencedPackAlone = true;
+ ```
+
+- 新增了内置文件系统初始化参数:COPY_BUILDIN_PACKAGE_MANIFEST
+
+ ```csharp
+ // 内置文件系统初始化的时候,自动拷贝内置清单到沙盒目录。
+ var systemParameters = FileSystemParameters.CreateDefaultBuildinFileSystemParameters();
+ systemParameters.AddParameter(FileSystemParametersDefine.COPY_BUILDIN_PACKAGE_MANIFEST, true);
+ ```
+
## [2.2.9] - 2025-01-14
### Fixed
diff --git a/Editor/AssetArtReporter.meta b/Editor/AssetArtReporter.meta
new file mode 100644
index 0000000..152a582
--- /dev/null
+++ b/Editor/AssetArtReporter.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: bdbb4647038dcc842802f546c2fedc83
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/AssetArtReporter/AssetArtReporterWindow.cs b/Editor/AssetArtReporter/AssetArtReporterWindow.cs
new file mode 100644
index 0000000..728fb2e
--- /dev/null
+++ b/Editor/AssetArtReporter/AssetArtReporterWindow.cs
@@ -0,0 +1,624 @@
+#if UNITY_2019_4_OR_NEWER
+using System;
+using System.IO;
+using System.Linq;
+using System.Collections.Generic;
+using UnityEditor;
+using UnityEngine;
+using UnityEditor.UIElements;
+using UnityEngine.UIElements;
+
+namespace YooAsset.Editor
+{
+ public class AssetArtReporterWindow : EditorWindow
+ {
+ [MenuItem("YooAsset/AssetArt Reporter", false, 302)]
+ public static AssetArtReporterWindow OpenWindow()
+ {
+ AssetArtReporterWindow window = GetWindow("AssetArt Reporter", true, WindowsDefine.DockedWindowTypes);
+ window.minSize = new Vector2(800, 600);
+ return window;
+ }
+
+ private class ElementTableData : DefaultTableData
+ {
+ public ReportElement Element;
+ }
+ private class PassesBtnCell : ITableCell, IComparable
+ {
+ public object CellValue { set; get; }
+ public string SearchTag { private set; get; }
+ public ReportElement Element
+ {
+ get
+ {
+ return (ReportElement)CellValue;
+ }
+ }
+
+ public PassesBtnCell(string searchTag, ReportElement element)
+ {
+ SearchTag = searchTag;
+ CellValue = element;
+ }
+ public object GetDisplayObject()
+ {
+ return string.Empty;
+ }
+ public int CompareTo(object other)
+ {
+ if (other is PassesBtnCell cell)
+ {
+ return this.Element.Passes.CompareTo(cell.Element.Passes);
+ }
+ else
+ {
+ return 0;
+ }
+ }
+ }
+ private class WhiteListBtnCell : ITableCell, IComparable
+ {
+ public object CellValue { set; get; }
+ public string SearchTag { private set; get; }
+ public ReportElement Element
+ {
+ get
+ {
+ return (ReportElement)CellValue;
+ }
+ }
+
+ public WhiteListBtnCell(string searchTag, ReportElement element)
+ {
+ SearchTag = searchTag;
+ CellValue = element;
+ }
+ public object GetDisplayObject()
+ {
+ return string.Empty;
+ }
+ public int CompareTo(object other)
+ {
+ if (other is WhiteListBtnCell cell)
+ {
+ return this.Element.IsWhiteList.CompareTo(cell.Element.IsWhiteList);
+ }
+ else
+ {
+ return 0;
+ }
+ }
+ }
+
+ private ToolbarSearchField _searchField;
+ private Button _showHiddenBtn;
+ private Button _whiteListVisibleBtn;
+ private Button _passesVisibleBtn;
+ private Label _titleLabel;
+ private Label _descLabel;
+ private TableView _elementTableView;
+
+ private ScanReportCombiner _reportCombiner;
+ private string _lastestOpenFolder;
+ private List _sourceDatas;
+ private bool _elementVisibleState = true;
+ private bool _whiteListVisibleState = true;
+ private bool _passesVisibleState = true;
+
+ public void CreateGUI()
+ {
+ try
+ {
+ VisualElement root = this.rootVisualElement;
+
+ // 加载布局文件
+ var visualAsset = UxmlLoader.LoadWindowUXML();
+ if (visualAsset == null)
+ return;
+
+ visualAsset.CloneTree(root);
+
+ // 导入按钮
+ var importSingleBtn = root.Q