#### What type of PR is this?
/kind bug
/area core
/area plugin
/milestone 2.10.x
#### What this PR does / why we need it:
修复当插件升级后 Logo 改变会无法显示的问题
how to test it?
1. 使用生产模式运行插件
2. 使用 sitemap 插件 1.0.1版本,https://www.halo.run/store/apps/app-QDFMI?tab=releases
3. 升级 sitemap 插件到 1.1.0, https://www.halo.run/store/apps/app-QDFMI?tab=releases
4. 期望 logo 由原先的 halo 图标变为新图标
#### Which issue(s) this PR fixes:
Fixes#4646
#### Does this PR introduce a user-facing change?
```release-note
修复当插件升级后 Logo 改变会无法显示的问题
```
#### What type of PR is this?
/kind feature
/kind api-change
/area core
#### What this PR does / why we need it:
Support for personal access token mechanism.
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/1309
#### Special notes for your reviewer:
#### Does this PR introduce a user-facing change?
```release-note
提供个人访问令牌机制
```
#### What type of PR is this?
/area console
/kind improvement
/milestone 2.10.x
#### What this PR does / why we need it:
升级 FormKit 版本至 1.1.0 正式版。
see https://formkit.com/changelog
#### Special notes for your reviewer:
测试 Console 的各个表单是否正常工作即可。
#### Does this PR introduce a user-facing change?
```release-note
升级 FormKit 版本至 1.1.0 正式版。
```
#### What type of PR is this?
None
#### What this PR does / why we need it:
更新 issue 模板。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.10.x
#### What this PR does / why we need it:
修复 bundle resource 的缓存 key 生成可能会重复的问题
#### Which issue(s) this PR fixes:
Fixes#4586
#### Does this PR introduce a user-facing change?
```release-note
修复 bundle resource 的缓存 key 生成可能会重复的问题
```
#### What type of PR is this?
/kind cleanup
/area console
#### What this PR does / why we need it:
修复 `@halo-dev/components` 包编译时有 error 级异常的问题。
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/4544
#### Special notes for your reviewer:
观察此 PR 的 ci 中是否有异常输出即可。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/area core
/kind cleanup
#### What this PR does / why we need it:
修改预设插件的下载地址,目前四个预设插件的仓库都已经转移到 halo-dev 组织。
#### Special notes for your reviewer:
需要测试 `./gradlew downloadPluginPresets` 是否能够正常下载预设插件。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/area console
/kind bug
/milestone 2.10.x
#### What this PR does / why we need it:
修复了主题远程下载标签的英文语言包键,使其可以正确显示标签标题。
#### Does this PR introduce a user-facing change?
```release-note
修复 Console 端主题远程下载标签的英文语言包键名,使其可以正确显示标签标题。
```
#### What type of PR is this?
/kind improvement
/kind api-change
/area core
/milestone 2.10.x
#### What this PR does / why we need it:
See https://github.com/halo-dev/halo/issues/4547 for more.
This PR creates header `WWW-Authenticate` like `FormLogin realm="console"` instead of `Basic realm="realm"` while unauthorized.
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/4547
#### Special notes for your reviewer:
```bash
curl --head 'http://localhost:8090/actuator/info'
HTTP/1.1 401 Unauthorized
transfer-encoding: chunked
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
WWW-Authenticate: FormLogin realm="console"
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 0
Referrer-Policy: no-referrer
```
#### Does this PR introduce a user-facing change?
```release-note
防止浏览器弹出基础认证弹窗
```
#### What type of PR is this?
/kind improvement
/area console
#### What this PR does / why we need it:
当设置模态框打开时,禁用自动保存功能。
#### How to test it?
1. 新建一篇文章,随意输入内容。
2. 打开保存或发布表单,填写文章标题等内容
3. 切换至其他 tab 页
4. 再切换回来,查看文章标题是否没有被覆盖。
#### Which issue(s) this PR fixes:
Fixes#4566
#### Does this PR introduce a user-facing change?
```release-note
当文章或页面设置窗口打开时,禁用自动保存功能。
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.10.x
#### What this PR does / why we need it:
补全系统全局设置的默认值
how to test it?
1. 初始化 halo
2. 安装评论组件
3. 到文章页面可以评论
#### Which issue(s) this PR fixes:
Fixes#4561
#### Does this PR introduce a user-facing change?
```release-note
补全系统全局设置的默认值
```
#### What type of PR is this?
/kind improvement
/milestone 2.10.x
/area core
#### What this PR does / why we need it:
为插件捆绑资源设置 cache-control 以优化静态资源加载
如获取插件 bundle.js 会自动携带参数缓存时间为 7 天,当有插件停止或新增时 v 参数会变化浏览器则使用新的 key 缓存静态资源,旧的 key 将在一天内失效
```
/apis/api.console.halo.run/v1alpha1/plugins/-/bundle.js?v=6c5956f37e7207ab1c0f2f2340f51a101f46b748233992d73729415cd58f3587
```
#### Which issue(s) this PR fixes:
Fixes#4543
#### Does this PR introduce a user-facing change?
```release-note
为插件捆绑资源设置 cache-control 以优化静态资源加载
```
#### What type of PR is this?
/kind bug
/area core
/milestone 2.10.x
#### What this PR does / why we need it:
This PR fixes the problem of username being case-insensitive and logging in without permissions. Please note that the problem only occurs with MySQL.
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/4549
#### Special notes for your reviewer:
```bash
docker run -it --rm --name halodb -p 3306:3306 -e MYSQL_ROOT_PASSWORD=openmysql -e MYSQL_DATABASE=halo mysql:8
./gradlew bootRun --args="--spring.profiles.active=dev,mysql --halo.plugin.runtime-mode=deployment"
```
#### Does this PR introduce a user-facing change?
```release-note
修复因大小写问题导致登录后无权限的问题
```
#### What type of PR is this?
/area console
/kind bug
#### What this PR does / why we need it:
修复主题管理列表的更多操作项在某些情况下无法打开的问题。
<img width="384" alt="image" src="https://github.com/halo-dev/halo/assets/21301288/2bbea045-2e04-46bc-be55-d9499c87624b">
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/4559
#### Special notes for your reviewer:
测试方式:
1. 安装若干主题,测试每一项主题的更多操作按钮是否可以正常打开。
2. 删除某一个主题,测试每一项主题的更多操作按钮是否可以正常打开。
#### Does this PR introduce a user-facing change?
```release-note
修复 Console 端主题管理列表的更多操作项在某些情况下无法打开的问题。
```
#### What type of PR is this?
/area console
/kind improvement
/milestone 2.10.x
#### What this PR does / why we need it:
支持在启动插件之后检测插件的启动状态,防止直接刷新之后 bundle.js 的内容没有及时更新。
#### Does this PR introduce a user-facing change?
```release-note
优化 Console 端启动插件的逻辑
```
#### What type of PR is this?
/kind cleanup
/area core
#### What this PR does / why we need it:
Bump Halo to 2.10.0-SNAPSHOT.
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/area console
/kind feature
/milestone 2.9.x
#### What this PR does / why we need it:
文章数据列表的显示字段支持通过插件扩展。
<img width="717" alt="image" src="https://github.com/halo-dev/halo/assets/21301288/3b3b7e1f-4626-4878-a234-48915dd34e8d">
#### Special notes for your reviewer:
需要测试文章管理功能是否正常。
#### Does this PR introduce a user-facing change?
```release-note
Console 端文章数据列表的显示字段支持通过插件扩展。
```
#### What type of PR is this?
/area console
/kind feature
/milestone 2.9.x
#### What this PR does / why we need it:
支持选择已有备份进行恢复。
<img width="1628" alt="image" src="https://github.com/halo-dev/halo/assets/21301288/5e3169f7-a604-4e20-9c4e-f6bc68c58d59">
#### Special notes for your reviewer:
需要测试在恢复界面通过选择已有备份进行恢复的功能是否正常。
#### Does this PR introduce a user-facing change?
```release-note
系统恢复功能支持选择已有备份进行系统恢复。
```
#### What type of PR is this?
/area editor
/area console
#### What this PR does / why we need it:
1. mac: 在编辑器中添加command+s保存文章
2. windows: 在编辑器中添加ctrl+s保存文章
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/4340
#### Does this PR introduce a user-facing change?
```release-note
Console 端支持通过快捷键保存文章
```
#### What type of PR is this?
/area console
/kind improvement
/milestone 2.9.x
#### What this PR does / why we need it:
重构数据列表操作项和显示字段扩展点的类型定义和条件判断:
1. `EntityDropdownItem` 改为 `OperationItem` 以适配不同的场景,最开始仅仅是为了提供给 Entity 组件,但后面发现如主题管理列表并没有使用 Entity 组件,所以定义统一改为 Operation 。
2. 修改 `OperationItem` 和 `EntityFieldItem` 的 `visible` 字段为 `hidden`,方便渲染的时候判断,并方便调用方默认不设置值。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/area console
/kind feature
/milestone 2.9.x
#### What this PR does / why we need it:
主题管理列表项的操作按钮支持被插件扩展。
![image](https://github.com/halo-dev/halo/assets/21301288/fd605aa5-91a9-49dc-9f8d-14eeabd4fb93)
#### Which issue(s) this PR fixes:
Fixes#4522
#### Special notes for your reviewer:
测试已有的操作按钮功能正常即可。
#### Does this PR introduce a user-facing change?
```release-note
Console 主题管理列表项的操作按钮支持被插件扩展。
```
#### What type of PR is this?
/kind bug
/area core
/milestone 2.9.x
#### What this PR does / why we need it:
As I mentioned in <https://github.com/halo-dev/halo/issues/4519>, some extensions which are deletable cannot be recycled by GC. This PR provides an ability to watch scheme changes and recycles deletable extensions.
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/4519
#### Does this PR introduce a user-facing change?
```release-note
修复因重启后部分可被回收的资源一直处于删除中的状态
```
#### What type of PR is this?
/area console
/kind feature
/milestone 2.9.x
#### What this PR does / why we need it:
Halo 在 https://github.com/halo-dev/halo/pull/4452 中为数据列表的操作选项添加了拓展点,用于通过插件扩展操作选项。但忽略了操作选项的组件需要自定义并且自行处理点击事件,这个时候组件应该比较难拿到数据列表项的数据。
此 PR 对此进行优化,在扩展点方法传入了需要的数据。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/area console
/kind improvement
/milestone 2.9.x
#### What this PR does / why we need it:
禁用 Dropdown 组件的自动销毁 dom 节点功能,以适配 https://github.com/halo-dev/halo/pull/4452 中拓展操作选项的场景。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind feature
#### What this PR does / why we need it:
spring.sql.init.platform 增加 mariadb 参数支持
适配 1Panel 安装 halo 时 选择 mariadb
```release-note
None
```
#### What type of PR is this?
/area console
/kind bug
/milestone 2.9.x
#### What this PR does / why we need it:
修复可能因为 version 锁的原因导致无法正常切换插件状态,现在改为在调用切换状态接口前,获取一次最新的插件信息,并提供了 retry 的配置,即失败之后重试 3 次。
#### Special notes for your reviewer:
测试能否正常切换插件状态即可。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind bug
/area console
/milestone 2.9.x
#### What this PR does / why we need it:
解决评论管理中,根据是否已审核状态的筛选无效的问题
#### How to test it?
在评论列表上切换审核状态,查看是否有效。
#### Which issue(s) this PR fixes:
Fixes#4494
#### Does this PR introduce a user-facing change?
```release-note
修复评论管理中审核状态筛选无效的问题
```
#### What type of PR is this?
/kind bug
/area console
/milestone 2.9.x
#### What this PR does / why we need it:
更改自动保存的策略,仅当内容具有缓存时才会执行自动保存。
#### How to test it?
新建/更新一篇文章之后,点击发布,查看是否还存在“文章已保存但未发布” 的提示
#### Which issue(s) this PR fixes:
Fixes#4499
#### Does this PR introduce a user-facing change?
```release-note
修复文章发布后,文章列表显示未发布的问题。
```
#### What type of PR is this?
/area console
/kind feature
/milestone 2.9.x
#### What this PR does / why we need it:
备份列表的操作列表支持被插件扩展。
#### Does this PR introduce a user-facing change?
```release-note
Console 端的备份列表的操作按钮列表支持扩展。
```
#### What type of PR is this?
/area console
/kind improvement
/milestone 2.9.x
#### What this PR does / why we need it:
在 https://github.com/halo-dev/halo/pull/4473 中移除了插件管理的分页功能,但可能会造成列表底部看起来不协调,所以恢复总条数的文字显示。
#### Which issue(s) this PR fixes:
Fixes#4498
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/area console
/kind cleanup
#### What this PR does / why we need it:
更新 Console 中 package.json 文件的 repository 设置。
#### 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:
本 PR 优化了文章、内容编辑时的本地缓存功能,之前内容对于本地缓存的依赖性非常强,因此导致了部分问题,如 #3820 ,本 PR 计划之后本地缓存将仅用于特殊情况下的内容恢复,因此尝试做了如下修改:
1. 当前正在编辑的文章,会在正常模式(切换路由、刷新页面、失去当前窗口焦点、停止编写一定时间均属于正常模式)下进行自动保存后删除本地缓存。
2. 若本地具有缓存,则会在进入编辑页面时,比对一次 content 的 version,若缓存 version 小于线上 version,则抛弃缓存,若一致,则使用缓存。
但经过测试,本 PR 无法解决如下问题:
1. 同时编辑一篇文章时,内容会被覆盖的问题。
2. 对比版本后会抛弃缓存,而实际上应当将本地缓存加入历史版本中。
#### How to test it?
1. 新建一篇文章,编写任意内容,返回文章页查看是否已经具有新的文章,且内容已被保存。
2. 修改一篇文章的内容,然后返回文章页,查看是否不是从缓存中加载。
3. 断网模式下修改一篇文章的内容,然后返回文章页,联网后,再次打开此文章,查看是否显示从缓存中加载。
4. 断网模式下修改一篇文章的内容,然后返回文章页。在另一个浏览器或页面修改此文章并保存后,回到断网页面联网后,查看是否更新为最新内容。
#### Which issue(s) this PR fixes:
Fixes#3820Fixes#4223
#### Does this PR introduce a user-facing change?
```release-note
减少内容编辑对本地缓存依赖,支持内容自动保存至服务端。
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.9.x
#### What this PR does / why we need it:
- Removes dependency `cn.shenyanchao.ik-analyzer:ik-analyzer:9.0.0` due to no significant effect for searching result.
- Customize our own analyzer with StandardTokenizer, HTMLStripCharFilter and LowerCaseFilterFactory.
Please be aware of that the default field to search has become to `content` instead of `title` + `excerpt` + `content`. If someone wants to search title only, use `title: halo` as query string. For more details, please refer to <https://lucene.apache.org/core/9_5_0/queryparser/org/apache/lucene/queryparser/flexible/standard/StandardQueryParser.html>.
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/4455
#### Special notes for your reviewer:
#### Does this PR introduce a user-facing change?
```release-note
优化本地搜索引擎
```