#### What type of PR is this?
/area ui
/kind bug
/milestone 2.19.x
#### What this PR does / why we need it:
修复备份相关的 API 接口地址错误的问题,此问题由 https://github.com/halo-dev/halo/pull/6486 引入,后端修改地址之后,前端没有对应修改。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind improvement
/area ui
/milestone 2.19.x
#### What this PR does / why we need it:
升级 tiptap 相关依赖至 [2.6.5](https://github.com/ueberdosis/tiptap/releases/tag/v2.6.5)
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/area ui
/kind improvement
/milestone 2.19.x
#### What this PR does / why we need it:
优化插件是否需要重载页面的判断条件,否则从低版本升级到 2.19 时,所有插件都会提示需要重载。
因为在 https://github.com/halo-dev/halo/pull/6470 中修改了 bundle.js 的结构,但升级到 2.19 之后可能并不会及时抛弃 bundle.js 的缓存,因为插件本身的 version 并没有改变,bundle.js 的 hash 参数也不会改变。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind improvement
/area editor
/milestone 2.19.x
#### What this PR does / why we need it:
使用白名单校验替换原有的黑名单校验,解决 a 标签潜在的安全问题。
移除自定义的解决方案,使用 Tiptap 所提供的白名单方案。
#### How to test it?
测试 a 标签的 href 链接是否会受到 xss 的影响。
同时测试 #5479 的情况是否还会发生。即默认富文本编辑器中当链接为纯数字时是否还会报错。
#### Does this PR introduce a user-facing change?
```release-note
使用白名单校验 a 标签的 href 用于解决潜在的安全问题。
```
#### What type of PR is this?
/kind bug
/area core
/milestone 2.19.x
#### What this PR does / why we need it:
修复切换账号登录时设备信息更新不正确的问题
原因:
1. 使用 admin 账号登录,此时会记录 device_id 的 cookie
2. 退出登录,device_id 会保留在 cookie 中并随着新账号带到服务端
3. 服务端根据 device_id 查询当前设备是否有对应的记录,但是没有校验用户名是否与当前登陆的一致然后就去更新登录时间
4. 正确的处理是校验 device_id 是否有与之对应的记录并且用户名相同,如果不相同则认为是新设备重新生成 device_id
**how to test it?**
1. 先清理 cookie 然后使用一个账号登录
2. 退出登陆并切换新账号登录
3. 检查新登录的账号的设备信息是否正确
#### Does this PR introduce a user-facing change?
```release-note
修复切换账号登录时设备信息更新不正确的问题
```
#### What type of PR is this?
/kind bug
/area core
/milestone 2.19.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
#### What this PR does / why we need it:
This PR refactors searching roles by using index mechanism to speed up every request and fix the problem of not being able to grant roles to users sometimes.
#### Which issue(s) this PR fixes:
Fixes#5807
Fixes https://github.com/halo-dev/halo/issues/4954
Fixes https://github.com/halo-dev/halo/issues/5057
#### Does this PR introduce a user-facing change?
```release-note
修复有时无法给用户赋权限的问题
```
#### What type of PR is this?
/kind cleanup
/area core
/milestone 2.19.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 improvement
/milestone 2.19.x
#### What this PR does / why we need it:
Bump vite-related dependencies
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.19.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 improvement
/milestone 2.19.x
#### What this PR does / why we need it:
使用 patch 接口重构菜单项拖动排序等功能。
#### Which issue(s) this PR fixes:
None
#### Special notes for your reviewer:
需要测试菜单项的拖动排序功能是否符合预期。
#### Does this PR introduce a user-facing change?
```release-note
使用 patch 接口重构菜单项拖动排序功能。
```
#### What type of PR is this?
/area ui
/kind improvement
/milestone 2.19.x
#### What this PR does / why we need it:
使用 patch 接口重构文章的恢复、可见性修改等逻辑。
#### Which issue(s) this PR fixes:
None
#### Special notes for your reviewer:
测试文章删除、恢复、可见性修改功能是否符合预期。
#### Does this PR introduce a user-facing change?
```release-note
使用 patch 接口重构文章的恢复、可见性修改等逻辑。
```
#### What type of PR is this?
/area ui
/kind improvement
/milestone 2.19.x
#### What this PR does / why we need it:
使用 patch 接口重构分类拖动排序功能。
#### Which issue(s) this PR fixes:
None
#### Special notes for your reviewer:
需要测试文章分类的拖动排序功能是否符合预期。
#### Does this PR introduce a user-facing change?
```release-note
使用 patch 接口重构分类拖动排序功能。
```
#### What type of PR is this?
/area ui
/kind improvement
/milestone 2.19.x
#### What this PR does / why we need it:
使用 patch 接口重构页面的删除、可见性修改等逻辑。
#### Which issue(s) this PR fixes:
None
#### Special notes for your reviewer:
测试页面删除、可见性修改功能是否符合预期。
#### Does this PR introduce a user-facing change?
```release-note
使用 patch 接口重构页面的删除、可见性修改等逻辑。
```
#### What type of PR is this?
None
#### What this PR does / why we need it:
Updated the issue template and added a reminder to disable all plugins to troubleshoot the problem.
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind improvement
/area ui
/milestone 2.19.x
#### What this PR does / why we need it:
将主题预览中的保存功能固定在底部,方便当主题设置项过多时进行保存。
为了不影响保存功能,因此此 PR 移除了本来在左下角悬浮的选择主题按钮。选择主题可以直接在右上角进行点击。
#### Which issue(s) this PR fixes:
Fixes#6448
#### Does this PR introduce a user-facing change?
```release-note
在主题预览界面中将保存按钮固定在底部
```
#### What type of PR is this?
/kind bug
/area editor
/milestone 2.19.x
#### What this PR does / why we need it:
修复默认编辑器中,当在列表的下一空白行使用退格键时,会导致无法回退至列表项中的问题。
#### How to test it?
1. 在编辑器中增加一个列表项。
2. 按两次回车跳出列表编辑器。
3. 按退格键。
查看退格键是否按一次就可以回到列表项,并且再次按时执行列表项的删除。
#### Which issue(s) this PR fixes:
Fixes#6263
#### Does this PR introduce a user-facing change?
```release-note
解决默认编辑器中在空白行中按退格键无法回退到列表项中的问题
```
#### What type of PR is this?
/kind bug
/area ui
/milestone 2.19.x
#### What this PR does / why we need it:
此 PR 将主题预览及文章预览的 `iframe` 由 srcdoc 改为使用 src 加载。用于解决在主题预览时,如果点击保存设置,会导致主题端页面跳转至首页。
#### How to test it?
1. 打开主题预览界面。
2. 打开非首页的页面。
3. 点击保存配置。查看此时刷新页面后是否不再回到首页。
同时需要测试 #4047 中的场景是否还会再发生。
#### Which issue(s) this PR fixes:
Fixes#6371
#### Does this PR introduce a user-facing change?
```release-note
解决预览主题时保存设置,页面会跳转至首页的问题。
```
#### What type of PR is this?
/kind improvement
/area core
#### What this PR does / why we need it:
This PR allows users to filter search result by types, owner names, category names and tag names.
#### Does this PR introduce a user-facing change?
```release-note
完善搜索引擎过滤功能
```
#### What type of PR is this?
/kind feature
/area ui
/milestone 2.19.x
#### What this PR does / why we need it:
支持在附件库中预览 `image/avif` 的图片。
#### Which issue(s) this PR fixes:
Fixes#6320
#### Does this PR introduce a user-facing change?
```release-note
支持在附件库中预览 avif 类型的图片
```
#### What type of PR is this?
/area ui
/kind improvement
/milestone 2.19.x
#### What this PR does / why we need it:
更新 typescript 依赖版本至 5.5.x,以尝试解决 VSCode Vue 插件频繁崩溃的问题。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind cleanup
#### 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 cleanup
/area core
#### What this PR does / why we need it:
This is a regular updates after a new release.
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/milestone 2.19.x
/area core
/kind cleanup
#### 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 feature
/area core
/milestone 2.18.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 bug
/area core
/milestone 2.18.x
#### What this PR does / why we need it:
修复保存系统配置时出现的 NPE 问题
此问题由于 PR #6346 导致
#### Which issue(s) this PR fixes:
Fixes#6416
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind cleanup
/area core
/milestone 2.18.x
#### What this PR does / why we need it:
This PR refines debug logs of listing all extensions.
#### 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:
移除在 https://github.com/halo-dev/halo/pull/6403 中误推送的代码。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind bug
/area editor
/milestone 2.18.x
#### What this PR does / why we need it:
此 PR 解决了使用高亮插件之后按 `up` 或 `down` 按键被阻止的问题。
此问题的来源为 https://github.com/halo-sigs/richtext-editor/pull/56 ,在此前的 PR 中为了解决设置字体大小后再次设置高亮,会导致高亮无法完全笼罩字体的问题。
但经过仔细排查,发现上述问题之前的解决方式有误,正确的原因应该是设置字体大小的 `span` 标签与设置高亮的 `mark` 标签顺序相反导致。如下所示:
<img width="1019" alt="image" src="https://github.com/user-attachments/assets/90c0926e-caab-40b6-91ae-97c075ef7225">
正确的情况应该是在 `span` 中包裹 `mark`。此 PR 提升了 `TextStyle` 的优先级,结果如下所示:
<img width="1022" alt="image" src="https://github.com/user-attachments/assets/e5e61d54-defd-493b-818c-c09faf55a7c1">
#### How to test it?
测试对文本使用高亮功能之后按 `up` 或 `down` 按键是否生效。
测试对在文本设置大小之后,使用高亮、删除线等样式是否正确。
#### Which issue(s) this PR fixes:
Fixes#6381
#### Does this PR introduce a user-facing change?
```release-note
解决默认编辑器中对文本使用高亮会导致按键被阻止的问题
```
#### What type of PR is this?
/kind bug
/area editor
/milestone 2.18.x
#### What this PR does / why we need it:
目前当编辑器中列表内容为空时,需要按退格键多次才能删除掉此列表内容。
本 PR 在执行单行删除逻辑之前,会检查列表是否处于活动状态,如果是则不再执行单行删除的逻辑。列表会执行 ListKeyMap 相关快捷键。
#### How to test it?
1. 在默认富文本键入一个列表。
2. 使用退格键删除这个列表。
3. 查看是否可以一次就删除。
#### Which issue(s) this PR fixes:
Fixes#6389
#### Does this PR introduce a user-facing change?
```release-note
修复默认编辑器中列表项需要按多次退格键才可以删除的问题
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.18.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 editor
/kind improvement
/milestone 2.18.x
#### What this PR does / why we need it:
移除编辑器 Column 的默认 padding 样式。
See https://github.com/halo-dev/halo/issues/6377#issue-2428912807
#### Which issue(s) this PR fixes:
Fixes#6377
#### Does this PR introduce a user-facing change?
```release-note
移除编辑器分栏卡片的默认 padding 样式。
```
#### What type of PR is this?
/area ui
/kind improvement
/milestone 2.18.x
#### What this PR does / why we need it:
为个人中心发布文章的操作添加重试机制,方式后端因为乐观锁出现异常错误。
#### Which issue(s) this PR fixes:
Fixes#6349
#### Does this PR introduce a user-facing change?
```release-note
为个人中心发布文章的操作添加重试机制,方式后端因为乐观锁出现异常错误。
```
#### What type of PR is this?
/area ui
/kind improvement
/milestone 2.18.x
#### What this PR does / why we need it:
升级 tiptap 的相关依赖至 2.5.7。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/area ui
/kind improvement
/milestone 2.18.x
#### What this PR does / why we need it:
修改附件选择组件的默认显示数量,以解决因为图片数量过多或者图片过大导致的卡顿问题。
#### Which issue(s) this PR fixes:
Ref https://github.com/halo-dev/halo/issues/6352
#### 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 键实现首行缩进的功能。
当光标处于文本首行时,按下 Tab 键会触发首行缩进。
在首行缩进的情况下或者选中一段文本,再次按下 Tab 键会触发整段缩进。
#### How to test it?
测试文本块及区域标题块首行按下 Tab 键是否可以正常触发首行缩进
#### Which issue(s) this PR fixes:
Fixes#6316
#### Does this PR introduce a user-facing change?
```release-note
默认编辑器增加 Tab 快捷键首行缩进功能
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.18.x
#### What this PR does / why we need it:
在 https://github.com/halo-dev/halo/pull/6244 中移除了过时的 `QueryParamBuildUtil.buildParametersFromType` 方法,但是由于留给插件适配的时间不够,很多官方提供的插件也要和 2.18 一起发版这样会导致使用了此方法的插件无法启动,因此留下方法声明并输出日志等到后续版本在删除,这样可以给出一些时间给用户先升级插件而不是挂掉。
#### 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:
Regenerate API docs and client to prevent unrelated changes from other PRs.
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.18.x
#### What this PR does / why we need it:
通过将 ExtensionGetter Bean 共享到给插件的 ApplicationContext,插件能够方便地使用该 Bean 来获取扩展。此更改确保插件具有可靠的扩展访问方式,从而促进系统内更好的模块化和可扩展性。
#### Which issue(s) this PR fixes:
Fixes#6357
#### Does this PR introduce a user-facing change?
```release-note
将 ExtensionGetter Bean 共享给插件使用,以便插件可以通过它来获取扩展
```