#### 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?
/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)字段
```
* 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 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?
/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
优化默认富文本编辑器中顶部工具栏的子菜单弹出方式
```
#### 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 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
为默认富文本编辑器添加清除格式的功能。
```
#### What type of PR is this?
/kind feature
/area editor
/milestone 2.15.x
#### What this PR does / why we need it:
此 PR 为默认富文本编辑器中的 P 标签设置了 `line-height` 属性,因此可以支持为某一行设置行高。
#### How to test it?
测试行高功能是否正常。测试在不同组件下功能是否正常。
#### Which issue(s) this PR fixes:
Fixes#5660
#### Does this PR introduce a user-facing change?
```release-note
为默认富文本编辑器增加行高设置
```
#### What type of PR is this?
/kind cleanup
/area core
#### What this PR does / why we need it:
Upgrade version to `2.15.0-SNAPSHOT`.
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind bug
/area editor
/milestone 2.14.x
#### What this PR does / why we need it:
解决在默认编辑器中,插件扩展 getDraggable 方法可能无效的问题。向 handleDrop 中添加属性 `selection`,方便插件对当前拖拽元素进行处理。
部分插件拖拽之后可能无效果,此时需要插件自行实现 `handleDrop` 方法来处理拖拽后的情况。
#### How to test it?
测试 getDraggable 方法是否正常。插件中使用此方法是否显示拖拽图标。
#### Which issue(s) this PR fixes:
Fixes#5208
#### Does this PR introduce a user-facing change?
```release-note
解决默认编辑器 getDraggable 在部分插件中失效的问题。
```
#### What type of PR is this?
/kind bug
/area editor
/milestone 2.14.x
#### What this PR does / why we need it:
在默认富文本编辑器下,当滚动时有概率会使页面小于正常大小。在文章最底部使用 AI 插件更加容易复现。
#### How to test it?
测试文章滚动时是否会小于正常大小,推荐在文章最底部使用 AI 插件来复现和测试。
#### Which issue(s) this PR fixes:
Fixes#3853
#### Does this PR introduce a user-facing change?
```release-note
修复文章编辑页面出现多个滚动条导致的页面高度样式问题。
```
添加代码块 dart 语言的高亮
<!-- 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 feature
/area editor
<!--
添加其中一个类别:
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:
> 为默认编辑器的代码块导入 dart 语言高亮
#### Which issue(s) this PR fixes:
Fixes#5530
<!--
PR 合并时自动关闭 issue。
Automatically closes linked issue when PR is merged.
用法:`Fixes #<issue 号>`,或者 `Fixes (粘贴 issue 完整链接)`
Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`.
-->
#### Special notes for your reviewer:
#### 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
为需要代码块dart语言高亮的用户提供支持
```
#### What type of PR is this?
/area editor
/area ui
/kind feature
#### What this PR does / why we need it:
为默认编辑器添加标题输入框。
<img width="1665" alt="image" src="https://github.com/halo-dev/halo/assets/21301288/df903e02-76b0-45fe-89d9-6ac81af8f041">
#### Which issue(s) this PR fixes:
Fixes#5427
#### Special notes for your reviewer:
#### Does this PR introduce a user-facing change?
```release-note
为默认编辑器添加标题输入框。
```
#### What type of PR is this?
/kind bug
/area editor
/area ui
/milestone 2.14.x
#### What this PR does / why we need it:
在默认的富文本编辑器中,使用了 [tiptap link](b3ef574f3d/packages/extension-link/src/link.ts (L127C3-L135C5)) ,而其中的 renderHTML 会对 href 进行处理,但当链接为纯数字的时候,`HTMLAttributes.href` 将不会有 `startsWith` 方法。
此 PR 将在解析 renderHTML 时,将 `HTMLAttributes.href` 转为 string,进而解决这个问题。
#### How to test it?
测试使用默认富文本编辑器时,编写一个链接,并将其设置为纯数字。
刷新页面,查看是否具有报错。
#### Which issue(s) this PR fixes:
Fixes#5478
#### Does this PR introduce a user-facing change?
```release-note
解决在默认富文本编辑器中当链接为纯数字时报错的问题
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.14.x
#### What this PR does / why we need it:
使用索引机制优化回复功能的查询以提高查询速度
#### Does this PR introduce a user-facing change?
```release-note
使用索引机制优化回复功能的查询以提高查询速度
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.14.x
#### What this PR does / why we need it:
使用索引机制优化评论数据查询以提高效率
how to test it?
- 测试 console 评论列表和筛选条件是否正确
- 测试主题端评论显示是否正确
#### Does this PR introduce a user-facing change?
```release-note
使用索引机制优化评论数据查询以提高效率
```
#### What type of PR is this?
/kind improvement
/area editor
/area ui
/milestone 2.14.x
#### What this PR does / why we need it:
将默认富文本编辑器中的链接中的 rel 属性由默认的 `noopener noreferrer nofollow` 属性改为 null,优化 SEO 。
#### How to test it?
查看使用默认富文本编辑器创建的链接,其 rel 属性是否不再是 `noopener noreferrer nofollow`
#### Which issue(s) this PR fixes:
Fixes#5328
#### Does this PR introduce a user-facing change?
```release-note
移除默认富文本编辑器中链接的 nofollow 等属性,优化 SEO。
```
#### What type of PR is this?
/area editor
/area ui
/kind feature
/milestone 2.14.x
#### What this PR does / why we need it:
为默认富文本编辑器中的表格,增加全选快捷键。具体操作逻辑如下:
1. 当光标处于表格中单元格内时,按 `Mod + a` 全选快捷键后,若未选中当前单元格,则选中单元格。
2. 若其中包含有其他影响全选快捷键的组件,则以组件自身为准,例如代码块中的全选。
3. 若已经选中单元格,则再次按全选快捷键,选中整个表格。
4. 若已经选中表格,则再按全选快捷键不会触发其他全选事件。
#### How to test it?
按照操作逻辑测试全选快捷键逻辑是否无误。是否与其他快捷键产生冲突。
#### Which issue(s) this PR fixes:
Fixes#5438
#### Does this PR introduce a user-facing change?
```release-note
为富文本编辑器中的表格组件增加全选快捷键
```
#### What type of PR is this?
/kind cleanup
/area core
#### What this PR does / why we need it:
Bump version to 2.14 to prepare for developing 2.14. This always happens after new version is released.
#### Does this PR introduce a user-facing change?
```release-note
None
```
### What type of PR is this?
/kind improvement
/area core
/milestone 2.13.x
### What this PR does / why we need it:
使用索引机制优化通知和订阅查询以提高性能
how to test it
测试通知列表不报错即可
### Does this PR introduce a user-facing change?
```release-note
使用索引机制优化通知和订阅查询以提高性能
```
#### What type of PR is this?
/kind improvement
/area console
/area editor
/milestone 2.13.x
#### What this PR does / why we need it:
重构默认编辑器视频组件。使其支持上传、取消上传、从附件库选择、替换等功能。
#### How to test it?
直接拖动、复制或选择文件上传一个视频,查看是否显示上传进度条,取消、重试功能是否正常
#### Which issue(s) this PR fixes:
Fixes#5240
#### Does this PR introduce a user-facing change?
```release-note
重构编辑器视频组件的上传逻辑,增加选择文件上传、上传进度条、取消、重试等机制。
```
#### What type of PR is this?
/kind feature
/kind improvement
/area core
/area console
/kind api-change
#### What this PR does / why we need it:
增加对用户注册时必须验证邮箱的支持
#### Which issue(s) this PR fixes:
Fixes#5016
#### Special notes for your reviewer:
`regRequireVerifyEmail` 为 `false` 时与现在的注册行为一致
为 `true` 时注册页显示验证码校验相关,注册成功后 `UserSpec.emailVerified` 即为 `true`
没有判断邮件通知是否开启,与现有的邮箱验证一致,如未开启则收不到邮件
#### Does this PR introduce a user-facing change?
```release-note
增加对用户注册时必须验证邮箱的支持
```
#### What type of PR is this?
/area ui
/kind improvement
/milestone 2.13.x
#### What this PR does / why we need it:
升级 Vue 生态相关依赖至最新版本。
#### Does this PR introduce a user-facing change?
```release-note
升级 Vue 生态相关依赖至最新版本。
```
#### What type of PR is this?
/area ui
/kind improvement
/milestone 2.13.x
#### What this PR does / why we need it:
升级 Axios 依赖版本至 1.6.x
#### Does this PR introduce a user-facing change?
```release-note
升级 Axios 依赖版本至 1.6.x
```
#### What type of PR is this?
/kind bug
/area editor
/area console
#### What this PR does / why we need it:
在 #5191 中对表格新增了如果可以左右滚动时,则显示阴影的特性。而根据 `prosemirror` 的数据流处理策略,在 `decorations` 中,state 是 new EditorState,但通过 `this.editor.view` 获取到的 view 为 old EditorView,进而导致使用了最新的坐标,并且使用其坐标通过旧版本的 view 中获取 DOM 而产生的错误。
本 PR 使用 `NodeView` 而不是 `decorations` 来重新处理表格阴影。
#### How to test it?
在默认富文本编辑器中新建一个表格。在表格前使用拼音输入文本,查看此文本能否被输入。
同时查看表格阴影是否存在
#### Which issue(s) this PR fixes:
Fixes#5352
#### Does this PR introduce a user-facing change?
```release-note
解决默认富文本编辑器表格前字符无法被编辑的问题。
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.13.x
#### What this PR does / why we need it:
使用索引功能优化附件列表查询
#### Does this PR introduce a user-facing change?
```release-note
使用索引功能优化附件列表查询
```
#### What type of PR is this?
/area ui
/kind cleanup
#### What this PR does / why we need it:
Rename console to ui in some files,
Ref https://github.com/halo-dev/halo/pull/5314
#### Does this PR introduce a user-facing change?
```release-note
None
```