#### What type of PR is this?
/area ui
/kind bug
/milestone 2.15.0
#### What this PR does / why we need it:
修复插件异常启动时,指示器显示不正确的问题。
Fixes https://github.com/halo-dev/halo/pull/5520
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/area core
/kind improvement
/milestone 2.15.0
#### 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
#### What this PR does / why we need it:
When traefik is used, the host cannot be accessed to 8090 by default after being configured. Therefore, you need to configure loadbalance. The process is complicated, so specify the expose port
当使用 traefik 时, 配置完 host 后无法直接的访问到对应的服务, 需要额外的配置service, loadbalance.port 才能, 所以建议增加一个 expose port, 指定下默认的服务端口
#### Which issue(s) this PR fixes:
#### Special notes for your reviewer:
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.15.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?
/area ui
/kind feature
/milestone 2.15.x
#### What this PR does / why we need it:
支持清理所有无用的文章历史快照,仅保留已发布、基础版本、正在编辑的版本。
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/5817
#### 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 core
/milestone 2.15.x
#### What this PR does / why we need it:
修复拥有文章管理权限的用户无法正常使用版本历史的问题
#### Which issue(s) this PR fixes:
Fixes#5815
#### Does this PR introduce a user-facing change?
```release-note
修复拥有文章管理权限的用户无法正常使用版本历史的问题
```
#### What type of PR is this?
/kind bug
/area ui
#### What this PR does / why we need it:
补充 #5593 中缺少的 `api.console.halo.run` 权限。用于解决具有文章列表权限的用户,访问标签列表时提示无权限的问题
#### How to test it?
创建一个具有文章列表查看权限的用户,是否能够访问到标签列表。
#### Which issue(s) this PR fixes:
Fixes#5814
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind bug
/area ui
/area editor
#### What this PR does / why we need it:
在进行图片上传的前置处理中,将剪切板属性中的 `text/plain` 类型与 `text/html` 类型进行过滤,用于解决将 Excel 表格粘贴至默认编辑器时,会导致其变为了图片而不是表格。
#### How to test it?
从 Excel 中复制一个表格,在默认编辑器中使用粘贴,查看其是否成功粘贴为表格而不是图片。
#### Which issue(s) this PR fixes:
Fixes#5761
#### Does this PR introduce a user-facing change?
```release-note
解决 Excel 表格粘贴至默认编辑器后会变为图片的问题。
```
#### What type of PR is this?
/kind feature
/area core
/milestone 2.15.x
#### What this PR does / why we need it:
通知订阅支持基于表达式订阅
see #5632 for more details
how to test it?
1. 测试系统通知功能的文章、页面有新评论通知和评论有新回复通知的功能是否正常
2. 测试 2.14 创建的文章、评论和回复升级到此版本后是否能继续收到相应通知,如文章有新评论
#### Which issue(s) this PR fixes:
Fixes#5632
#### Does this PR introduce a user-facing change?
```release-note
通知订阅支持基于表达式订阅避免订阅随数据量增长同时自动优化之前的订阅数据
```
#### What type of PR is this?
/kind feature
/milestone 2.15.x
/area core
#### What this PR does / why we need it:
增加了在用户尝试更新邮箱地址时进行密码验证的步骤。此举提高了安全性,确保邮箱修改操作由经过身份验证的用户执行。
#### Which issue(s) this PR fixes:
Fixes#5750
#### Does this PR introduce a user-facing change?
```release-note
更新邮箱地址时需进行密码验证
```
#### What type of PR is this?
/kind feature
/area editor
#### What this PR does / why we need it:
为默认编辑器表格增加 `Tab` 与 `Shift-Tab` 切换至上一个单元格或下一个单元格。具体功能如下:
1. 使用 Tab 快捷键从左向右切换至下一个单元格,当光标在最后一个单元格时,使用 Tab 键新建一行并跳转至新一行的第一个单元格。
2. 使用 Shift + Tab 快捷键从右向左来切换至上一个单元格。
#### How to test it?
测试在默认编辑器中 `Tab` 快捷键切换单元格是否生效。
测试在合并单元格等各种表格操作下,切换单元格是否生效。
#### Which issue(s) this PR fixes:
Fixes#5771
#### Does this PR introduce a user-facing change?
```release-note
为默认编辑器表格增加 Tab 快捷键切换单元格的功能
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.15.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?
/area core
/area ui
/kind feature
/kind api-change
#### What this PR does / why we need it:
为主题和插件的定义文件添加 issues 字段,用于填写问题反馈地址。方便使用者可以清楚的知道可以在哪里反馈问题。
<img width="767" alt="image" src="https://github.com/halo-dev/halo/assets/21301288/b7dfce3f-8362-4964-82b8-cc018b85bb82">
#### Which issue(s) this PR fixes:
Fixes#5715
#### Does this PR introduce a user-facing change?
```release-note
为主题和插件的定义文件添加问题反馈(issues)字段
```
#### What type of PR is this?
/area ui
/kind improvement
/milestone 2.15.x
#### What this PR does / why we need it:
在个人中心的个人资料页面添加邮箱已验证的标识,方便用户知晓。
<img width="596" alt="image" src="https://github.com/halo-dev/halo/assets/21301288/77cd83e1-cefe-453c-ad12-689ee893c8ee">
#### Does this PR introduce a user-facing change?
```release-note
在个人中心的个人资料页面添加邮箱已验证的标识。
```
#### What type of PR is this?
/kind feature
/area core
/area plugin
#### What this PR does / why we need it:
This PR allows plugin developers defining WebSocket endpoints in plugins.
#### Which issue(s) this PR fixes:
Fixes#5285
#### Does this PR introduce a user-facing change?
```release-note
支持在插件中实现 WebSocket
```
#### What type of PR is this?
/area ui
/kind improvement
/milestone 2.15.x
#### What this PR does / why we need it:
优化 Console 的请求异常提示,如果异常不满足原有的判断逻辑,最终将提示 status + statusText,不再显示未知错误,方便使用者根据异常提示进行排查。
<img width="246" alt="image" src="https://github.com/halo-dev/halo/assets/21301288/86111068-69a1-4ac1-b405-eea69a95e141">
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/5739
#### Special notes for your reviewer:
我的测试方式:
使用 Caddy 模拟请求异常:
```
:9000
encode gzip
@blocked {
path /apis/content.halo.run/v1alpha1/posts/**
}
respond @blocked 413
reverse_proxy 127.0.0.1:8090
```
#### Does this PR introduce a user-facing change?
```release-note
优化 Console 的请求异常提示,方便异常排查。
```
#### What type of PR is this?
/kind bug
/area core
/milestone 2.15.x
#### What this PR does / why we need it:
修复由于没有更新 observed version 导致评论和回复的 reconciler 执行次数控制没有生效的问题
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/area ui
/kind improvement
/milestone 2.15.x
#### What this PR does / why we need it:
重构 Console 和 UC 的浏览器标题切换。
1. 将代码逻辑封装为统一的 Hook。
2. 移除 index.html 默认的标题,防止加载中的时候显示不正确。
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/5752
#### Special notes for your reviewer:
测试各个页面的标题显示正常即可。
#### Does this PR introduce a user-facing change?
```release-note
重构 Console 和 UC 的浏览器标题切换。
```
* feat: invalidate all sessions of a user after password changed
* fix: unit test case
* refactor: use spring session 3.3 to adapt
* refactor: compatible with session timeout configuration
* refactor: indexed session repository
* Reload page after changed the password
Signed-off-by: Ryan Wang <i@ryanc.cc>
* chore: update session repository
---------
Signed-off-by: Ryan Wang <i@ryanc.cc>
Co-authored-by: Ryan Wang <i@ryanc.cc>
* feat: add original password verification for password change
* chore: update properties file
* Refine ui
Signed-off-by: Ryan Wang <i@ryanc.cc>
* chore: update properties file
* fix: confirm assword
* fix: unit test case
* feat: add new api for change own password
* chore: regenerate api client
* chore: adapt to UI
* chore: enusre old password not blank
---------
Signed-off-by: Ryan Wang <i@ryanc.cc>
Co-authored-by: Ryan Wang <i@ryanc.cc>
#### What type of PR is this?
/kind bug
/area core
/milestone 2.15.x
#### What this PR does / why we need it:
修复分页遍历数据的查询参数
此问题由 #5504 和 #5656 重构导致,如果数据超过分页限制会导致无法结束的致命问题
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind cleanup
/area core
#### What this PR does / why we need it:
This PR adds support for generating API docs into project and generate API client according the API docs.
To generate/update latest API docs, execute the following command:
```bash
./gradlew clean generateOpenApiDocs
```
To generate/update latest API client, execute the following command:
```bash
make -C ui api-client-gen
```
Meanwhile, I also remove the lint on API client due to unnecessary.
Supersedes of https://github.com/halo-dev/halo/pull/5637
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/area ui
/kind improvement
/milestone 2.15.x
#### What this PR does / why we need it:
优化注册表单的用户名校验规则,改为最低要求 4 个字符,并完善规则提示。
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/5733
#### Does this PR introduce a user-facing change?
```release-note
优化注册表单的用户名校验规则
```
#### What type of PR is this?
/kind improvement
/area editor
/milestone 2.15.x
#### What this PR does / why we need it:
本 PR 对富文本编辑器中工具栏和冒泡菜单进行精简。
- 对默认富文本冒泡菜单及顶部工具栏相同类型的功能进行了折叠。
- 删除在 text 的冒泡菜单中,不属于当前选中文本的功能,例如转换为代码块等,这些实际上是段落的功能,并非是文本的功能。而 textAlign 目前也仅仅用在标题和行上,因此也移除。
#### How to test it?
查看默认富文本编辑器工具栏中,折叠的功能是否正常。选中文本,查看文本中是否不包含段落相关的功能。
#### Which issue(s) this PR fixes:
Fixes#5669
#### Does this PR introduce a user-facing change?
```release-note
对默认富文本编辑器中的工具栏进行折叠及精简优化。
```
#### What type of PR is this?
/kind bug
/area editor
/milestone 2.15.x
#### What this PR does / why we need it:
在编写多行文本后,粘贴代码块时,会出现粘贴的内容插入错误,其与代码块分割开。
[例如 #5736 中的示例所示](https://github.com/halo-dev/halo/assets/44745967/4b1ef8dc-60bf-47fd-b64d-23b0d6537d9e)
在本 PR 中,在创建 CodeBlock 时,将 Text 转为 `TextNode` 后,一同传入作为 `CodeBlock` 的 content。
另外为了保证插入代码块之后,光标处于代码块中,将会从插入位置的 from 开始往文档顶部搜索。
#### How to test it?
测试示例中的场景下,代码块插入是否正常。
测试在代码块前后放入其他代码块或者其他块,插入代码块后光标是否在代码块中。
#### Which issue(s) this PR fixes:
Fixes#5736
#### Does this PR introduce a user-facing change?
```release-note
修复默认编辑器中粘贴代码块会出现错行的问题
```
#### What type of PR is this?
/kind feature
/area editor
/area ui
#### What this PR does / why we need it:
为默认富文本编辑器添加格式刷扩展。用以给 text node 复制格式。
使用方式:
1. 选中一串具有格式的文本
2. 点击格式刷或者使用 `Shift + Mod + c` 快捷键复制格式。
3. 选中需要进行格式处理的文本
4. 松开鼠标,格式刷生效。
#### How to test it?
测试格式刷功能是否正常可用。需要测试 text node 以及 block node 内部的 text 格式功能。
#### Which issue(s) this PR fixes:
Fixes#5591
#### Does this PR introduce a user-facing change?
```release-note
为默认富文本编辑器添加格式刷扩展。
```
#### What type of PR is this?
/kind improvement
/area editor
#### What this PR does / why we need it:
优化默认富文本编辑器中,顶部工具栏子菜单的弹出方式,将原有的鼠标移入弹出改为点击左键弹出。并且为了显示效果,将会在具有子菜单的工具栏后方显示额外的下拉图标。
#### How to test it?
查看顶部工具栏子菜单弹出方式是否已改变。(插入组件未进行更改,仍旧保持原有鼠标移入弹出方式)
#### Which issue(s) this PR fixes:
Fixes#5668
#### Does this PR introduce a user-facing change?
```release-note
优化默认富文本编辑器中顶部工具栏的子菜单弹出方式
```
<!-- Thanks for sending a pull request! Here are some tips for you:
1. 如果这是你的第一次,请阅读我们的贡献指南:<https://github.com/halo-dev/halo/blob/main/CONTRIBUTING.md>。
1. If this is your first time, please read our contributor guidelines: <https://github.com/halo-dev/halo/blob/main/CONTRIBUTING.md>.
2. 请根据你解决问题的类型为 Pull Request 添加合适的标签。
2. Please label this pull request according to what type of issue you are addressing, especially if this is a release targeted pull request.
3. 请确保你已经添加并运行了适当的测试。
3. Ensure you have added or ran the appropriate tests for your PR.
-->
#### What type of PR is this?
/kind bug
/area ui
<!--
添加其中一个类别:
Add one of the following kinds:
/kind bug
/kind cleanup
/kind documentation
/kind feature
/kind improvement
适当添加其中一个或多个类别(可选):
Optionally add one or more of the following kinds if applicable:
/kind api-change
/kind deprecation
/kind failing-test
/kind flake
/kind regression
-->
#### What this PR does / why we need it:
布局高度引发页面背景色未完全填充滚动区域的问题;
另外,为了不影响全局 `footer` 置于页面底部,对 `BasicLayout.vue` 容器也添加了最小高度 `100vh`
#### Which issue(s) this PR fixes:
<!--
PR 合并时自动关闭 issue。
Automatically closes linked issue when PR is merged.
用法:`Fixes #<issue 号>`,或者 `Fixes (粘贴 issue 完整链接)`
Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`.
-->
Fixes#5678
#### Special notes for your reviewer:
当 Console 出现滚动条时,如:https://demo.halo.run/console/attachments?page=1&group=
注意观察对布局设置最小高度 `100vh` 后与设置之前的背景色变化;
注意是否会对其它布局高度造成影响
#### 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 cleanup
/area core
#### What this PR does / why we need it:
This PR upgrades SpringDoc to [2.5.0](https://github.com/springdoc/springdoc-openapi/releases/tag/v2.5.0).
#### Does this PR introduce a user-facing change?
```release-note
升级 SpringDoc 至 2.5.0
```
#### What type of PR is this?
/kind improvement
/area ui
#### Which issue(s) this PR fixes:
Fixes#5677
#### Does this PR introduce a user-facing change?
```release-note
将新建用户的表单中的角色设置设为必填
```
#### What type of PR is this?
/kind improvement
/area editor
/area ui
/milestone 2.15.x
#### What this PR does / why we need it:
优化默认富文本编辑器中自动创建链接的逻辑。
- 移除了粘贴文本时,如果文本为链接则会自动转为链接的问题。
- 移除输入链接文本之后回车,会自动转化为链接的问题。
- 新增当选中的文本内容为链接时,点击链接按钮,将会自动转化选中的文本为链接。
#### How to test it?
在富文本编辑器中,测试如下场景:
1. 在浏览器地址栏复制一个链接,粘贴后不会再转为链接,而是一个普通文本。
2. 输入一段链接文本,按回车后是否不会再被转为链接。
3. 选中一段可以被解析为链接的地址,选中此地址,点击链接按钮,此地址是否会被默认转为链接。
#### Which issue(s) this PR fixes:
Fixes#5653
#### Does this PR introduce a user-facing change?
```release-note
优化默认富文本编辑器中文本自动转为链接的相关逻辑
```
#### What type of PR is this?
/kind improvement
/area ui
#### What this PR does / why we need it:
限定文章或页面中的发布日期中的年份为四位数,方便用户输入四位年份之后自定跳转至月份。
#### How to test it?
测试在 `chrome` 上输入四位年份之后,是否会自动跳转至月份。
#### Which issue(s) this PR fixes:
Fixes#5630
#### Does this PR introduce a user-facing change?
```release-note
限定文章或页面中的发布日期中的年份为四位数
```
#### What type of PR is this?
/kind feature
/area editor
/milestone 2.15.x
#### What this PR does / why we need it:
为默认富文本编辑器添加清除格式的功能。快捷键为 `Mod + \`。
#### How to test it?
输入文本,使用加粗、链接、斜体等 mark 相关功能,之后使用清除格式,查看格式是否被清除。
#### Which issue(s) this PR fixes:
Fixes#5684
#### Does this PR introduce a user-facing change?
```release-note
为默认富文本编辑器添加清除格式的功能。
```