### 纪年

* v0: 2018 ~ 2019 (2y)
* v1: 2020 ~ 2022 (3y)
* v2: 2023 ~ 2024 (2y)
* v3: 2024 ~ 

### v2.x 升到 v3.x 提醒

* 提醒1：之前没有使用弃用接口的，可以直接升级 <br>
* 提醒2：有使用弃用接口的。建议先升级到 2.9.4；替换弃用代码后，再升级到 3.0.0


### 待议
* 增加 quartz jdbc 及时更新支持（数据库里变了，它马上变） ???
* 调整 取消启动参数简写模式，保持与应用参数相同的名字 ???
* 调整 solon-docs-openapi2 合并 solon-docs-openapi2-javadoc ???
* 
* 添加 序列化安全名单接口?
* 优化 拦截体系与 rx 的兼容？

* 支持 solon 非依赖关系的 bean 异步初始化（`@Init(async=true)`）???
* 优化 solon-flow （有包含结构的）网关的流入流出架构，使不再需要记录栈和计数器???
* 添加 Plugin postStart 事件???
* 调整 Plugin 统一交给 AppContext 管理（之前由 SolonApp 或 PluginPackage 管理）？？

### v3.11.0

* 新增 mcp-json-jackson2
* eggg 升为 1.0.13
* snack4 升为 4.0.49
* undertow 升为 2.2.39.Final

### v3.10.6

* 优化 solon-net-httputils TextStreamUtil 的背压流控效果
* snack4 升为 4.0.47

### v3.10.5

* 添加 solon-text SolonTest.enableWebSocket 属性

### v3.10.4

* 新增 solon-serialization-javabin 插件（统一 JavabinSerializer 管理）
* 添加 solon-cache-spymemcached MemCacheService.cacheKeyHead 方法（修改缓存头）
* 添加 solon-cache-redisson RedissonCacheService.cacheKeyHead 方法（修改缓存头）
* 添加 solon-cache-jedis RedisCacheService.cacheKeyHead 方法（修改缓存头）
* 添加 solon JavaUtil.IS_MAC 字段
* 添加 solon-parent maven-surefire-plugin 插件版本管理
* 调整 solon-sessionstate-jedis 启用新的 JavabinSerializer
* 调整 solon-cache-jedis 启用新的 JavabinSerializer
* 修复 solon-config-snack3 不能通过属性反序列化外部扩展包里的类问题
* 修复 solon-config-snack4 不能通过属性反序列化外部扩展包里的类问题
* reactor-core 升为 3.8.5
* redisx 升为 1.8.5


### v3.10.3

* eggg 升为 1.0.12
* snack4 升为 4.0.46
* log4j 升为 2.25.4

### v3.10.2

* 添加 nami NamiFilter（替代 Filter）更好表意
* 调整 RunUtil 恢复 parallel 方法（之前标为弃用）
* 调整 Log4j2Plugin，LogbackPlugin ，取消 doLoadUrl 重载
* snack4 升为 4.0.45

### v3.10.1

* 添加 solon MultiMap.flags 机制，更好的支持 args 解析
* 添加 solon ParamWrap.getMethodWrap 属性
* 调整 RunUtil 恢复 parallel 方法
* 修复 solon-net-httputil OkHttp 请求体封装问题，转为对应编码字节流
* eggg 升为 1.0.11
* snack4 升为 4.0.42
* jansi 升为 2.4.3
* jline 升为 3.30.9

### v3.10.0

* 添加 `solon-docs-openapi3` 分布式文档支持
* 添加 `solon-expression` 添加 `@bean` 表达式支持
* 优化 `solon-flow` FlowContext 持久化，添加 stopped 属性
* 优化 `solon-openapi2-knife4j` 的资源控制（避免多余的资源开放）
* 优化 `solon-openapi3-knife4j` 的资源控制（避免多余的资源开放）
* 优化 `solon-sessionstate-jedis` 超时处理（get 自动续时）
* 优化 `solon-sessionstate-redisson` 超时处理（get 自动续时，sessionPublish、sessionRefresh 加越时）
* 修复 `solon-cloud-gateway` CloudGatewayLocator.loadDiscoverConfig 可能出现 null 异常（允许没有发现服务）
* snack4 升为 4.0.41
* jakarta.logback 升为 1.5.32
* jackson3 升为 3.1.0
* fastjson2 升为 2.0.61
* log4j 升为 2.25.3
* jackson 升为 2.19.4
* asm 升为 9.9.1
* lombok 升为 1.18.44

solon-expression `@bean` 表示式示例：

```java
Map<String, Object> vars = new HashMap();
vars.put("a", 1);

EnhanceContext context = new EnhanceContext(vars);
context.forBeans(Solon.context()::getBean);

SnEL.eval("@user.getAge() == a ? true : false", context);
```

### v3.9.6

* 添加 `solon-docs-openapi3` 分布式文档支持
* 添加 `solon-expression` 添加 `@bean` 表达式支持
* 优化 `solon-flow` FlowContext 持久化，添加 stopped 属性
* 优化 `solon-openapi2-knife4j` 的资源控制（避免多余的资源开放）
* 优化 `solon-openapi3-knife4j` 的资源控制（避免多余的资源开放）
* 优化 `solon-sessionstate-jedis` 超时处理（get 自动续时）
* 优化 `solon-sessionstate-redisson` 超时处理（get 自动续时，sessionPublish、sessionRefresh 加越时）
* 修复 `solon-cloud-gateway` CloudGatewayLocator.loadDiscoverConfig 可能出现 null 异常（允许没有发现服务）
* snack4 升为 4.0.41
* jakarta.logback 升为 1.5.32
* jackson3 升为 3.1.0
* asm 升为 9.9.1
* lombok 升为 1.18.44

### v3.9.5

* 添加 solon Assert.isNumber, isBool 等给检测
* 添加 solon-net-httputils HttpUtils.url() 方法
* 优化 solon-logging-log4j2 SolonTagsConverter 去掉一个注解 tags
* 修复 solon-scheduling-simple MDC tag(job) 污染其它日志的问题
* fastjson2 升为 2.0.61
* log4j 升为 2.25.3
* snack4 升为 4.0.35
* jackson 升为 2.19.4


### v3.9.4

* 调整 solon-shell 移除内部弃用代码
* snack4 升为 4.0.33

### v3.9.2

* 优化 solon-logging-log4j2 默认配置改为 java 动态构建（更灵活）
* 调整 solon Gateway mainDef 直接输出 404 状态，改为的抛 404 状态异常
* 修复 quartz-solon-cloud-plugin quartz.Scheduler 定制无效的问题
* 修复 minio7-solon-cloud-plugin bucketDef 无效的问题
* 修复 minio-solon-cloud-plugin bucketDef 无效的问题

### v3.9.1

* 新增 solon-shell 插件（试用）
* 添加 solon-data-sqlutils SqlUtils.getDataSource 方法
* 添加 solon-data-rx-sqlutils RxSqlUtils.getConnectionFactory 方法
* 优化 solon-doc-openapi3 兼容性
* 调整 solon-net-httputils 响应式改为 Flux 接口（提供背压支持）
* sanck4 升为 4.0.31

### v3.9.0

* 新增 solon-ai-dialect-claude 插件
* 优化 solon-docs-openapi3 插件兼容性

### v3.8.4

* 新增 solon-security-sm 插件
* 新增 solon-ai-search-bocha 插件
* 添加 solon-serialization EntityStringSerializer, EntityBytesSerializer 注入支持
* 修复 solon.serialization.json.enumAsName: false 部分序列化框架不生效的问题
* sanck4 升为 4.0.30

### v3.8.3

* 优化 `solon-web-staticfiles` 支持 'file:' 前缀的配置

### v3.8.1

* 插件 `solon-flow` 第七次预览
* 新增 `solon-ai-agent` 插件
* 新增 `solon-ai-dialect-gemini` 插件
* 新增 `nami-coder-gson` 插件
* 新增 `solon-docs-openapi3` 插件
* 新增 `solon-openapi3-knife4j` 插件
* 新增 `solon-net-httputils-java11` 插件
* 添加 `solon` Context.currentWith(...) 方法替代 ContextHolder（后者标为弃用）
* 添加 `solon-data` UntransactionDataSource (非事务数据源)
* 添加 `solon-server` newVirtualThreadFactory 名字前缀支持
* 添加 `solon-web-vertx` VxWebContext:getVertx() 方法
* 添加 `nami` NamiAttach（更适合 java25 未来的发展） 替代 NamiAttachment（后者标为弃用）
* 优化 `solon` ScopeLocal 定义
* 优化 `solon-data` TranManager 完成 ScopeLocal 改造
* 优化 `solon-net-httputils` 添加虚拟线程支持
* 优化 `solon-java25` 的 ScopeLocal 适配
* 修复 `solon-data` UnpooledDataSource driverClassName 配置失效的问题  
* kafka 升为 3.9.1
* snack4 升为 4.0.28
* wood 升为 1.4.4
* redisx 升为 1.8.4
* luffy 升为 1.11.4
* liquor 升为 1.6.7
* smarthttp 升为 2.5.18

### v3.8.0

* 插件 `solon-flow` 第六次预览
* 新增 `solon-flow-workflow` 插件（替代 FlowStatefulService）
* 新增 `solon-java25` 仓库（提供 ScopedValue 适配）
* 添加 `solon` ScopeLocal 接口（用于 ThreadLocal 到 ScopedValue 兼容）
* 添加 `solon` Solon.start(Class, MultiMap) 方法
* 添加 `solon` ThreadsUtil:newVirtualThreadFactory 方法
* 添加 `solon` ContextHolder:currentWith 方法，替代 currentSet（标为弃用）
* 添加 `solon` Controller:remoting 属性（可替代 @Remoting 注解）
* 添加 `solon` 非依赖关系的 bean 异步初始化（`@Init(async=true)`）
* 添加 `solon` Stringable 接口
* 添加 `solon` 'env.use' 配置支持（相对 'env'，它与 'env.on' 协作时不会冲突）
* 添加 `solon` 'server.session.cookieHttpOnly' 配置支持（默认为 true）
* 添加 `solon` Context.cookieSet(...,httpOnly) 方法
* 添加 `solon-test` HttpTester protocol 参数支持（方便 https 或 http 切换测试）
* 添加 `solon-serialization` JsonPropsUtil2.dateAsFormat 添加 java.sql.Timestamp 类型支持
* 添加 `solon-config-yaml` 依赖 solon-config-snack4 避免单个引入时忘掉
* 添加 `solon-net-httputils` HttpSslSupplierAny（方便无限制的 ssl 使用，但不建议）
* 添加 `solon-web-rx` RxEntity 类（方便对接 mcp-sdk）
* 添加 `solon-server` 会话状态的 cookie httpOnly 配置（默认为 false）
* 添加 `solon-server-tomcat` ssl 适配支持
* 添加 `solon-security-validation` ValidatorFailureHandlerI18n 支持验证注解的国际化处理
  添加 `solon-expression` SnelParser 类，为 TemplateParser 和 EvaluateParser 提供出入口和占位符配置
