* Refactor list toolbar items and unify icon sizing
* Replace MDI icons with Mingcute icons in editor extensions
* Replace MDI icons with Mingcute and other icon sets
* Unify button styles and icon sizing in editor UI
* Refactor editor icons and remove BlockCard component
* Refactor CommandsView menu styles and structure
* Add transition-colors to interactive UI components
* Refactor toolbar and toolbox item props typing
* Refactor BubbleItem props to use shared type
* Fix optional chaining for isActive prop in LinkBubbleButton
* Replace MDI icons with Mingcute icons in editor UI
* Refactor editor layout and styles for improved flexibility
* Refactor editor layout and update styles
* Replace icon set in CodeBlockViewRenderer
* Extend props types for toolbar, bubble, and toolbox items
* Refactor bubble components into subfolder
* Add BubbleButton component and update usage
* Refactor dropdown and toolbar item components
* Add image position dropdown to image bubble menu
* Refactor editor extension isActive checks to use class names
* Refactor gallery bubble items to use new UI components
* Refactor iframe align actions into dedicated component
* Refactor video position bubble to dropdown component
* Refactor input components and unify input UI
* Increase input container width from w-60 to w-64
* Refactor video size UI and update link popper widths
* Add audio position alignment to editor extension
* Refactor iframe and video size controls, update icons
* Add ResourceReplaceButton and refactor media replace UI
* Add configurable gap for gallery items
* Increase group size options to 10 in gallery
Expanded the selectable group size options in BubbleItemGroupSize.vue from 6 to 10, allowing users to choose larger group sizes for gallery items.
* Add danger type to cover delete dropdown item
* Add auto-focus to Input components in editor bubbles
* Add top margin to GalleryView node wrapper
#### What type of PR is this?
/kind bug
/area editor
/milestone 2.22.x
#### What this PR does / why we need it:
解决由于调整图片时多个位置同时修改 figure 而导致的报错问题。
#### Which issue(s) this PR fixes:
Fixes#7980
#### Does this PR introduce a user-facing change?
```release-note
解决在 figure 中添加 caption 后拖动图片报错的问题
```
#### What type of PR is this?
/kind improvement
/area editor
/milestone 2.22.x
#### What this PR does / why we need it:
将 Fragment 包从 PM 包中导出,而不是 core 包,用于解决 https://github.com/halo-sigs/plugin-hybrid-edit-block/issues/24 的错误
#### How to test it?
测试使用插件 `plugin-hybrid-edit-block` 是否会报错的问题。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind bug
/area editor
/milestone 2.22.x
#### What this PR does / why we need it:
解决 video 缺少 node-view-wrapper 导入的问题。
#### Which issue(s) this PR fixes:
Fixes#7981
#### Does this PR introduce a user-facing change?
```release-note
解决无法在编辑器中插入视频的问题
```
* Refactor dropdown components to use floating-vue directly
* Replace floating-vue with @halo-dev/components in editor
* Remove Dropdown.vue and update story usage
* Remove unused popper class and related styles
* Refactor gallery dropdowns to use VDropdownItem
#### What type of PR is this?
/area core
/kind improvement
/milestone 2.22.x
#### What this PR does / why we need it:
See #7967
#### Which issue(s) this PR fixes:
Fixes#7967
#### Does this PR introduce a user-facing change?
```release-note
None
```
* Move extensions
Signed-off-by: Ryan Wang <i@ryanc.cc>
* Refactor editor extensions to use explicit naming
* Refactor attachment selector integration in editor
* Remove vue-demi from Vite external dependencies
* Add README for richtext-editor package
* Refactor attachment composable and update upload permissions
* Refactor editor i18n keys and move upload strings
* Refactor AllExtensions to ExtensionsKit and update usage
* Move heading id attribute to extension implementation
* Refactor i18n usage to use i18n.global.t
* Update README to reflect changes in editor extensions, replacing AllExtensions with ExtensionsKit
---------
Signed-off-by: Ryan Wang <i@ryanc.cc>
* Update api-client package.json to use ES module format
* Enhance api-client configuration by adding sideEffects flag and refactoring tsdown config for better output formats
#### What type of PR is this?
/kind feature
/area editor
#### What this PR does / why we need it:
添加 figure 功能至 editor 中。
当前会将 `figure` 应用至 `image`、`video`、`audio` 等。
由于 figure 的引入,image 等结构会有一定的变化,将由原先的行内元素转变为块级元素。
> 更新后,将兼容旧版本 image,打开编辑器后会自动将其转换为带有 `figure` 父节点的内容。
#### How to test it?
测试原有的 `image`、`video`、`audio` 等功能是否正常可用。
测试 `figure-caption` 是否正常可用。
测试历史数据是否正常渲染。
#### Which issue(s) this PR fixes:
Fixes#5388
#### Does this PR introduce a user-facing change?
```release-note
为默认编辑器添加 Figure 功能并应用至图片、视频、音频
```
#### What type of PR is this?
/area ui
/kind cleanup
#### What this PR does / why we need it:
Upgrade dev dependencies versions
#### Does this PR introduce a user-facing change?
```release-note
None
```
* Bump vue and related-deps version
Signed-off-by: Ryan Wang <i@ryanc.cc>
* Update @intlify/unplugin-vue-i18n to v11.0.1
---------
Signed-off-by: Ryan Wang <i@ryanc.cc>
#### What type of PR is this?
/kind feature
/area ui
/area editor
#### What this PR does / why we need it:
为编辑器增加画廊的扩展。
<img width="1908" height="960" alt="image" src="https://github.com/user-attachments/assets/7971cf83-9bf4-4330-ac2a-612ce0e3c9bf" />
#### How to test it?
在编辑器中测试画廊是否正常可用
#### Which issue(s) this PR fixes:
Fixes#6307
#### Does this PR introduce a user-facing change?
```release-note
为编辑器新增画廊(图片集)功能
```
#### What type of PR is this?
/area ui
/kind improvement
/milestone 2.22.x
#### What this PR does / why we need it:
Introduces DashboardWidgetQuickActionRouteItem type to allow quick actions that navigate to routes instead of executing callbacks.
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/area ui
/kind cleanup
/milestone 2.22.x
#### What this PR does / why we need it:
Rename output files from rich-text-editor to index
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/area ui
/kind api-change
/milestone 2.22.x
#### What this PR does / why we need it:
See #7925
#### Which issue(s) this PR fixes:
Fixes#7925
#### Special notes for your reviewer:
#### Does this PR introduce a user-facing change?
```release-note
将 `@halo-dev/console-shared` 重命名为 `@halo-dev/ui-shared`
```
#### What type of PR is this?
/area ui
/milestone 2.22.x
#### What this PR does / why we need it:
1. Upgrade `openapi-generator` to `7.17.0`.
2. Regenerate the API client based on the latest changes from the `main` branch.
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/area ui
/kind improvement
/milestone 2.22.x
#### What this PR does / why we need it:
Improve structure and JSDoc of `@halo-dev/console-shared` package
#### Does this PR introduce a user-facing change?
```release-note
None
```
* Remove deprecated FunctionalPage interface and hooks
* Remove pages state export from shared index
The export for './states/pages' was removed from the shared package index, likely because it is no longer needed or has been deprecated.
#### What type of PR is this?
/area ui
/kind api-change
/kind cleanup
/milestone 2.22.x
#### What this PR does / why we need it:
Unified attachment data structures by introducing AttachmentSimple and updating AttachmentLike to support it. Refactored utility functions and editor components to use new conversion and extraction methods, simplifying attachment processing and improving type safety. Removed legacy AttachmentAttr and related code, ensuring consistent handling of attachments across image, audio, video, and link features.
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/area ui
/kind feature
/milestone 2.22.x
#### What this PR does / why we need it:
This PR moves the `currentUser` and `globalInfo` stores to the `@halo-dev/console-shared` package, making them easily accessible for plugins.
In addition, it’s now possible for plugins to define their own global stores using Pinia.
#### Does this PR introduce a user-facing change?
```release-note
- 在 `@halo-dev/console-shared` 包中提供 `stores` 对象,包含 currentUser 和 globalInfo。
- 支持在插件的 UI 中使用 Pinia 定义全局 Store
```
#### What type of PR is this?
/area ui
/kind feature
/milestone 2.22.x
#### What this PR does / why we need it:
This PR introduces a developer-friendly utility for checking UI permissions, which is also exposed for use by plugins.
Usage:
```ts
import { utils } from "@halo-dev/console-shared"
utils.permission.has(['any:permission'])
```
#### Does this PR introduce a user-facing change?
```release-note
在 `@halo-dev/console-shared` 包中提供 UI 权限检查工具
```
Added detailed JSDoc comments and usage examples to methods in AttachmentUtils and DateUtils. This improves code readability and provides better context and guidance for developers using these utility functions.
#### What type of PR is this?
/area ui
/milestone 2.22.x
#### What this PR does / why we need it:
Bump axios version to 1.12
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/area ui
/kind feature
/milestone 2.22.x
#### What this PR does / why we need it:
This PR introduces date and attachment utilities into the `@halo-dev/console-shared` package. This makes it convenient for plugins to share and reuse these common functions.
#### Does this PR introduce a user-facing change?
```release-note
在 `@halo-dev/console-shared` 包中提供统一的 date 和 attachment 工具
```
#### What type of PR is this?
/area ui
/kind cleanup
#### What this PR does / why we need it:
Upgrade Node.js to 22
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/area ui
/kind cleanup
#### What this PR does / why we need it:
Integrated [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn) into the ESLint config and added related rules. Updated all imports of core Node.js modules to use the 'node:' protocol for improved compatibility and linting.
#### 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:
This PR moves the .gitignore, .editorconfig, and .vscode files from the ui/ directory to the project root. This change is to avoid the need to maintain multiple, separate configuration files.
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind feature
/area editor
#### What this PR does / why we need it:
支持使用中文符号`、`唤起建议菜单
#### Which issue(s) this PR fixes:
Fixes#7770
#### Does this PR introduce a user-facing change?
```release-note
支持使用中文符号、唤起建议菜单
```
#### What type of PR is this?
/kind bug
/area editor
#### What this PR does / why we need it:
当切换代码块语言时,可能会导致页面不正常跳动。
当前 PR 移除了切换代码块语言之后的设置焦点事件用于解决此问题
#### Which issue(s) this PR fixes:
Fixes#7795
#### Does this PR introduce a user-facing change?
```release-note
解决切换代码块语言时编辑器页面不正常跳动的问题
```
Adjusted the priority values for toolbox items in audio, code-block, columns, iframe, and table extensions to refine their ordering. Added a getCommandMenuItems method to the image extension, enabling image insertion via the command menu.
* Add 'hidden' field to comment and reply requests
Signed-off-by: Ryan Wang <i@ryanc.cc>
* Add support for filtering comments with hidden
* Specify hidden=false and approved=true for anonymous users
* Set default hidden flag only if null in comments
* Add 'private reply' option to comment modals
* Add private tag for hidden comments and replies
* Allow hiding comments only
* Enhance comment visibility logic to allow owners to view hidden comments
* Remove hidden input for reply form
Signed-off-by: Ryan Wang <i@ryanc.cc>
* Refine i18n
Signed-off-by: Ryan Wang <i@ryanc.cc>
---------
Signed-off-by: Ryan Wang <i@ryanc.cc>
Co-authored-by: John Niang <johnniang@foxmail.com>