Commit Graph

1310 Commits

Author SHA1 Message Date
Syngnat
3652756b2c 🐛 fix(data-grid): 兼容 bit 十六进制值大小写
- 让 bit 十六进制字面量匹配不区分大小写
- 避免大写十六进制值回退为带引号字符串
- 增加 0X0F 复制 INSERT 回归验证
2026-08-03 10:51:19 +08:00
Syngnat
573df673b1 🐛 fix(data-grid): 修复 MySQL bit 字段复制 INSERT 引号错误
- 识别 MySQL 家族 bit 列并生成未加引号的数值字面量
- 兼容布尔、十进制、十六进制和二进制值格式
- 增加复制 INSERT 回归测试并保留普通字段序列化行为

Fixes #786
2026-08-03 10:46:27 +08:00
Syngnat
b7774f8d75 fix(tdengine): SHOW STABLES 去掉 FROM 子句,依赖 DBQuery 的数据库上下文
SHOW STABLES FROM db 在某些 TDengine 版本/驱动中可能不兼容,
改为直接使用 SHOW STABLES,通过 DBQuery 的 dbName 参数设置数据库上下文。
2026-08-03 10:45:20 +08:00
Syngnat
add349af34 fix(tdengine): 修复子表超级表下拉框为空和无法自由输入的问题
- SHOW STABLES 查询去掉反引号,处理空数据库名场景
- Select 改为 AutoComplete 以支持自由输入
2026-08-03 10:05:15 +08:00
Syngnat
42e26a52cd feat(tdengine): 优化子表 TAG 值填写交互
- 超级表名改为下拉选择,自动从当前库拉取超级表列表
- 选择超级表后自动拉取 TAG 定义,逐行显示名称/类型/输入框
- 根据 TAG 类型自动处理引号拼接 TAGS 值
- 加载失败时降级为文本输入框兜底
- 新增 i18n 中/英/日/德/繁中翻译
2026-08-03 09:27:55 +08:00
Syngnat
0e8ec993c4 🐛 fix(connection-modal): 修复通配数据库标签截断
- 标签列宽从 40px 调整至 52px,完整显示通配包含与通配排除
- 复选项左侧内边距同步调整,保持表单内容对齐
- 不改变连接配置数据与交互逻辑
2026-08-03 08:49:08 +08:00
liuqiufeng
dd733816b5 feat(data-grid): 支持富格式剪贴板粘贴
- 粘贴表格单元格时优先解析 HTML/CSV,再回退 TSV
- 保持 text/plain TSV 安全降级,避免单元格内 tab/换行破坏列结构
- 保留富格式中的真实 tab 和换行内容
- 补充多行多列区域复制粘贴与 HTML tab 保留测试

验证:
- npm --prefix frontend test -- dataGridClipboardPaste.test.ts dataGridClipboardPayload.test.ts dataGridSelectionCopy.test.ts
2026-08-02 21:35:51 +08:00
liuqiufeng
fa14dcb7cb feat(data-grid): 支持表格多格式复制
- 新增 DataGrid 剪贴板 payload 构建工具,统一生成 plain text、HTML、CSV、Markdown、JSON 等格式
- 将单元格选择复制、行复制、列复制从纯文本复制升级为富格式复制
- Ctrl/Cmd+C 改为通过 copy 事件写入多种 MIME 类型,兼容 Excel 等表格软件粘贴
- 为多格式 payload 构建、事件写入、选区复制补充 Vitest 覆盖