* 添加 `solon-flow` FlowContext:lastNode() 方法（最后一个运行的节点）
* 添加 `solon-flow` FlowContext:lastNodeId() 方法（最后一个运行的节点Id）
* 添加 `solon-flow` Node.getMetaAs, Link.getMetaAs 方法
* 添加 `solon-flow` NodeSpec:linkRemove 方法（增强修改能力）
* 添加 `solon-flow` Graph:create(id,title,consumer) 方法
* 添加 `solon-flow` Graph:copy(graph,consumer) 方法（方便复制后修改）
* 添加 `solon-flow` GraphSpec:getNode(id) 方法
* 添加 `solon-flow` GraphSpec:addLoop(id) 方法替代 addLooping（后者标为弃用）
* 添加 `solon-flow` FlowEngine:eval(Graph, ..) 系列方法
* 添加 `solon-ai` FunctionPrompt:handleAsync（用于 mcp-server 异步支持）
* 添加 `solon-ai` FunctionResource:handleAsync（用于 mcp-server 异步支持）
* 添加 `solon-ai` FunctionTool:handleAsync（用于 mcp-server 异步支持）
* 添加 `solon-ai-core` ChatMessage:toNdjson,fromNdjson 方法（替代 ChatSession:toNdjson, loadNdjson），新方法机制上更自由
* 添加 `solon-ai-core` ToolSchemaUtil.jsonSchema Publisher 泛型支持
* 添加 `solon-ai-mcp` mcp-java-sdk v0.17 适配（支持 2025-06-18 版本协议）
* 添加 `solon-ai-mcp` mcp-server 异步支持
* 添加 `solon-ai-mcp` mcp-server streamable_stateless 支持
* 添加 `solon-ai-mcp` Tool,Resource,Prompt 对 org.reactivestreams.Publisher<X> 异步返回支持
* 添加 `solon-ai-mcp` McpServerHost 服务宿主接口，用于隔离有状态与无状态服务
* 添加 `solon-ai-mcp` McpChannel.STREAMABLE_STATELESS （服务端）无状态会话
* 添加 `solon-ai-mcp` McpClientProvider:customize 方法（用于扩展 roots, sampling 等）
* 添加 `solon-ai-mcp` mcpServer McpAsyncServerExchange 注入支持（用于扩展 roots, sampling 等）
* 优化 `solon` api-version 版本匹配
* 优化 `solon` SnelUtil snel 表达式缺参数时异常提示（避免配错名字）
* 优化 `solon` ParamWrap:getName 改用 ParamSpec.getAlias。加 '@Param(name=xxx)' 注解可生效
* 优化 `solon-cache` CacheService 适配没有 _cacheKeyHead 配置时，则不加前缀
* 优化 `solon-net-httputils` SslContextBuilder
* 优化 `solon-expression` EvaluateParser 支持定义占位符（可支持 `{xxx}` 表达式）
* 优化 `solon-expression` TemplateParser 支持定义占位符（可支持 `{xxx}` 表达式）
* 优化 `solon-expression` LRUCache 性能（提高缓存性能）
* 优化 `solon-ai-dialect-openai` claude 兼容性
* 优化 `solon-ai-mcp mcp` StreamableHttp 模式下 服务端正常返回时 客户端异常日志打印的情况* 优化 `solon-flow` eval(Node startNode) 处理，改为从 root 开始恢复到 start 再开始执行（恢复过程中，不会执行任务）
* 优化 `solon-flow` FlowEngine:eval(Node startNode) 处理，改为从 root 开始恢复到 start 再开始执行（恢复过程中，不会执行任务）
* 调整 `nami` NamiAttachment 切换为 ScopeLocal 接口实现
* 调整 `solon` ContextHolder 切换为 ScopeLocal 接口实现
* 调整 `solon` RunHolder：parallelExecutor 改为 newFixedThreadPool
* 调整 `solon-data` TranExecutorDefault 切换为 ScopeLocal 接口实现
* 调整 `local-solon-cloud-plugin` 的 config 和 i18n 服务，如果没有 group 配置，则文件不带 group 前缀（之前默认给了 DEFAULT_GROUP 组名，显得复杂）
* 调整 `rocketmq-solon-clouud-plugin` 的适配，事件属性不再加 '!' （并兼容旧格式）
* 调整 `aliyun-ons-solon-clouud-plugin` 的适配，事件属性不再加 '!' （并兼容旧格式）
* 调整 `rocketmq5-solon-clouud-plugin` 的适配，事件属性不再加 '!' （并兼容旧格式）。添加 sql92 过滤支持
* 调整 `solon-flow` 移除 Activity 节点预览属性 "$imode" 和 "$omode"
* 调整 `solon-flow` Activity 节点流出改为自由模式（可以多线流出：无条件直接流出，有条件检测后流出）
* 调整 `solon-flow` Node.getMeta 方法返回改为 Object 类型（并新增 getMetaAs）
* 调整 `solon-flow` Evaluation:runTest 改为 runCondition
* 调整 `solon-flow` FlowContext:incrAdd,incrGet 标为弃用（上下文数据为型只能由输入侧决定）
* 调整 `solon-flow` Condition 更名为 ConditionDesc
* 调整 `solon-flow` Task 更名为 ConditionDesc
* 调整 `solon-flow` XxxDecl 命名风格改为 XxxSpec
* 调整 `solon-flow` GraphDecl.parseByXxx 命名风格改为 GraphSpec.fromXxx
* 调整 `solon-flow` Graph.parseByXxx 命名风格改为 Graph.fromXxx
* 调整 `solon-ai-mcp` getResourceTemplates、getResources 不再共享注册
* 调整 `solon-ai-mcp` McpServerManager 内部接口更名为 McpPrimitivesRegistry （MCP 原语注册器）
* 调整 `solon-ai-mcp` McpClientProvider 默认不启用心跳机制（随着 mcp-sdk 的成熟，server 都有心跳机制了）
* 修复 `solon` IndexFiles 路径表达式的兼容问题（添加转换 `*->@`、`:->!`）
* 修复 `solon` ParamWrap:getName 加 '@Param(name=xxx)' 注解时没有生效的问题（v3.7.0 出现）。对 solon-cache 会有影响
* 修复 `solon-web-vertx` VxWebContext._requestBody 如果为 null 文件上传时会出错的问题
* 修复 `solon-docs-openapi2` 返回类型中泛型失效的问题（v3.7.0 出现）
* snack4 升为 4.0.20
* jackson 升为 2.19.2
* liquor 升为 1.6.6
* asm 升为 9.9


#### solon 仓库补充说明

新特性：

```java
public class Demo {
   static ScopeLocal<String> LOCAL = ScopeLocal.newInstance();

   public void test(){
       LOCAL.with("test", ()->{
           System.out.println(LOCAL.get());
       });
   }
}
```


#### solon-ai 仓库补充说明


新特性展示：1.MCP 无状态会话（STREAMABLE_STATELESS）和 2.CompletableFuture 异步MCP工具

```java
@McpServerEndpoint(channel = McpChannel.STREAMABLE_STATELESS, mcpEndpoint = "/mcp1")
public class McpServerTool {
    @ToolMapping(description = "查询天气预报", returnDirect = true)
    public CompletableFuture<String> getWeather(@Param(description = "城市位置") String location) {
        return CompletableFuture.completedFuture("晴，14度");
    }
}
```

传输方式对应表：（服务端与客户端，须使用对应的传输方式才可通讯）

| 服务端                   | 客户端         |  备注               |
|-----------------------|-------------|-----------------|
| STDIO                 | STDIO       |                 |
| SSE                   | SSE         |                 |
| STREAMABLE            | STREAMABLE  |                 |
| STREAMABLE_STATELESS  | STREAMABLE  | 对 server 集群很友好  |


* STREAMABLE_STATELESS 集群，不需要 ip_hash，但“原语”变化后无法通知 client




#### solon-flow 仓库补充说明

重要变化：

* 取消“有状态”、“无状态”概念。
* solon-flow 回归通用流程引擎（分离“有状态”的概念）。
* 新增 solon-flow-workflow 为工作流性质的封装（未来可能会有 dataflow 等）。


兼容变化对照表：

| 旧名称                    | 新名称                   | 说明                    |  
|------------------------|-----------------------|-----------------------|
| `GraphDecl`            | `GraphSpec`           | 图定义                   |
| `GraphDecl.parseByXxx` | `GraphSpec.fromXxx`   | 图定义加载                    |
| `Graph.parseByXxx`     | `Graph.fromXxx`       | 图加载                   |
| `LinkDecl`             | `LinkSpec`            | 连接定义                  |
| `NodeDecl`             | `NodeSpec`            | 节点定义                  |
| `Condition`            | `ConditionDesc`       | 条件描述                  |
| `Task`                 | `TaskDesc`            | 任务描述（避免与 workflow 的概念冲突） |
|                        |                       |                       |
| `FlowStatefulService`  | `WorkflowService`     | 工作流服务                 |
| `StatefulTask`         | `Task`                | 任务                    | 
| `Operation`            | `TaskAction`          | 任动工作                  | 
| `TaskType`             | `TaskState`           | 任务状态                  | 


FlowStatefulService 到 WorkflowService 的接口变化对照表：

| 旧名称                          | 新名称                     | 说明     |  
|------------------------------|-------------------------|--------|
| `postOperation(..)`          | `postTask(..)`          | 提交任务   |
| `postOperationIfWaiting(..)` | `postTaskIfWaiting(..)` | 提交任务   |
|                              |                         |        |
| `evel(..)`                   | /                       | 执行     |
| `stepForward(..)`            | /                       | 单步前进   |
| `stepBack(..)`               | /                       | 单步后退   |
|                              |                         |        |
| /                            | `getState(..)`          | 获取状态   |



新特性预览：Graph 硬编码方式（及修改能力增强）

```java
//硬编码
Graph graph = Graph.create("demo1", "示例", spec -> {
    spec.addStart("start").title("开始").linkAdd("01");
    spec.addActivity("n1").task("@AaMetaProcessCom").linkAdd("end");
    spec.addEnd("end").title("结束");
});

//修改
Graph graphNew = Graph.copy(graph, spec -> {
    spec.getNode("n1").linkRemove("end").linkAdd("n2"); //移掉 n1 连接；改为 n2 连接
    spec.addActivity("n2").linkAdd("end");
});
```

新特性预览：FlowContext:lastNodeId （计算的中断与恢复）。参考：https://solon.noear.org/article/1246

```java
flowEngine.eval(graph, context.lastNodeId(), context);
//...（从上一个节点开始执行）
flowEngine.eval(graph, context.lastNodeId(), context);
```


新特性预览：WorkflowService（替代 FlowStatefulService）

```java
WorkflowService workflow = WorkflowService.of(engine, WorkflowDriver.builder()
        .stateController(new ActorStateController()) 
        .stateRepository(new InMemoryStateRepository()) 
        .build());


//1. 取出任务
Task task = workflow.getTask(graph, context);

//2. 提交任务
workflow.postTask(task.getNode(), TaskAction.FORWARD, context);
```



### v3.7.4

* 添加 `solon` ThreadsUtil:newVirtualThreadFactory 方法
* 添加 `solon` Solon.start(Class, MultiMap) 方法
* 添加 `solon-test` HttpTester protocol 参数支持（方便 https 或 http 切换测试）
* 添加 `solon-serialization` JsonPropsUtil2.dateAsFormat 添加 java.sql.Timestamp 类型支持
* 添加 `solon-net-httputils` HttpSslSupplierAny
* 优化 `solon-net-httputils` SslContextBuilder
* 修复 `solon` IndexFiles 路径表达式的兼容问题（添加转换 `*->@`、`:->!`）
* 修复 `solon-docs-openapi2` 返回类型中泛型失效的问题（v3.7.0 出现）
* snack4 升为 4.0.20
* liquor 升为 1.6.4
* asm 升为 9.9

### v3.7.3

* 插件 `solon-flow` 第五次预览
* 新增 `solon-server-tomcat-add-jsp` 插件
* 新增 `solon-server-tomcat-add-websocket` 插件
* 新增 `solon-server-tomcat-add-jsp-jakarta` 插件
* 新增 `solon-server-tomcat-add-websocket-jakarta` 插件
* 新增 `solon-cloud-telemetry` 插件
* 新增 `opentelemetry-solon-cloud-plugin` 插件
* 添加 `solon` SolonProps:appVersion `solon.app.version` 配置支持
* 添加 `solon` 接口版本的模式匹配支持（`1.0+`）
* 添加 `solon-scheduling` IJobManager:jobAdd(name,scheduled,handler,data) 方法
* 添加 `solon-server-tomcat` jsp 适配支持
* 添加 `solon-flow` Node:task 硬编码能力（直接设置 TaskComponent），方便全动态场景
* 添加 `solon-flow` Node:when 硬编码能力（直接设置 ConditionComponent），方便全动态场景
* 添加 `solon-flow` Link:when 硬编码能力（直接设置 ConditionComponent），方便全动态场景
* 添加 `solon-flow` StateResult ，在计算方面比 StatefulTask 更适合语义
* 添加 `solon-flow` FlowContext:stop(),interrupt() 方法
* 添加 `solon-flow` Graph 快捷创建方法
* 添加 `solon-flow` FlowStatefulService:eval 方法
* 添加 `solon-server-tomcat-jakarta` jsp 支持
* 优化 `solon-server` DebugUtils 支持 jetty,tomcat,undertow jsp 调试目录构建
* 优化 `solon-server-undertow` 请求大小控制
* 优化 `solon-server-jetty` jsp 适配
* 优化 `solon-ai-core` ToolSchemaUtil 扩展能力，支持注解处理定制（方便第三方集成）
* 优化 `solon-ai-mcp` MCP 客户端与服务端异常链接状态 立即返回
* 调整 `solon-flow` “链”概念改为“图”（更符合实际结构）
* 调整 `solon-flow` Chain 更名为 Graph，ChainDecl 更名为 GraphDecl
* 调整 `solon-flow` ChainInterceptor,ChainInvocation 更名为 FlowInterceptor,FlowInvocation
* 调整 `mybatis-solon-plugin` 当配置的 mapper 没有对应注册时改为 warn 日志打印（之前为异常）
* 修复 `solon` RoutingDefault 多个双星通配符冲突的问题（v3.7.2 出现）
* 修复 `solon-server-jetty-jakarta` jsp 支持
* 修复 `solon-configuration-processor` 失效的问题（v3.6.1 出现）
* eggg 升为 1.0.10
* snack4 升为 4.0.17
* wood 升为 1.4.3
* luffy 升为 1.11.1
* folkmq 升为 1.7.13
* fastjson2 升为 2.0.60
* hutool 升为 5.8.41
* smarthttp 升为 2.5.17
* tomcat 升为 9.0.112
* vert.x 升为 4.5.22
* jetty.jakarta 升为 12.1.4
* undertow.jakarta 升为 2.3.20.Final
* logback.jakarta 升为 1.5.21


