Kunghim
f46dc08519
fix(data-grid): 修复行号列整格双击切换文本视图
2026-08-02 00:42:23 +08:00
Syngnat
b80843483a
✨ feat(database): 支持通配符过滤数据库显示范围
...
- 新增数据库包含与排除通配规则,保持原精确筛选兼容
- 同步侧栏、查询编辑器、数据导入导出及连接配置
- 完善持久化、连接包、Wails 绑定、多语言与回归测试
Fixes #776
2026-08-02 00:06:20 +08:00
Syngnat
c72f9a8617
✨ feat(datagrid): 支持列值多选筛选 ( #814 )
...
Closes #811
## 变更
- 列头当前值列表支持搜索、多选和全选
- SQL 结果支持跨列级联值统计,刷新会清空本地筛选
- 表预览保留多选条件并应用到服务端查询
## 验证
- npm --prefix frontend test --
src/components/DataGridColumnTitle.test.tsx
src/components/useDataGridFilters.test.tsx
src/utils/dataGridClientFilter.test.ts src/utils/sql.test.ts
- npm --prefix frontend run build
2026-08-01 21:14:26 +08:00
Syngnat
7dfe159b26
✅ test(audit): 修复脱敏断言随机误报
...
- 将敏感信息检查限定到 SQL 文本和错误字段
- 避免审计 UUID、时间戳及哈希短串碰撞导致误报
2026-08-01 19:49:12 +08:00
Syngnat
2f7dad9579
Merge remote-tracking branch 'origin/dev' into dev
2026-08-01 19:40:18 +08:00
Syngnat
b5af396b4a
🐛 fix(oracle): 修复长触发器定义被截断
...
- 触发器元数据改走无界 CLOB/LONG 读取
- 查看与编辑入口统一使用完整触发器定义接口
- 补充超过 4 KiB 及旧标签页回归测试
2026-08-01 19:40:10 +08:00
Kunghim
42f34a36f4
✨ feat(datagrid): 支持列值多选筛选
2026-08-01 19:32:20 +08:00
Syngnat
5640a36e03
🐛 fix(sidebar): 字符集/排序规则类型改为前端本地定义
...
CI 的 Build frontend 步骤执行 wails generate module 重新生成绑定,
ListDatabaseCharsets/ListDatabaseCollations 返回 QueryResult(Data 为
interface{}),wails 不会为其生成 TS 类,导致 models.ts 中手写类型被
覆盖后 tsc 编译失败。改为前端本地声明 DatabaseCharsetOption/
DatabaseCollationOption,不再依赖 wails 生成类型。
2026-08-01 18:45:59 +08:00
Syngnat
aa7d927b67
🌐 i18n: 创建数据库字符集/排序规则文案(6 语言)
2026-08-01 18:22:21 +08:00
Syngnat
c57a613f47
✨ feat(sidebar): 创建数据库弹窗支持选择字符集与排序规则
...
MySQL 系连接创建数据库时,弹窗新增字符集与排序规则下拉,选项由
后端实时拉取;选择字符集后排序规则联动过滤。新增
supportsCreateDatabaseCharset 能力标记并同步 Wails 绑定。
2026-08-01 18:22:21 +08:00
Syngnat
c23878504d
✨ feat(db): 创建数据库支持选择字符集与排序规则
...
MySQL 系数据源(mysql/mariadb/diros/oceanbase 及归一化为 mysql 的
goldendb/greatdb)创建数据库时可指定字符集与排序规则,不再强制
utf8mb4;空值使用服务器默认。新增 ListDatabaseCharsets /
ListDatabaseCollations 查询 SHOW CHARACTER SET / SHOW COLLATION,
字符集/排序规则标识符仅允许字母数字下划线,防止注入。
2026-08-01 18:22:21 +08:00
Syngnat
198c58fcf3
🐛 fix(saved-queries): 缺失 SQL 文件的孤儿记录跳过加载,不再阻断退出/更新
...
saved_queries.json 引用的旧 .sql 文件缺失时(如用户手动删除,
或切换更新通道时迁移中断),此前 hydrateDiskFile 整体加载失败,
导致退出/更新流程弹出“检查未保存 SQL 失败,已取消退出”,更新无法进行。
现在孤儿记录被跳过并在迁移时清理,其余查询正常加载。
2026-08-01 18:22:21 +08:00
Syngnat
1f0467b5fc
🐛 fix(frontend): 修复 rc-table 补丁上下文
...
修正 ES/lib BodyGrid 补丁缺失的 unified diff 上下文前缀,恢复 clean npm ci 下 patch-package 应用。
2026-08-01 17:27:46 +08:00
Syngnat
4c52a825c7
Merge remote-tracking branch 'origin/dev' into dev
2026-08-01 15:00:30 +08:00
Syngnat
d759024ccb
Add MiniMax regional endpoint options ( #812 )
...
Reason: The MiniMax preset did not expose complete regional and protocol
endpoint coverage.
- Add selectable global and China endpoints for Anthropic- and
OpenAI-compatible transports.
- Preserve the endpoint-specific transport when editing, testing, and
saving provider settings.
- Add focused coverage for endpoint matching and persistence.
Checks:
- `npm test -- src/components/ai/aiSettingsModalConfig.test.tsx
src/utils/aiProviderPresets.test.ts`
- `npm test -- src/components/ai/AISettingsProvidersSection.test.tsx`
- `npm run build`
- `git diff --check origin/dev...HEAD`
2026-08-01 14:58:29 +08:00
Syngnat
88434e77a9
✨ feat(elasticsearch): 新增 REST 控制台并完善安全执行链
...
- 复用查询页提供 ES 控制台、模板、AI 辅助及原始与表格结果
- 新增统一解析分类、危险确认、连接保护和受控 REST 执行
- 扩展 driver agent、版本适配、Wails 绑定、多语言与文档
- 修复完整回归中发现的跨平台和前端基线用例问题
Refs #782
2026-08-01 14:58:12 +08:00
Syngnat
849dad6ea8
⚡ ️ perf(sidebar): 优化拖拽与折叠展开流畅度
...
- 拖拽时实时同步侧栏全部宽度约束并移除内容区锁定
- 折叠与展开期间合并尺寸观察回调,结束后统一刷新
- 为依赖观察器增加安装补丁及生命周期回归测试
2026-08-01 14:51:56 +08:00
Syngnat
544a332339
⚡ ️ perf(data-grid): 优化虚拟表格滚动与列宽拖拽
...
- 合并横向滚动同步并减少固定列样式级联重算
- 去重虚拟滚动事件并稳定复用未变化的数据行
- 移除列宽拖拽辅助线并补充滚动回归测试
2026-08-01 14:50:41 +08:00
Syngnat
e8076a041b
🐛 fix(sidebar): 将当前表定位入口移回固定操作栏
...
- 从顶部标题快捷操作中移除当前表定位
- 在固定侧栏操作区始终保留定位入口
- 补充折叠布局和操作触发回归测试
2026-08-01 14:50:23 +08:00
Syngnat
2ecccae148
⚡ ️ perf(driver-manager): 优化驱动状态缓存与加载协调
...
- 抽离驱动状态快照注册、恢复和请求收尾逻辑
- 避免过期请求覆盖最新目录状态或持续占用加载态
- 补充缓存恢复与请求竞态回归测试
2026-08-01 14:50:09 +08:00
octo-patch
4f12dd8436
feat(ai): add MiniMax regional endpoint options
2026-08-01 13:25:16 +08:00
Syngnat
4635d688c3
🐛 fix(sidebar): 刷新连接资源后保留展开状态 ( #809 )
...
## 背景
修复 Issue #800:连接资源刷新后,原先展开的连接、数据库和表资源会被折叠,需要用户重新展开。
## 变更
- 统一 V2 与 legacy 连接刷新入口。
- 保留刷新前的展开状态,并按父级到子级顺序重新加载展开资源。
- 刷新期间新展开的节点继续保留;已移除资源的无效 key 会清理。
- 增加连接刷新展开顺序回归测试。
## 验证
- `tsc --noEmit`
- `vitest run
src/components/sidebarV2Utils.single-database-expansion.test.ts`
- `vitest run
src/components/sidebar/useSidebarTreeLoaders.nacos-services.test.tsx
src/components/sidebar/sidebarLegacyNodeMenu.nacos-services.test.tsx`
- `vitest run src/components/Sidebar.locate-toolbar.test.tsx`
Closes #800
2026-08-01 11:00:08 +08:00
Syngnat
30809a2160
✨ feat(query-editor): 新增可配置快捷键接受 SQL AI 自动补全 ( #808 )
...
## 功能说明
查询编辑器出现 AI 灰色幽灵补全时,按下**接受快捷键**即可将补全内容写入编辑器。接受快捷键可在「快捷键管理」中自由修改(默认
**Tab**,支持改绑 Shift+Tab / Right / 任意组合键)。
原实现为硬编码 RightArrow(`editor.addCommand` + Monaco fallback 补丁),现改为:
- 新增 `acceptSqlAiCompletion` 快捷键动作,注册进现有快捷键系统(快捷键管理 UI、录制、冲突检测自动生效)
- 接受逻辑改用 `editor.onKeyDown` 单机制:仅当 `acceptAiInlineGhost()`
成功时才拦截按键,幽灵不存在/过期时按键走默认行为(不再需要 fallback 补丁,已删除)
- 监听注册在 `handleEditorDidMount`(编辑器生命周期内),编辑器重建(关闭重开查询区)自动重注册;绑定与激活态经 ref
读取,改绑后立即生效
- 移除了 `disallowShift` 限制,支持 Shift+Tab 等含 Shift 的组合
## 涉及文件
| 文件 | 改动 |
|---|---|
| `frontend/src/utils/shortcuts.ts` | 注册 `acceptSqlAiCompletion` 动作(默认
Tab) |
| `frontend/src/components/QueryEditor.tsx` | onKeyDown 接受机制,移除硬编码
addCommand |
| `frontend/src/components/MonacoEditor.tsx` | 删除 RightArrow fallback
补丁(死代码) |
| `shared/i18n/*.json`(6 语言) | 快捷键 label/description 文案 |
## 测试
- `shortcuts.test.ts`:默认值、Tab 裸键可录制、Shift+Tab 允许
- `QueryEditor.external-sql-save.test.tsx`:默认 Tab 接受并拦截按键 / 无幽灵不拦截 /
幽灵过期不拦截 / 改绑 Right、Shift+Tab 接受
- 相关测试全过(366 条),`tsc --noEmit` 通过
- 已本地 `wails build` 打包人工验证:默认 Tab 接受补全,无补全时 Tab 不吞键,改绑 Shift+Tab
生效,关闭重开查询区后仍生效
🤖 Generated with [Claude Code](https://claude.com/claude-code )
2026-08-01 10:59:56 +08:00
Syngnat
9db27eb653
✨ feat(query-editor): 优化表候选框展示与注释 ( #807 )
...
## 背景
Issue #778 中,SQL 编辑器的数据表候选框无法稳定展示完整表名和表注释。
## 变更
- 表候选使用 Monaco 结构化标签固定双行展示,第一行保留表名,第二行展示表类型、数据库/Schema 和注释。
- 注释使用灰色小字号右对齐,并保留表名过滤、前缀补全和原有插入文本。
- 仅在查询编辑器的候选组件范围内增加样式,不改变其它页面。
## 影响范围
仅影响 SQL 查询编辑器的数据表候选框展示;候选排序、过滤、键盘选择和 SQL 插入逻辑保持不变。
## 验证
- `npx tsc --noEmit`
- `npx vitest run
src/components/queryEditor/QueryEditorHelpers.test.ts`(24/24)
- `npx vite build`(7966 modules transformed)
- `git diff --check`
Closes #778
2026-08-01 10:59:42 +08:00
AutumnNazi
ceec150716
🐛 fix(sidebar): 刷新连接资源后保留展开状态
...
- 统一 V2 与 legacy 连接刷新入口\n- 按父子顺序重新加载刷新前展开的资源\n- 清理已移除节点并保留刷新期间的新展开状态\n- 增加连接刷新展开顺序回归测试
2026-08-01 08:31:03 +08:00
Kunghim
6b095e6d9b
✨ feat(shortcuts): 接受 SQL AI 自动补全默认键改为 Tab
...
测试同步:默认 Tab 接受/不拦截 Tab 场景,改绑 Right/Shift+Tab 保留可配置覆盖。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-01 02:12:06 +08:00
Kunghim
30822042dd
🗑️ docs: 移除内部设计/实现文档(不随 PR 合入上游)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-01 02:12:06 +08:00
Kunghim
f38fdf5732
✨ fix(query-editor): 接受快捷键监听移入 editor 生命周期并允许 Shift+Tab
...
- 移除 disallowShift:Shift+Tab 可录制/保存/生效
- keydown 监听从独立 effect 移入 handleEditorDidMount,绑定与激活态
经 ref 读取,editor 重建(关闭重开查询区)自动重注册,改绑立即生效
- 新增 Shift+Tab 接受场景测试
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-01 01:36:47 +08:00
Kunghim
a234f20a88
🐛 fix(test): store mock shortcutOptions 补 acceptSqlAiCompletion 类型
...
tsc 严格类型检查要求 mock 对象字面量包含新 action,补齐默认 Right。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-01 01:17:51 +08:00
Syngnat
68df0b440d
⚡ ️ perf(workbench): 优化表格列宽与侧栏拖拽性能
...
- 列宽拖动实时同步表头、表体与滚动区域,移除辅助线
- 合并侧栏拖动期间的尺寸观察与布局刷新
- 补充拖拽生命周期和边界回归测试
2026-08-01 00:59:28 +08:00
Kunghim
810fe7b668
✅ test(query-editor): AI 补全接受快捷键行为测试(默认 Right/可配置 Tab/不拦截场景)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-01 00:56:55 +08:00
Kunghim
b1e64a6063
♻️ refactor(monaco-editor): 删除 AI 补全 RightArrow fallback 死代码
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-01 00:48:03 +08:00
AutumnNazi
3cdbaa788f
✨ feat(query-editor): 优化表候选框展示与注释
2026-08-01 00:47:53 +08:00
Kunghim
2be84ce198
✨ feat(query-editor): AI 补全接受改为可配置快捷键(onKeyDown)
...
移除硬编码 addCommand(RightArrow, ghostContext),接受以
acceptAiInlineGhost() 成功为前提,幽灵过期时按键不拦截。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-01 00:46:58 +08:00
Kunghim
fd1b5c272e
🌐 i18n: 接受 SQL AI 自动补全快捷键文案(6 语言)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-01 00:45:12 +08:00
Kunghim
18fd60dc69
✨ feat(shortcuts): 新增接受 SQL AI 自动补全快捷键(默认 Right)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-01 00:44:32 +08:00
Kunghim
4e47262e65
📝 docs(plan): 查询编辑器接受 AI 补全快捷键实现计划
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-01 00:42:02 +08:00
Kunghim
a457a5d2c7
📝 docs(spec): 查询编辑器接受 AI 补全快捷键设计文档
...
新增可配置 acceptSqlAiCompletion 快捷键(默认 Right),替代硬编码
RightArrow 接受逻辑,支持改为 Tab 等任意键;onKeyDown 单机制,
接受成功才拦截按键,移除 addCommand + fallback 补丁死代码。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-01 00:39:27 +08:00
Syngnat
772d839130
🐛 fix(datagrid): 优化列宽拖拽交互 ( #805 )
...
## 背景与问题
DataGrid 调整列宽时仍会显示旧的蓝色竖向预览线,与当前拖动过程中实时更新列宽的交互重复;同时第三方样式会把拖拽手柄高度限制为
20px,导致列头边缘的可拖拽区域偏小。
## 变更点
- 移除列宽拖拽预览线及其 ref、定位和显隐逻辑
- 保留基于 `requestAnimationFrame` 的拖动中实时列宽更新
- 让透明拖拽手柄覆盖完整列头高度,不改变原有分割线视觉样式
- 调整交互测试,继续覆盖拖动更新、松开提交、最小宽度和异常清理
## 影响范围
仅影响 DataGrid 列宽拖拽交互,不涉及数据库连接、数据读写或后端逻辑。
## 验证方式
- `npx vitest run
src/components/useDataGridColumnResize.interaction.test.tsx`:5 项通过
- `npm run build`:通过
- `wails build`:Windows AMD64 桌面程序构建通过
- 在 DataGrid 性能测试页和桌面程序中手动验证拖动反馈
## 风险与回滚
风险较低。若出现列宽拖拽回归,可回滚本提交以恢复原预览线实现。
2026-07-31 23:55:35 +08:00
Syngnat
84dd276466
🐛 fix(driver-manager): 优化首次加载并修正版本与卡片展示
...
- 将驱动包元数据预热移至后台,避免状态首屏等待网络
- 复用状态快照并合并并发请求,防止重复刷新与过期响应覆盖
- 修正版本重复及历史版本选择,保证展示与安装目标一致
- 重排版本、进度和操作区域,并提升深色主操作对比度
- 补充首屏、并发、布局与性能边界回归测试
2026-07-31 23:48:27 +08:00
Kunghim
9feb1bc882
🐛 fix(datagrid): 优化列宽拖拽交互
2026-07-31 23:28:54 +08:00
Syngnat
98d07e49cc
✨ feat(oracle): 支持 SID 连接模式 ( #804 )
...
- 在连接弹窗中切换 Service Name 与 SID,并完善 URI 和参数回显
- 使用 SID 查询参数生成 Oracle DSN,兼容 Navicat 导入及历史配置
- 补充多语言、弹窗滚动布局和前后端回归测试
Fixes #801
2026-07-31 23:06:11 +08:00
Syngnat
06a6fe8ad7
✨ feat(sidebar): 新增数据库置顶与分区展示 ( #803 )
...
## 背景
Issue #788 希望侧边栏数据库具备与数据表一致的置顶能力,方便快速访问常用数据库。
## 变更内容
- 在 V2 数据库右键菜单中新增“置顶数据库 / 取消置顶数据库”操作
- 持久化数据库置顶状态,重启后仍可恢复
- 按“置顶 / 全部”分区展示数据库,并保留原始排序
- 取消置顶后恢复数据库原位置,同时保留已经加载的子树
- 数据库折叠后不再清空子树,重新展开无需再次连接
- 补充六种语言文案及侧边栏、加载器和 Store 回归测试
## 影响范围
仅调整 V2 侧边栏的数据库树展示与交互,不包含 wails dev 生成文件。
## 验证
-
px vitest run src/components/Sidebar.locate-toolbar.test.tsx
src/components/sidebarV2Utils.command-search.test.ts
src/components/sidebar/useSidebarTreeLoaders.partitions.test.tsx
src/components/sidebar/useSidebarTreeLoaders.nacos-services.test.tsx
src/store.test.ts --testTimeout=60000(205 项通过)
-
px tsc --noEmit --pretty false
-
pm run build(7976 个模块构建成功)
- git diff --check origin/dev...HEAD
Closes #788
2026-07-31 23:06:01 +08:00
liuqiufeng
c259e2ebe2
✨ feat(oracle): 支持 SID 连接模式
...
- 在连接弹窗中切换 Service Name 与 SID,并完善 URI 和参数回显
- 使用 SID 查询参数生成 Oracle DSN,兼容 Navicat 导入及历史配置
- 补充多语言、弹窗滚动布局和前后端回归测试
2026-07-31 22:02:11 +08:00
AutumnNazi
d36244019c
✨ feat(sidebar): 新增数据库置顶与分区展示
...
- 支持在 V2 数据库右键菜单中置顶和取消置顶
- 持久化数据库置顶状态并按置顶与全部分区展示
- 保留数据库原始顺序及已加载的展开子树
- 修复数据库折叠后再次展开触发重新连接的问题
- 补充多语言文案和侧边栏回归测试
2026-07-31 20:51:55 +08:00
Syngnat
e942f7dc5a
🐛 fix(ddl): 保留 Oracle 视图 DDL 原始排版
...
- Oracle 视图与物化视图跳过展示格式化
- 补充预览及对象编辑原始排版回归测试
2026-07-31 20:06:25 +08:00
Syngnat
e117ec2c8c
🐛 fix(datagrid): 恢复结果视图选中主题色
...
- 选中状态恢复主题强调色与对应前景色
- 补齐聚焦、悬停和按下状态的主题派生色
- 增加回归断言,避免样式退回中性背景
2026-07-31 17:49:32 +08:00
Syngnat
2e55242f80
✨ feat(datagrid): 支持列宽随拖动实时调整 ( #799 )
...
## 背景
Issue #789 中,表数据与查询结果的列宽只在拖动结束后生效,拖动过程中表格内容不会随分隔线同步调整,操作反馈存在明显延迟。
## 变更点
- 在 requestAnimationFrame 内提交最新列宽,使表头与完整表体随拖动实时重排
- 合并高频鼠标移动事件并跳过重复像素宽度,降低无效状态更新
- 保留松手时的最终宽度提交,并增加拖动期间实时更新的交互回归测试
## 影响范围
- 影响共用 DataGrid 的表数据与查询结果列宽拖动交互
- 不涉及后端、数据库结构、连接配置或数据读写逻辑
## 验证
- npm run test -- src/components/DataGrid.layout.test.tsx
src/components/useDataGridColumnResize.interaction.test.tsx(38 passed)
- npx tsc --noEmit --pretty false
- npm run build
- 手工验证表数据与查询结果均可随拖动实时调整
Closes #789
2026-07-31 16:31:47 +08:00
Syngnat
eb0f075bce
🔧 fix(message):修复打开表数据时,提示 data_viewer.edit_hint.all_columns_locator … ( #798 )
...
问题:当表没有主键是提示为应为字符没有翻译成友好提示
<img width="1226" height="157" alt="image"
src="https://github.com/user-attachments/assets/5650fe6c-fc67-4281-a361-b967f89f21b6 "
/>
增加i18n转换
修复后如下
<img width="1318" height="112" alt="image"
src="https://github.com/user-attachments/assets/213cf541-4ed8-4e89-b652-a01194673d8b "
/>
2026-07-31 16:30:43 +08:00
Syngnat
848b95ff9f
🐛 fix(ai-window): 注入独立窗口主题上下文
...
- 在独立窗口首帧同步 data-theme 和 data-ui-version
- 让 V2 与自定义主题 CSS 规则覆盖 AI 面板背景
- 同步独立窗口字号、缩放和 color-scheme
- 增加主题上下文注入回归测试
2026-07-31 16:27:24 +08:00