Commit Graph

1189 Commits

Author SHA1 Message Date
Syngnat
cef273f228 feat(nacos): 新增 Nacos 数据源管理能力
- 支持 Nacos 连接测试及多命名空间资源树
- 提供配置搜索、发布、删除、历史回滚和变更监听
- 增加 Beta 发布、配置导入导出与批量操作
- 支持服务发现、实例管理、只读保护和多语言界面
- 补充 Wails 接口绑定及前后端回归测试

Refs #756
2026-07-28 15:58:22 +08:00
Syngnat
0674216d53 🐛 fix(sidebar): 将 PostgreSQL 分区表归入主表
- 读取 PostgreSQL 分区父子关系并隐藏分区主表行数
- 在主表下增加 Partitions 分组并保留分区表操作能力
- 兼容多级分区、跨 schema 显隐及异常元数据
- 补充分区树接入测试与多语言文案

Refs #750
2026-07-28 13:58:56 +08:00
Syngnat
19bb9d633b 🐛 fix(data-grid): 刷新总数后跳转尾页
- 为表数据视图增加独立尾页刷新回调
- 按当前筛选条件执行精确 COUNT 后计算最新页码与偏移
- 丢弃过期计数请求并在计数失败时停止旧尾页查询
- 覆盖数据增减、并发翻页和兼容回退测试

