Syngnat
|
33ddee28ff
|
🐛 fix(sidebar): 修复表名快捷复制
- 为表节点菜单绑定 macOS Command+C 与 Windows/Linux Ctrl+C
- 使用捕获阶段处理快捷键并复制当前菜单表名
- 增加平台映射、非法组合和最新节点回归测试
Refs #736
|
2026-07-28 11:31:14 +08:00 |
|
Syngnat
|
c39fa3e8fe
|
🐛 fix(window): 遵循启动最大化偏好并恢复窗口尺寸
- 原生窗口统一以普通状态启动,避免关闭偏好后仍被强制最大化
- 关闭偏好时恢复持久化尺寸与位置,并阻止启动瞬态覆盖窗口数据
- Windows、Linux 与 macOS 开启偏好时统一使用窗口最大化
- 更新启动窗口文案与跨平台回归测试
Refs #703
|
2026-07-28 10:43:06 +08:00 |
|
Syngnat
|
3156d8df7f
|
🐛 fix(update): 恢复检查更新按钮加载动效
- 为设置中心加载图标恢复持续旋转
- 保留其他界面的减少动态效果策略
- 补充 reduced-motion 样式回归测试
|
2026-07-28 09:55:48 +08:00 |
|
Syngnat
|
861d4ace3f
|
🐛 fix(redis): 将 Key 搜索调整为前缀匹配
- 移除搜索 pattern 的前导通配符,避免中段 Key 误命中
- 将搜索模式和六语言文案由模糊统一为前缀
- 更新模式生成与命名空间筛选回归测试
|
2026-07-28 09:42:12 +08:00 |
|
Syngnat
|
a133bf4b6a
|
🔧 chore(issue): 完善需求模板并增加中英文支持
- 细化功能建议的场景、痛点、方案与验收信息
- 为问题反馈和功能建议增加独立英文模板
- 对齐中英字段结构并修正复选框必填配置
|
2026-07-28 08:55:04 +08:00 |
|
Syngnat
|
c192b6cc3a
|
🐛 fix(dameng): 修复索引元数据查询与错误提示
修正 ALL_IND_COLUMNS 与 ALL_INDEXES 的索引归属关联;保留复合索引顺序、唯一性与索引类型元数据;索引加载失败时显示错误,并补齐回归测试和多语言文案。
Fixes #735
|
2026-07-27 22:57:50 +08:00 |
|
Syngnat
|
8ed3fb9413
|
Merge remote-tracking branch 'origin/dev' into dev
|
2026-07-27 22:33:41 +08:00 |
|
Syngnat
|
3b70fcc9c8
|
fix: 为检查更新按钮添加加载状态 (#748)
- 在更新管理 hook 中暴露检查更新中的 loading 状态
- 检查更新请求结束后统一复位 loading 状态
- 关于页检查更新按钮接入 loading 动画
- 补充测试覆盖检查中的 pending 状态
Fixes #730
|
2026-07-27 22:24:13 +08:00 |
|
Syngnat
|
5db921c99e
|
🐛 fix(ai): 隐藏 Claude CLI 后台控制台窗口 (#749)
## 背景
Windows 下选择 Claude CLI 作为当前 AI Provider 后,执行 SQL 美化、AI 洞察等会调用 Claude CLI
的功能时,会弹出 Claude 控制台窗口并打断界面操作。
Closes #694
## 变更点
- 统一 Claude CLI 认证检查、非流式聊天与流式聊天的命令创建入口
- Windows 子进程启用 `HideWindow` 与 `CREATE_NO_WINDOW`,同时保留已有启动标志
- 通过 build tag 保持 macOS/Linux 原有进程行为
- 新增 Windows 回归测试,覆盖隐藏窗口参数和既有 flags 保留逻辑
## 影响范围
- 仅影响 Claude CLI Provider 在 Windows 上启动后台子进程的窗口行为
- 不修改 AI 配置、请求参数、认证流程或前端交互
- 不新增依赖,不涉及数据迁移;macOS/Linux 行为不变
## 验证
- `go test ./internal/ai/provider -run ClaudeCLI -count=1`
- `go test ./internal/ai/service -count=1`
- `go vet ./internal/ai/provider`
- Linux amd64 与 macOS amd64 包级交叉编译通过
|
2026-07-27 22:23:54 +08:00 |
|
Syngnat
|
92001b7fe9
|
✨ feat(sidebar): 支持侧边栏宽度随拖动实时调整 (#747)
## 背景
现有侧边栏拖拽过程中只移动一条 ghost 指示线,真正的侧边栏宽度要到 mouseup 或 blur
时才写入,因此左侧连接区域和右侧查询工作区不会随鼠标即时变化。
Closes #721
## 主要变更
- 使用 requestAnimationFrame 合并 mousemove,在每帧通过 Sider CSS
宽度变量实时更新侧边栏与工作区布局
- 保留拖动期间禁用 Ant Design width transition 的机制,避免额外动画造成滞后
- Store 宽度仍只在拖动结束时提交一次,避免每帧触发 React 重渲染和配置持久化
- 提交后保留实时宽度覆盖两帧,等待 React 绘制最终宽度后再清理,避免交接闪动
- 移除不再需要的侧边栏 ghost 指示线
- 补充实时预览、最终提交、blur、自愈和卸载清理测试
## 影响范围
- Legacy 与 V2 主侧边栏共用该实时拖拽行为
- 不改变侧边栏最小/最大宽度、折叠行为和持久化格式
- 不影响日志面板、AI 面板、Redis 面板等独立分隔条
## 验证
- 侧边栏及相关布局测试通过:10/10
- TypeScript 类型检查通过
- Vite 生产构建通过,仅有项目现有 chunk-size warning
|
2026-07-27 22:19:57 +08:00 |
|
Syngnat
|
85c3319680
|
fix(redis): 避免 Redis 搜索因稀疏 SCAN MATCH 返回空结果 (#746)
fixes #738
Redis SCAN MATCH 可能连续返回空批次,但后续 cursor 页仍然存在匹配 key。
此前搜索模式最多扫描 16 轮,可能导致首次点击搜索无数据,而点击“加载更多”后才出现结果。
移除搜索模式的固定轮数限制,改由已有的搜索时间上限和目标数量限制兜底。
新增回归测试,验证搜索可以继续越过 16 个空匹配页并返回后续结果。
|
2026-07-27 22:19:49 +08:00 |
|
Syngnat
|
89503cdb71
|
🐛 fix(query-editor): 修复 SQL 美化后横向视口偏移 (#745)
## 背景
关闭自动换行时,超长单行 SQL 会把 Monaco 编辑器横向滚动到右侧。执行 SQL
美化后,文本已经被拆成多行并回到左侧,但编辑器仍保留格式化前的横向滚动位置,导致当前视口停留在右侧空白区域,直到用户再次点击编辑器。
Closes #696
## 修复内容
- SQL 格式化通过 Monaco executeEdits 成功更新文本后,将横向滚动位置重置到起点
- 保留原有格式化内容、选区处理、纵向滚动和 undo/redo 行为
- 补充超长单行 SQL 在关闭自动换行时的横向滚动回归测试
## 影响范围
- 仅影响查询编辑器中成功执行 SQL 美化后的横向视口位置
- 不修改 SQL formatter 配置、格式化结果、快捷键注册或编辑器布局
- 开启自动换行时归零操作为幂等行为,不改变现有展示
## 验证
- QueryEditor 完整组件测试通过:280/280
- TypeScript 类型检查通过
- Vite 生产打包通过,仅有项目现有 chunk-size warning
|
2026-07-27 22:19:41 +08:00 |
|
AutumnNazi
|
cdc484fd96
|
🐛 fix(ai): 隐藏 Claude CLI 后台控制台窗口
- 统一认证检查、非流式与流式请求的 Claude CLI 命令创建
- Windows 启用 HideWindow 与 CREATE_NO_WINDOW,并保留已有启动标志
- 增加跨平台进程配置与 Windows 回归测试
|
2026-07-27 22:15:52 +08:00 |
|
Syngnat
|
0f6834283c
|
🐛 fix(ci): 提升驱动元数据探测稳定性
为元数据探测增加重试,并在 UPX 压缩产物持续启动失败时改用临时解压副本探测。
补充 exit 127 回归测试,并修复 Windows 宿主下跨平台清单测试夹具。
|
2026-07-27 22:11:18 +08:00 |
|
liuqiufeng
|
c4d172030e
|
fix: 为检查更新按钮添加加载状态
- 在更新管理 hook 中暴露检查更新中的 loading 状态
- 检查更新请求结束后统一复位 loading 状态
- 关于页检查更新按钮接入 loading 动画
- 补充测试覆盖检查中的 pending 状态
Fixes #730
|
2026-07-27 22:09:20 +08:00 |
|
AutumnNazi
|
cebf256a44
|
✨ feat(sidebar): 支持侧边栏宽度随拖动实时调整
- 使用 CSS 宽度变量与 RAF 实时更新侧边栏及工作区布局
- 仅在拖动结束后持久化最终宽度,避免每帧触发 Store 重渲染
- 移除侧边栏 ghost 指示线并补充交互清理回归测试
|
2026-07-27 21:40:21 +08:00 |
|
liuqiufeng
|
5255aa221d
|
Merge branch 'Syngnat:dev' into dev
|
2026-07-27 21:23:56 +08:00 |
|
liuqiufeng
|
203e8aac6c
|
fix(redis): 避免 Redis 搜索因稀疏 SCAN MATCH 返回空结果
|
2026-07-27 21:22:22 +08:00 |
|
Syngnat
|
32eed103a4
|
✨ feat(redis): 支持按命名空间快速模糊筛选
- 为 Redis Key 目录增加完整路径快捷筛选入口
- 自动回填搜索框并切换到模糊匹配模式
- 补齐多语言文案、无障碍标签和交互回归测试
Fixes #692
|
2026-07-27 21:21:21 +08:00 |
|
AutumnNazi
|
df87e50b33
|
🐛 fix(query-editor): 修复 SQL 美化后横向视口偏移
- SQL 格式化完成后重置 Monaco 横向滚动位置
- 保留格式化内容、选区、纵向滚动与撤销行为
- 补充超长单行 SQL 非自动换行场景回归测试
|
2026-07-27 21:10:04 +08:00 |
|
Syngnat
|
f14a2801db
|
🔧 chore(issue): 完善问题反馈模板信息采集
- 补充问题功能域、运行环境、数据源版本与连接方式
- 拆分最小复现、期望行为、实际行为、日志与截图
- 增加敏感信息脱敏确认和填写提示
|
2026-07-27 21:06:03 +08:00 |
|
Syngnat
|
43cd64e5b4
|
🐛 fix(redis): 修复监控图表提示数据错位
- 使用唯一时间戳作为监控图表横轴数据键
- 统一格式化刻度与提示时间并覆盖跨分钟回归
Fixes #689
|
2026-07-27 21:01:51 +08:00 |
|
Syngnat
|
70282286fc
|
Merge pull request #744 from AutumnNazi/fix/cloud-backup-provider-separation
|
2026-07-27 20:47:37 +08:00 |
|
Syngnat
|
770243e0da
|
🐛 fix(kingbase): 修复开表与 ER 图加载缓慢问题
- 解耦 Kingbase 首屏查询与编辑定位元数据加载
- 使用单次全库外键快照替代 ER 图逐表扫描
- 补充大规模表结构和异步元数据回归测试
Fixes #731
Fixes #732
|
2026-07-27 20:39:08 +08:00 |
|
AutumnNazi
|
ee53a56183
|
✨ feat(cloud-backup): 支持加密云端备份与选择性恢复
- 新增 WebDAV 与 S3 独立配置、凭据和远端状态管理
- 使用 Argon2id 与 AES-256-GCM 加密连接及配置备份
- 支持分类备份、自动同步、远端预览和一次性确认恢复
- 连接与已保存查询按 ID 合并恢复,并保留本地独有数据
- 补充前后端回归测试、六语言文案和恢复失败回滚
|
2026-07-27 20:20:00 +08:00 |
|
Syngnat
|
999218dccc
|
Merge pull request #743 from virgosgod-maker/fix/go-test-environment
|
2026-07-27 19:34:36 +08:00 |
|
Syngnat
|
d35c863eb1
|
Merge pull request #742 from virgosgod-maker/fix/issue-734
|
2026-07-27 19:34:09 +08:00 |
|
mango
|
0bf8d28e22
|
🐛 fix(ci): 固定后端测试资源与 Java 编码
|
2026-07-27 19:14:37 +08:00 |
|
mango
|
5a16c2b201
|
🐛 fix(test): 修复后端测试环境与跨平台隔离
|
2026-07-27 19:05:06 +08:00 |
|
mango
|
596be31601
|
🐛 fix: 修复 Issue #734 (Closes #734)
|
2026-07-27 17:44:27 +08:00 |
|
Syngnat
|
0e06c74b54
|
🎨 style(redis): 扁平化工作台并修正分隔与悬浮细节
- 将 V2 Redis 工作台改为连续网格布局并移除卡牌边框与阴影
- 让左右面板分隔线跨行对齐并同步网格宽度变量
- 扩大分隔线拖动热区且保持视觉线宽为 1px
- 优化长 Key 省略布局和悬浮查看触发区域
Refs #727
|
2026-07-27 17:35:00 +08:00 |
|
Syngnat
|
1bede52595
|
🐛 fix(redis): 完善集合值分页与只读查看
- 统一 Hash、List、Set、ZSet 与 Stream 的自适应分页表格
- 使用 Redis 返回长度展示真实总数并保持分页入口可见
- 为 List 元素增加只读查看模式且避免误写 Redis
- 短列表不再预留空滚动槽并补齐多语言文案
Refs #728
Refs #733
|
2026-07-27 17:35:00 +08:00 |
|
Syngnat
|
1a25348292
|
🐛 fix(redis): 修复过滤扫描空页导致 Key 搜索漏项
- 自动沿非零游标继续扫描空结果页
- 在游标结束或重复时安全终止续扫
- 增加过滤搜索跨空页命中 Key 的回归测试
|
2026-07-27 17:35:00 +08:00 |
|
Syngnat
|
fac84c29fb
|
✨ feat(connection-modal): 重构连接弹窗 Studio 交互 (#740)
2026年7月27日 17:05:54 提交
|
2026-07-27 17:34:34 +08:00 |
|
Syngnat
|
d3fc941e14
|
🐛 fix: 修复 Issue #726 (#739)
## 关联 Issue
Closes #726
## 变更内容
- 为 SQL 查询结果的列筛选器增加当前已加载结果的值统计、数量和搜索,并支持点击值填充筛选条件。
- 为 SQL 内部结果标签增加固定/取消固定能力;固定结果不会被重跑、执行失败或批量关闭覆盖,并支持独立窗口拖出与还原。
- 将普通数据列最小拖拽宽度统一为 80px,避免排序和筛选按钮被裁切。
- 将 SQL 结果标签圆角统一为 8px,并补齐六语言文案与回归测试。
影响范围仅限前端查询结果、DataGrid 列筛选/列宽、结果标签状态及共享 i18n 文案,不涉及数据库结构或后端数据处理。
## 测试结果
- `npm --prefix frontend test -- --exclude
src/components/QueryEditorToolbar.layout.test.tsx`:通过(排除 upstream/dev
已存在且与本 PR 无关的过期样式断言)。
- `npm --prefix frontend test -- --run
src/components/QueryEditor.results-and-drop.test.tsx`:105/105 通过。
- `npm --prefix frontend test -- --run
src/utils/dataGridClientFilter.test.ts
src/components/DataGridColumnTitle.test.tsx
src/components/useDataGridColumnResize.interaction.test.tsx`:20/20 通过。
- `npm --prefix frontend test -- --run src/i18n/catalogIntegrity.test.ts
src/i18n/keyResolution.test.ts`:3/3 通过。
- `go test ./shared/i18n`:通过。
- `npm --prefix frontend run build`:通过。
- `git diff --check`:通过。
说明:`upstream/dev` 当前的 `QueryEditorToolbar.layout.test.tsx` 仍断言事务提交按钮使用
`--gn-accent-soft`,但同一基线 CSS 已改为 `--gn-warn`。本 PR
未修改该事务按钮区域,因此未将无关基线修复混入本次变更。
## 风险说明
- 不涉及数据变更、数据库迁移或后端兼容性变化。
- 值统计范围是当前 SQL 结果页已加载的数据,界面文案已明确为“当前结果”。
- 固定状态为 QueryEditor 会话态,不跨工作区关闭或应用重启持久化。
- 回滚方式:回退提交 `83f54d62`。
|
2026-07-27 17:34:02 +08:00 |
|
lsx
|
e79da2e1e6
|
✨ feat(connection-modal): 重构连接弹窗 Studio 交互
|
2026-07-27 17:02:55 +08:00 |
|
mango
|
83f54d62af
|
🐛 fix: 修复 Issue #726 (Closes #726)
|
2026-07-27 16:54:46 +08:00 |
|
Syngnat
|
2d1034e77e
|
✨ feat(connection-modal): 按 Demo 重做新建连接弹窗信息架构与密排表单
- 选型页:侧栏搜索/最近/分类 + 类型卡片网格(Studio 布局)
- 配置页:顶栏 Tab(基本/网络与安全/外观/高级),去掉左侧分区导航
- 基本区:URI 置顶,名称/主机/认证密排,模式分段,生产保护扁平折叠
- 网络区:列表勾选 + 详情面板;高级区承接 connectionParams
- Step1/Step2 分宽(960/600),补充 dense 文案 i18n 与相关单测
- 附:标题栏主操作抽成 TitleBarPrimaryActions,并附 HTML Demo 参考
|
2026-07-27 12:20:12 +08:00 |
|
Syngnat
|
b80989cb7b
|
🐛 fix(nativewindow): 修复主进程退出后子窗口残留
- 启动独立窗口时传递并校验主进程 PID
- 按平台监控父进程并在其退出后关闭子窗口
- 补充 PID 解析、真实父进程退出和异常探测回归测试
|
2026-07-27 08:43:12 +08:00 |
|
Syngnat
|
d48c7d06d6
|
🐛 fix(updater): 修复状态竞态与后台进程回收
|
2026-07-27 00:14:03 +08:00 |
|
Syngnat
|
970d861c39
|
🐛 fix(driver-agent): 为 IPC 超时与关停增加可取消回收
|
2026-07-27 00:11:16 +08:00 |
|
Syngnat
|
76249c00b9
|
🐛 fix(ssh): 为共享端口转发增加引用计数与失败回滚
|
2026-07-27 00:07:42 +08:00 |
|
Syngnat
|
546b71945d
|
🐛 fix(tdengine): 编码 DSN 用户名与密码
|
2026-07-26 23:33:48 +08:00 |
|
Syngnat
|
f8b698d9ae
|
🐛 fix(ai): 修复流式终态与 Provider 并发选择
|
2026-07-26 23:29:01 +08:00 |
|
Syngnat
|
cc24d8213a
|
✨ feat(connection): 优化数据源选择并支持全局搜索
- 新增全部分类、跨分类名称与类型键搜索及空结果提示
- 将卡片网格重构为响应式平面目录并完善键盘可达性
- 补齐六语言文案及语言切换、状态重置与过滤行为回归
|
2026-07-26 23:13:51 +08:00 |
|
Syngnat
|
daacd95193
|
🎨 style(connection): 连接表单必填项置顶并去掉层层卡片
信息架构:原顺序是 身份信息 → 连接 URI → …(约 800 行后)→ 目标地址 → 服务与数据库 → 凭据,
最关键的 host/端口/账号/密码排在最后,而可选的连接名称、预设类型与很高的 URI 多行输入框
占据首屏。
- 把 identity 与 uri 两组从条件链之前搬到之后,使首屏依次为目标地址 → 生产连接保护 →
连接模式 → 认证凭据;连接名称与预设类型下沉,URI 作为「粘贴整串」的高级入口置于末尾
- URI 分组改为可折叠且默认折叠;编辑已含 uri 的连接时默认展开,避免看不到已录入的值
- configSectionCardStyle 由「16px 圆角 + 边框 + 内阴影 + 独立底色」改为「小标题 + 细上分割线」,
并用 CSS 让首组不显示分割线
- modalInnerSectionStyle 同样去除边框/底色/圆角(保留内边距,间距不变)。该样式同时用于
左侧导航容器、右侧内容面板与网络安全各分组,原先与内部分组叠成多层「卡片套卡片」
- 左侧导航项改为扁平列表:去掉 14px 圆角、边框、渐变底与投影,选中态只用左侧强调条 + 淡底
- 测试补 expandUriSection 辅助函数:两个断言 URI 文案/按钮的用例需先展开该分组。
已确认这两项失败确由本次行为变更引起(基线 21 项全通过)
|
2026-07-26 22:31:04 +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
|
e6d77cd7ab
|
🐛 fix(transaction): 修复前端刷新后托管事务变成孤儿并长期持有行锁
复现路径:SQL 编辑器执行 DELETE 进入托管事务后不点提交、直接刷新前端,再执行同一条 DELETE,
会卡满 innodb_lock_wait_timeout(默认 50 秒)并报 Error 1205 Lock wait timeout exceeded,
只能重启应用才能恢复。
根因:待提交事务的 ID 只存在于前端组件内存(useSqlEditorTransactionController 的
useState/useRef),持久化状态里只有 commitMode/autoCommitDelayMs 这类设置。前端一旦刷新,
残留在 a.sqlTransactions 中的条目就再也无法被提交或回滚,却仍开着并持有 pinned 连接与行锁。
原先只有显式提交/回滚与应用退出(rollbackPendingSQLTransactionsOnShutdown)两条清理路径,
刷新不经过其中任何一条。
- 新增 Wails OnDomReady 钩子(每次 WebView 导航完成即触发,刷新必然命中),
回滚所有已无法被引用的托管事务。首次加载时事务表为空,故无副作用;
本应用是 React SPA,正常使用中不会产生整页导航,不会误杀活跃事务
- rollbackPendingSQLTransactionsOnShutdown 抽出公共实现,审计来源区分
app_shutdown 与 frontend_reload,便于事后区分两类自动回滚
- 补 4 项回归测试:回滚并释放会话、空表无副作用、nil 容错、已完成事务不重复回滚。
已确认禁用钩子后首个用例必定失败(回滚 0 次)
顺带说明:界面把 Error 1205 归类为「查询超时或被取消」并建议「检查执行计划、调整超时时间」
是误导——1205 是行锁等待超时,成因是另一事务持锁。该错误语义映射未在本次修改范围内。
|
2026-07-26 22:11:10 +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 |
|