#### What type of PR is this?
/kind bug
/area core
/area plugin
/milestone 2.12.0
#### What this PR does / why we need it:
This PR adjusts the order of starting reconcilers in plugin, or it will be stuck in starting synchronizer and no reconcilers will be executed.
The problem may be introduced by <https://github.com/halo-dev/halo/pull/5251>.
#### 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:
This PR upgrades Resilience4J to 2.2.0. See https://github.com/resilience4j/resilience4j/blob/v2.2.0/RELEASENOTES.adoc for more.
#### Does this PR introduce a user-facing change?
```release-note
升级依赖 Resilience4j 至 2.2.0
```
#### What type of PR is this?
/kind improvement
/area core
#### What this PR does / why we need it:
This PR upgrades Lucene to 9.9.1. See https://lucene.apache.org/core/corenews.html#apache-lucenetm-991-available for more.
#### Does this PR introduce a user-facing change?
```release-note
升级依赖 Lucene 至 9.9.1
```
#### What type of PR is this?
/area console
/kind improvement
/milestone 2.12.x
#### What this PR does / why we need it:
更新预设文章中的链接地址。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind improvement
/area core
/area plugin
/milestone 2.12.x
#### What this PR does / why we need it:
This PR mainly simplifies halo plugin manager. Before this,
- we have too many repeat code from super class, which is uncessary
- we maintain plugin application context in ExtensionComponentsFinder, which is uncessary and is hard to manage
- we fire halo plugin event in halo plugin manager, which is complicated and leads to too many repeat code
This PR does:
- refactor halo plugin manager
- wrap base plugin with spring plugin which contains application context
- remove ExtensionComponentsFinder
- bridge halo plugin event and spring plugin event
- wait extensions fully deleted when stopping
Meanwhile, this PR will supersede PR <https://github.com/halo-dev/halo/pull/5236>.
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/5226
#### Special notes for your reviewer:
Test installing, enabing, disabling, upgrading, reloading and deleting plugins.
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind feature
/milestone 2.12.x
/area core
#### What this PR does / why we need it:
我们为文章自定义模型的数据调协过程引入了重要的优化。
在以前,当数据量大(例如,50,000篇文章)的情况下,每次系统重启都会触发耗时且资源密集的所有数据的协调过程,即使大部分数据并不需要调协。这导致了不必要的数据库查询和高资源消耗。
为了解决这个问题,我们在文章自定义模型的 status 中添加了一个新的 `Long observedVersion` 属性。
每次协调后,此属性将更新为 `metadata.version`,还调整了 `syncAllOnStart` 条件,只有当 `status.observedVersion < metadata.version` 时才会调协数据。
这个改变确保了只有在启动时需要的数据会被协调,从而减少了资源使用和不必要的协调过程。
因此,Halo 的数据承载能力得到了显著提高。
**how to test it?**
使用此 PR 测试:启动时文章只有首次会执行 reconcile,再次重启时则不会再执行,如果直接修改数据去除掉 `status.observedVersion` 来模拟迁移或漏 reconcile 的过程则启动时该数据会被再次执行 reconcile
#### Which issue(s) this PR fixes:
Fixes#5147
#### Does this PR introduce a user-facing change?
```release-note
优化文章数据的调协过程以降低 Halo 启动时文章的调协耗时同时提高性能和资源利用率
```
#### What type of PR is this?
/kind feature
/area core
/area console
/milestone 2.12.x
#### What this PR does / why we need it:
使用索引功能来查询文章列表
how to test it?
1. 测试文章列表的筛选条件是否正确
2. 测试文章列表中关联的标签和分类信息是否正确
3. 测试仪表盘的文章数量统计是否正确
4. 测试分类关联文章的数量是否正确
5. 测试标签关联文章的文章是否正确
6. 测试主题端文章列表是否正确
#### Which issue(s) this PR fixes:
Fixes#5223
#### Does this PR introduce a user-facing change?
```release-note
使用高级索引功能检索文章以显著降低资源消耗并提供更快、更高效的文章检索体验
```
#### What type of PR is this?
/kind bug
/area console
/area editor
#### What this PR does / why we need it:
将默认编辑器的父级容器移除。用于解决冒泡菜单被遮挡的问题。
由于修改后默认编辑器自身可滚动,因此可以使默认编辑器容器内的绝对定位元素获取到当前滚动的位置。
#### How to test it?
输入超过一屏宽度的内容,按 `MOD + A` 全选,查看冒泡菜单是否被顶部菜单遮挡。
#### Which issue(s) this PR fixes:
Fixes#4869
#### Does this PR introduce a user-facing change?
```release-note
解决冒泡菜单会被顶部工具栏遮挡的问题
```
#### What type of PR is this?
/area console
/milestone 2.12.x
/kind improvement
#### What this PR does / why we need it:
优化 Console 左侧菜单的展开逻辑,改为可以通过点击展开图标来展开子菜单。
<img width="323" alt="image" src="https://github.com/halo-dev/halo/assets/21301288/6f9a4d2c-1141-424e-b5cd-4e0a9991c67d">
#### Does this PR introduce a user-facing change?
```release-note
优化 Console 左侧菜单的展开逻辑,支持通过点击图标来展开子菜单。
```
#### What type of PR is this?
/kind bug
/area core
/milestone 2.12.x
#### What this PR does / why we need it:
修复同一个自定义模型构建出的 Scheme 不相等导致无法正确从 SchemeManager 中移除的问题
#### Which issue(s) this PR fixes:
Fixes#5243
#### Does this PR introduce a user-facing change?
```release-note
修复同一个自定义模型构建出的 Scheme 不相等导致无法正确从 SchemeManager 中移除的问题
```
#### What type of PR is this?
/kind improvement
#### What this PR does / why we need it:
为溢出的表格增加鼠标滚动功能,当光标在溢出的表格上时,滚动鼠标则可以使表格左右滚动。
当表格可以左右滚动时,增加侧边阴影用于提示用户。
#### How to test it?
测试具有滚动条的表格是否有侧边阴影用于提示用户,并且用鼠标滚动是否可以使表格左右滚动。
#### Which issue(s) this PR fixes:
Fixes#5182
#### Does this PR introduce a user-facing change?
```release-note
优化富文本编辑器中表格组件可滚动时的显示效果
```
#### What type of PR is this?
/kind feature
#### What this PR does / why we need it:
为默认富文本编辑器添加查找与搜索的功能扩展。
快捷键:
当焦点处于编辑器中时,可以使用 `Mod+f` 来唤起查找与搜索框,或者点击顶部工具栏来打开。
当焦点处于查找与搜索框时,按下 `Ecs` 可进行关闭。
<img width="1920" alt="image" src="https://github.com/halo-dev/halo/assets/31335418/03a54bb8-2cc4-4cb0-9a18-fd0e9aede564">
#### How to test it?
测试查找与搜索功能是否正常
#### Which issue(s) this PR fixes:
Fixes#5195
#### Does this PR introduce a user-facing change?
```release-note
为默认富文本编辑器添加查找与搜索的功能扩展。
```
#### What type of PR is this?
/kind bug
#### What this PR does / why we need it:
当表格后存在选中的内容时,按下退格键或删除键不再执行选中表格的操作,而是继续向下执行。
#### How to test it?
在表格后紧跟着文本,从文本开头选中文本,然后按下退格键,查看文本是否能够被删除。
#### Which issue(s) this PR fixes:
Fixes#5193
#### Does this PR introduce a user-facing change?
```release-note
解决默认富文本编辑器中表格后的文本选中后无法删除的问题
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.12.x
#### What this PR does / why we need it:
This PR reverts changes in PR <https://github.com/halo-dev/halo/pull/4023>, mainly thanks to PR <https://github.com/halo-dev/halo/pull/5148>.
We don't need to refresh the plugin wrapper on every startup, because we entirely disable the plugin in plugin manager when disabling plugin at console.
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/4016
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/area console
/area core
/milestone 2.12.x
#### What this PR does / why we need it:
优化角色模板依赖的相关功能:
1. 修复勾选某个角色模板之后,其下依赖模板没有选中的问题。
2. 修复编辑角色时,模板其下依赖模板没有选中的问题。
3. 修复角色管理列表中,权限数量显示有误的问题。
4. 移除 **允许管理所有文章** 的角色模板,此角色模板与文章管理重复。
5. 优化 i18n。
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/5222
#### Special notes for your reviewer:
需要测试上诉问题是否还存在。
#### Does this PR introduce a user-facing change?
```release-note
优化角色模板依赖的相关功能,优化文章相关角色的翻译。
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.12.x
#### What this PR does / why we need it:
通过重构 QueryIndexView 的实现方式来优化 IndexedQueryEngine 的逻辑并简化排序过程
how to test it?
单元测试通过即可,此 PR 的修改都是基于单元测试的基础上对原代码做的重构
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.12.x
#### What this PR does / why we need it:
重构 ListResult.subList 方法在获取所有数据时的处理逻辑,只要 size 为 0 就返回所有数据
#### 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 https://github.com/spring-projects/spring-boot/releases/tag/v3.2.2 for more.
#### Does this PR introduce a user-facing change?
```release-note
升级依赖 Spring Boot 至 3.2.2
```
#### What type of PR is this?
/area core
/milestone 2.12.x
#### What this PR does / why we need it:
修改文章编辑角色的显示名称为**文章管理员**,这样会更加直观。
#### Which issue(s) this PR fixes:
Fixes#5221
#### Does this PR introduce a user-facing change?
```release-note
修改文章编辑角色的显示名称为**文章管理员**。
```
#### What type of PR is this?
/area console
/area editor
/milestone 2.12.x
/kind bug
#### What this PR does / why we need it:
升级 tiptap 相关依赖,解决代码块中换行的问题。
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/5207
#### Special notes for your reviewer:
测试方式:
1. 进入 console/packages/editor,更新依赖
2. 使用 pnpm dev 启动编辑器服务
3. 插入一个代码块,然后刷新页面,观察代码块是否显示正常
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind improvmenet
/area editor
/milestone 2.12.x
#### What this PR does / why we need it:
为默认编辑器 table 组件渲染后的结果中增加 `colgroup`,并为 table 增加 `width` 与 `minWidth` 属性。
用于解决渲染完成之后的 table html 宽度与编辑时不一致的问题。
#### How to test it?
拖拽修改默认编辑器表格列宽,查看生成后的 html 列宽是否同样发生了变化,并且查看生成的 html 结构下是否具有 `colgroup` html 元素。
#### Which issue(s) this PR fixes:
Fixes#5138
#### Does this PR introduce a user-facing change?
```release-note
为默认富文本编辑器 table 组件渲染后的 html 增加 colgroup 元素与 width 属性
```
#### What type of PR is this?
/kind improvement
/area core
#### What this PR does / why we need it:
When we are developing a plugin in development environment, APIs in plugin are frequently changed. But they are not reflected in Swagger UI instantly unless we restart Halo entirely.
This PR disables Swagger cache in that case.
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/area console
/kind bug
/milestone 2.12.x
#### What this PR does / why we need it:
取消对 es.yaml 的注释,这应该是在 https://github.com/halo-dev/halo/pull/4957 中临时注释之后,合并前没有取消注释。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/area console
/kind improvement
/milestone 2.12.x
#### What this PR does / why we need it:
将默认编辑器依赖添加到插件构建库的 external 中,基于 https://github.com/halo-dev/halo/pull/4924
#### Does this PR introduce a user-facing change?
```release-note
None
```