Refs #706
2026-07-28 11:31:37 +08:00
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
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
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
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
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
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
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
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
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
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
5e1afad49f 🐛 fix(frontend-test): 移除钉死主题变量的 DataGrid 提交按钮样式断言
- 该断言要求 hover 态 CSS 精确包含 background: var(--gn-accent-2) !important
- 主题修复将 hover 与 active 拆分为 --gn-accent-hover 与 --gn-accent-active 派生色后,断言随即失效
- 断言仅比对样式表文本、不验证渲染结果,同 it 用例中的 16 项渲染断言保持不变
2026-07-26 21:50:10 +08:00
Syngnat
de43b1fb4d 🐛 fix(tabs): 恢复活动标签顶部强调条 (#725)
- 合并 PR #725,为 V2 工作区活动标签补回顶部强调条
- 冲突文件 TabManager.adaptive-width.test.ts 取本地版本:PR 更新的是读取 v2-theme.css 文本做正则匹配的断言,该类断言已在测试套件治理中整体移除,保留会与测试策略守卫冲突
- 强调条样式变更由 v2-theme.css 承载,测试文件仅保留自适应宽度的行为用例
2026-07-26 21:41:48 +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
b8af7bede8 🐛 fix(frontend-test): 移除因标记失效而长期失败的 DataGrid 静态断言
- 删除 localizes editor and JSON feedback through DataGrid i18n keys 用例
- 该用例以含换行符的代码片段为起止标记切取源码,Windows 检出为 CRLF 时 indexOf 返回 -1,切出空串后报出无法定位的断言错误
- 用例全部断言均作用于源码切片,不执行被测代码,删除后该文件 33 项测试全部通过
2026-07-26 21:37:56 +08:00
Syngnat
57a0bb4f69 🐛 fix(about): 修正更新通道选中态被 v2 通用 Segmented 样式覆盖
- 上一提交的选择器特异性只有 (0,3,1),与 v2-theme.css:601 的
  `body[data-ui-version="v2"] .ant-segmented .ant-segmented-item-selected` 同分,
  而 v2-theme.css 在 App.css 之后导入,同分时后加载者胜出,
  选中态仍被 --gn-bg-panel 覆盖回灰底,主题色胶囊实际未生效
- 选择器补上 .ant-segmented(.gonavi-about-update-channel.ant-segmented)把特异性提到 (0,4,1)
- 选中项的 color 一并显式设为白色,避免 v2 通用规则的 --gn-fg-1 在强调色底上对比不足
2026-07-26 21:21:51 +08:00
Syngnat
bb3a6ee577 🎨 style(about): 修正开关与更新通道选择器的主题色一致性
- 修复 v2 深色下「自动检查更新」开关显示为琥珀色:旧版 UI 的
  body[data-theme='dark'] .ant-switch.ant-switch-checked 用了两个类,特异性高于
  v2-theme.css 的 .ant-switch-checked,即便 v2 样式后加载也会被压过。
  给旧版规则加 :not([data-ui-version='v2']) 限定,让 v2 的 --gn-accent 生效
- 同一根因的 .ant-radio:hover 琥珀描边一并限定(v2 未覆盖该选择器,同样会泄漏)
- 更新通道选择器改为主题色实心胶囊:原深色下选中态 rgba(30,41,59,.98) 与容器底
  rgba(15,23,42,.55) 对比极低,选中状态几乎不可辨且未体现主题色。
  选中项与切换滑块统一用 var(--gn-accent) + 白字,未选项透明底、hover 微亮,
  并补充跟随主题色的键盘焦点环
- --gn-accent 仅在 v2 下定义,故新规则限定 v2 作用域,旧版 UI 保留原中性配色

未加测试:两处均为纯 CSS 视觉改动,jsdom 不加载外部样式表、无法断言计算样式;
且项目已立规约禁止新增读取源码文本的断言型测试(src/testPolicy.test.ts)。
已通过 tsc --noEmit 与 useAppUpdateManager/customThemeStore/v2ThemeModalConfirm/testPolicy 共 34 项测试。
2026-07-26 21:18:27 +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
Syngnat
9074cd9707 🔥 remove(frontend-test): 删除源码文本断言型测试并补齐全局 i18n 校验
- 删除 105 个纯静态测试文件(6624 行):仅把源码当字符串断言、不执行被测代码
- 新增 testPolicy 守卫:禁止新增读源码文本的测试,131 个存量文件记入只减不增的基线
- 新增 i18n keyResolution:校验源码 t() 引用的 key 均可经完整解析链得到译文
- 新增 i18n catalogIntegrity:校验占位符跨语言一致、无空译文
- 补齐 6 个语言包缺失的 common.retry,修复审计面板重试按钮显示字面量 key

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-26 20:39:11 +08:00
AutumnNazi
b2f2dff6fd 🐛 fix(tabs): 恢复活动标签顶部强调条
- 恢复 V2 工作区活动标签顶部绿色强调条
- 保留标签四角圆角与顶部伪元素屏蔽逻辑
- 更新活动标签视觉回归断言
2026-07-26 20:35:29 +08:00
Syngnat
fb0b2fe7c7 修复前端主线测试基线与连接保护兼容 (#724)
## 变更内容

- 保留旧连接配置 `readOnly: true` 的四项保护兼容语义,并确保 Redis 等不支持保护模式的数据源忽略旧标记
- 修复 QueryEditor 内联、原生分离和浮动结果窗口传递的实际表身份,避免元数据表名覆盖 schema-qualified 结果表名
- 修复 QueryEditor renderer/result-session 测试隔离,同步托管事务、all-columns 定位和 SQL
Logs 等当前行为
- 更新 Sidebar/DataGrid 拆分后的 i18n source guards,以及
DataGrid、TabManager、ConnectionModal、JVM 等现有组件契约

## 验证

- `npm --prefix frontend test`:509 个文件、3946 项测试全部通过
- `npm --prefix frontend run build`:通过(仅保留既有 chunk size warning)
- `git diff --check upstream/dev...HEAD`:通过

## 风险

- 生产改动仅涉及连接 RPC 保护配置归一化和查询结果 DataGrid 的表身份传递
- 其余改动均为测试隔离、源码 owner 迁移和当前行为契约同步
- 未包含 Issue #719 的 `v2-theme.css` 或 `DataGrid.layout.test.tsx` 变更

## 回滚

可按提交逆序回滚;生产行为提交与测试提交已分离,连接保护与查询结果身份修复可独立撤销。
2026-07-26 18:52:31 +08:00
Syngnat
9ff05df9ae 🐛 fix: 修复 Issue #719 (#723)
## 关联 Issue

Closes #719

## 变更内容

V2 数据表工具栏的“提交事务”按钮被专属样式覆盖为浅色背景,即使存在待提交变更也不够醒目,且启用态与禁用态区分不足。

- 将可提交状态改为实心主题强调色,并补充 hover、focus、active 交互反馈
- 将无待提交变更时的禁用状态恢复为中性灰色
- 补充启用、交互和禁用状态的 CSS 回归断言
- 修改仅影响 V2 DataGrid 的提交事务按钮,不涉及 SQL 编辑器事务按钮或提交逻辑

## 测试结果

- `npm --prefix frontend test -- --run
src/components/DataGrid.layout.test.tsx`:通过,55 项测试全部通过
- `npm --prefix frontend run build`:通过
- `git diff --check`:通过
- `npm --prefix frontend test`:与 `upstream/dev` 基线一致,均为 509 个测试文件中 39
个失败、3943 项测试中 70 项失败;失败集中在既有 i18n、Sidebar、QueryEditor 和 DataGrid DDL
测试,本次修改未新增失败

## 风险说明

- 不涉及数据结构、数据迁移或后端行为变化
- 不涉及 API 或兼容性变化
- 样式使用现有主题变量,可适配内置和自定义主题
- 如需回滚,可直接还原本 PR 的 CSS 与测试提交
2026-07-26 18:51:43 +08:00
mango
aec7e596d6 test(frontend): 同步现有组件行为契约 2026-07-26 00:25:10 +08:00
mango
23cb8097c0 test(i18n): 更新组件拆分后的源码守卫 2026-07-26 00:24:59 +08:00
mango
54f973479c 🐛 fix(connection): 修复 RPC 保护配置构建类型 2026-07-26 00:24:42 +08:00
mango
2d9e92fbf9 test(query-editor): 修复结果测试隔离与过期断言 2026-07-25 23:49:15 +08:00
mango
cf553fda48 🐛 fix(query-editor): 修复查询结果实际表身份 2026-07-25 23:33:00 +08:00
mango
9ad5cb4888 🐛 fix(connection): 保留旧连接保护配置兼容性 2026-07-25 23:24:45 +08:00
mango
fe69404431 🐛 fix: 修复 Issue #719 (Closes #719) 2026-07-25 22:42:42 +08:00
mango
7f4feef3d6 🐛 fix(table-designer): 修复外部 SQL 恢复并支持字段复制粘贴 (#717) 2026-07-25 21:02:25 +08:00