Validation:
- npm --prefix frontend test -- dataGridClipboardPayload.test.ts dataGridSelectionCopy.test.ts DataGrid.ddl.test.tsx -t "copies row and column data|copies loaded column data|dataGridClipboardPayload|dataGridSelectionCopy"
- cd frontend && npx patch-package --verbose
- npm --prefix frontend run build
2026-08-02 20:51:58 +08:00
Syngnat
bd1ae3c24a 🐛 fix(connection-package): 修复导出弹窗状态类型导致 tsc 失败
- selectedConnectionIds 在 Snapshot 中改为必填 string[]
- 同步单元测试夹具字段,消除 CI 构建报错
2026-08-02 13:10:35 +08:00
Syngnat
0b6c0e8e51 feat(about): 应用内查看更新日志并与下载进度同窗
- 关于页提供「查看更新日志」入口,弹窗可滚动阅读 Markdown
- 下载进度与更新日志合并,支持边看日志边下载
- 本地缓存已读版本并展示未读提示
- 修正弹窗层级,避免被设置中心遮挡
- 补充多语言文案与单测
2026-08-02 13:07:36 +08:00
Syngnat
218e9388d2 🎨 style(theme): 对齐表概览主题表面并优化工具栏与时间展示
- 主内容区与侧栏统一 panel-2,消除表概览空白区色差
- 查询工具栏保存按钮改为 default 图标样式,提升暗色可读性
- 表概览时间格式化为 YYYY-MM-DD HH:mm:ss,保留小数秒
- 补充多语言文案与相关测试
2026-08-02 12:43:02 +08:00
Syngnat
24873709f5 feat(sidebar): 增强标题栏更多菜单与批量导出工作台
- 标题栏「更多」对齐设置分组,并支持导入导出独立入口
- 批量工作台支持导出/删除意图切换与截断表
- 库表右键补充批量操作与表分组刷新入口
- 完善相关组件测试
2026-08-02 12:42:53 +08:00
Syngnat
8446c4dfb6 feat(connection-package): 支持导出时多选连接
- 后端导出请求增加 connectionIds,仅打包所选连接
- 导出弹窗支持连接多选与未选校验
- 同步 Wails 绑定与传输测试
2026-08-02 12:42:05 +08:00
Syngnat
cc9f3091cd 🐛 fix(titlebar): 移除窗口控制按钮边框
- 覆盖 V2 全局按钮边框、圆角与阴影
- 保留跨平台自绘控件 hover 与关闭警示反馈
- 增加标题栏样式回归测试
2026-08-02 11:28:54 +08:00
Kunghim
27e5b4ff13 🐛 fix(data-grid): 为文本视图列显示截断提示 2026-08-02 00:59:35 +08:00
Syngnat
34ce600738 feat(data-grid): 优化行文本查看体验 (#816)
## 背景
字段较多时,查看同一行数据需要横向滚动,影响快速定位和比较。

## 变更
- 支持点击行号整列或双击行号切换到文本视图。
- 文本视图改为字段、类型、注释、值四列;前三列固定宽度,值列使用剩余空间。
- 值列仅在实际截断时显示完整内容 Tooltip,并支持点击或键盘操作复制。
- 保留文本/JSON 编辑后的返回表格入口及多语言文案。
- 增加布局和复制交互回归测试。

## 验证
- 
pm --prefix frontend test -- --run
src/components/DataGrid.layout.test.tsx
src/components/DataGridRecordViews.interaction.test.tsx
src/i18n/catalog.test.ts(90/90 通过)
- 
pm --prefix frontend run build 通过。
- Wails 生产包已构建并人工测试通过。

## 说明
TypeScript 全量检查仍报告上游 QueryEditor.tsx 中 Monaco hover.enabled 的 2
个既有类型错误,与本 PR 改动无关。

Closes #796
2026-08-02 00:50:33 +08:00
Syngnat
d73b22de46 🐛 fix(datagrid): 保留多列筛选条件 (#815)
## 背景\nPR #814 合并后发现,先应用字段 A 筛选,再应用字段 B 筛选时,字段 A
的筛选条件会被丢弃,导致结果集与筛选图标状态不一致。\n\n## 变更\n- 在条件规范化过程中保留已有列的筛选条件。\n-
增加多列筛选的回归测试。\n\n## 验证\n-
pm --prefix frontend test --
src/components/useDataGridFilters.test.tsx\n\n本 PR 基于已合并的 #814,仅包含后续修复。
2026-08-02 00:49:36 +08:00
Kunghim
c440280118 feat(data-grid): 优化文本记录视图 2026-08-02 00:42:25 +08:00
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
Kunghim
f374193e29 🐛 fix(datagrid): 保留多列筛选条件 2026-08-01 22:02:48 +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
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
c57a613f47 feat(sidebar): 创建数据库弹窗支持选择字符集与排序规则
MySQL 系连接创建数据库时,弹窗新增字符集与排序规则下拉,选项由
后端实时拉取;选择字符集后排序规则联动过滤。新增
supportsCreateDatabaseCharset 能力标记并同步 Wails 绑定。
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
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
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
18fd60dc69 feat(shortcuts): 新增接受 SQL AI 自动补全快捷键(默认 Right)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 00:44:32 +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