Commit Graph

334 Commits (v2.20.12)

Author SHA1 Message Date
Ryan Wang 156a30496c
fix: prevent data clearing on FormKit component unmount (#7122)
#### What type of PR is this?

/kind bug
/area ui
/milestone 2.20.x

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

Prevent data clearing on FormKit component unmount

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

Fixes #7121 

#### Special notes for your reviewer:

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

```release-note
修复 FormKit 组件卸载时,对应数据值也被清除的问题
```
2024-12-17 07:06:08 +00:00
Ryan Wang 8f39266c8c
refactor: optimize axios interceptor text/html content type detection (#7142)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.20.x

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

Optimize axios interceptor text/html content type detection

<img width="1461" alt="image" src="https://github.com/user-attachments/assets/6bb59a1d-81cc-4ea2-ac61-17e30eab4281" />

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

```release-note
None
```
2024-12-16 15:28:10 +00:00
Ryan Wang f9ddeebb1f
chore: bump vite version to 6.0.3 (#7123)
#### What type of PR is this?

/area ui
/kind improvement

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

Bump vite version to [6](https://vite.dev/guide/migration.html)

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

```release-note
None
```
2024-12-16 07:20:09 +00:00
Ryan Wang 41ea81cddd
feat: support display HTML format in API error responses (#7127)
#### What type of PR is this?

/kind feature
/area ui
/milestone 2.20.x

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

Add supports for display HTML format in API error responses

See #7115 

Examples:

<img width="917" alt="image" src="https://github.com/user-attachments/assets/1ab4531c-3238-4e7d-ba24-d2425184a757">

<img width="942" alt="image" src="https://github.com/user-attachments/assets/54621b31-0629-4772-95fd-8587a7704ca3">


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

Fixes #7115 

#### Special notes for your reviewer:

Nginx mock example:

```nginx
server {
    listen 80;
    server_name localhost;

    error_page   500 502 503 504  /50x.html;

    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location / {
      proxy_pass http://localhost:8090;
      proxy_set_header HOST $host;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location ^~ /apis/content.halo.run/v1alpha1/posts/ {
        return 403;
    }
}
```

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

```release-note
支持显示来自反向代理或者 WAF 的请求错误信息
```
2024-12-16 02:46:08 +00:00
Ryan Wang 0e9466d29c
chore: inject Object.hasOwn polyfill for Console and UC (#7128)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.20.x

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

Inject Object.hasOwn polyfill into the front-end projects of Console and UC to solve the problem that some features cannot be used normally in lower version browsers

See https://github.com/halo-dev/halo/issues?q=is%3Aissue%20state%3Aclosed%20hasOwn
See https://caniuse.com/?search=hasOwn

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

```release-note
修复在较低版本浏览器中无法使用默认编辑器和附件上传功能的问题。
```
2024-12-15 16:10:06 +00:00
John Niang 2cb10a5279
Bump Halo version to 2.20.11-SNAPSHOT (#7111)
#### What type of PR is this?

/kind cleanup
/area core

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

This PR bumps Halo version to 2.20.11-SNAPSHOT for next iteration.

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

```release-note
None
```
2024-12-04 09:51:11 +00:00
Ryan Wang d06b40cb0c
chore: remove vue devtools (#7108)
#### What type of PR is this?

/area ui
/kind cleanup

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

移除 UI 项目内置的 Vue Devtools,后续建议使用浏览器插件代替:https://chromewebstore.google.com/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd

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

```release-note
None
```
2024-12-04 03:17:09 +00:00
Ryan Wang 033a77e622
chore: add packageManager for corepack (#7081)
#### What type of PR is this?

/area ui
/kind improvement

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

为 UI 项目添加 packageManager 字段,以支持 [corepack](https://nodejs.org/api/corepack.html)。

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

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

#### Special notes for your reviewer:

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

```release-note
为 UI 项目添加 packageManager 字段,以支持 [corepack](https://nodejs.org/api/corepack.html)。
```
2024-11-26 03:58:28 +00:00
Ryan Wang 2ed3bb6838
feat: add empty state for restore by backups (#7078)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.20.x

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

为通过备份文件恢复的界面添加空状态提示。

<img width="1192" alt="image" src="https://github.com/user-attachments/assets/2267e61d-9886-408a-a13f-e986f2172203">

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

```release-note
为通过备份文件恢复的界面添加空状态提示。
```
2024-11-25 09:30:25 +00:00
Ryan Wang e5be856a06
fix: post annotations form layout issues in Chrome browser (#7076) 2024-11-25 10:45:36 +08:00
Ryan Wang ecec5eeb7c
feat: improve role template i18n (#7075) 2024-11-25 10:45:22 +08:00
John Niang d985b7a768
Upgrade to SpringDoc 2.7.0 (#7072)
* Upgrade to SpringDoc 2.7.0

Signed-off-by: John Niang <johnniang@foxmail.com>
2024-11-25 10:45:05 +08:00
Ryan Wang 391aac62d3
feat: add multi-role assignment support for users (#7037)
#### What type of PR is this?

/area ui
/kind feature
/milestone 2.20.x

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

支持为用户分配多个角色。

<img width="634" alt="image" src="https://github.com/user-attachments/assets/caa40327-518a-4bef-afc3-75a020018d3d">
<img width="764" alt="image" src="https://github.com/user-attachments/assets/8b4b807e-6c72-45d9-9368-75e70bb12dcc">

TODO:

- [x] Console / UC 侧边栏显示多个角色
- [x] 支持在管理端查看用户聚合的角色模板列表,或者在分配时显示所选角色其下的角色模板列表,能够让管理员清楚的知道用户具体权限。

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

Fixes #

#### Special notes for your reviewer:

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

```release-note
支持为用户分配多个角色。
```
2024-11-24 15:48:21 +00:00
Ryan Wang 964bc28052
chore: bump tiptap version to 2.10.x (#7069)
#### What type of PR is this?

/area ui
/milestone 2.20.x

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

升级 Tiptap 的依赖至 [2.10.x](https://github.com/ueberdosis/tiptap/releases)。

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

```release-note
升级 Tiptap 的依赖至 2.10.x。
```
2024-11-24 08:02:19 +00:00
Nancy 2c4e85f40b
feat: add grant permission and user deletion features to user detail page (#6963)
What type of PR is this?

/area ui
/kind improvement
/milestone 2.20.x

What this PR does / why we need it:

期望支持在用户详情页面支持变更用户角色及删除用户 。

Which issue(s) this PR fixes:

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

Special notes for your reviewer:

Does this PR introduce a user-facing change?
```release-note
支持在用户详情页面支持变更用户角色及删除用户 。
```
2024-10-30 04:50:39 +00:00
Nancy 77548ec5a7
feat: add name existence check before creating attachment group and storage policy (#6959)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.20.x

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

在创建附件分组或者存储策略时,支持检查是否有已存在的名称。

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

Fixes #6946

#### Special notes for your reviewer:

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

```release-note
在创建附件分组或者存储策略时,支持检查是否有已存在的名称。
```
2024-10-30 03:30:38 +00:00
Ryan Wang fdc90aff5c
fix: prevent undefined key name when creating Secret (#6964)
#### What type of PR is this?

/area ui
/kind bug
/milestone 2.20.x

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

修复使用 Secret 输入框创建 Secret 时,stringData 的 key 可能为 undefined 的问题。

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

See https://github.com/halo-sigs/plugin-alist/issues/23#issuecomment-2443499980 for more

#### Special notes for your reviewer:

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

```release-note
修复使用 Secret 输入框创建 Secret 时,stringData 的 key 可能为 undefined 的问题。
```
2024-10-29 15:50:13 +00:00
Nancy d44fa5f6d8
feat: add support for creating a new group when uploading attachments (#6951)
#### What type of PR is this?

/kind improvement
/area ui
/milestone 2.20.x

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

支持在附件上传界面创建新分组。

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

Fixes #6942 

#### Special notes for your reviewer:

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

```release-note
支持在附件上传界面创建新分组。
```
2024-10-27 09:52:01 +00:00
LuijpCN 65808c8c6f
feat: add supports for displaying jpeg icon in attachments list (#6956)
#### What type of PR is this?

/kind improvement


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

在附件,列表模式中,为 jpeg 后缀文件添加图标。

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

Fixes #

#### Special notes for your reviewer:

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


```release-note
为 jpeg 后缀文件添加图标
```
2024-10-27 08:26:01 +00:00
guqing d2799c59be
fix: path match rules for grouped OpenAPI (#6898)
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.20.x

#### What this PR does / why we need it:
修正 OpenAPI 的分组匹配规则 之前有很多 PublicAPIs 没有出现在对应的组

#### Does this PR introduce a user-facing change?
```release-note
None
```
2024-10-22 07:52:28 +00:00
Ryan Wang ddaf7b0dce
chore: remove unused dependencies and configuration files (#6917)
#### What type of PR is this?

/area core
/kind cleanup

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

Remove unused dependencies and configuration files

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

```release-note
None
```
2024-10-22 06:54:29 +00:00
Ryan Wang 9ecc8f1d95
fix: post slug generation not following selected strategy (#6914)
#### What type of PR is this?

/area ui
/kind bug
/milestone 2.20.x

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

修复文章自动生成别名不按照别名生成策略生成的问题。

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

Fixes #6913 

#### Special notes for your reviewer:

需要测试:

1. 分类、标签创建和更新时的别名生成
2. 文章新建时,别名是否按照生成策略生成。

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

```release-note
修复文章自动生成别名不按照别名生成策略生成的问题。
```
2024-10-22 06:52:28 +00:00
Ryan Wang 500f702e02
fix: can not return to post list after publishing when re-logged in (#6902)
#### What type of PR is this?

/area ui
/kind bug
/milestone 2.20.x

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

修复通过登录跳转到文章编辑页面时,发布文章会跳转到个人中心的问题。

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

Fixes #6901 

#### Special notes for your reviewer:

测试步骤:

1. 新建文章,编写内容,但是不发布
2. 在新的浏览器选项卡中退出登录
3. 回到文章编辑页面,跳转到登录页面重新登录之后,发布文章
4. 观察是否会返回到 Console 的文章管理页面。

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

```release-note
修复通过登录跳转到文章编辑页面时,发布文章会跳转到个人中心的问题。
```
2024-10-19 15:58:44 +00:00
guqing 82498dcedf
refactor: auth provider sorting logic for better maintainability and clarity (#6846)
* refactor: auth provider sorting logic for better maintainability and clarity

* Refine UI

* chore: remove other auth type

* Remove other auth providers

---------

Co-authored-by: Ryan Wang <i@ryanc.cc>
2024-10-14 10:53:24 +08:00
Ryan Wang 149cb5d136
refactor: remove underline in h2 warning alert (#6849)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.20.x

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

before:

<img width="804" alt="image" src="https://github.com/user-attachments/assets/3d55d7d2-1dfa-4988-afbd-dd502e54fdb2">

after:

<img width="806" alt="image" src="https://github.com/user-attachments/assets/6194d995-b6f1-404a-820d-b667ccfab9f1">

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

```release-note
None
```
2024-10-13 14:49:14 +00:00
Ryan Wang f40770ad64
chore: add prettier-plugin-organize-imports plugin to organize imports (#6836)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.20.x

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

使用 https://github.com/simonhaenisch/prettier-plugin-organize-imports 优化 UI 项目的模块导入,之前我们是通过[配置 VSCode](9468e8741f/ui/.vscode/settings.json (L34-L36)) 来实现导入优化,但这种方式局限于 VSCode 编辑器,在其他编辑器无法得到统一的支持。

并且我们为 UI 添加了 git pre commit hook,在提交代码前会对已修改的文件执行 prettier,这样能够更好的保证一致性。

<img width="1475" alt="image" src="https://github.com/user-attachments/assets/755e2aba-be07-4fba-8007-6210ef44a8ef">

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

```release-note
None
```
2024-10-12 07:05:09 +00:00
Ryan Wang 53b3124288
feat: improve built-in auth providers' i18n in detail page (#6816)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.20.x

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

完善内置的认证提供商详情页面的 i18n,在 https://github.com/halo-dev/halo/pull/6814 中遗漏了详情页面。

<img width="653" alt="image" src="https://github.com/user-attachments/assets/7d4b4789-91d0-45e5-b5e7-98324ddc0899">

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

```release-note
None
```
2024-10-10 09:31:01 +00:00
Ryan Wang d0f3933095
feat: improve built-in auth providers' i18n (#6814)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.20.x

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

完善内置的认证提供商的 i18n。

<img width="859" alt="image" src="https://github.com/user-attachments/assets/a145fc98-05f0-4d62-805a-f3b4f4380a04">

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

```release-note
None
```
2024-10-10 08:25:01 +00:00
Ryan Wang 9cbd9b23d0
fix: username length validation in user creation form is not working (#6806)
#### What type of PR is this?

/area ui
/kind bug
/milestone 2.20.x

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

修复创建用户表单的用户名长度校验不生效的问题。

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

```release-note
修复创建用户表单的用户名长度校验不生效的问题。
```
2024-10-10 03:05:00 +00:00
Ryan Wang d7aba83485 Refine password validation 2024-10-10 10:43:20 +08:00
Ryan Wang 845893944c
Merge pull request #6739 from guqing/refactor/6722
refactor: system initialization process to adapt to the new login method
2024-10-09 14:58:14 +08:00
Ryan Wang 82fb91fc7b
refactor: improve password input toggle button state display (#6800)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.20.x

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

优化密码输入框的明文切换图标的状态显示。

before:

<img width="508" alt="image" src="https://github.com/user-attachments/assets/5ae12beb-ce23-40a2-ad08-8e47c2eb6813">

after:

<img width="519" alt="image" src="https://github.com/user-attachments/assets/712e1735-a7ad-40f4-8900-a8c92eda7e54">


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

```release-note
优化密码输入框的明文切换图标的状态显示。
```
2024-10-09 06:52:56 +00:00
Ryan Wang 5df755d4a8 Refine setup page 2024-10-09 12:20:54 +08:00
guqing 2585636c48
feat: allow users to manage their attachments in uc (#6731)
#### What type of PR is this?
/kind feature
/milestone 2.20.x
/area core

#### What this PR does / why we need it:
支持用户在个人中心管理自己的附件(需要具有对应权限)

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

#### Does this PR introduce a user-facing change?
```release-note
支持用户在个人中心管理自己的附件(需要具有对应权限)
```
2024-10-08 14:56:55 +00:00
Ryan Wang 672b2d86c7
fix: style issue of the fullscreen button in Code input (#6785)
#### What type of PR is this?

/area ui
/kind bug
/milestone 2.20.x

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

为 Code Input 设置默认高度,修复全屏按钮被遮挡的问题。

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

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

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

```release-note
为 Code Input 设置默认高度,修复全屏按钮被遮挡的问题。
```
2024-10-08 14:50:56 +00:00
Ryan Wang 1d31d32312
fix: resolve issue with code input can not displaying fullscreen in modal component (#6787)
#### What type of PR is this?

/area ui
/kind bug
/milestone 2.20.x

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

修复 Code 输入框在模态框(VModal)组件中无法正常全屏显示的问题。

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

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

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

```release-note
修复 Code 输入框在模态框(VModal)组件中无法正常全屏显示的问题。
```
2024-10-08 08:06:53 +00:00
Takagi f632322dba
pref: remove anonymous and ghost users from the userSelect (#6781)
#### What type of PR is this?

/kind improvement
/area ui
/milsetone 2.20.x

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

在 userSelect 查询用户列表时,移除匿名与已删除用户这两个保留用户。

#### How to test it?

在文章设置,用户列表中不存在匿名与已删除用户即可。

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

Fixes #6665 

#### Does this PR introduce a user-facing change?
```release-note
在 user select 中不再显示匿名与已删除用户。
```
2024-10-08 07:28:54 +00:00
John Niang dfbab283ef
Merge pull request #6729 from guqing/feature/5851
feat: support deleting posts in user center
2024-10-07 17:48:26 +08:00
Ryan Wang f78f7dad02
feat: add support to check access permissions for /console (#6775)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.20.x

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

支持检查是否有权限访问 /console。

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

Fixes #6773 

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

```release-note
None
```
2024-10-07 09:38:51 +00:00
guqing 04e195f034
fix: unique index conflict issue after backup restoration preventing startup (#6701)
#### What type of PR is this?
/kind bug
/area core
/milestone 2.20.x
/sig docs

#### What this PR does / why we need it:
修复恢复备份后可能会因为与之前的数据冲突导致无法启动的问题

如果恢复时发生不可预知的错误,需要重启之后重新初始化再进行恢复

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

#### Does this PR introduce a user-facing change?
```release-note
修复恢复备份后可能会因为与恢复之前存在的数据冲突导致无法启动的问题
```
2024-10-07 09:20:50 +00:00
Ryan Wang ea491f2386
chore: bump tiptap version to 2.8.x (#6777)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.20.x

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

Bump tiptap verison to [2.8.x](https://github.com/ueberdosis/tiptap/releases/tag/v2.8.0)

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

```release-note
升级编辑器依赖 Tiptap 的版本至 [2.8.x](https://github.com/ueberdosis/tiptap/releases/tag/v2.8.0)。
```
2024-10-07 04:28:51 +00:00
Ryan Wang d6489283b8
refactor: remove redirect-on-login setting option from role editing form (#6776)
#### What type of PR is this?

/area ui
/kind api-change
/milestone 2.20.x

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

See #6774 

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

Fixes #6774 

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

```release-note
移除角色的 **登录之后默认跳转位置** 设置选项。
```
2024-10-07 04:26:50 +00:00
Ryan Wang b0ad0406b9
fix: resolve issue with logout functionality in Console not working (#6766)
#### What type of PR is this?

/area ui
/kind bug
/milestone 2.20.x

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

修复 Console 中退出登录功能失效的问题。

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

Fixes #6756 

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

```release-note
None
```
2024-10-05 06:38:44 +00:00
Ryan Wang 8896e16615
feat: disallow deletion of system-protected attachment policies (#6735)
#### What type of PR is this?

/area core
/kind improvement
/milestone 2.20.x

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

为系统默认的存储策略添加保护措施,不允许删除。

<img width="893" alt="image" src="https://github.com/user-attachments/assets/990f834f-3d97-4ee8-9c24-01cc188b7be6">


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

```release-note
为系统默认的存储策略添加保护措施,不允许删除。
```
2024-10-04 14:10:44 +00:00
Ryan Wang 1852784a4c
chore: bump vue version to 3.5.11 (#6764)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.20.x

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

Bump vue version to [3.5.11](https://github.com/vuejs/core/blob/main/CHANGELOG.md#3511-2024-10-03)

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

```release-note
None
```
2024-10-04 12:22:43 +00:00
Ryan Wang c22fab2b34
fix: correct formatting issues in DefaultEditor component (#6752)
#### What type of PR is this?

/area ui
/kind cleanup

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

修复 DefaultEditor 组件中的格式问题。

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

```release-note
None
```
2024-10-04 06:20:42 +00:00
Yttrium 545a5a63cc
fix: prevent hidden English characters in post title input (#6749)
#### What type of PR is this?

/area ui
/kind improvement

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


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

#6748 

Fixes #6748 
#### Special notes for your reviewer:

使英文标题中字母不被截断 

![image](https://github.com/user-attachments/assets/10b677c1-a30a-4261-85fc-d2cf328b003e)

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

```release-note
修复文章编辑页面标题输入框中,英文字符可能会被隐藏的问题
```
2024-10-03 10:01:39 +00:00
Ryan Wang e11a494c96
feat: add login expiration notification (#6738)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.20.x

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

添加登录失效的引导。

<img width="1080" alt="image" src="https://github.com/user-attachments/assets/a84c0059-b0ef-4105-b8e9-ae6b3d39d89d">


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

```release-note
None 
```
2024-09-30 11:01:52 +00:00
Ryan Wang c80ceb460d
feat: add support for setting uniqueId in Dialog to prevent duplicate creation (#6737)
#### What type of PR is this?

/area ui
/kind feature
/milestone 2.20.x

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

Dialog API 支持传入 uniqueId,以限制同一时间仅打开一个。

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

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

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

```release-note
Dialog API 支持传入 uniqueId,以限制同一时间仅打开一个。
```
2024-09-30 09:29:52 +00:00
Ryan Wang 5b2bdfdf17 Refine i18n
Signed-off-by: Ryan Wang <i@ryanc.cc>
2024-09-29 17:57:49 +08:00