solon-flow 兼容说明：

```
现有应用如果没有用 ChainDecl 动态构建，不会受影响。。。如果有？需要换个类名。
```

solon-flow 硬编码更简便：

```java
Graph graph = Graph.create("demo1", decl -> {
    decl.addActivity("n1").task(new Draft()).linkAdd("n2");
    decl.addActivity("n2").task(new Review()).linkAdd("n3");
    decl.addActivity("n3").task(new Confirm());
});
```


### v3.7.2

* 引入 jspecify 的 `@Nullable`,`@NonNull` 注解
* 新增 resilience4j-solon-cloud-plugin 插件
* 新增 solon-cloud-gateway websocket 协议代理支持
* 新增 solon 启动扫描类索引机制（由 solon aot 构建时自动生成）
* 新增 aot 构建配置（在 native 基础上去除 graalvm.buildtools），任意 jdk 版本可用
* 添加 solon RunUtil.io(),timer() 方便响应式使用
* 添加 solon 启动资源索引机制（通过 aot 实现）
* 添加 solon-rx Completable:doOnErrorResume 方法
* 添加 solon-rx Completable:subscribeOn, delay 方法，方便同步io对接
* 添加 solon-net WebSocket:colse(code,reason) 方法及相关适配
* 添加 solon-net-httputils HttpResponse:headerMap 方法
* 添加 solon-data solon.dataSources 的配置提示
* 添加 solon-web-staticfiles `solon.mime.mapping` 配置支持（将替代 solon.mime）
* 优化 solon 路由匹配规则，原3个优先级升为5优先级（更细）
* 优化 solon AppContext:beanScan 改为先加载再分批处理（确保配置类先处理）
* 优化 solon AppContext:startInjectReview 去掉 stream 写法（减少中转，提升性能）
* 优化 solon-logging 初始化处理，避免二次加载文件配置
* 优化 solon 启动性能（提升 10% 到 30%）
* 优化 solon-serve-vertx websocket 适配，避免与 solon-cloud-gateway 的 ws 代理起冲突
* 调整 solon 编译配置荐 maven.compiler.source,target 改为 release
* 调整 solon-serve-vertx 去除内部对象 VertxHolder（没地方用到了）
* 调整 solon-serialization  AbstractStringEntityConverter string 类型直接输出（不序列化）
* 调整 solon ChainManager:getInterceptorNodes，addInterceptor，addInterceptorIfAbsent，removeInterceptor 恢复旧方法并标为弃用
* 修复 nami-coder-snack4 插件元数据配置失效问题（v3.7.0 出现的）
* 修复 solon-rx Completable:doOnError 会中断传递的问题
* 修复 solon-server-vertx VxWebSocketImpl:remoteAddress 转换失败的问题
* 修复 solon-scheduling-simple 不能识别：`zone=+08` 配置问题
* eggg 升为 1.0.8
* snack4 升为 4.0.14

### v3.7.1

* 添加 solon Router:add(clz) 方法
* 添加 solon 启动类索引机制（通过 aot 实现）
* 修复 solon AppContext:tryBuildBeanOfClass2 目标组件为接口时出现 getCreator null 异常（边界问题）
* snack4 升为 4.0.12
* eggg 升为 1.0.7

### 3.7.0

* 升级 snack3 切换为 snack4
* 新增 solon-config-snack3 插件
* 新增 solon-config-snack4 插件
* 添加 solon preStop 方法名（替代 prestop），后者标为弃用。两者都可用
* 添加 solon Router:addPathPrefix(path, tester) 方法
* 添加 solon Context:localPort() 方法
* 添加 solon-server-smarthttp 有 tomcat 时的启动控制
* 优化 solon-web-staticfiles StaticResourceHandler 的 Cache-Control 处理（允许外部设定并优先）
* 优化 solon-ai-core ToolSchemaUtil:paramOf 方法，增加泛型支持
* 优化 solon-ai-core ToolSchemaUtil:outputSchema 泛型处理
* 调整 solon-config-plus 标为弃用，由 solon-config-snack3 或 solon-config-snack4 替代
* 调整 solon-net WebSocket:remoteAddress, localAddress 移除 throws IOException
* 调整 solon ActionLoader, ActionLoaderFactory 内部接口设计
* 调整 solon RouterWrapper 标为弃用，功能转到 Router 接口上
* 调整 solon ChainManager:addInterceptor （内部接口）更名为 addRouterInterceptor 强化语义
* 调整 solon 不再对 remoting 注册作 mapping 限制（改成跟控制器一样的策略）
* 调整 solon Router:getBy 更名为 findBy （前者标为弃用），避免下 get 疑似冲突
* 调整 solon-server 允许不输出 content-type 
* 修复 solon-ai parseToolCall 接收 stream 中间消息时可能会异常（添加 hasNestedJsonBlock 检测）
* 修复 solon-ai-mcp 可能出现 Unknown media type 错误（取消 request.contentType 空设置）
* 移除 solon.xxx 和 nami.xxx 风格的发布包
* 启用 eggg 作为类元信息构建机制
* redisx 升为 1.8.2（snack3 切换为 snack4）
* snack4 升为 4.0.8
* wood 升为 1.4.2
* log4j 升为 2.25.2
* logback 升为 1.3.16
* micrometer 升为 1.15.5 
* opentelemetry 升为 1.55.0
* undertow 升为 2.2.38.Final
* socketd 升为 2.5.20
* smartsocket 升为 1.7.4
* smarthttp 升为 2.5.16


| 快捷组合包      | 调整情况                                                           |
|------------|----------------------------------------------------------------|
| solon-lib  | 使用 solon-config-snack4 替代 solon-config-snack3                  |
| solon-web  | 使用 solon-serialization-snack4 替代    solon-serialization-snack3 |



### 3.6.3

* 优化 solon-server 不再默认输出 TEXT_PLAIN_UTF8_VALUE（允许空 content-type）
* 优化 solon-handle Action 默认为 TEXT_PLAIN_UTF8_VALUE
* smart-http 升为 2.5.14-r2
* snack4 升为 4.0.7


### 3.6.2

* 修复 solon 默认渲染器没有生效的问题
* 修复 solon-server-smarthttp 适配文件上传数据暴涨的问题（3.6.0 出现的）
* smart-http 升为 2.5.14


### 3.6.1

* 新增 `nami-coder-snack4` 插件
* 新增 `solon-serialization-snack4` 插件
* 新增 `nami-coder-snack4` 插件
* 添加 `solon` MethodArgumentResolver 接口，替代 ActionArgumentResolver （标为弃用）。语义更合理
* 添加 `solon` Render:mappings 方法（支持自动映射效果）
* 添加 `solon` `Bean:autoInject`（替代 injected）,`Bean:autoProxy`,`Managed:autoProxy` 属性
* 优化 `solon` 渲染体系对返回 string 的处理
* 优化 `solon` Entity if string 的渲染输出
* 优化 `solon` Utils.appFolder 支持中文路径
* 优化 `solon` RenderManager 内部基于 _mapping 的单线管理管理
* 优化 `solon-config-yaml` 对 'solon.env.on' 的分片处理（避免转 yaml 时与 'solon.evn' 冲突）
* 修复 `solon-rx` SimpleSubscriber 长流输出可能出错的问题
* liquor 升为 1.6.3




### 3.6.0

* 新增 `solon-server-grizzly` 插件
* 新增 `solon-server-grizzly-add-websocket` 插件
* 新增 `solon-server-tomcat` 插件（基于 tomcat v9.0 适配）
* 新增 `solon-server-tomcat-jakarta` 插件（基于 tomcat v11.0 适配）
* 新增 `solon-server-undertow-jakarta` 插件（基于 undertow v2.3 适配）
* 完善 `solon-server-jetty-jakarta` 插件（基于 jetty v12 适配）
* 完善 `solon-server-jetty-add-jsp-jakarta` 插件（基于 jetty v12 适配）
* 完善 `solon-server-jetty-add-websocket-jakarta` 插件（基于 jetty v12 适配）
* 调整 `solon-serialization-*` 弱化 ActionExecuteHandler, Render 的定制，改为 XxxxSerializer 对外定制
* 调整 `solon` LogIncubator 接口迁移到内核，由内核控制加载时机（权重提高）
* 调整 `solon` EntityConverter 接口（替代 Render 和 ActionExecuteHandler 接口），旧接口仍可用
* 调整 `solon` SolonProps:argx 改为 MultiMap 类型（支持多值），NvMap 标为弃用
* 引入 `slf4j-api` 替代 `solon` 内的 LogUtil（减少中转代码）
* 引入 `solon-expression` 替代 `solon` 内的模板表达式工具（仍可使用）
* 添加 `solon` Condition:onExpression（采用 SnEL 表达式）用于替代 onProperty（标为弃用）
* 添加 `solon` SnelUtil（基于 SnEL 且兼容旧的 TmplUtil） 替代 TmplUtil（标为弃用）//如果有 # 则为新表达式
* 添加 `solon-mvc` `List<UploadedFile>` 注入支持（用 `UploadedFile[]` 性能更好）
* 添加 `solon-server` 所有 http-server 适配 `server.request.fileSizeThreshold` 配置支持（重要升级）
* 添加 `solon` converters,serializers,renders,factories,chains（简化名自：converterManager,serializerManager,renderManager,factoryManager,chainManager）
* snakeyaml 升为 2.5
* lombok 升为 1.18.42
* jansi 升为 2.4.2
* guava 升为 33.4.8-jre
* log4j 升为 2.25.1
* fury 升为 0.10.3
* smart-http 升为 2.5.13
* reactor-core 升为 3.7.4
* graalvm.buildtools 升为 0.11.0

示例：

