5833 Commits

Author SHA1 Message Date
Ryan Wang
d315083827 Add ignore attribute to FormKit components in Icon.vue (#8009) v2.22.0-alpha.1 2025-12-12 10:53:13 +08:00
Yone
ddd0453c6a feat: expand password regex to allow . and ? characters (#8005)
#### What type of PR is this?

/kind improvement


#### What this PR does / why we need it:

This PR expands the password validation rule by allowing the . and ? characters in addition to the existing A-Z, a-z, 0-9, !@#$%^&*.
It improves flexibility for users when setting their passwords.

#### Which issue(s) this PR fixes:


#### Special notes for your reviewer:

The regex and its corresponding comment have both been updated to ensure consistency.

#### Does this PR introduce a user-facing change?

```release-note
用户密码允许输入 . 和 ?
```
2025-12-12 02:33:08 +00:00
Takagi
619552e5a4 Add array formkit component (#7996)
#### What type of PR is this?

/kind improvement
/area ui

#### What this PR does / why we need it:

为 FormKit 添加新的 array 类型输入方式,与 Repeater 完全兼容,旨在替换掉旧版 Repeater。

<img width="1065" height="906" alt="image" src="https://github.com/user-attachments/assets/8ca7cd3d-1dd4-46bf-b4e4-74b9655ed20d" />

Fixes https://github.com/halo-dev/halo/issues/4374
Fixes https://github.com/halo-dev/halo/issues/6369

#### How to test it?

测试原有 Repeater 组件的功能是否正常渲染,功能是否正常可用。

#### Which issue(s) this PR fixes:

#### Does this PR introduce a user-facing change?

```release-note
为 FormKit 添加新的 Array 输入方式,以提供配置更加直观方便的数组数据类型,并计划在未来替代原有的 Repeater
```
2025-12-11 14:25:48 +00:00
Ryan Wang
f609a2cf6e Add color input placeholder (#8008) 2025-12-10 19:53:37 +08:00
John Niang
9739b1059e Make the posts in index lazy to load (#8006)
#### What type of PR is this?

/kind improvement
/area theme
/milestone 2.22.x

#### What this PR does / why we need it:

`posts` query will be always executed even if we don't use the variable `posts` in the `index` template.

This PR use lazy context variable to load `posts` model as needed.

#### Which issue(s) this PR fixes:

Fixes https://github.com/halo-dev/halo/issues/7924

#### Special notes for your reviewer:

Try to remove `posts` variable in the `index` template and check if the system queries the `posts` data.

#### Does this PR introduce a user-facing change?

```release-note
None
```
2025-12-10 08:59:00 +00:00
John Niang
2e0881d560 Clean up notification reason after notifying and remove finalizers (#8007)
#### What type of PR is this?

/kind improvement
/area core
/milestone 2.22.x

#### What this PR does / why we need it:

Prior to this, the notification sent by the system would leave behind a lot of useless data, such as Reason. This PR is to clean up all the useless data after notifying.

#### Which issue(s) this PR fixes:

Fixes https://github.com/halo-dev/halo/issues/7578

#### Special notes for your reviewer:

Try to log in with a fresh Browser environment and check the reason data from <http://localhost:8090/apis/notification.halo.run/v1alpha1/reasons>.

#### Does this PR introduce a user-facing change?

```release-note
清理通知发送所残留的无用数据
```
2025-12-10 08:53:01 +00:00
John Niang
747d7edc24 Apply timeout to reactive blocking operations (#8004) 2025-12-10 15:06:42 +08:00
Ryan Wang
760ba2347b Optimize editor styles (#7982)
* 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
2025-12-10 14:37:45 +08:00
Ryan Wang
ac449924e2 Add custom color input component to FormKit (#8003)
* Add custom color input component to FormKit

* Update ui/src/formkit/inputs/color/ColorInput.vue

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Add aria-label to color input button for improved accessibility

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-10 14:37:03 +08:00
Ryan Wang
8243d52ff3 Add iconify input for formkit (#8000)
* init

Signed-off-by: Ryan Wang <i@ryanc.cc>

* Add Iconify input component with format support

* Add ignore attribute to search input field

* Internationalize Iconify input components

* Remove unused IconifyInput component from Tools.vue

* Filter out hidden icon collections

* Add loading indicator to icon collection view

* Load IconifyInput component asynchronously

* Update ui/src/formkit/inputs/iconify/Icon.vue

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update ui/src/formkit/inputs/iconify/IconifyInput.vue

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Refactor iconify API requests to use params object

* Update ui/src/formkit/inputs/iconify/Icon.vue

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update ui/src/formkit/inputs/iconify/IconifyInput.vue

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update ui/src/formkit/inputs/iconify/IconifyInput.vue

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Reorder event and attribute bindings for clarity

---------

Signed-off-by: Ryan Wang <i@ryanc.cc>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-10 14:35:12 +08:00
Ryan Wang
a3eda32f01 Refactor attachment grid item and image preview components (#7989) 2025-12-08 10:14:40 +08:00
Takagi
9cee89c2fc fix: resolve the issue of not being able to drag after adding a figure caption (#7984)
#### 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 后拖动图片报错的问题
```
2025-12-05 03:58:24 +00:00
Ryan Wang
15a1c6ee91 Bump vite to 8.0 (#7983)
Signed-off-by: Ryan Wang <i@ryanc.cc>
2025-12-04 18:58:29 +08:00
Takagi
a14d7b7b12 chore: export Fragment from pm package (#7985)
#### 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
```
2025-12-04 10:56:23 +00:00
Takagi
61637a21cd fix: resolve the issue of the video node-view-wrapper error (#7986)
#### 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
解决无法在编辑器中插入视频的问题
```
2025-12-04 10:54:22 +00:00
Ryan Wang
fca4c32519 Refactor dropdown component (#7978)
* 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
2025-12-01 11:32:23 +08:00
Ryan Wang
488f9cc7c4 Make content fields required in post and content models (#7972)
#### 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
```
2025-12-01 02:39:37 +00:00
Ryan Wang
9d85275d0f Refactor AttachmentFileTypeIcon to use async components (#7976) 2025-11-28 15:53:25 +08:00
Ryan Wang
0883082699 Remove yjs dependency from editor package (#7971) 2025-11-28 15:52:40 +08:00
Ryan Wang
d39c371ad4 Fix incorrect type generation for the Dropdown component (#7974) 2025-11-28 14:32:40 +08:00
Ryan Wang
a204fbc86a Refactor editor package (#7968)
* 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>
2025-11-28 13:02:34 +08:00
Ryan Wang
c25aadeb3e Update api-client package.json to use ES module format (#7966)
* 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
2025-11-28 10:20:39 +08:00
Ryan Wang
08747dc59d Upgrade tiptap dependencies to v3.11.0 (#7969) 2025-11-27 14:08:07 +08:00
Takagi
558400f4a2 feat: add figure and caption support to editor (#7875)
#### 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 功能并应用至图片、视频、音频
```
2025-11-26 07:27:21 +00:00
Ryan Wang
1e33ae4cdd Improve auth provider logo display styling (#7964) 2025-11-26 15:04:22 +08:00
Ryan Wang
b62d692c70 Add Markdown support to CodeMirror component (#7961)
#### What type of PR is this?

/kind feature
/area ui
/milestone 2.22.x

#### What this PR does / why we need it:

Add Markdown support to CodeMirror component

#### Does this PR introduce a user-facing change?

```release-note
None
```
2025-11-23 06:05:12 +00:00
Ryan Wang
6f711fc0cb Upgrade dev dependencies versions (#7960)
#### 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
```
2025-11-23 06:03:11 +00:00
Ryan Wang
57e7df9f95 Refactor Codemirror language loading to async (#7956) 2025-11-21 15:04:42 +08:00
Ryan Wang
64620140e5 Refactor auth provider setting form logic (#7954)
Removed useSettingFormConvert composable and refactored AuthProviderDetail.vue to handle setting form schema and config map data directly. Improved reactivity, simplified data flow, and updated form submission logic for better maintainability.
2025-11-21 15:04:29 +08:00
Ryan Wang
889ec5881f Refactor profile authentication tab (#7950) 2025-11-21 15:04:12 +08:00
Ryan Wang
f69ec15b17 Refactor module and permission setup for console and uc (#7951) 2025-11-21 14:57:11 +08:00
Ryan Wang
8cabd633c1 Exclude missing translations YAML files from import (#7957) 2025-11-21 14:56:45 +08:00
Ryan Wang
d3016f2c2d Add path aliases for halo-dev packages (#7953)
* Add path aliases for halo-dev packages

* Update package path mappings to use dist output
2025-11-21 14:56:12 +08:00
Ryan Wang
e65f653e03 Refactor FormKit input prop types and update dependencies (#7955) 2025-11-21 11:01:20 +08:00
Ryan Wang
caf5ecd4cb Bump vue and related-deps version (#7949)
* 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>
2025-11-20 14:42:18 +08:00
Ryan Wang
8eb436b274 Add wrapper class to Dropdown component (#7947)
Introduces a 'dropdown-wrapper' class to the Dropdown component and sets its display to inline-block for improved layout control.
2025-11-19 15:55:58 +08:00
Ryan Wang
6e6ee580ec Bump storybook to 10 (#7946)
Signed-off-by: Ryan Wang <i@ryanc.cc>
2025-11-19 15:55:47 +08:00
Takagi
1d58ead011 feat: add gallery extension in editor (#7897)
#### 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
为编辑器新增画廊(图片集)功能
```
2025-11-18 10:20:57 +00:00
Ryan Wang
d1c347ab37 Refactor attachment image preview section (#7944) 2025-11-18 11:56:03 +08:00
Ryan Wang
a94993a056 Add confirmType 'danger' to destructive dialogs (#7943) 2025-11-18 11:55:37 +08:00
Ryan Wang
904a55e732 Update Vite and related dependencies (#7942) 2025-11-18 11:55:20 +08:00
Ryan Wang
e446512565 Add route-based quick action support to dashboard (#7939)
#### 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
```
2025-11-17 02:02:54 +00:00
Ryan Wang
dc030c8f16 Rename output files from rich-text-editor to index (#7940)
#### 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
```
2025-11-17 02:00:55 +00:00
Ryan Wang
b434574166 Refactor to use async component imports (#7941)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.22.x

#### What this PR does / why we need it:

Lazy load partial routes to optimize initial load speed

#### Does this PR introduce a user-facing change?

```release-note
None
```
2025-11-17 01:36:53 +00:00
Ryan Wang
10e3f162f5 Lazy load profile tabs with async components (#7935)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.22.x

#### What this PR does / why we need it:

Optimize profile page loading speed

#### Does this PR introduce a user-facing change?

```release-note
None
```
2025-11-14 07:00:49 +00:00
Ryan Wang
ede40ad698 Enhance type hints for globally registered components (#7933)
* Enhance type hints for globally registered components

* Refactor Codemirror props and language support

* Update

Signed-off-by: Ryan Wang <i@ryanc.cc>

---------

Signed-off-by: Ryan Wang <i@ryanc.cc>
2025-11-14 14:51:55 +08:00
Ryan Wang
2068b72e27 Refactor user profile to use Pinia currentUser store (#7936)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.22.x

#### What this PR does / why we need it:

Refactor user profile to use Pinia currentUser store

#### Does this PR introduce a user-facing change?

```release-note
None
```
2025-11-14 06:46:50 +00:00
Ryan Wang
ec22d038ca Refactor comment components to use async imports (#7932)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.22.x

#### What this PR does / why we need it:

Refactor comment components to use async imports.

before:

<img width="705" height="274" alt="image" src="https://github.com/user-attachments/assets/2e424722-90e4-4333-80f8-ef494f1e763d" />

after:

<img width="703" height="243" alt="image" src="https://github.com/user-attachments/assets/17045d1b-54fe-4a0b-860c-62ab47e9338f" />

#### Does this PR introduce a user-facing change?

```release-note
None
```
2025-11-13 08:38:48 +00:00
Ryan Wang
ea315904a1 Add support for async language pack loading (#7931)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.22.x

#### What this PR does / why we need it:

This PR supports asynchronously loading the required language packs, which can significantly improve the initial page load speed.

before:

<img width="732" height="285" alt="image" src="https://github.com/user-attachments/assets/6d682010-751a-4c07-8651-8c6ade8a5f2e" />

after:

<img width="748" height="280" alt="image" src="https://github.com/user-attachments/assets/1c22d295-5ba9-423b-b941-3e7d536e1660" />


#### Does this PR introduce a user-facing change?

```release-note
Console 和 UC 支持异步加载所需语言包,提升首屏加载速度。
```
2025-11-13 08:36:47 +00:00
Ryan Wang
dab1ceb537 Lazy load some routes to improve initial render performance (#7930)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.22.x

#### What this PR does / why we need it:

Lazy load some routes to improve initial render performance

#### Does this PR introduce a user-facing change?

```release-note
懒加载 Console 和 UC 的部分路由,优化首屏渲染速度
```
2025-11-13 06:28:46 +00:00