#### What type of PR is this?
/kind feature
/milestone 2.0.0-rc.2
#### What this PR does / why we need it:
添加自动计算文章标签文字颜色的支持。在之前的版本中,因为引入 colorjs.io 导致在构建之后无法显示标签,目前 colorjs.io 已经修复此问题,此 PR 回归之前的支持。
- https://github.com/LeaVerou/color.js/releases/tag/v0.4.2
- https://github.com/LeaVerou/color.js/pull/239
#### Special notes for your reviewer:
测试方式:
1. 创建若干文章标签,设置不同的背景色,观察文字颜色是否会自动与背景颜色形成反差。
2. 使用 `pnpm build` 构建生产版本,在 Halo 的配置文件中配置 `halo.console.location` 到 Console 的 `dist` 目录。
3. 检查 Console 文章列表中的标签是否显示正常。
#### Does this PR introduce a user-facing change?
```release-note
Console 端添加自动计算文章标签文字颜色的支持。
```
#### What type of PR is this?
/kind improvement
#### What this PR does / why we need it:
1. 增加console代理配置,默认代理到`http://localhost:3000/`。
2. 增加用户名密码初始化配置。
3. 增加win profile,指定与dev profile中不同的r2dbc url,windows环境下调试时可以使用 `dev,win` profile。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind improvement
/milestone 2.0
#### What this PR does / why we need it:
修改了各个删除操作提示弹框的信息,统一了文本风格。
原本存在 `是否确认删除xxx?` 和 `确定删除xxx吗?` 两种风格,统一为后一种风格。
#### Does this PR introduce a user-facing change?
```release-note
优化 Console 端确认弹框的提示文案。
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.0.0-rc.1
/kind api-change
#### What this PR does / why we need it:
- 修复 theme.yaml 之前没有配置过 settingName 会无法 reload 的问题
- 将 `/themes/{name}/reload-setting` 的 API 修改为 `/themes/{name}/reload`
#### Which issue(s) this PR fixes:
Fixes#2735
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo
#### Does this PR introduce a user-facing change?
```release-note
修复 theme.yaml 之前没有配置过 settingName 会无法 reload 的问题
```
#### What type of PR is this?
/kind api-change
/milestone 2.0
#### What this PR does / why we need it:
升级 `@halo-dev/api-client` 以适配 https://github.com/halo-dev/halo/pull/2745
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/2735
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
测试方式:
1. Halo 需要切换到 https://github.com/halo-dev/halo/issues/2735 分支。
2. Console 需要 `pnpm install`
3. 安装一个主题,并尝试修改 `theme.yaml` 和 `settings.yaml`,然后再主题详情页面点击 `刷新设置表单` 的按钮,检查改动是否被更新。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind improvement
#### What this PR does / why we need it:
将 @Aanko 添加到 Reviewer 列表。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind bug
/kind cleanup
/area core
#### What this PR does / why we need it:
This PR fully delegates ReactiveExtensionClient for default implementation of ExtensionClient and remove old implementation, including its tests. The main reason I delegate is for keeping consistent about implementation of ExtensionClient.
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/2755
#### Special notes for your reviewer:
You can test full functions after starting Halo with current changes.
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind feature
/milestone 2.0.0-rc.1
/kind api-change
/area core
#### What this PR does / why we need it:
评论和回复新增 approvedTime 属性
1. 此属性在创建时如果是不需要审核就公开的则会填充当前时间
2. 目前没有审核功能,审核是 Console 端去更新的 approved 字段,因此需要更新 approved 时判断有没有设置 approvedTime 没有则填充当前时间,后续有审核功能后则再由后端处理
#### Which issue(s) this PR fixes:
Fixes#2738
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo
#### Does this PR introduce a user-facing change?
```release-note
评论和回复新增 approvedTime 属性
```
#### What type of PR is this?
/kind cleanup
/kind improvement
/area core
/milestone 2.0.0
#### What this PR does / why we need it:
This PR mainly refactors registration of reconcilers to register reconciler more convinient. After that, it is possible to reigster and start reconciler in plugin.
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/2305
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind improvement
/area core
#### What this PR does / why we need it:
see also https://github.com/pf4j/pf4j/compare/release-3.7.0...release-3.8.0
#### Which issue(s) this PR fixes:
Fixes#2771
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo
#### Does this PR introduce a user-facing change?
```release-note
升级依赖 PF4J 至 3.8.0
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.0.0-rc.2
#### What this PR does / why we need it:
See https://github.com/halo-dev/halo/issues/2767 for more.
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/2767
#### Does this PR introduce a user-facing change?
```release-note
升级依赖 SpringDoc OpenAPI 至 2.0.0
```
#### What type of PR is this?
/kind documentation
#### What this PR does / why we need it:
为 Halo 2.0.0-rc.1 更新 README。
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind improvement
/milestone 2.0
#### What this PR does / why we need it:
修改版本号以发布 Console 2.0.0-rc.1
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind improvement
/milestone 2.0
#### What this PR does / why we need it:
首次创建文章或者自定义页面时,跳转回管理列表,与编辑保持一致。
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
测试方式:创建一篇新的文章或自定义页面,点击发布,观察是否返回到了管理列表。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind bug
/area core
/milestone 2.0.0-rc.1
#### What this PR does / why we need it:
修复文章和自定义页面取消发布后无法再继续发布的问题
#### Special notes for yourd reviewer:
how to test it?
1. create a post and publsih it
2. unpublish it then republish
3. excepted to b published successfully
/cc @halo-dev/sig-halo
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind bug
/milestone 2.0
#### What this PR does / why we need it:
修复因为 https://github.com/halo-dev/console/pull/703 中添加了 Loading 动画但是没有考虑到定时刷新列表导致页面闪动的问题。
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
测试方式:删除任意资源,检查列表定时刷新的时候是否出现 loading 状态。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.0.0-rc.1
#### What this PR does / why we need it:
插件以开发模式启动时加载插件需判断是否已经加载过
#### Which issue(s) this PR fixes:
Fixes#2758
#### Special notes for your reviewer:
how to test it?
1. 配置 `halo.plugin.fixed-plugin-path`
2. 以开发模式启动后重启几次不会出现 #2758 中描述的异常
/cc @halo-dev/sig-halo
#### Does this PR introduce a user-facing change?
```release-note
修复插件以开发模式启动时会出现插件已经加载过的异常
```
#### What type of PR is this?
/kind improvement
/milestone 2.0
#### What this PR does / why we need it:
升级所有依赖的 patch 版本。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind feature
/milestone 2.0
#### What this PR does / why we need it:
附件管理支持通过参数筛选出未分组的附件。适配 https://github.com/halo-dev/halo/pull/2752
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/2451
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
测试方式:
1. Halo 需要切换到 https://github.com/halo-dev/halo/pull/2752 分支。
2. Console 需要 `pnpm install`
3. 上传若干未分组附件,然后切换到未分组的标签,检查是否查询正确。
4. 将部分附件移动至某个分组,在切换到未分组的标签,检查附件是否正确。
#### Does this PR introduce a user-facing change?
```release-note
附件管理支持未分组的筛选条件。
```
#### What type of PR is this?
/kind feature
/area core
#### What this PR does / why we need it:
Ignore websocket protocol while proxying console. If we don't do this, console dev environment will crash with following error:
```bash
VITE v3.2.4 ready in 1672 ms
➜ Local: http://localhost:3000/console/ 16:12:21
➜ Network: http://172.23.176.1:3000/console/ 16:12:21
➜ Network: http://172.18.96.1:3000/console/ 16:12:21
➜ Network: http://192.168.31.106:3000/console/ 16:12:21
[vite-plugin-static-copy] Collected 8 items. 16:12:21
node:events:491
throw er; // Unhandled 'error' event
^
RangeError: Invalid WebSocket frame: RSV1 must be clear
at Receiver$1.getInfo (file:///C:/Users/johnn/workspaces/halo-dev/console/node_modules/.pnpm/vite@3.2.4_ajklay5k626t46b6fyghkbup3i/node_modules/vite/dist/node/chunks/dep-67e7f8ab.js:54186:14)
at Receiver$1.startLoop (file:///C:/Users/johnn/workspaces/halo-dev/console/node_modules/.pnpm/vite@3.2.4_ajklay5k626t46b6fyghkbup3i/node_modules/vite/dist/node/chunks/dep-67e7f8ab.js:54133:22)
at Receiver$1._write (file:///C:/Users/johnn/workspaces/halo-dev/console/node_modules/.pnpm/vite@3.2.4_ajklay5k626t46b6fyghkbup3i/node_modules/vite/dist/node/chunks/dep-67e7f8ab.js:54080:10)
at writeOrBuffer (node:internal/streams/writable:392:12)
at _write (node:internal/streams/writable:333:10)
at Writable.write (node:internal/streams/writable:337:10)
at Socket.socketOnData (file:///C:/Users/johnn/workspaces/halo-dev/console/node_modules/.pnpm/vite@3.2.4_ajklay5k626t46b6fyghkbup3i/node_modules/vite/dist/node/chunks/dep-67e7f8ab.js:56826:37)
at Socket.emit (node:events:513:28)
at addChunk (node:internal/streams/readable:324:12)
at readableAddChunk (node:internal/streams/readable:297:9)
at Readable.push (node:internal/streams/readable:234:10)
at TCP.onStreamRead (node:internal/stream_base_commons:190:23)
Emitted 'error' event on WebSocket$1 instance at:
at Receiver$1.receiverOnError (file:///C:/Users/johnn/workspaces/halo-dev/console/node_modules/.pnpm/vite@3.2.4_ajklay5k626t46b6fyghkbup3i/node_modules/vite/dist/node/chunks/dep-67e7f8ab.js:56712:13)
at Receiver$1.emit (node:events:513:28)
at emitErrorNT (node:internal/streams/destroy:151:8)
at emitErrorCloseNT (node:internal/streams/destroy:116:3)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
code: 'WS_ERR_UNEXPECTED_RSV_1',
[Symbol(status-code)]: 1002
}
Node.js v18.12.1
ELIFECYCLE Command failed with exit code 1.
```
#### Special notes for your reviewer:
Steps to test:
1. Edit your application.yaml with console proxy configuration
2. Start Halo
3. Use non-Chromelike browser to request <http://localhost:8090>.
4. See the result
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind feature
/area core
/milestone 2.0.0-rc.1
#### What this PR does / why we need it:
Provide `ungrouped` query param to filter ungrouped attachments. Please note that we will ignore `group` query param when `ungropued` is `true`.
```bash
curl -X 'GET' \
'http://localhost:8090/apis/api.console.halo.run/v1alpha1/attachments?ungrouped=true' \
-H 'accept: */*'
```
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/2451
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind improvement
/milestone 2.0
#### What this PR does / why we need it:
优化文章管理的分类/标签/作者的筛选下拉框样式,以及支持搜索。
#### Screenshots:
<img width="525" alt="image" src="https://user-images.githubusercontent.com/21301288/203499340-b7c59b2f-9be8-4804-9e21-9c5bfbca99bc.png">
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
测试方式:检查文章管理的分类 / 标签 / 作者筛选功能是否正常。
#### Does this PR introduce a user-facing change?
```release-note
优化文章管理的分类/标签/作者的筛选下拉框样式,以及支持搜索。
```
#### What type of PR is this?
/kind improvement
/milestone 2.0
#### What this PR does / why we need it:
优化列表的加载,添加加载动画,解决加载完成之后界面闪动的问题。
#### Which issue(s) this PR fixes:
Ref https://github.com/halo-dev/halo/issues/2370
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
#### Does this PR introduce a user-facing change?
```release-note
优化列表的加载,添加加载动画,解决加载完成之后界面闪动的问题。
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.0.0-rc.1
#### What this PR does / why we need it:
修复主题端文章列表排序不固定问题
#### Which issue(s) this PR fixes:
Fixes#2734
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo
#### Does this PR introduce a user-facing change?
```release-note
修复主题端文章列表排序不固定问题
```
#### What type of PR is this?
/kind improvement
/milestone 2.0
#### What this PR does / why we need it:
使用 Pinia 管理已授权用户信息,并提供判断是否是 `anonymousUser` 的方式。
适配 https://github.com/halo-dev/halo/pull/2729
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
测试流程:
1. Halo 需要切换到 https://github.com/halo-dev/halo/pull/2729 的分支。
2. 测试 Console 端的登录、退出等流程。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind improvement
/milestone 2.0
#### What this PR does / why we need it:
优化 Console 数据列表的筛选标签样式,以及支持清空所有筛选条件。
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/2657
#### Screenshots:
<img width="1663" alt="image" src="https://user-images.githubusercontent.com/21301288/203353043-b5e7631f-cc02-4368-b770-42b53e1dbf78.png">
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
测试方式:
1. 测试文章、自定义页面、附件、插件、评论管理中的筛选功能。
#### Does this PR introduce a user-facing change?
```release-note
优化 Console 数据列表的筛选标签样式,以及支持清空所有筛选条件。
```
#### What type of PR is this?
/kind improvement
/milestone 2.0
#### What this PR does / why we need it:
为 `VEntityField` 组件设置最大宽度,防止内容过多导致 UI 异常。
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/2468
#### Screenshots:
<img width="534" alt="image" src="https://user-images.githubusercontent.com/21301288/203077107-55cbb951-5ea4-4699-8368-023c60ae9054.png">
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
测试方式:
1. Console 需要 `pnpm build:packages`
2. 新增任意资源,设置超长的内容,检查列表的样式是否异常。
#### Does this PR introduce a user-facing change?
```release-note
为 `VEntityField` 组件设置最大宽度,防止内容过多导致 UI 异常。
```
#### What type of PR is this?
/kind feature
/milestone 2.0.0-rc.1
/area core
#### What this PR does / why we need it:
主题端支持使用表达式方言获取登录状态和判断权限,例如:
获取当前登录用户名
```html
<div th:text="${#authentication.name}">
The value of the "name" property of the authentication object should appear here.
</div>
```
关于判断登录状态我们并不推荐调用表达式 `${#authentication.isAuthenticated()}`,因为始终返回 `true`,使用以下几种属性表达式代替:
```html
<div sec:authorize="isAuthenticated()">
如果不是匿名用户你会看到我
</div>
<div sec:authorize="isFullyAuthenticated()">
如果不是匿名用户且不是 rememberMe 你会看到我
</div>
```
其他
```html
<div sec:authorize="isAnonymous()">
如果是匿名用户你会看到我
</div>
```
```html
<div sec:authorize="isRememberMe()">
如果是 rememberMe 你会看到我
</div>
```
更多请参考:
https://github.com/thymeleaf/thymeleaf-extras-springsecurity
Console 端判断是否登录需要改一下,目前所有未登录状态都属于一个叫 anonymousUser 的用户
#### Which issue(s) this PR fixes:
Fixes#2676
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo
#### Does this PR introduce a user-facing change?
```release-note
主题端支持使用表达式方言获取登录状态和判断权限
```
#### What type of PR is this?
/kind improvement
/milestone 2.0
#### What this PR does / why we need it:
完善 Console 中表单的验证规则。
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/2733
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
#### Does this PR introduce a user-facing change?
```release-note
完善 Console 中表单的验证规则。
```
#### What type of PR is this?
/kind feature
/milestone 2.0
#### What this PR does / why we need it:
文章和独立页面的编辑页面支持 `returnTo` 参数,用于指定发布完成之后的跳转地址。
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/2724
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
测试方式:
1. 选择任意文章进入编辑页面。
2. 在地址栏添加 `&returnTo=http://localhost:8090`
3. 发布文章,观察是否跳转到了 `http://localhost:8090`
#### Does this PR introduce a user-facing change?
```release-note
文章和独立页面的编辑页面支持 `returnTo` 参数。
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.0.0
#### What this PR does / why we need it:
springdoc-openapi 2.0.0-RC2 fully supports Spring Boot 3.0.0-RC2 currently, please see https://github.com/springdoc/springdoc-openapi/releases/tag/v2.0.0-RC2 for more.
#### Does this PR introduce a user-facing change?
```release-note
升级依赖 SpringDoc OpenAPI 至 2.0.0-RC2
```
#### What type of PR is this?
/kind improvement
/milestone 2.0
#### What this PR does / why we need it:
发布 Console 2.0.0-beta.2
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.0
#### What this PR does / why we need it:
1. 简化 Snapshot 的指责,去除 Snapshot 中关于 version,publishTime 等与发布相关的东西,Snapshot本身没有发布概念
2. 对应修改文章和自定义页面,将版本的概念转移到拥有 Snapshot 的模型上,如 Post 和 SinglePage
⚠️此 PR 为破坏性更新,对旧数据不兼容,可能导致旧数据文章内容无法显示问题
Console 端需要做出一些修改:
- 将文章发布前调用保存内容的 API 修改为 `/posts/{name}/content`
- 将自定义页面发布前调用保存内容的 API 修改为 `/singlepages/{name}/content`
发布接口提供了一个 `async` 参数,默认值为 `false`此时发布API需要等待发布成功后才返回结果,如果等待超时则提示`Publishing wait timeout.`, 如果传递 `async=true` 表示异步发布,更新完数据就成功,reconciler 在后台慢慢执行。
#### Special notes for your reviewer:
how to test it?
1. 新创建一篇文章,测试点击保存是否成功
2. 新创建一篇文章,测试编辑内容后直接发布是否成功
3. 测试发布过的文章的取消发布状态是否显示未发布状态
4. 对于 Snapshot,新建文章点保存会创建一个snapshot,点击发布则是更新之前点保存创建的一条,所以记录数不会多,发布之后进入编辑随便写点内容直接点发布后查询snapshot则会多一条记录。
5. 文章的 status 里的 conditions 最新添加的都在第一个即头插入,如果连续两次发布则不会在增加 condition,长度超过20条会把旧的 condition 删除掉
6. 自定义页面上同
/cc @halo-dev/sig-halo
#### Does this PR introduce a user-facing change?
```release-note
Action Required: 简化 Snapshot 模型的职责,去除版本相关属性
```
#### What type of PR is this?
/kind improvement
/milestone 2.0
#### What this PR does / why we need it:
优化文章和自定义页面的保存内容和发布逻辑。详情可查阅:https://github.com/halo-dev/halo/pull/2709
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
测试流程:
1. Halo 需要切换到 https://github.com/halo-dev/halo/pull/2709 分支。
2. 测试文章和自定义页面的新建、更新内容,以及发布。
#### Does this PR introduce a user-facing change?
```release-note
优化文章和自定义页面的保存内容和发布逻辑。
```
#### What type of PR is this?
/kind bug
/kind regression
/area core
/milestone 2.0
#### What this PR does / why we need it:
When we try to upgrade a theme, error will appear like below:
```java
2022-11-18T15:45:35.130+08:00 ERROR 18136 --- [oundedElastic-1] a.w.r.e.AbstractErrorWebExceptionHandler : [26de12d5-51] 500 Server Error for HTTP POST "/apis/api.console.halo.run/v1alpha1/themes/theme-earth/upgrade"
java.io.IOException: Pipe closed
at java.base/java.io.PipedInputStream.read(PipedInputStream.java:307) ~[na:na]
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Assembly trace from producer [reactor.core.publisher.MonoFlatMap] :
reactor.core.publisher.Mono.flatMap(Mono.java:3080)
run.halo.app.core.extension.theme.ThemeServiceImpl.upgrade(ThemeServiceImpl.java:72)
Error has been observed at the following site(s):
*____________Mono.flatMap ⇢ at run.halo.app.core.extension.theme.ThemeServiceImpl.upgrade(ThemeServiceImpl.java:72)
|_ Mono.doOnNext ⇢ at run.halo.app.core.extension.theme.ThemeServiceImpl.upgrade(ThemeServiceImpl.java:82)
|_ Mono.map ⇢ at run.halo.app.core.extension.theme.ThemeServiceImpl.upgrade(ThemeServiceImpl.java:88)
|_ Mono.doOnNext ⇢ at run.halo.app.core.extension.theme.ThemeServiceImpl.upgrade(ThemeServiceImpl.java:89)
|_ Mono.flatMap ⇢ at run.halo.app.core.extension.theme.ThemeServiceImpl.upgrade(ThemeServiceImpl.java:98)
|_ Mono.doOnNext ⇢ at run.halo.app.core.extension.theme.ThemeServiceImpl.upgrade(ThemeServiceImpl.java:103)
|_ Mono.flatMap ⇢ at run.halo.app.core.extension.theme.ThemeServiceImpl.upgrade(ThemeServiceImpl.java:112)
|_ Mono.doFinally ⇢ at run.halo.app.core.extension.theme.ThemeServiceImpl.upgrade(ThemeServiceImpl.java:113)
*____________Mono.flatMap ⇢ at run.halo.app.core.extension.theme.ThemeEndpoint.upgrade(ThemeEndpoint.java:180)
|_ Mono.flatMap ⇢ at run.halo.app.core.extension.theme.ThemeEndpoint.upgrade(ThemeEndpoint.java:187)
```
This might be caused by PR <https://github.com/halo-dev/halo/pull/2704>.
#### Special notes for your reviewer:
Steps to test:
1. Upgrade any theme
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind feature
/kind improvement
/area core
/milestone 2.0
#### What this PR does / why we need it:
This PR enables adding more workers for controller to speed up reconciliations. Default woker count is 1 for one controller.
**What's next?**
- [ ] Enable configuring worker count for every controller in configuration properties.
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/2708
#### Special notes for reviewers
You can see there are more threads for post controller in the following screenshot:

#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind feature
/milestone 2.0
#### What this PR does / why we need it:
支持删除附件分组和存储策略。
删除策略的逻辑为:删除前会根据策略查询附件,如果有附件,则无法删除,否则可以删除。
删除附件的逻辑为:
1. 选择`删除并将附件移动至未分组`时,会在前端批量调用更新附件的接口,将所有附件的 `groupRef` 置空。
2. 选择`删除并同时删除附件`时,会在前端批量调用删除附件接口。
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/2706
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
测试方式:
1. 需要执行 `pnpm build:packages`
2. 创建若干存储策略,并在部分存储策略中上传附件,再对存储策略做删除处理,需要满足以下情况:
1. 已包含附件的策略会提示不允许删除。
2. 未包含附件的策略可以删除
3. 创建若干分组,并在部分分组中上传附件,再对分组做删除处理,需要满足以下情况:
1. 选择`删除并将附件移动至未分组`时,检查分组是否被删除,且里面的附件是否已经被移动到未分组。
2. 选择`删除并同时删除附件`时,检查分组是否被删除,且里面的附件是否被删除。
#### Does this PR introduce a user-facing change?
<!--
如果当前 Pull Request 的修改不会造成用户侧的任何变更,在 `release-note` 代码块儿中填写 `NONE`。
否则请填写用户侧能够理解的 Release Note。如果当前 Pull Request 包含破坏性更新(Break Change),
Release Note 需要以 `action required` 开头。
If no, just write "NONE" in the release-note block below.
If yes, a release note is required:
Enter your extended release note in the block below. If the PR requires additional action from users switching to the new release, include the string "action required".
-->
```release-note
支持删除附件分组和存储策略。
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.0
#### What this PR does / why we need it:
主题和插件支持获取 `halo.external-url` 配置信息
#### Which issue(s) this PR fixes:
Fixes#2711
#### Special notes for your reviewer:
how to test it?
1. 在主题中使用`<p th:text="${site.url}"></p>` 可以正确显示
2. 在插件中可以依赖注入 ExternalUrlSupplier
/cc @halo-dev/sig-halo
#### Does this PR introduce a user-facing change?
```release-note
主题和插件支持获取外部访问地址配置
```
#### What type of PR is this?
/kind improvement
/milestone 2.0
#### What this PR does / why we need it:
使用 metadata.generateName 代替 uuid 为 metadata.name 生成值。
Ref https://github.com/halo-dev/halo/pull/2563
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
测试方式:
1. 需要 `pnpm install`
2. 测试登录以及所有需要创建更新资源的业务模块。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind bug
/area core
/milestone 2.0
#### What this PR does / why we need it:
修复上一个 PR 没有拉取最新代码合并后导致无法构建的问题
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind feature
/milestone 2.0
#### What this PR does / why we need it:
附件管理支持排序筛选,适配:https://github.com/halo-dev/halo/pull/2705
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/2627
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
测试方式:
1. Halo 需要切换到 https://github.com/halo-dev/halo/pull/2705 分支。
2. Console 需要 `pnpm install`
3. 上传若干附件,检查排序筛选之后的结果是否符合预期。
#### Does this PR introduce a user-facing change?
```release-note
附件管理支持排序筛选
```
#### What type of PR is this?
/kind feature
/area core
/milestone 2.0
#### What this PR does / why we need it:
将所有 Finder 的返回值都修改为 Mono 或 Flux
#### Which issue(s) this PR fixes:
Fixes#2671
#### Special notes for your reviewer:
how to test it?
切换几个主题都点一下,没有报错即为正常
/cc @halo-dev/sig-halo
#### Does this PR introduce a user-facing change?
```release-note
主题端 Finder 支持 Reactive API
```
#### What type of PR is this?
/kind improvement
/milestone 2.0
#### What this PR does / why we need it:
更新所有依赖的修订版本。
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
#### Does this PR introduce a user-facing change?
```release-note
更新所有依赖的修订版本。
```