```java
@Managed
public class SerializerDemo {
    //ps: 这前需要使用 Fastjson2RenderFactory， Fastjson2ActionExecutor 两个对象，且表意不清晰 //（仍可使用）
    @Managed
    public void config(Fastjson2StringSerializer serializer) {
        //序列化（输出用）
        serializer.addEncoder(Date.class, s -> s.getTime());
        
        serializer.addEncoder(Date.class, (out, obj, o1, type, i) -> {
            out.writeInt64(((Date) obj).getTime());
        });

        serializer.getSerializeConfig().addFeatures(JSONWriter.Feature.WriteMapNullValue); //添加特性
        serializer.getSerializeConfig().removeFeatures(JSONWriter.Feature.BrowserCompatible); //移除特性
        serializer.getSerializeConfig().setFeatures(JSONWriter.Feature.BrowserCompatible); //重设特性

        //反序列化（收接用）
        serializer.getDeserializeConfig().addFeatures(JSONReader.Feature.Base64StringAsByteArray);
    }
}

@Managed
public class ConditionDemo(){
    //ps: 之前是用 onProperty（功能有限，不够体系化） //（仍可使用）
    @Condition(onExpression = "${demo.level:1} == '1'") //SnEL 求值表达式
    @Managed
    public void ifDemoLevel1ThenRun(){
        System.out.println("hi!");
    }
}

@Managed
public class SnelDemo {
    //ps: 之前基于 TmplUtil 实现（功能有限，不够体系化） //（仍可使用） //旧模板符号：`${}`
    @Cache(key = "oath_#{code}", seconds = 10) //SnEL 模板表达式（通过 SnelUtil 实现兼容）//新模板符号：`#{}`
    public Oauth queryInfoByCode(String code) {
        return new Oauth(code, LocalDateTime.now());
    }
    
    @CachePut(keys = "oath_#{result.code}") //(result 为返回结果)
    public Oauth updateInfo(Oauth oauth) {
        return oauth;
    }

    @CacheRemove(keys = "oath_#{oauth.code}")
    public void removeInfo(Oauth oauth) {

    }
}
```

### 3.5.5

* 添加 `solon-net-httputils` HttpUtilsBuilder:factory 方法
* 修复 `solon-scheduling` `@Async` 执行器名字配置失效的问题
* 修复 `solon-net-httputils` HttpUtils:toQueryString map 里有 null item 时会异常的问题

### 3.5.4

* 优化 `solon-test` `@SolonTest` 支持非 solon 的 main 程序单测启动
* 修复 `solon-web-rx` 会发射中断的问题（v3.5.3, v3.4.5 引起的）

### 3.5.3

* 优化 solon-rx 确保 SimpleSubscriber:doOnComplete 只被运行一次（之前可能会被外部触发多次）
* 优化 solon-rx SimpleSubscriber 改为流控模式（只请求1，之前请求 max）//所有相关的都要测试
* 优化 solon-net-httputils 确保 TextStreamUtil:onSseStreamRequestDo 只会有一次触发 onComplete
* 优化 solon-web-rx RxSubscriberImpl 改为流控模式（只请求1，之前请求 max）//所有相关的都要测试
* 优化 solon-net-httputils sse 与背压处理的兼容性
* 修复 solon-net-httputils JdkHttpResponse:contentEncoding 不能获取 charset 的问题（并更名为 contentCharset，原名标为弃用）
* 修复 solon-docs-openapi2 ApiModel 中使用 UploadedFile 类型是解析报错的问题

### 3.5.2

* 新增 solon-server-jetty-jakarta 插件
* 添加 solon Props:toBean 自动 aot 收集处理
* 添加 solon Invocation:context 方法（传递应用上下文）
* 添加 solon-ai-core ToolSchemaUtil 简化方法
* 添加 solon-ai-mcp McpClientProperties:timeout 属性，方便简化超时配置（可省略 httpTimeout, requestTimeout, initializationTimeout）
* 添加 solon-ai-mcp McpClientProvider:toolsChangeConsumer,resourcesChangeConsumer,resourcesUpdateConsumer,promptsChangeConsumer 配置支持
* 添加 solon-ai-mcp McpClientProvider 缓存锁和变更刷新控制
* 添加 feign-solon-plugin aot 自动注册
* 添加 dubbo-solon-plugin aot 自动注册
* 添加 lettuce-solon-plugin aot 配置
* 优化 nami NamiConfigurationDefault 与 aot 兼容
* 优化 nami-channel-http 缺少编码器的异常提示
* 优化 solon websocket 闲置超时处理（确保能触发一次关闭事件，有可能会多次触发
* 优化 solon-cloud 组件自动注册（之前大多只能手动注册）
* 调整 solon rpc 异常传递（改为 http code, 之前为 json-type 异常）
* 调整 solon-ai-core FunctionToolDesc:doHandle 改用 ToolHandler 参数类型（之前为 Function），方便传递异常
* 修复 nami 简化模式 action 识别出错的问题
* 修复 solon-net-httputils HttpResponseException 在构建日志消息时，会出现'-1'端口的情况
* 修复 solon-net-httputils 当服务端不结束流时 sse 解析不能结束的问题
* snack3 升为 3.2.139
* water 升为 2.17.0
* redisson 升为 3.51.0

### 3.5.1

* 新增 solon-ai-core GenerateModel 接口，替代 ImageModel
* 添加 solon-ai-core ChatModel 增加多媒体内容输出（增强感知型模型的兼容，比如输出图片或视频）
* 添加 solon-ai-core ImageModel 增加结构体提示语输入（比如图片编辑模型）
* 添加 solon-ai-core AbstractChatDialect 对多媒体内容输出的支持
* 添加 solon-ai-core AssistantMessage:contentRaw 原生内容（可能是 String、Map、List、null）
* 添加 solon-ai-dialect-dashscope 通过接口地址识别方言
* 添加 solon-ai-mcp McpServerEndpointProvider:Builder 添加 context-path 配置
* 添加 solon `@Managed` 增加方法注入支持（可用于替换 `@Component`,`@Bean`）
* 添加 solon `@Condition:priority` 替换 `@Bean:priority` （标为弃用）
* 添加 solon `@Managed:autoInject` 对应 `@Bean:injected` 属性
* 添加 solon AppContext:tryBuildBeanOfMethod 方法，方便外部扩展
* 优化 solon GenericUtil:createTypeGenericMap 处理失败异常提示
* 优化 solon-aot NativeMetadataUtils:registerMethodAndParamAndReturnType 元数据注册失败时的提示异常
* 优化 solon-aot SolonAotProcessor:doProcess 确保异常时正常退出
* 优化 solon-web uri 解析异常时改为 400 StatusException 异常
* 优化 solon `@Bean` 注解，改用 beanExtractorAdd 实现
* 优化 solon-ai-mcp McpClientProvider 配置向 McpServers json 格式上靠
* 优化 solon-statemachine 将 Event,State 接口标为弃用，不再强制需要。使用更自由
* 修复 solon-ai-core `think-> tool -> think` 时，工具调用的内容无法加入到对话的问题
* 修复 solon-ai-mcp 服务端传输层的会话长连会超时的问题
* 修复 solon-ai-mcp 客户端提供者心跳失效的问题
* 修复 solon-ai-mcp SSE 传输时 message 端点未附加 context-path 的问题
* asm 升为 9.8

### 3.5.0


* 新增 solon-ai-mcp MCP_2025-03-26 版本协议支持
* 插件 solon-flow 第四次预览
* 插件 solon-flow stateful 第三次预览
* 
* 添加 solon-flow FlowDriver:postHandleTask 方法
* 优化 solon-net-httputils HttpUtils 与 HttpUtilsFactory（部分功能迁到 HttpUtils） 关系简化
* 优化 solon-net-httputils OkHttpUtils 适配与 tlsv1 的兼容性
* 优化 solon-net-httputils JdkHttpResponse:bodyAsString 的编码处理（没有 ContentEncoding 时，优先用 charset 配置）
* 优化 solon-expression SnelEvaluateParser:parseNumber 增强识别 "4.56e-3"（科学表示法）和 "1-3"（算数）
* 优化 solon 启动后 Lifecycle:postStart 可在加入时直接执行
* 
* 调整 solon-flow FlowContext 拆分为：FlowContext（对外） 和 FlowExchanger（对内）
* 调整 solon-flow FlowContext 移除 result 字段（所有数据基于 model 交换）
* 调整 solon-flow FlowContext get 改为返回 Object（之前为 T），新增 getAs 返回 T（解决 get 不能直接打印的问题）
* 调整 solon-flow 移除 StatefulSimpleFlowDriver 功能合并到 SimpleFlowDriver（简化）
* 调整 solon-flow 新增 stateless 包，明确有状态与无状态这两个概念（StatelessFlowContext 更名为 StatefulFlowContext）
* 调整 solon-flow FlowStatefulService 接口，每个方法的 context 参数移到最后位（保持一致性）
* 调整 solon-flow 新增 StatefulSupporter 接口，方便 FlowContext 完整的状态控制
* 调整 solon-flow StateRepository 接口的方法命名，与 StatefulSupporter 保持一致性
* 调整 solon-flow Chain 拆分为：Chain 和 ChainDecl。Chain 为运行态（不可修改）；ChainDecl 为配置态（可以随时修改）。
* 调整 `solon-boot-*` 插件（标为弃用） 更名为 `solon-server-*` 
* 调整 `solon.boot` 包名（相关工具标为弃用） 更名为 `solon.server`
* 调整 solon-ai-mcp mcp 协议升为 MCP_2025-03-26（支持 streamable、annotation、outputSchema 等特性）
* 调整 solon-ai-mcp channel 取消默认值（之前为 sse），且为必填（利于协议升级过度，有明确的开发时、启动时提醒）
* 
* 修复 solon-net-httputils OkHttpResponse:contentType 获取错误的问题
* 修复 solon-net-httputils OkHttpUtils 适配重定位后 req-body 数据不能重读的问题
* liquor 升为 1.6.2 （兼容 arm jdk）
* jetty 升为 9.4.58.v20250814


### 3.4.6

* 优化 `solon-test` `@SolonTest` 支持非 solon 的 main 程序单测启动
* 修复 `solon-web-rx` 会发射中断的问题（v3.5.3, v3.4.5 引起的）

### 3.4.5

* 优化 solon-rx 确保 SimpleSubscriber:doOnComplete 只被运行一次（之前可能会被外部触发多次）
* 优化 solon-rx SimpleSubscriber 改为流控模式（只请求1，之前请求 max）//所有相关的都要测试
* 优化 solon-net-httputils 确保 TextStreamUtil:onSseStreamRequestDo 只会有一次触发 onComplete
* 优化 solon-web-rx RxSubscriberImpl 改为流控模式（只请求1，之前请求 max）//所有相关的都要测试
* 优化 solon-net-httputils sse 与背压处理的兼容性
* 修复 solon-net-httputils JdkHttpResponse:contentEncoding 不能获取 charset 的问题（并更名为 contentCharset，原名标为弃用）
* 修复 solon-docs-openapi2 ApiModel 中使用 UploadedFile 类型是解析报错的问题

### 3.4.4

* 优化 solon-net-httputils HttpUtils 与 HttpUtilsFactory（部分功能迁到 HttpUtils） 关系简化
* 优化 solon-net-httputils OkHttpUtils 适配与 tlsv1 的兼容性
* 优化 solon-net-httputils JdkHttpResponse:bodyAsString 的编码处理（没有 ContentEncoding 时，优先用 charset 配置）
* 修复 solon-net-httputils HttpResponseException 在构建日志消息时，会出现'-1'端口的情况
* 修复 solon-net-httputils 当服务端不结束流时 sse 解析不能结束的问题
* 修复 solon-net-httputils OkHttpResponse:contentType 获取错误的问题
* 修复 solon-net-httputils OkHttpUtils 适配重定位后 req-body 数据不能重读的问题

### 3.4.3

* 新增 solon-statemachine （状态机）插件与 solon-flow 互补（不同场景，按需选择）
* 新增 solon-cache 插件（从 solon-data 分离出来，方便更小单位的依赖）
* 新增 solon-ai-repo-mysql 插件
* 新增 solon-flow iterator 循环网关（`$for`,`$in`）
* 新增 solon-flow activity 节点流入流出模式（`$imode`,`$omode`），且于二次定制开发
* 添加 solon-net-httputils HttpResponse:createError() 方法
* 添加 solon-web-sse SseEmitter:error 方法
* 添加 solon-flow ChainInterceptor:onNodeStart, onNodeEnd 方法（扩展拦截的能力）
* 添加 solon-flow 操作：Operation.BACK_JUMP, FORWARD_JUMP
* 添加 solon-ai-core InMemoryChatSession（语义清晰） 替代 ChatSessionDefault（标为弃用）
* 优化 solon DateUtil 的兼容性，兼容 `2025-07-23 08:12:33.0`
* 优化 solon 在非容器模式下的兼容性
* 优化 solon Context:returnValue 返回值处理查找
* 优化 solon web contentTypeDoSet 处理（当 contentType 为空时，不加编码）
* 优化 solon-net-httputils HttpSslSupplierDefault 改用 SSLContext.getDefault 作为默认
* 优化 solon-web-rx RxSubscriberImpl:onError 确保 subscription.cancel 有执行
* 优化 solon-ai-core ChatRequestDescDefault http 异常转换描述
* 优化 solon-ai-core 方言的 tool_calls 消息的构建（更好的兼容 vllm）
* 优化 solon-ai-mcp JsonSchema.additionalProperties 兼容性（兼容 bool, map）
* 优化 solon-ai-mcp McpClientProvider 改为 McpAsyncClient（为异常需求提供支持）
* 优化 solon-ai-mcp 初始化控制（禁用 connectOnInit），增加连接打印
* 优化 file-s3-solon-cloud-plugin 文件分隔符处理（兼容 window 分隔符）
* 优化 local-solon-cloud-plugin 文件分隔符处理（兼容 window 分隔符）
* snack3 升为 3.2.137
* fastjson2 升为 2.0.58
* wood 升为 1.3.25
* dubbo3 升为 3.3.5

### 3.4.2

* 优化 solon-net-http HttpSslSupplier 接口定义（以适与 okhttp 的接口变化）
* 优化 solon-docs-openapi2 body 动态模型的 key 添加 method（避免冲突）
* 修复 solon-net-http okhttp 适配使用弃用方法在 java9 会出错的问题

### 3.4.1

* 新增 solon-ai-repo-pgvector 插件
* 新增 solon-ai-search-baidu 插件
* 新增 solon `@Managed` 预览注解（未来可能替代 `@Component`）
* 新增 solon ActionArgumentResolver 接口
* 添加 solon-net-httputils ssl 定制支持
* 添加 solon-flow FlowContext:incrGet, incrAdd
* 添加 solon-flow aot 配置
* 添加 solon-ai-core `TextLoader(byte[])(SupplierEx<InputStream>)` 构造方法
* 添加 solon-ai-core `ChatConfig:defaultToolsContext`（默认工具上下文）, `defaultOptions`（默认选项） 属性
* 添加 solon-ai-core `RepositoryStorable:insert(list,progressCallback)` 和 `asyncInsert(list,progressCallback)` 方法，支持进度获取
* 添加 solon-ai-mcp 客户端 ssl 定制支持
* 添加 aliyun-oss-solon-cloud-plugin 阿里云oss获取临时文件url逻辑
* 优化 solon-boot server 启动时机（转到 postStart 时）
* 优化 solon-net-httputils 流接收的编码处理
* 优化 solon-flow Chain:parseByDom 节点解析后的添加顺序
* 优化 solon-flow Chain 解析统改为 Yaml 处理，并添加 toYaml 方法
* 优化 solon-flow Chain:toJson 输出（压缩大小，去掉空输出）
* 优化 solon-ai 方言 think 思考内容和字段的兼容性处理
* 优化 solon-ai 方言处理与 modelscope（魔搭社区）的兼容性
* 优化 solon-ai 方言处理与 siliconflow（硅基流动）的兼容性
* 优化 solon-ai 方言处理的流式节点识别兼容性
* 优化 solon-ai 用户消息的请求构建（当内容为空时，不添加 text）
* 优化 solon-ai-mcp McpClientProvider 心跳间隔控制（5s 以下忽略）
* 优化 solon-ai-mcp McpServerContext 增加 stdio 代理支持（环境变量自动转为 ctx:header）
* 优化 solon-ai-mcp WebRxSseClientTransport 添加 debug 日志打印
* 优化 local-solon-cloud-plugin 在启动时，预热 RunUtil
* 修复 solon aot 时 extract method 未注册的问题
* 修复 solon-net-httputils JdkHttpResponse:bodyAsString 不能使用指定编码的问题
* 修复 solon-net-httputils TextStreamUtil 不能使用指定编码的问题
* 修复 solon-scheduling-simple 可能启动后就退出的问题（有些任务触发时间晚，调试线程池未启动）
* 修复 solon-security-validation 的 `@Email` 验校注解兼容性问题（之前 name 有点会出错）
* liquor 升为 1.5.8
* wood 升为 1.3.24

### 3.4.0 (2025-07-07)

* 插件 solon-flow stateful 二次预览
* 新增 solon-ai-repo-opensearch 插件
* 新增 hibernate-jakarta-solon-plugin 插件
* 新增 solon-web-webservices-jakarta 插件
* 新增 solon 接口版本 version 支持
* 优化 solon-test RunnerUtils 的缓存处理，原根据“启动类”改为根据”测试类“缓存
* 优化 solon `@Inject` 注解目标范围增加 METHOD 支持
* 优化 solon-expression StandardContext 添加 target = null 检测
* 优化 solon-cloud DiscoveryUtils:tryLoadAgent 兼容性
* 优化 solon-cloud Config pull 方法，确保不输出 null
* 优化 mybatis-solon-plugin 插件配置的加载时机（mappers 之前）
* 添加 solon-test SolonJUnit5Extension,SolonJUnit4ClassRunner afterAllDo 方法（如果是当前启动类，则停止 solonapp 实例）
* 添加 solon-ai Options:toolsContext 方法
* 添加 solon-flow stateful FlowStatefulService 接口，替换 StatefulFlowEngine（确保引擎的单一性）
* 添加 solon-flow `FlowEngine:statefulService()` 方法
* 添加 solon-flow `FlowEngine:getDriverAs()` 方法
* 添加 hibernate-solon-plugin 对 PersistenceContext、PersistenceUnit 注解的支持
* 添加 hibernate-solon-plugin 对 PersistenceContext、PersistenceUnit 注解的支持
* 调整 solon 取消 --cfg 对体外文件的支持（如有需要通过 solon.config.load 加载）
* 调整 solon-flow stateful 相关概念（提交活动状态，改为提交操作）
* 调整 solon-flow stateful StateType 拆分为：StateType 和 Operation
* 调整 solon-flow stateful StatefulFlowEngine:postActivityState 更名为 postOperation
* 调整 solon-flow stateful StatefulFlowEngine:postActivityStateIfWaiting 更名为 postOperationIfWaiting
* 调整 solon-flow stateful StatefulFlowEngine:getActivity 更名为 getTask
* 调整 solon-flow stateful StatefulFlowEngine:getActivitys 更名为 getTasks
* 调整 solon-flow stateful StatefulFlowEngine 更名为 FlowStatefulService（确保引擎的单一性）
* 调整 solon-ai-core ToolCallResultJsonConverter 更名为 ToolCallResultConverterDefault 并添加序列化插件支持
* 调整 solon-ai-mcp PromptMapping，ResourceMapping 取消 resultConverter 属性（没必要了）
* 移除 mybatis-solon（与 mybatis-solon-plugin 重复）
* 修复 solon cookieMap 名字未区分大小写的问题（调整为与其它框架一至）
* 修复 solon-ai-core ChatModel:stream:doOnNext 可能无法获取 isFinished=true 情况
* 修复 solon-ai-core ChatModel:stream:doOnNext 可能无法获取 isFinished=true 情况
* 修复 solon-web-servlet SolonServletFilter 链的传递处理问题（未处理且200才传递，说明未变）
* luffy 升为 1.9.5
* liquor 升为 1.5.7
* snack3 升为 3.2.135


### 3.3.3

* 新增 nacos3-solon-cloud-plugin 插件
* 添加 solon Utils.asSet 方法
* 添加 solon-flow LinkDecl:when 方法用于替代 :condition（后者标为弃用）
* 添加 solon-flow parallel 网关多线程并行支持（通过 context.executor 决定）
* 添加 solon-ai-core RepositoryStorable:insert(Doc...) 方法
* 添加 solon-ai-mcp McpServerEndpoint:enableOutputSchema 支持（默认为 false）
* 优化 solon-hotplug stop 时将插件上下文置为 null（再次启动后可以有新的生命周）
* 优化 solon-admin-client 服务注册、心跳逻辑
* 优化 solon-flow when 属性全面替代 condition 属性
* 优化 solon-flow FlowContext 变量的线程可见
* 优化 solon-logging `solon.logging.config` 配置的加载处理（使用 ResourceUtil）
* 优化 solon-net-httputils 添加 JdkHttpDispatcher 类，异步改用自带线程池
* 优化 solon-ai-core ToolSchemaUtil 对 Map 的处理（有些框架，太细不支持）
* 优化 solon-ai-core ToolSchemaUtil 对 Collection 的处理（有些框架，太细不支持）
* 优化 solon-ai-core MethodToolProvider 改用 clz 构建(兼容外部代理情况)
* 优化 solon-ai-mcp MethodPromptProvider,MethodResourceProvider 改用 clz 构建(兼容外部代理情况)
* 优化 solon-ai-mcp 优化 WebRxSseClientTransport 连接等待处理（异常时立即结束）
* 修复 solon-scheduling-simple 运行 `0 0 10-20 * * ?` 会出错的问题
* 修复 solon-web-servlet war 部署时 Servlet 容器未启用 Session 导致参数注入出错（No SessionManager）
* 调整 solon-flow FlowDriver:handleTest 更名为 handleCondition （跟 handleTask 容易混）
* 调整 solon-ai-core ToolCallResultConverter 接口定义（增加返回类型参数）
* 调整 solon-ai-core 移除 QueryCondition:doFilter 方法（避免误解）
* 调整 solon-ai-mcp tool,resource 结果默认处理改为 ToolCallResultJsonConverter
* 调整 solon-ai-repo-elasticsearch 搜索类型，默认改为相似搜索（之前为精准，需要脚本权限）
* snack3 升为 3.2.134
* redisx 升为 1.7.0
* wood 升为 1.3.21
* liquor 升为 1.5.5
* java-cron 升为 1.0.3
* elasticsearch-rest-high-level-client 升为 7.17.28
* milvus-sdk-java 升为 2.5.10
* vectordatabase-sdk-java 升为 2.4.5

### 3.3.2

* 强化 solon-flow-designer 设计器
* 强化 solon-ai-flow 插件
* 添加 solon StatusException 状态码表
* 添加 solon AppContext::getBeansMapOfType(TypeReference) 泛型获取方法
* 添加 solon AppContext::getBeansOfType(TypeReference) 泛型获取方法
* 添加 solon AppContext::getBean(TypeReference) 泛型获取方法
* 添加 solon AppContext::getBean(ParameterizedType) 泛型获取方法
* 添加 solon Context:status(code, message) 方法
* 添加 solon-mvc @Path.required 注解属性支持
* 添加 solon-net-httputils TextStreamUtil:parseLineStream,parseSseStream->Publisher 方法
* 添加 solon-net-httputils curl 打印支持
* 添加 solon-flow FlowContext:runScript 替代 run（旧名，标为弃用）
* 添加 solon-flow FlowContext:runTask(node, description)方法
* 添加 solon-flow link 支持 when 统一条件（替代 condition）
* 添加 solon-flow activity 多分支流出时支持（逻辑与排他网关相同）
* 添加 solon-flow Counter:incr(key, delta) 方法
* 添加 solon-ai-core ChatInterceptor 聊天拦截机制
* 添加 solon-ai-core ChatMessage:ofUserAugment 替代 augment（后者标为弃用）
* 添加 solon-ai-core ProxyDesc 的 Serializable 接口实现
* 添加 solon-ai-core ChatOptions:response_format 方法
* 添加 solon-ai-core AssistantMessage:getSearchResultsRaw 方法
* 添加 solon-ai-mcp McpServerEndpointProvider:getMessageEndpoint 方法
* 添加 solon-ai-mcp McpServerParameters http 参数支持
* 添加 solon-ai-mcp McpClientProvider 本地缓存支持（默认 30秒）
* 添加 solon-ai-mcp 原语处理异常日志
* 优化 solon 属性默认值处理策略
* 优化 solon BeanWrap 泛型匹配
* 优化 solon-mvc mProduces 设定调到 invoke 之前（执行中产生输出，也可以产生效果）
* 优化 solon-proxy ClassCodeBuilder v23 改为 v24
* 优化 solon-hotplug PluginClassLoader 的代理兼容性
* 优化 solon-web-sse SseRender:render 对 null 的过滤
* 优化 solon-flow-luffy JtExecutorAdapter 的几个拼写错误
* 优化 solon-net-httputils HttpUtilsBuilder:build 路径合并处理
* 优化 nami 内部路径合并处理
* 优化 solon-ai-core ChatConfig.toString （增加 proxy）
* 优化 solon-ai-core Tool:outputSchema 改为必出
* 优化 solon-ai-core 添加 ToolCallException 异常类型，用于 tool call 异常传递（之前为 ChatException）
* 优化 solon-ai OpenaiChatDialect 方言，tool 消息也附带所有的 tools 元信息（之前被过滤了）
* 优化 solon-ai-mcp McpServerContext 同步连接时的请求参数，方便在 Tool 方法里获取
* 优化 solon-ai-mcp McpProviders 在 sse 时，支持 env 也作为 header 处理（有些服务方的配置，是用 env 的）
* 优化 solon-ai-mcp 取消 RefererFunctionTool（由 FunctionToolDesc 替代）
* 优化 solon-ai-mcp 基于 McpServerParameters 的构建能力
* 调整 solon-flow 取消 `type: "@Com"` 的快捷配置模式（示例调整）
* 修复 nami 使用 @Body 注解时会出现 npe 问题
* sa-token 升为 1.44.0
* wood 升为 1.3.19

### 3.3.1

* 新增 solon-ai-flow 插件
* 新增 solon-ai-load-ddl 插件
* 新增 solon-flow-designer (设计器)
* 添加 solon BeanWrap:annotationHas 方法
* 添加 solon LifecycleBean:setAppContext 方法
* 添加 solon LazyReference 类（懒引用）
* 添加 solon RunUtil:callAndTry 方法
* 添加 solon-data DsBuilder 公用处理类
* 添加 solon-data Ds 注解 ElementType.TYPE 支持
* 添加 solon-security-auth AuthIgnore 注解
* 添加 solon-ai-core ChatMessage:ofUser(media) 方法
* 添加 solon-ai-core ChatSession:addMessage(ChatPrompt) 方法
* 添加 solon-ai-core ChatSession:addMessage(Collection) 方法
* 添加 solon-ai-core RerankingConfig,RerankingModel toString 方法
* 添加 solon-ai-core 模型的网络代理支持（支持简单配置，和复杂构建）
* 添加 solon-ai-mcp 客户端的网络代理简单配置支持
* 添加 solon-ai-mcp messageEndpoint 端点配置支持（应对特殊需求，一般自动更好）
* 添加 solon-ai-mcp ToolMapping,ResourceMapping 注解方法对 Produces 注解的支持（用它可指定结果转换处理）
* 添加 solon-ai-mcp ToolCallResultConverter:matched 方法
* 添加 solon-ai-mcp 资源模板的响应适配
* 添加 solon-ai-mcp McpClientProvider:getResourceTemplates 方法
* 添加 solon-ai-mcp 检查原语是否存在的方法（hasTool, hasPrompt, hasResource）
* 添加 solon-ai-mcp 提示语支持 UserMessage 拆解成多条 mcp 内容（如果，同时有媒体和文本的话）
* 添加 grpc-solon-cloud-plugin 流式存根，支持Grpc流式消息收发
* 优化 nami 增加 `@Path` 注解支持
* 优化 solon setAccessible 异常控制
* 优化 solon MethodHandler 的 MethodWrap 实例化（取消对 solon.app 的依赖），支持非容器运行
* 优化 solon-net-httputils 202 重试处理
* 优化 solon-net-httputils 3xx 跳转处理
* 优化 solon-net-httputils execAsSseStream，execAsLineStream 增加 error message 显示支持
* 优化 solon-mvc ActionExecuteHandler 使用 LazyReference，延迟表单解析（可支持流的原始读取）
* 优化 solon-ai-core tool 空参数时的不同大模型兼容性
* 优化 solon-ai-core ChatSession 的作用，为限数提供支持
* 优化 solon-ai-core MethodFunctionTool 移除对 Mapping 注解的支持（语意更清楚，之前 MethodToolProvider 已经移除，这个落了）
* 优化 solon-ai-mcp 取消 MethodFunctionResource 对反回类型的限制（增加了 resultConverter 转换处理）
* 优化 solon-ai-mcp McpServerEndpointProvider 支持零添加原语，postStart 后，可添加原语
* 优化 solon-ai-core EmbeddingRequest，ImageRequest，RerankingRequest 当 resp.getError() 非 null 时，直接出抛异常
* 修复 solon-ai ChatRequestDefault:stream 请求 r1 时，可能会产生两次 tink 消息发射
* 修复 solon ContextPathFilter 无效地址没有出现 404 的问题（并添加单测）
* smart-http 升为 2.5.12


### 3.3.0 (2025-05-10)

* 新增 solon-ai-repo-dashvector 插件
* 新增 seata-solon-plugin 插件
* 新增 solon-data Ds 注解（为统一数据源注入作准备）
* 插件 solon-ai 三次预览
* 插件 solon-ai-mcp 二次预览
* 调整 solon Cookie,Header,Param 的 `required` 默认改为 true (便与 mcp 复用)
* 调整 solon-ai 移除 ToolParam 注解，改用 `Param` 注解（通用参数注解）
* 调整 solon-ai ToolMapping 注解移到 `org.noear.solon.ai.annotation`
* 调整 solon-ai FunctionToolDesc:param 改为 `paramAdd` 风格
* 调整 solon-ai MethodToolProvider 取消对 Mapping 注解的支持（利于跨生态体验的统一性）
* 调整 solon-ai-mcp McpClientToolProvider 更名为 McpClientProvider（实现的接口变多了））
* 优化 solon-ai 拆分为 solon-ai-core 和 solon-ai-model-dialects（方便适配与扩展）
* 优化 solon-ai 模型方言改为插件扩展方式
* 优化 nami 的编码处理
* 优化 nami-channel-http HttpChannel 表单提交时增加集合参数支持（自动拆解为多参数）
* 优化 solon Param 注解，添加字段支持
* 优化 solon 允许 MethodWrap 没有上下文的用况
* 优化 solon-web-sse 边界，允许 SseEmitter 未提交之前就可 complete
* 优化 solon-serialization JsonPropsUtil.apply 分解成本个方法，按需选择
* 优化 solon-ai 允许 MethodFunctionTool,MethodFunctionPrompt,MethodFunctionResource 没有 solon 上下文的用况
* 优化 solon-ai-core `model.options(o->{})` 可多次调用
* 优化 solon-ai-mcp McpClientProvider 同时实现 ResourceProvider, PromptProvider 接口
* 优化 solon-ai-repo-redis metadataIndexFields 更名为 `metadataFields` （原名标为弃用）
* 添加 nami NamiParam 注解支持
* 添加 nami 文件（`UploadedFile` 或 `File`）上传支持
* 添加 nami 对 solon Mapping 相关注解的支持
* 添加 nami 自动识别 File 或 UploadedFile 参数类型，并自动转为 FORM_DATA 提交
* 添加 solon Mapping:headers 属性（用于支持 Nami 用况）
* 添加 solon Body:description,Param:description,Header:description,Cookie:description 属性（用于支持 MCP 用况）
* 添加 solon UploadedFile 基于 File 构造方法
* 添加 solon-net-httputils HttpUtilsBuilder:proxy 方法（设置代理）
* 添加 solon-net-httputils HttpProxy 类
* 添加 solon-ai-core ChatSubscriberProxy 用于控制外部订阅者，只触发一次 onSubscribe
* 添加 solon-ai-mcp McpClientProperties:httpProxy 配置
* 添加 solon-ai-mcp McpClientToolProvider isStarted 状态位（把心跳开始，转为第一次调用这后）
* 添加 solon-ai-mcp McpClientToolProvider:readResourceAsText,readResource,getPromptAsMessages,getPrompt 方法
* 添加 solon-ai-mcp McpServerEndpointProvider:getVersion,getChannel,getSseEndpoint,getTools,getServer 方法
* 添加 solon-ai-mcp McpServerEndpointProvider:addResource,addPrompt 方法
* 添加 solon-ai-mcp McpServerEndpointProvider:Builder:channel 方法
* 添加 solon-ai-mcp ResourceMapping 和 PromptMapping 注解（支持资源与提示语服务）
* 添加 solon-ai-mcp McpServerEndpoint AOP 支持（可支持 solono auth 注解鉴权）
* 添加 solon-ai-mcp McpServerEndpoint 实体参数支持（可支持 solon web 的实体参数、注解相通）
* 添加 solon-ai-mpc `Tool.returnDirect` 属性透传（前后端都有 solon-ai 时有效，目前还不是规范）
* 修复 solon 由泛型桥接方法引起的泛型失真问题
* 修复 solon Utils.getFile 在 window 下绝对位置失效的问题
* 修复 solon-net-httputils OkHttpUtils 不支持 post 空提交的问题
* 修复 nami-channel-http 不支持 post 空提交的问题
* 修复 solon-serialization-fastjson2 在配置全局时间格式化后，个人注解格式化会失效的问题
* 修复 solon Utils.getFile 在 window 下绝对位置失效的问题
* snack3 升为 3.2.133
* dbvisitor 升为 6.0.0
* sa-token 升为 1.42.0
* mybatis-flex 升为 1.10.9
* smart-http 升为 2.5.10

### 3.2.1

* 添加 solon-cloud CloudFileService:deleteBatch 批量删除方法
* 添加 solon-cloud-gateway ExFilterSync、CloudGatewayFilterSync 接口，用于简化同步接口对接
* 添加 solon-ai ChatRequestDefault http 状态异常处理
* 添加 solon-ai ToolCallResultConverter 接口（工具调用结果转换器）
* 添加 solon-ai ToolCall 添加 Mapping 和 Param 注解（支持与 web api 打通）
* 添加 solon-ai Tool.returnDirect 属性，用于直接返回给调用者（mcp 目前无法传导此属性，只能地本地用）
* 添加 solon-ai-mcp McpChannel 通道（stdio, sse），实现不同通道的配置切换支持
* 添加 solon-ai-mcp stdio 通道（也可能叫方式）交换流支持
* 添加 solon-ai-mcp McpClientToolProvider 断线重连机制（对生产很重要）
* 添加 solon-ai-mcp McpClientProperties:fromMcpServers 方法
* 添加 solon-rx ExContext:pause,resume 方法
* 添加 solon-rx Completable:then(other) 方法
* 添加 solon-rx Completable:then(()->other) 方法
* 添加 solon-rx Completable:subscribe(emitter) 方法
* 优化 solon-net-httputils 异步的异常传递
* 调整 solon-test `@SolonTest` 改为实例化后再处理，之前为容器能力会触发旁类扫描（影响：测试类不再支持构造注入）
* 调整 solon-ai-mcp McpClientToolProvider.Builder:header 更名为 headerSet。保持与 ChatModel:Builder 相同风格
* 调整 solon-ai ToolCallResultConverter 申明不再扩展自 Converter，避免冲突
* 修复 solon-ai ollama 方言，在多工具调用时产生 index 混乱的问题
* 修复 solon-ai-load-word WordLoader 流使用错误问题
* 修复 solon-ai-mcp McpClientToolProvider 会丢失 queryString 的问题
* 修复 solon-net-httputils 流式返回的状态码没有传递的问题
* 修复 solon-web-rx next 异常时，没有取消 subscription 的问题
* lombok 升为 1.18.38
* vertx 升为 4.5.14

### 3.2.0 (2025-04-17)

* 新增 solon-ai-mcp 插件（支持多端点）
* 插件 solon-flow 三次预览
* 插件 solon-ai 二次预览（原 FunctionCall 概念，升级为 ToolCall 概念）
* 添加 solon Props:bindTo(clz) 方法，支持识别 BindProps 注解
* 添加 solon Utils.loadProps(uri) 方法，简化加载与转换属性集
* 添加 solon Context.keepAlive, cacheControl 方法
* 添加 solon Props:from 方法，用于识别或转换属性集合
* 添加 solon-web-sse SseEvent:comment 支持
* 添加 solon-net-httputils HttpUtilsBuilder 类（用于预构造支持）
* 添加 solon-flow FlowContext:eventBus 事件总线支持
* 添加 solon-flow 终止处理（现分为：阻断当前分支和终止流）
* 添加 solon-flow StatefulFlowEngine:postActivityStateIfWaiting 提交活动状态（如果当前节点为等待介入）
* 添加 solon-flow StatefulFlowEngine:getActivityNodes （获取多个活动节点）方法
* 添加 solon-ai Tool 接口定义
* 添加 solon-ai ToolProvider 接口定义
* 添加 solon-ai-repo-chrome ChromaClient 新的构建函数，方便注入
* 添加 solon-ai 批量函数添加方式
* 添加 solon-ai embeddingModel.batchSize 配置支持（用于管控 embed 的批量限数）
* 优化 solon DateUtil 工具能力
* 优化 solon 渲染管理器的匹配策略，先匹配 contentTypeNew 再匹配 acceptNew
* 优化 solon-web-rx 流检测策略，先匹配 contentTypeNew 再匹配 acceptNew
* 优化 solon-web-sse 头处理，添加 Connection,Keep-Alive,Cache-Control 输出
* 优化 solon-security-web 优化头信息处理
* 优化 solon-net-httputils TextStreamUtil 的读取与计数处理（支持背压控制）
* 优化 solon-net-httputils 超时设计
* 优化 solon-net-httputils ServerSentEvent 添加 toString
* 优化 solon-security-validation 注释
* 优化 solon-boot-jetty 不输出默认 server header
* 优化 solon-boot-smarthttp 不输出默认 server header
* 优化 solon-ai 工具添加模式（可支持支持 ToolProvider 对象）
* 优化 solon-ai 配置提示（配合 solon-idea-plugin 插件）
* 优化 solon-ai 包依赖（直接添加 solon-web-rx 和 solon-web-sse，几乎是必须的
* 优化 solon-flow 改为容器驱动配置
* 调整 solon-flow NodeState 更名为 StateType （更中性些；不一定与节点有关）
* 调整 solon-flow StateOperator 更名为 StateController （意为状态控制器）
* 调整 solon-flow NodeState 改为 enum （约束性更强，int 约束太弱了）
* 调整 solon-flow StateRepository 设计，取消 StateRecord （太业务了，交给应用侧处理）
* 调整 solon-flow FlowContext:interrupt(bool) 改为 public
* 调整 solon-net-httputils execAsTextStream 标为弃用，新增 execAsLineStream
* 调整 solon-net-httputils execAsEventStream 标为弃用，新增 execAsSseStream
* 调整 solon ActionDefault 的ReturnValueHandler 匹配，改为 result 的实例类型 （之前为 method 的返回类型
* 调整 solon-flow-stateful 代码合并到 solon-flow
* 调整 solon-flow-stateful StatefulFlowEngine 拆分为接口与实现
* 修复 nami-coder-jackson 部分时间格式反序列化失败的问题
* 修复 solon `@Configuration` 类，有构建注入且没有源时，造成 `@Bean` 函数无法注入的问题
* 修复 solon-net-httputils 流式半刷时，jdk 的适配实现会卡的问题
* 修复 solon-flow StatefulSimpleFlowDriver 有状态执行时，任务可能会重复执行的问题
* snack3 升为 3.2.130
* fastjson2 升为 2.0.57
* smarthttp 升为 2.5.8（优化 websocket idle处理；优化 http idle 对 Keep-Alive 场景的处理）
* liquor 升为 1.5.3


### v3.1.2

* 新增 solon-flow-stateful 插件
* 新增 solon-flow-eval-aviator 插件
* 新增 solon-flow-eval-beetl 插件
* 新增 solon-flow-eval-magic 插件
* 新增 solon-ai-repo-chroma 插件
* 插件 solon-flow 二次预览
* 添加 solon Entity 类及渲染支持
* 添加 solon SolonApp::pluginGet 方法，方便获取插件实体
* 添加 solon Context:returnValue 方法，提供手动模式下响应式支持
* 添加 solon-net-httputils HttpUtils:contentType,accept 便捷方法
* 优化 solon-ai-repo-tcvectordb 插件相似度处理
* 优化 solon-ai-repo-elasticsearch 插件相似度处理
* 优化 solon-flow 添加 Container 和 Evaluation 接口定义
* 优化 solon-flow 接口设计，ChainContext 更名为 FlowContext，ChainDriver 更名为 FlowDriver
* 优化 solon-net-httputils ServerSentEvent 类，可兼容各序列化方案
* 优化 solon-boot-http* 的 HttpServerProps 都改为实例化（用于支持插件动态重启）
* 优化 solon-boot-websocket* 的 WebSocketServerProps 都改为实例化（用于支持插件动态重启）
* 调整 solon-net-httputils TextStreamUtil 缓冲改为 1Kb
* 调整 solon-net-httputils 异常改为弱性
* 调整 solon ActionReturnHandler 更名为 ReturnValueHandler （更通用）
* 调整 solon Solon.cfg().plugs() 更名为 plugins （前者标为弃用）
* 修复 solon-data 缓存注解不能还原 strinfiy 到泛型数据的问题
* 修复 solon-rx CompletableImpl 会传丢异常的问题
* 修复 solon Context.outputAsHtml 缺少 body 标记输出的问题
* maven-compiler-plugin 升为 3.14.0
* native-maven-plugin 升为 0.10.6
* maven-plugin-plugin 升为 3.15.1
* snakeyaml 升为 2.4
* slf4j 升为 2.0.17
* liquor 升为 1.5.2
* nacos2 升为 2.5.1
* sa-token 升为 1.41.0

### v3.1.1
* 新增 solon-expression 插件
* 新增 solon-security-web 插件
* 新增 solon-ai-load-ppt 插件，添加对 ppt, pptx 文档的解析
* 新增 solon-ai-load-word 插件，添加对 doc, docx 文档的解析
* 新增 solon-ai-repo-qdrant 插件
* 新增 solon-ai-repo-tcvectordb 插件
* 新增 solon-ai-repo-elasticsearch 插件
* 移除 solon-boot-jlhttp 插件
* 优化 开源合规性
* 添加 solon `AppContext::isStarting()` 表示正在启动，之前的 `isStarted()` 表示启动完成
* 添加 solon-cloud `Event:created` 字段（表示创建时间戳）
* 添加 solon-flow `ChainContext:stop()` 停止流动
* 添加 solon-flow `FlowEngine:next(Node,ChainContext)` 接口，方便支持异步唤醒
* 添加 solon-data Transaction 事务注解（替代 Tran，后者标为弃用）
* 添加 solon-net-httputils execAsEventStream 流式接收 sse（server-sent-event） 
* 添加 solon-net-httputils execAsTextStream 流式接收 dnjson 等文本流
* 添加 solon-rx SimpleSubscriber:doOnNext() 可控制是否自动取消
* 添加 solon-rx SimpleSubscriber:cancel() 方法
* 优化 solon 泛型注入检测兼容处理
* 优化 solon GenericUtil.reviewType 泛型深度兼容能力
* 优化 solon Props:getListedProp 按配置顺序输出
* 优化 solon-mvc 取消请求 `accept=...` 直接作为响应 `context-type` 的初始值处理（没必要关联）
* 优化 solon-serialization 所有序列化插件增加 contentTypeNew 默认过滤（保持与 solon-view 相同处理）
* 优化 solon-boot-smarthttp 取消在 core 里使用虚拟线程（影响性能）
* 优化 solon-cloud-gateway 简化基于 solon-cloud-config 动态更新路由配置的处理支持
* 调整 solon-configuration-processor 依赖包
* 调整 solon 对环境变量的配置引用取消限制（之前要求全大写）
* 调整 solon `Solon-executor-` 改为守护线程（之前为用户线程）
* 调整 solon-flow 添加 AbstractChainDriver，并将 SimpleChainDriver 更名为 SolonChainDriver
* 调整 solon-flow 中断策略，只中断当前分支
* 调整 solon-mvc 不允许 ModelAndView:view 带有 `../` 和 `..\` 符号
* 修复 solon RunUtil.async 异步套导会卡住的问题
* 修复 solon-mvc 注入 Object 类型时，产生无法识别的问题
* 修复 solon-flow 排它网关必会进入默认分支的问题
* 修复 solon-ai 在流式调用时 function call 出错的问题
* 修复 solon-data-sqlutils `as` 查询没有生效的问题
* 修复 solon-boot-smarthttp 当引入其它同类插件时，没有自动排除的问题
* 修复 solon-cache-redisson RedissonClientSupplier:get 为 null 的问题
* java-cron 升为 1.0.1
* redisx 升为 1.6.11
* snack3 升为 3.2.129
* socket.d 升为 2.5.18
* liquor 升为 1.4.0
* folkmq 升为 1.7.11
* beetlsql 升为 3.31-RELEASE

### v3.1.0 (2025-03-05)
* 新增 solon-ai 插件
* 新增 solon-ai-repo-milvus 插件
* 新增 solon-ai-repo-redis 插件
* 新增 solon-ai-load-markdown 插件
* 新增 solon-ai-load-pdf 插件
* 新增 solon-ai-load-html 插件
* 新增 solon-configuration-processor 插件
* 插件 solon-data-sqlutils 二次预览（优化概念结构，增加执行拦截器）
* 插件 solon-data-rx-sqlutils 二次预览（优化概念结构，增加执行拦截器）
* 优化 solon 仓库的规范插件命名
* 优化 solon 小写且带点环境变量的一个边界问题
* 优化 solon-auth，AuthRuleHandler 的 Filter 实现转到 AuthAdapter 身上，方便用户控制 index
* 优化 solon-security-validation BeanValidator 的设定方式
* 优化 solon-boot-smarthttp 虚拟线程、异步、响应式性能
* 添加 solon BeanWrap:isNullOrGenericFrom 方法
* 添加 solon AppContext:: getBeanOrDefault 方法
* 添加 solon subWrapsOfType, subBeansOfType, getBeansOfType, getBeansMapOfType genericType 过滤参数
* 添加 solon ParameterizedTypeImpl:toString 缓存支持
* 添加 solon MimeType 类，替代 solon-boot 的 MimeType（后者标为弃用）
* 添加 solon-flow FlowEngine:load(uri) 方法
* 添加 solon-flow Chain:parseByText 方法
* 添加 solon-flow 拦截体系
* 添加 solon-data-sqlutils SqlQuerier:updateBatchReturnKeys 接口，支持批处理后返回主键
* 添加 solon-net-httputils HttpUtils:proxy 接口，支持 http 代理
* 添加 solon-net-httputils HttpUtils:execAsTextStream 文本流读取接口（可用于 dnjson 和 sse-stream）
* 添加 solon-web-rx 过滤体系
* 添加 solon-serialization-json* 插件对 ndjson 格式的匹配支持
* 添加 solon-cloud CloudBreaker 注解对类的支持
* 移除 solon-data-sqlutils Row,RowList 弃用接口
* 移除 solon-auth AuthAdapterSupplier 弃用接口
* 调整 solon-flow 用 layout 替代 nodes 配置（标为弃用）
* 调整 solon-rx Completable:doOnXxx 构建策略（可重复添加）
* 调整 solon-web-rx ActionReturnRxHandler 改为不限时长，支持流式不断输出
* 修复 solon-web-rx ActionReturnRxHandler 在接收异步发布器时，会结束输出的问题 
* 修复 solon-hotplug 在 win 下无法删除 jar 文件的问题
* 修复 solon-web 当前端传入 `accept=*/*` 时，后端 contextType 也会输出 `*/*` 的问题
* snack3 升为 3.2.127
* socket.d 升为 2.5.16
* fastjson2 升为 2.0.55
* jackson 升为 2.18.2
* gson 升为 2.12.1
* fury 升为 0.10.0
* kryo 升为 5.6.2
* sa-token 升为 1.40.0
* redisson 升为 3.45.0
* lettuce 升为 6.5.4.RELEASE
* hutool 升为 5.8.36
* grpc 升为 1.69.1
* vertx 升为 4.5.13
* netty 升为 4.1.118.Final
* liteflow 升为 2.13.0
* forest 升为 1.6.3
* wx-java 升为 4.7.2.B
* smart-http 升为 2.5.4（日志改为 slf4j，方便级别控制和记录）

### v3.0.10
* 优化 solon 小写开头且带点环境变量的一个边界问题
* 添加 org.noear.solon.core.util.MimeType 类
* 修复 solon-web 当前端传入 `accept=*/*` 时，后端 contextType 也会输出 `*/*` 的问题
* smart-http 升为 2.5.4（日志改为 slf4j，方便级别控制和记录）

### v3.0.9
* 修复 solon-docs-openapi2 @Body 注解识别失灵的问题
* 修复 solon-data nested 事务策略单独回滚失效的问题
* 调整 solon-web-staticfiles 自动弃用带 `../` 和 `..\` 符号的路径匹配
* 调整 solon-flow 用 layout 替代 nodes 配置（旧的仍可用，标为弃用）
* liquor 升为 1.3.11

### v3.0.8
* 添加 solon-web-sse SseRender 渲染器，支持 "text/event-stream" 的任意类型处理
* 添加 solon-flow FlowEngine:chains 方法
* 添加 solon-flow ChainContext:run(script) 接口（支持在脚本中运行动态脚本）
* 优化 solon-flow 简化模式可以没有 start,end 节点，自动识别出开始节点
* 优化 solon ActionReturnHandler 增加排序支持
* 优化 solon-web-sse SseEmitter 添加事件缓存支持（初始化前就可发事件，之前不能）
* 优化 solon-web-rx 结构设计，方便支持其它响应式框架(比如 mutiny)
* 优化 solon-web-rx 可支持所有 reactivestreams 实现框架
* 优化 solon beanExtractOrProxy 内部改为先代理再提取，解决提取时对象未代理
* 调整 solon-web-rx 调整 Flux collectList 策略为由 mimeType 是否为流决定
* 修复 solon 集合bean注入时，可能产生两次执行的问题
* 修复 solon-logging-logback 的 "solon.logging.appender.file.maxHistory" 配置无效的问题
* 修复 solon RoutingTableDefault 路由可能出现变量在前，常量在后的问题
* 修复 solon-docs-openapi2 类型如果为自定义类型无法正确识别到 OpenApi Json.
* 修复 solon-serialization-jackson TimeDeserializer 对空串解析异常的问题
* snack3 升为 3.2.126
* liquor 1.3.10
* smart-http 升为 2.5.2 修复 sse 流不能自动结束的问题
* jetty 升为 9.4.57.v20241219

### v3.0.7
* 添加 solon BindProps 绑定属性注解，用于简化集合属性绑定及配置元信息APT生成
* 添加 solon-flow Chain:meta 配置
* 添加 solon-flow FlowEngine:unload 接口
* 添加 solon-flow execute when 属性，方便做规则引擎应用
* 添加 solon-cloud Cloud:Event 模型添加 meta（需要适配插件支持）
* 添加 solon AppContext:beanPublish 用于替换 wrapPublish（旧名标为弃用）
* 调整 solon SolonApp:classLoader() 返回类型为 AppClassLoader 方便 e-spi 开发
* 调整 solon-flow start、end 节点不再支持 task 配置，只允许 execute 节点带任务（职责清晰些）
* 调整 solon-flow execute 节点任务为空时，也触发驱动器的任务处理事件（可适用审批型场景）
* 调整 solon-flow NodeType 缺省解析改为 execute（之前为 start）
* 调整 Props::loadAddIfAbsent(String name) 为 loadAddIfAbsent(String uri)，保持与 loadAdd(uri) 相同逻辑
* 修复 solon-proxy 当 ASM 的代理方法超过 128 个时会超界的问题
* 修复 solon-net-httputils 在空返回时 OkHttpResponseImpl:contentEncoding 会 nep 的问题
* snack3 升为 3.2.125

### v3.0.6
* 新增 solon-flow 插件
* 添加 solon ScanUtil 对本地文件目录的扫描支持
* 调整 solon-proxy ProxyUtil 增强工具实用性
* 调整 solon `Props:loadAdd(name)` 改为 `Props:loadAdd(uri)`，支持表达式
* 调整 solon `solon.config.load`、`solon.config.add`、`Props:loadAdd(uri)` 统一规范格式与处理逻辑（同时支持内部与外部）
* 优化 solon 注入失败时的日志定位（支持类级定位）
* 优化 IoUtil.transferTo 添加 out.flush 自动处理
* 优化 solon bean 集合注入处理
* 优化 solon-data ConnectionWrapper 添加 getNetworkTimeout 异常过滤（有些驱动不支持此接口）
* 优化 solon-mvc Action 返回为 void 的情况，当二次加工后仍为 null 时，不作渲染处理
* 优化 solon-cloud-gateway 路由排序，增加路径深度优先处理
* 优化 solon-cloud-gateway Path 断言，增加多路径支持
* 优化 mybatis-solon-plugin 用 MybatisSessionTemplate 替换 MybatisMapperInterceptor
* 优化 mybatis-solon-plugin SolonManagedTransaction getTimeout 添加异常过滤（有些驱动不支持此接口）
* 修复 solon 启动时使用接口排除插件无效的问题
* snack3 升为 3.2.124
* fastjson2 升为 2.0.54
* snakeyaml 升为 2.3
* mybatis 升为 3.5.17
* mybatis-plus 升为 3.5.9
* mybatis-flex 升为 1.10.5
* sqltoy 升为 5.6.37.jre8
* guava 升为 33.4.0-jre
* hutool 升为 5.8.35
* smarthttp 升为 2.5.1，修复 ws idle 超时问题
* freemarker 升为 2.3.34
* thymeleaf 升为 3.1.3.RELEASE
* beetl 升为 3.19.0.RELEASE
* logback 升为 1.3.15
* junit5 升为 5.11.4
* solonx 升为 1.1.3

### v3.0.5
* 新增 solon-data-rx-sqlutils 插件（基于 r2dbc 构建）
  * 可配合 solon-web-rx 或者 solon-cloud-gateway 使用
* 添加 solon ClassUtil.scanClasses 方法
* 添加 solon 非单例类使用生命周期时 warn 日志提醒
* 添加 solon-cloud-gateway ExContext:toContext 方法，可用于支持经典接口接入（比如，sa-token 签权）
* 添加 solon ContextHolder 替代 ContextUtil ，后者标为弃用
* 添加 solon Context::isHeadersSent 方法，用于响应式转经典式后识别数据发送情况
* 添加 solon SolonApp::isMain 方法，用于在单元测试时识别是否可同步到 System 属性集
* 优化 solon ClassUtils.newInstance 异常类名显示
* 优化 solon InjectGather:isMethod 条件（仅方法，之前构造也算），让`@Bean`方法的检测先于组件的构造器
* 优化 solon-mvc Action 返回为 void，不作渲染处理
* 优化 solon-data DsUtils 构建时支持 "@type" 属性申明（统一未来的配置类型申明风格）
* 优化 solon-data DataSources 的配置获取时机
* 优化 solon-data-sqlutils SqlUtilsFactory 接口设计
* 优化 solon-scheduling Async 异常提示
* 优化 solon-scheduling Retry 拦截优先级到最里层
* 优化 solon-scheduling-simple 调用异常提示
* 修复 solon-mvc 以实体接收时 `UploadedFile[]` 字段不能注入的问题
* 修复 solon-boot-smarthttp 会把默认时区设为 GMT 的问题
* snakc3 升为 3.2.122
* redisx 升为 1.6.9
* socketd 升为 2.5.14
* folkmq 升为 1.7.10
* redisson 升为 3.39.0
* smarthttp 升为 2.5
* mybatis-flex 升为 1.10.3
* sqltoy 升为 5.6.34.jre8
* slf4j 升为 2.0.16
* log4j 升为 2.24.3
* jansi 升为 2.4.1
* fury 升为 0.9.0

### v3.0.4.1
* 添加 solon Router:matchMainAndStatus 接口，并将 attr 处理移到外部（避免调用 Router:matchMain 地影响已有的 attr）
* 添加 solon Props:addAll 方法
* 添加 solon-security-validation 值类型支持检测，通过检测异常替代之前的类型校验失败
* 优化 solon ServerEndpoint 注解支持属性模板
* 优化 solon BeanWrap 增加重复代理的检测，避免特殊情况出现重复代理
* 优化 solon RunUtils 线程池支持重复关闭与恢复，并与 SolonApp 停止事件绑定
* 修复 solon-boot-smarthttp 在某些环境下会出 arraycopy 异常的问题
* smarthttp 升为 2.4

### v3.0.4
* 新增 nami-coder-abc 插件
* 新增 solon-serialization-abc 插件
* 新增 mybatis-solon 插件
* 添加 solon SolonApp:pluginExclude 方法，排除插件加载
* 添加 solon ResourceUtil.findResource(uri,defAsFile) 方法
* 添加 solon HandlerSlots.add(expr,method,index,handler) 方法，支持路由优先级排序
* 添加 solon Context::sessionState(create) 方法
* 添加 solon SessionState.creationTime, lastAccessTime 方法
* 添加 solon-data-sqlutils SqlUtils:ofName(dsName) 方法
* 添加 solon-net-httputils HttpRespose.cookie 解析处理
* 添加 solon-cloud-gateway CloudRouteRegister:routeRemove 方法
* 添加 nami Encoder:bodyRequired() 方法，支持必须 body 请求的场景
* 优化 solon `@Produces`、`@Consumes` 改为可继承，方便通过基类
* 优化 solon `@Bean` initMethodName,destroyMethodName 改为自有或公有方法（之前只能自有）
* 优化 solon 外部配置加载处理，没有时，尝试在内部找资源文件
* 优化 solon Props.bindTo 性能
* 优化 solon SessionState:sessionId 的保持处理（从 attr 转到 cookieMap；减少一道）
* 优化 solon 带'.'的环境变量自动加载到应用属性里（之前只加载 'solon.'）
* 优化 solon AppContext 支持对 app 为 null 的过滤处理，强化无 app 的测试场景
* 优化 solon-boot-websocket 对 "//" resourceDescriptor 的兼容性
* 优化 solon-data-sqlutils 接口设计，优化极限性能
* 优化 solon-cloud-gateway 改为流响应模式，节省内存驻留、并支持 sse 代理
* 优化 solon 静态字段注入，取消有默认值则不注入的限制条件
* 优化 kafka-solon-cloud-plugin 配置处理
* 修复 solon-docs-openapi2 部分泛型响应体无法识别的问题
* snack3 升为 3.2.121
* wood 升为 1.3.15
* redisx 升为 1.6.8
* lombok 升为 1.18.36
* smart-http 升为 2.3
* vertx 升为 4.5.11
* netty 升为 4.1.115.Final

### v3.0.3
* 新增 nami-coder-kryo 插件
* 新增 solon-serialization-kryo 插件
* 添加 solon Condition:onProperty 多条件支持
* 添加 solon-net-stomp 简单事务支持，并添加统一凭据答复
* 添加 solon-net-httputils 对 data + get 请求的支持
* 添加 solon `@Controller` 和 `@Remoting` “非 Mapping” 函数支持 “拦截注解”
* 添加 solon @Bean 函数，非 public 的警告日志
* 添加 solon AppContext:beanInterceptorHas 检测方法
* 添加 solon AppContext:subWrapsOfType(baseType, callback, index) 方法
* 添加 solon ClassUtil::findPublicMethods 缓存效果
* 添加 solon-net-httputils 工厂扩展方式
* 添加 solon-data-sqlutils 工厂扩展方式
* 添加 solon 路由器二级索引排序支持
* 添加 solon SimpleSolonApp 类，方便局部测试用
* 修复 solon-docs-openapi2 分布式文档，地址转发出错的问题
* 修复 solon-config-plus 配置注入与 HikariCP 6.0 的兼容问题
* 修复 solon GenericUtil 在泛型变量名在传递过程中改名后，无法还原的问题。（不过，改名会有潜在问题）
* 优化 solon AppContext.beanRegister name 注册时，增加泛型绑定。以简化泛型集合注入的条件
* 优化 nami 简化编解码适配处理
* 优化 nami 的 get 识别处理
* 优化 nami http 请求，不再强制编码。仅当有 `@NamiBody` 注解，或指定编码器才编码（可兼容更多的后端框架）
* 优化 solon BeanWrap.Proxy 接口简化
* 优化 solon BeanWrap:nameSet, indexSet, tagSet, typedSet 改为 public，并由 isDoned() 控制是否可修改
* 优化 solon-view 渲染器的 app.shared 绑定，移到插件 start 时处理。避免热插拨时带入了不同 classloader 的类
* 优化 solon-boot-smarthttp 支持 get+body 空流提交
* 
* freemarker 升为 2.3.33
* velocity 升为 2.4.1
* redisson 升为 3.37.0
* snack3 升为 3.2.120
* wood 升为 1.3.14
* liquor 升为 1.3.7
* undertow 升为 2.2.37.Final
* jetty 升为 9.4.56.v20240826
* java-websocket 升为 1.5.7
* java-websocket-ns 升为 1.2
* jackson 升为 2.18.1
* asm 升为 9.7.1
* smart-socket 升为 1.5.54
* smart-http 升为 2.0

### v3.0.2
* 添加 solon SerializerManager 及序列化可选注册机制
* 添加 solon Serializer::mimeType,dataType 可选属性，具有自我描述性
* 添加 solon AppContext::app() 属性
* 添加 solon-cloud CloudFileService 添加 getTempUrl(Duration) 方法
* 调整 solon-boot 的 junit-jupiter 依赖标为 scope=test
* 调整 solon VarHolderOfParam:getFullName 的显示，原 "@" 改为 "''"
* 调整 solon mvc 代码独立为 solon-mvc
* 修复 solon Utils.appFolder() 在 jar in jar 打包时，失效的问题
* 修复 solon TmplUtil 当模型参数为 null 会出现 "null"（改为用空替代）
* 修复 solon-boot-smarthttp 适配，在 contentLength(long) 时会精度丢失的问题
* 优化 solon-data-sqlutils 设计（进一步提搞性能和适用性）
* 优化 solon-net-httputils 设计 支持快捷序列化
* 优化 solon-net-stomp 设计 
* 优化 solon-scheduling-simple cron 调度实现
* 优化 local-solon-cloud-plugin job cron 调度实现
* 优化 solon-data 事务管理，支持 RoutingDataSource 深度查找
* 优化 solon-serialization 序列化器的泛型反序列化处理
* 优化 solon-serialization-jackson LocalDateTime,LocalDate,LocalTime 时间反序列化处理
* 优化 solon-security-auth 允许 AuthAdapter 直接支持“多套账号体系鉴权”处理（简化了）。AuthAdapterSupplier 标为弃用 
* cxf-webservices 升为 3.5.9
* beetlsql 升为 3.30.14-RELEASE
* mybatis-flex 升为 1.9.8
* hutool 升为 5.8.32
* liteflow 升为 2.12.4
* snack3 升为 3.2.119
* wood 升为 1.3.12
* redisx 升为 1.6.7
* fastjson2 升为 2.0.53

### v3.0.1

* 新增 solon-web-webservices 插件
* 新增 solon-net-stomp 插件
* 新增 nami-channel-http（基于 httputils 实现） 替代 nami-channel-http-okhttp
  * nami-channel-http 默认使用 URLConnection 适配（更小） 
  * nami-channel-http-okhttp 使用 okhttp 适配
* 修复 solon-boot-vertx 没有启用 websocket 时，无法接收请求的问题
* 修复 solon `@Param` 注解部分失效的问题
* 修复 solon 本地网关可能会死循环的问题
* 调整 solon-serialization Fastjson2 适配，时间默认为 dateTicks 模式（保持与其它序列化的统一）
* 调整 solon-net-httputils 默认使用 URLConnection 适配（引入 okhttp 后，自动切换） 
* 调整 solon Constants.ATTR_CONTROLLER,ATTR_MAIN_HANDLER,ATTR_MAIN_STATUS 内部常量值，避免与用户 attr 冲突
* 调整 solon ActionReturnHandler 匹配增加 ctx 入参，提供更多扩展可能
* 添加 solon 基于上下文的返回类型处理控制（Constants.ATTR_RETURN_HANDLER）
* 优化 solon-serialization dateAsTicks（并为默认），支持 longAsString 时的字符串转换
* snack3 升为 3.2.113

### v3.0.0 (2024-10-01)

* 新增 solon-data-sqlutils 插件
* 移除 solon `Before`、`After` 体系，（统一为 `Filter` 体系） // ok（化敏为简）
* 移除 solon `@ProxyComponent` (统一为 `@Component`) //ok（化敏为简）
* 移除 solon `Bean:registered` 由 `:delivered` 替代
* 移除 solon `Component:registered` 由  `:delivered` 替代
* 移除 无关配置的弃用代码（具体参考对应表）
* 移除 部分事件扩展（具体参考对应表）
* 调整 solon-net `WebSocket:paramMap` 改为 MultiMap 类型
* 调整 solon-net `WebSocket:send` 改为 Future<Void>
* 调整 solon Context::forward 改为“不经过”过滤器
* 调整 solon `Solon.app().handler()` 替代原来的 handlerGet() 和 HandletSet(x)；并简化 StaticResourceHandler 接入处理
* 调整 solon `warp.*` 部分方法设计（内部类）
* 修复 代理类中无法获取到泛型参数的BUG
* 修复 打散包时外部相对文件定位失识问题（优化 `Utils::appFolder`）
* 优化 solon Gateway 在过滤之前构建 `ctx.action()`
* 优化 solon-web 统一 `Context::cookeMap` 解析
* 添加 solon `AppContext:getBeanFuture,getBeansFutureOfType,getBeansMapFutureOfType`
* 添加 solon-cloud `Event:broadcast` 属性
* 添加 solon `Context:cookieSet(Cookie)` 方法，支持 httponly, secure 配置
* 添加 solon GenericUtil:reviewType 方法，实现 ParamWrap 和 FieldWrap 的泛型审查
* 添加 solon 泛型集合注入支持
* 添加 solon 静态字段注入支持
* 添加 solon-test `@SolonTest:scanning` 控制是否自动扫描（关闭时，需要通过 `@Import`）
* 添加 liquor-eval 框架收集
* smart-http 升为 1.6.0
* smartsocket 升为 1.5.52
* noear-jlhttp 升为 1.0.1
* wood 升为 1.3.7
* folkmq 升为 1.7.8
* socket.d 升为 1.5.12
* nacos1 升为 1.4.8
* easy-trans 升为 1.3.1
* sa-token 升为 1.39.0