Syngnat
|
cef273f228
|
✨ feat(nacos): 新增 Nacos 数据源管理能力
- 支持 Nacos 连接测试及多命名空间资源树
- 提供配置搜索、发布、删除、历史回滚和变更监听
- 增加 Beta 发布、配置导入导出与批量操作
- 支持服务发现、实例管理、只读保护和多语言界面
- 补充 Wails 接口绑定及前后端回归测试
Refs #756
|
2026-07-28 15:58:22 +08:00 |
|
Syngnat
|
c39fa3e8fe
|
🐛 fix(window): 遵循启动最大化偏好并恢复窗口尺寸
- 原生窗口统一以普通状态启动,避免关闭偏好后仍被强制最大化
- 关闭偏好时恢复持久化尺寸与位置,并阻止启动瞬态覆盖窗口数据
- Windows、Linux 与 macOS 开启偏好时统一使用窗口最大化
- 更新启动窗口文案与跨平台回归测试
Refs #703
|
2026-07-28 10:43:06 +08:00 |
|
Syngnat
|
861d4ace3f
|
🐛 fix(redis): 将 Key 搜索调整为前缀匹配
- 移除搜索 pattern 的前导通配符,避免中段 Key 误命中
- 将搜索模式和六语言文案由模糊统一为前缀
- 更新模式生成与命名空间筛选回归测试
|
2026-07-28 09:42:12 +08:00 |
|
mango
|
83f54d62af
|
🐛 fix: 修复 Issue #726 (Closes #726)
|
2026-07-27 16:54:46 +08:00 |
|
Syngnat
|
c5e25d2ff5
|
🐛 fix(sql-error): 锁等待超时不再被误判为查询超时并给出无效建议
MySQL 报 Error 1205 (HY000): Lock wait timeout exceeded 时,界面归类为「查询超时或被取消」,
建议「检查 SQL 执行计划、过滤条件和索引,必要时缩小查询范围或调整超时时间」——
这套建议对行锁等待完全无效:成因是另一个事务持锁,调大超时只会让用户等更久。
根因:timeout_or_canceled 规则里有一条过宽的 /timeout/i,而 findSqlErrorSemantic 取首个
命中的规则,于是把锁等待超时也吞成了查询超时。
- 新增 lock_contention 规则并排在 timeout_or_canceled 之前,覆盖各方言的锁竞争与死锁:
MySQL 1205/1213、PostgreSQL deadlock detected 与 lock timeout、
SQL Server 1222/1205、Oracle ORA-00060/00054/30006、SQLite database is locked
- 文案改为指向真正的处置动作:先提交或回滚未完成的事务(含本应用 SQL 编辑器里自己未提交的
事务)再重试,并明确说明调大查询超时无效
- 6 个语言补齐 label/explanation/suggestion
- 补 4 项测试:1205 不再归类为超时、建议不再提"调整超时"、各方言锁竞争均被识别、
普通查询超时不被新规则误吞。已确认清空新规则的 patterns 后 3 项必定失败,
且失败信息正好复现原缺陷
|
2026-07-26 22:17:04 +08:00 |
|
Syngnat
|
08fff6aa36
|
🎨 style(theme): 提升主操作按钮醒目度、修复默认主题标签对比度并降级保存按钮
- 新增 --gn-accent-strong 系列(提饱和 1.55×)供主按钮填充:内置主题的强调色刻意低饱和
(Comfort Dark 仅 20%、Deep Ocean 28%),淡到接近灰蓝,填在按钮上读起来"没有颜色"。
只改按钮填充,侧边栏高亮与文字仍用原 accent,保持主题整体淡雅。
实测深色主题饱和度提升到 31%–72%,对工具栏对比度仍 ≥6.0、标签 ≥6.1
- 提饱和只对深色主题生效:浅色主题的强调色本身已约 46% 饱和,提了反而把白色标签从 4.5+
压到 4.14 跌破 AA(该情况由新增测试抓出)
- 默认 v2 主题补上此前从未定义的 --gn-on-accent:所有 var(--gn-on-accent, #fff) 都在回退
白字,深色下压 #22c55e 仅 2.28、浅色下压 #16a34a 仅 3.30,均不满足 WCAG AA。
改为 #0a2417 / #052e16,得 7.21 / 4.52
- 「保存」按钮降为描边次级样式:它与「执行」原本都是实心按钮,而两者填充色(accent 与 info)
在内置主题下区分度仅 1.05–1.25,相邻两个同色方块分不出谁是谁。
由于 Midnight Navy / Nord Slate 的 accent 本身即蓝青系,靠拉开色相无法解决,
改用层级区分:工具栏里只有「执行」是实心主按钮,主操作因此真正突出
- 补 2 项不变式测试:accent-strong 饱和度提升且标签 ≥4.5、其三态同样逐级加深
说明:原计划的「拉开执行与保存色相」经测量不可行(accent 自身即蓝青系,warn 已被手动事务
占用),故改为层级区分,与之前沟通的方案不同。
|
2026-07-26 21:59:17 +08:00 |
|
Syngnat
|
57d6e50884
|
🎨 style(transaction): 手动事务提交按钮改用 warn 独立配色并修复待提交条数看不见
- 手动事务的「提交」按钮不再跟随主题强调色:它是需要用户显式决断的状态,与普通主操作同色时
无法区分。改用 warn 实心填充,与已是 danger 的「回滚」形成语义配对。
原先是 accent-soft 底 + accent-2 文字,同色系淡色叠淡色,文字本身对比就很低
- 修复待提交条数徽标的数字看不见:底色原为硬编码 rgba(22,163,74,.18)、文字为 --gn-accent-2,
而按钮底是 --gn-accent —— 三者几乎同色,实测对比度仅 1.10–1.17,
静止状态数字完全不可见,只有 hover 把按钮压暗后才显现(DataGrid 与 SQL 编辑器两处同病)
- 新增 --gn-on-warn / --gn-warn-hover / --gn-warn-active / --gn-warn-badge-bg /
--gn-accent-badge-bg。前景色按亮度择优,因为 warn 跨度很大(#9f5f1d ~ #ebcb8b);
徽标底色的叠加方向也随前景色反向偏移,写死半透明白会让浅色主题的白字只剩 2.65
- 补 3 项不变式测试:warn 标签与徽标数字对比度均 ≥4.5、warn 三态逐级加深且互不相同。
该用例已实测抓住浅色主题 warm-paper 的徽标对比不足
实测:徽标数字对比度由 1.10–1.17 提升到 ≥4.5;warn 标签 7.59–11.80。
|
2026-07-26 21:51:08 +08:00 |
|
Syngnat
|
75660ef3db
|
🎨 style(theme): 修复主要操作按钮交互态在各主题下几乎不可辨
根因在 token 层:--gn-ant-primary-hover 与 --gn-ant-primary-active 都直接取 palette.accent2,
两者取值完全相同,hover 与按下态在视觉上无任何区别;而 accent2 又是 accent 的近邻色
(内置主题的强调色刻意低饱和),实测 base→hover 对比度仅 1.05–1.29,
其中 Deep Ocean 的 accent2 甚至比 accent 更亮(调色板方向反了)。
- 新增 mixHex 与 --gn-accent-hover / --gn-accent-active,按 82% / 60% 派生逐级加深的三态,
并让 --gn-ant-primary-hover/active 指向它。该链路经 customTheme.ts:read →
App.tsx colorPrimaryHover/Active 传给 antd,全站主要操作按钮一并受益
- 混合锚点按模式区分:深色主题向面板底色混合;浅色主题的面板比强调色更亮,
向面板混合会把按钮冲淡成禁用观感,改为向纯黑混合(用 fg1 只能到 1.19–1.22 不达阈值)
- 提交事务按钮(DataGrid 与 SQL 编辑器两处)拆分 :hover 与 :active,
此前两者共用同一条规则、点击无反馈;回退值保留 accent-2 兼容旧自定义主题
- 补 4 项不变式测试:三态互不相同、两段对比度均达 1.25、亮度单调递减不反向。
该用例已实测抓住浅色主题的方向反转与阈值不足
实测:深色主题 base→hover 1.31–1.39、hover→active 1.43–1.55;浅色 1.35 / 1.45。
未处理:默认 v2 深色主题未定义 --gn-on-accent 而回退 #fff,白字压在 #22c55e 上仅 2.28、
禁用态文字 2.05,均不满足 WCAG AA;按本次确认范围未纳入。
|
2026-07-26 21:39:26 +08:00 |
|
Syngnat
|
8e3a183abb
|
♻️ refactor(frontend-test): 剥离混合型测试中的寄生源码文本断言
- 基于 TypeScript AST 精确识别 readFileSync 派生变量及其断言,仅删除不改写保留代码
- 断言全为源码文本的 it() 块整块移除,混合块中只剔除单条源码断言
- 清理随之失效的变量声明、空 it()/describe() 与无用 import,6 个文件因无用例残留而删除
- 累计移除 1283 处代码区间、8270 行,守卫基线由 130 条收敛至 12 条
- 全量测试失败集合无新增,TabManager 悬浮信息用例的 CRLF 误报一并消除
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-26 20:52:35 +08:00 |
|
mango
|
54f973479c
|
🐛 fix(connection): 修复 RPC 保护配置构建类型
|
2026-07-26 00:24:42 +08:00 |
|
mango
|
9ad5cb4888
|
🐛 fix(connection): 保留旧连接保护配置兼容性
|
2026-07-25 23:24:45 +08:00 |
|
Syngnat
|
fdfdebf24e
|
✨ feat(sidebar): 表新建查询展开全部字段而非 select *
- 新建查询时通过 DBGetColumns 拉取字段并生成 SELECT 列表
- 元数据不可用时回退 SELECT *,消息队列仍保持 LIMIT 预览
- 覆盖 V2/旧版右键菜单与表总览入口,补充模板单测
Refs #710
|
2026-07-25 09:25:04 +08:00 |
|
AutumnNazi
|
66531b6abd
|
✨ feat(connection): 支持分组快捷新建与环境预设
- 在新旧侧栏分组右键菜单中增加新建连接,并在保存后自动归入目标分组
- 为连接与分组增加生产、测试、开发和本地环境预设及颜色标识
- 持久化连接环境元数据,兼容旧数据与连接包导入导出
- 补充多语言文案及前后端回归测试
|
2026-07-24 18:31:40 +08:00 |
|
Syngnat
|
b7636f5fdd
|
Merge remote-tracking branch 'origin/dev' into dev
|
2026-07-24 18:13:22 +08:00 |
|
Syngnat
|
10db415d7a
|
🐛 fix(datagrid): 修复筛选字段选择失效
- 将 Select 下拉选项识别为交互目标
- 避免页内查找焦点逻辑中断字段选择
- 补充下拉选项交互目标回归测试
|
2026-07-24 18:12:47 +08:00 |
|
mango
|
2a7fcb4781
|
🐛 fix(table-designer): fix table sorting and column options (#705)
|
2026-07-24 17:55:22 +08:00 |
|
Syngnat
|
c76daa0727
|
🐛 fix(update): 修复更新完成提示被弹窗遮挡
- 新增静态反馈专用层级,确保消息提示高于嵌套弹窗和退出确认框
- 调整 Ant Design 静态反馈的全局层级配置,保持普通弹出层顺序不变
- 补充反馈层级顺序与全局配置回归测试
|
2026-07-24 14:15:29 +08:00 |
|
Syngnat
|
e8eb6366c3
|
✨ feat(tabs): 默认启用双行标签展示
- 主行默认仅展示对象名,副行依次展示对象类型、连接名和数据库
- 调整设置项顺序并默认关闭 Schema 与 Host/IP
- 升级持久化版本并仅迁移未自定义的旧默认配置
- 补充默认快照、标签文案和配置迁移回归测试
|
2026-07-24 14:00:49 +08:00 |
|
Syngnat
|
d618ef381e
|
✨ feat(data-transfer): 完善数据库 SQL 备份与恢复
- 数据导入工作台新增数据库模式,支持 SQL 文件选择、目标库、进度、取消与重试
- 新增受连接保护约束的 ImportDatabaseSQL 接口并复用流式执行链路
- SQL 导出支持切换数据库上下文,兼顾原库备份和跨库导入
- 调整侧栏与表概览入口,备份先进入工作台确认配置再执行
- 同步 Wails 绑定、Web 运行时限制、六语文案和回归测试
|
2026-07-23 16:40:44 +08:00 |
|
Syngnat
|
1f17b5cfad
|
🎨 style(settings/ai): 统一设置中心与 AI 配置交互
- 移除设置导航、详情页和 AI 配置列表的冗余分隔线
- 梳理外观字号项顺序并精简日志目录重复标题
- 恢复安全与上下文选项语义色,统一供应商操作按钮
- 强化 MCP 页签、客户端选中态和折叠交互
- 拆分推荐流程与内置工具视图并补齐六语回归测试
|
2026-07-23 16:36:21 +08:00 |
|
Syngnat
|
1dcc866846
|
🐛 fix(update): 修复重启更新时退出确认弹窗被遮挡
- 新增应用退出确认专用层级并动态高于当前设置子弹窗
- 未保存 SQL 与关闭其他实例确认框统一使用前景层级
- 补充更新退出链路与弹层层级回归测试
|
2026-07-23 14:44:09 +08:00 |
|
Syngnat
|
5a5fbf04fe
|
✨ feat(settings): 拆分 SQL 编辑器与查询结果字号
- 新增 SQL 编辑器独立字号与跟随全局配置
- 将查询编辑器和 DDL 预览接入 SQL 专用排版
- 迁移旧版耦合字号设置并保留原有视觉大小
- 更新六语种文案并补充持久化与组件测试
|
2026-07-23 11:24:44 +08:00 |
|
Syngnat
|
9b47316211
|
🐛 fix(postgres): 修复序列展示与默认值插入 (#681)
- 接入 PostgreSQL 兼容数据库序列元数据并展示序列分组
- 保留字段默认值与生成列信息,插入空值时交由数据库生成
- 兼容 identity 与 pg_catalog.nextval,并支持 DEFAULT VALUES 插入
- 补充序列加载、生成列提交和 PostgreSQL 元数据回归测试
|
2026-07-23 09:11:41 +08:00 |
|
Syngnat
|
818b75b691
|
🐛 fix(overlay): 修复浮窗与弹层层级遮挡
- 统一分离窗口、弹出层和弹窗的层级常量
- 将浮动窗口通过 Portal 挂载到 body 并隔离 AntD 弹层
- 补充右键菜单和分离窗口层级回归测试
|
2026-07-23 08:45:48 +08:00 |
|
Syngnat
|
836b8258f7
|
♻️ refactor(settings): 重构设置中心布局与交互规范
- 扁平化设置中心与 AI/MCP 信息层级,移除冗余卡片容器
- 统一字体、按钮、控件密度和嵌入式设置样式
- 完善键盘导航、焦点恢复、状态保留和多语言回归测试
|
2026-07-22 23:32:39 +08:00 |
|
Syngnat
|
c19fcdd183
|
🐛 fix(native-window): 修复 AI 子窗重开、设置遮挡与关闭恢复
- 单次快捷键可重新唤起停驻 AI 子窗,并过滤重复键盘事件
- 打开 AI 设置前原子隐藏子窗,避免设置窗口被遮挡
- 用可见性版本阻止延迟隐藏或设置事件覆盖新焦点
- 拒绝复用终态子进程,并恢复失败的附加与关闭操作
- 串行展示、隐藏和终态退出,消除关闭门闩并发竞态
- 增加原生窗口生命周期、结果回滚和焦点恢复回归测试
|
2026-07-22 18:45:55 +08:00 |
|
Syngnat
|
75749d2465
|
✨ feat(table-overview): 新增紧凑表格视图并持久化视图偏好
|
2026-07-22 17:56:33 +08:00 |
|
Syngnat
|
c067ad8a62
|
🐛 fix(shortcuts): 迁移侧边栏搜索默认快捷键
- 将旧版 Meta/Ctrl+F 一次性迁移为各平台 Meta/Ctrl+K
- 升级持久化版本并避免启动刷新重新读回旧配置
- 保留禁用状态、自定义组合及版本 18 后的 F 配置
- 补充 macOS、Windows/Linux 与旧结构回归测试
|
2026-07-22 16:55:44 +08:00 |
|
Syngnat
|
93bb164004
|
🐛 fix(modal): 统一浮层层级并修复设置窗口遮挡
- 统一主窗口、原生分离窗口和静态 API 的 Ant Design 浮层基线
- 提升更新、导出、安全更新与连接代理子弹窗层级
- 将业务 Modal 接入统一封装并修复命令面板 stacking context
- 增加浮层策略、设置流程和 Modal 导入守卫测试
|
2026-07-22 15:37:20 +08:00 |
|
Syngnat
|
23d95f2771
|
⚡️ perf(store): 限制表访问频次状态增长
|
2026-07-22 09:35:41 +08:00 |
|
Syngnat
|
c6ca44aa44
|
⚡️ perf(workbench): 隔离 SQL 输入引发的全局重绘
|
2026-07-22 07:28:02 +08:00 |
|
Syngnat
|
2015676ece
|
⚡️ perf(er-diagram): 限制元数据缓存长期增长
|
2026-07-22 01:30:27 +08:00 |
|
Syngnat
|
cd55228e1e
|
⚡️ perf(store): 合并持久化写入并复用状态投影
|
2026-07-22 01:14:26 +08:00 |
|
Syngnat
|
074f695e15
|
⚡️ perf(window): 降低空闲状态原生轮询频率
|
2026-07-22 01:10:56 +08:00 |
|
Syngnat
|
76e74a02fd
|
⚡️ perf(data-grid): 合并当前页查找扫描
将匹配坐标与命中统计合并为单次单元格遍历,避免重复格式化整页数据。
使用延迟值调度大结果集查找,同时保留清空输入时立即移除高亮的行为。
|
2026-07-22 00:20:17 +08:00 |
|
Syngnat
|
c0b1b0873e
|
⚡️ perf(query-draft): 将大草稿持久化移出输入热路径
将防抖后的序列化与 localStorage 写入转移到空闲任务,并合并重复调度。
保留 pagehide、beforeunload 与显式同步刷新,补充大草稿和调度边界回归测试。
|
2026-07-22 00:13:00 +08:00 |
|
Syngnat
|
fda0733f11
|
⚡️ perf(native-window): 优化 AI 独立窗口启动与交互
- 关闭时隐藏保活,重开复用现有进程并通过可见性版本消除竞态
- 拆分 AI 与工作台资源,使用启动状态白名单减少序列化开销
- 修复设置中心层级、Windows 前台切换及独立窗口关闭交互
- 补齐状态同步、断线重放与窗口生命周期回归测试
|
2026-07-21 23:40:17 +08:00 |
|
Syngnat
|
5c3535c85d
|
✨ feat(native-window): 支持 macOS Dock 管理独立窗口
- 在主程序 Dock 菜单动态列出并聚焦已就绪的独立窗口
- 在 Wails 启动前固定子进程为 Accessory,消除临时 Dock 图标闪现
- 按多显示器可见区域修正越界窗口并回写实际坐标
- 将自定义 AI 面板快捷键同步到独立窗口并转交主窗口处理
- 补齐 Go、Objective-C、前端及 Wails 绑定回归测试
|
2026-07-21 18:52:54 +08:00 |
|
Syngnat
|
d7b60891c5
|
✨ feat(mcp): 支持 OpenCode 客户端接入
- 识别用户目录与 XDG 路径下的 OpenCode JSON/JSONC 配置
- 保留注释、自定义字段与符号链接并原子写入 MCP 配置
- 增加 CLI 检测、安装状态、自动接入及旧路径修复
- 在客户端选择、浏览器模拟、AI 检查提示和六语言文案中接入 OpenCode
- 引入 hujson、补充许可声明及前后端回归测试
|
2026-07-21 18:52:19 +08:00 |
|
Syngnat
|
446707698f
|
✨ feat(table-copy): 新增整表复制与自动副本命名
- 在表概览及新旧侧栏右键菜单接入复制整表入口与确认、进度和刷新反馈
- 按 source_copyN 原子创建目标表并复制列、索引、默认值及全部数据
- 处理 PostgreSQL 生成列、identity/serial 序列校准与失败清理
- 限定安全数据源与连接保护策略,阻止分区表、RLS 及引用型存储引擎
- 加固 MySQL/PostgreSQL 元数据标识符处理并补齐六语种文案
- 增加后端、能力矩阵、菜单接线和国际化回归测试
|
2026-07-21 13:27:24 +08:00 |
|
Syngnat
|
b2819db495
|
✨ feat(shortcuts): 支持快捷键关闭当前标签页
- 新增可自定义的关闭当前标签页动作,macOS 默认 ⌘W,Windows/Linux 默认 Ctrl+W
- 根据最近交互区域路由工作区或结果标签关闭,并隔离分离窗口
- 关闭日志标签时隐藏整个结果区,避免连续按键误关工作区
- 沿用未保存 SQL 与导入任务等工作区关闭保护
- 隔离 IME、快捷键录制、弹窗、抽屉与上下文菜单
- 补充多语言文案及快捷键路由回归测试
|
2026-07-20 20:22:35 +08:00 |
|
Syngnat
|
049ec7bdf1
|
✨ feat(data-workbench): 直达批量操作并新增数据导入工作台
- 批量表和批量库入口无需预选目标即可进入统一工作台
- 将对象选择、导出、清空和删除操作迁入可持续查看的任务界面
- 新增侧栏数据导入入口并复用预览、字段映射和进度流程
- 保护运行中的导入标签并同步复用工作台的连接上下文
- 补齐多语言文案及批量操作、导入链路回归测试
|
2026-07-20 15:34:20 +08:00 |
|
Syngnat
|
21e0921b3b
|
✨ feat(data-sync/export): 支持同步与备份后台工作台
- 将数据同步及各级 SQL 备份统一迁入稳定工作区
- 全局保留任务状态、进度和结构化日志,关闭后可重新接回
- 支持从当前任务及历史记录打开 SQL 恢复工作台
- 锁定运行中配置并禁止后台任务分离到独立窗口
|
2026-07-20 13:43:58 +08:00 |
|
Syngnat
|
02eec5aee3
|
🐛 fix(query-editor): 修复 SQL 执行与结果标签交互
- 空白光标回退执行编辑器内全部有效 SQL
- 修复活动结果标签必须切换日志后才能关闭的问题
- 阻止关闭按钮和菜单指针误触结果标签分离拖拽
- 补充空白行、尾部空白和结果标签关闭回归
|
2026-07-20 13:40:03 +08:00 |
|
Syngnat
|
94ad5ae2f6
|
✨ feat(connection): 支持自定义 SQL 探活
- 新增连接级自定义探活 SQL 配置与多语言表单校验
- 限制单条 SELECT/WITH 并使用可取消的超时查询
- 隔离陈旧探活策略,避免配置错误驱逐健康连接
Fixes #611
|
2026-07-19 12:29:21 +08:00 |
|
Syngnat
|
82c62fd55c
|
✨ feat(query-result): 新增结果页快速查看表 DDL
- 识别单表查询并在 Legacy 与 V2 结果视图提供 DDL 入口
- 按数据库方言独立解析并传递 DDL 目标至浮动与独立窗口
- 避免多表和歧义查询误展示入口并补充回归测试
Fixes #537
|
2026-07-19 10:55:13 +08:00 |
|
AutumnNazi
|
6e58240c38
|
🐛 fix(table-metadata): 修复统计字段被误识别为表名
- 新增共享表元数据解析器,优先读取明确的表名字段
- 统一 AI、查询补全、侧边栏、导出和表概览等调用路径
- 补充字段顺序、兼容格式及去重行为的回归测试
|
2026-07-18 21:03:25 +08:00 |
|
Syngnat
|
fd093b3325
|
✨ feat(clickhouse): 支持自定义连接兼容 JDBC DSN
- 解析 ClickHouse 与 JDBC 风格 DSN 并映射协议、TLS、认证及数据库参数
- 统一连接缓存、DDL、数据同步与导出 driver-agent 生命周期
- 保持 DSN 加密存储并补充前后端回归测试和多语言提示
Fixes #383
|
2026-07-18 17:48:19 +08:00 |
|
Syngnat
|
aeecffb517
|
✨ feat(table-designer): 补齐 MySQL 空间字段类型
- 补充 Geometry、Point、MultiPoint 等八种 MySQL 空间类型候选
- 保留自定义字段类型表达式在建表和改表 SQL 中的原样输出
- 增加空间类型候选及 POINT SRID 属性回归测试
Fixes #341
|
2026-07-18 16:15:33 +08:00 |
|
Syngnat
|
6cd2835066
|
✨ feat(ai): 支持 Codex 与 Claude 订阅登录
- 新增基于本机官方 CLI 登录状态的 Codex 与 Claude 订阅 Provider
- 隔离 API Key、工具与项目配置,完善登录校验和错误处理
- 补充设置界面、国际化及前后端回归测试
Fixes #651
|
2026-07-18 11:57:25 +08:00 |
|