Commit Graph

495 Commits

Author SHA1 Message Date
Syngnat
14f24925ab 🐛 fix(query-editor): 支持 PostgreSQL 查询选择 Schema
- 在查询工具栏加载并持久化 PostgreSQL Schema
- 将选择的 Schema 安全注入 search_path,并保留显式连接配置
- 绑定事务、结果与元数据执行上下文,避免跨 Schema 误查询或写入
- 补充查询、DataGrid、独立窗口及差异比较回归测试

Refs #864
2026-08-07 23:25:25 +08:00
mango
4acf16893f fix(query): preserve selected new query context 2026-08-07 21:58:53 +08:00
mango
0e2a28039e Merge origin/dev into pull request 874 2026-08-07 21:50:01 +08:00
virgosgod-maker
0810fed618 🐛 fix(query-editor): 修复右键菜单无法粘贴内容 (#875)
## 背景

Issue #873 中,Windows 安装包内的 SQL 编辑器通过右键菜单执行“粘贴”时,浏览器剪贴板 API 会受到 WebView
权限限制,导致 Monaco 无法取得剪贴板内容。

## 变更点

- 在 Wails 运行环境中覆盖 Monaco 的粘贴命令,优先读取 Wails 原生剪贴板
- 将原生剪贴板文本交回 Monaco 的 paste handler,保留选区、多光标和撤销行为
- 使用引用计数管理全局命令生命周期,并保留浏览器剪贴板回退
- 增加原生读取、浏览器回退、多编辑器卸载及只读编辑器回归测试

## 影响范围

- 仅影响 Wails 环境下 SQL 编辑器的右键粘贴
- 普通浏览器环境继续使用 Monaco 默认粘贴逻辑
- 不涉及后端接口、配置、依赖或生成文件变更

## 验证

- 定向单元测试:14/14 通过
- TypeScript 类型检查通过
- 前端生产构建通过(7981 modules transformed)
- Wails runtime 实际验证右键粘贴可插入剪贴板文本
- 前端全量测试中 3 个测试文件因并发资源争用超时,隔离重跑 131/131 通过

Closes #873
2026-08-07 21:45:05 +08:00
virgosgod-maker
b085d01ba9 feat(query): 支持拖拽结果字段插入 SQL (#870)
## 变更说明

- 支持将查询结果集字段拖入 SQL 编辑器,并按光标位置、选区和字段上下文生成插入文本
- 复用同一次表头拖拽完成结果集内部列排序,不影响字段拖入查询区
- 使用结果集作用域隔离列排序,避免跨结果集误重排
- 鼠标使用原生 HTML 拖放,触摸和触控笔保留 dnd-kit PointerSensor 排序能力

## 测试

- `npm test -- sqlFieldDrop.test.ts dataGridColumnOrder.test.ts`(19
个测试通过)
- `npm run build`
- Windows Wails 桌面端手动验证:结果集列排序、字段拖入查询区

Closes #848
2026-08-07 21:45:02 +08:00
mango
fc038b73a5 fix(query-editor): scope native clipboard paste 2026-08-07 21:16:00 +08:00
mango
6de2304531 fix(data-grid): handle update clause boundaries 2026-08-07 21:15:59 +08:00
AutumnNazi
ebd08de6cf 🐛 fix(query-editor): 修复右键菜单无法粘贴内容
- 在 Wails 环境使用原生剪贴板读取 Monaco 粘贴内容
- 复用 Monaco 粘贴处理器保留选区、多光标和撤销行为
- 增加原生回退、引用计数及只读编辑器回归测试
2026-08-07 17:14:31 +08:00
kunghim
e1bc2839c5 feat(query): 新建查询继承当前表上下文 2026-08-07 16:45:31 +08:00
AutumnNazi
b765b22fce 🐛 fix(query-editor): 修复新建查询数据库上下文错误 2026-08-07 15:47:14 +08:00
kunghim
f0ffef2080 feat(query): 支持拖拽结果字段插入 SQL (#848) 2026-08-07 15:25:26 +08:00
Syngnat
fdb73e1f83 🐛 fix(workbench): 最近连接返回资源树
- 点击最近连接改为定位并选中侧栏连接或数据库
- 等待连接数据库加载完成后再恢复目标数据库选择
- 保留 Redis、Nacos 等非查询数据源的最近连接入口
- 外部 SQL 目录仍按原行为创建查询标签页
- 增加最近连接与侧栏定位事件回归测试
2026-08-07 15:22:32 +08:00
mango
c3d3f89561 🐛 fix(oracle): 支持 FOR UPDATE 结果直接编辑 (#857)
Fixes #857
2026-08-07 13:43:59 +08:00
Syngnat
5446269855 feat(query-editor): 支持查询另存为快捷键
- 首次保存弹窗自动聚焦查询名称输入框\n- 已保存查询可另存为独立副本并打开新标签页\n- 新增 Cmd/Ctrl+Shift+S 可配置快捷键和平台提示\n- 补齐多语言目录与保存、持久化回归测试
2026-08-07 11:33:37 +08:00
AutumnNazi
aeb0b5bc07 feat(external-sql): 支持 SQL 文件指定执行数据库
- 为外部 SQL 文件增加连接与数据库单独绑定,并持久化保存
- 统一侧边栏、最近文件、大文件执行、工具栏和 AI 文件检查上下文
- 在文件与目录重命名、删除时迁移或清理绑定
- 按物理路径去重最近 SQL 文件并补充多语言与回归测试
2026-08-06 21:46:37 +08:00
Syngnat
ed88831661 feat(tab): 支持标签显示直属分组名称 (#860)
## 背景

Issue #853 希望在“设置 → 工作区 → Tab 标签”中增加连接分组名称展示能力,便于在多个服务器分组之间快速识别当前标签来源。

## 变更点

- 在 Tab 标签显示元素中增加“分组”选项,双行布局启用后默认放在第二行
- 根据连接 ID 解析连接直接所属的分组名称,并在分组重命名、移动连接或删除分组后即时刷新
- 嵌套分组场景仅展示连接的直属分组名称,不继承、不拼接父级分组路径
- 未分组连接的分组值保持为空,不生成多余分隔符
- 为长分组名称增加收缩与省略显示,并补充六种语言文案
- 增加分组展示、未分组回退及嵌套直属分组边界测试

## 影响范围

- 仅影响工作区 Tab 标签的可选显示内容
- “分组”默认不启用,不改变现有用户的 Tab 布局和显示结果
- 不涉及后端接口、连接配置、数据库结构或数据迁移

## 验证

- `npm run test -- src/utils/tabDisplay.test.ts`:27/27 通过
- `npx tsc --noEmit --pretty false`:通过
- `npx vite build`:通过
- 六套 `shared/i18n/*.json`:解析通过
- `git diff --check origin/dev...HEAD`:通过

Closes #853
2026-08-06 20:49:11 +08:00
Syngnat
fd97034d97 feat(data-grid-filter): 优化筛选框显示与性能 (#858)
## 功能
- 优化筛选功能在大数据量时的性能
- 实现值统计结果的升降序排序功能
- 将原有复选框列表替换为带排序功能的Ant Design表格
- 修复筛选弹窗内的事件冒泡问题,避免干扰列表头拖拽

## 验证
- 聚焦测试:18/18 通过。
- tsc --noEmit、Vite 生产构建、git diff --check 均通过。
2026-08-06 20:48:43 +08:00
AutumnNazi
0921324374 feat(tab): 支持标签显示直属分组名称
- 工作区 Tab 标签新增分组显示项,未分组连接保持为空
- 按连接直接所属分组解析名称,不继承或拼接父级分组路径
- 支持分组变更即时刷新并限制长名称宽度
- 补充六种语言文案及嵌套分组回归测试
2026-08-06 18:19:33 +08:00
wait
0a98541a8e feat(data-grid-filter): 优化筛选框显示与性能
- 优化筛选功能在大数据量时的性能
- 实现值统计结果的升降序排序功能
- 将原有复选框列表替换为带排序功能的Ant Design表格
- 修复筛选弹窗内的事件冒泡问题,避免干扰列表头拖拽
2026-08-06 17:00:07 +08:00
Syngnat
32dfd39827 🐛 fix(query): 放开所有数据源默认查询超时
- 区分连接超时与查询超时,默认查询仅保留手动取消能力
- 清理各数据库及 HTTP 数据源由连接配置派生的请求超时
- 新增按请求 queryTimeout 透传并保留计数任务显式时限
- 补充前后端、缓存键与多驱动超时策略回归测试
2026-08-06 16:50:28 +08:00
Syngnat
e2615d9cb8 feat(data-grid): 增加结果视图字段搜索定位 (#854)
## 关联 Issue

Closes #845

## 改动说明

- 在文本结果视图增加字段搜索,支持字段名和字段注释的前缀、包含匹配
- 文本视图选中唯一字段后自动滚动定位并高亮,不显示无意义的上下项导航
- 在 JSON 结果视图增加字段搜索,只定位每条记录的顶层真实字段键,避免命中字段值或嵌套 JSON 同名键
- JSON 视图支持上一项、下一项循环定位,并显示“当前 / 总数”
- 匹配顺序为字段完全匹配、字段前缀、字段包含、注释前缀、注释包含,忽略大小写并保留真实字段名
- 补充 Enter、Shift+Enter、Escape 键盘操作以及六种语言文案
- 统一搜索框与导航按钮为 24px 高度,移除叠加焦点光晕,并将输入及占位文字调整为 12px

## 验证

- `npm test -- --run src/utils/dataGridRecordFieldSearch.test.ts
src/components/DataGridRecordViews.interaction.test.tsx
src/components/DataGrid.layout.test.tsx`(46 tests passed)
- `npm run build`
- `go test ./shared/i18n`
2026-08-06 12:11:54 +08:00
kunghim
cf8397d310 feat(data-grid): 增加结果视图字段搜索定位 2026-08-06 11:33:06 +08:00
mango
90020799ad 🐛 fix(tab): 修复 Schema 副行显示 (#851) 2026-08-06 11:18:09 +08:00
Syngnat
450b70178c 🐛 fix(oceanbase/dameng): 修复元数据连接与带点对象名解析
- OceanBase Oracle 元数据请求复用基础连接,避免 CURRENT_SCHEMA 初始化触发 EOF
- 达梦结果编辑保留带点 owner 边界,统一 SQL 预览与实际执行目标
- 完善限定名解析、补全导航与数据库回归测试

Refs #836
2026-08-05 16:24:02 +08:00
Syngnat
e42f2ba7b2 feat(tab): 增加查询标签右键重命名 (#844)
## 变更说明

- 在查询 Tab 的右键菜单中增加“重命名查询”入口。
- 复用 QueryEditor 现有的重命名流程,保持保存记录、Tab 标题和未保存查询引导行为一致。
- 右键非当前查询 Tab 时先激活目标 Tab,再打开对应的重命名窗口。
- SQL 文件 Tab 保留现有不可重命名限制,表数据等非查询 Tab 不显示该菜单项。
- 通过带 tabId 的事件只通知目标 QueryEditor,避免误操作其他查询 Tab。

## 测试

- 定向测试:325 passed
- npm run build:TypeScript 和 Vite 构建通过
- Wails Windows 测试包:GoNavi-issue-835-query-tab-rename.exe
- 已完成人工测试验证

Fixes #835
2026-08-05 14:35:49 +08:00
kunghim
209b6638bd feat(tab): 增加查询标签右键重命名 2026-08-05 14:04:24 +08:00
mango
a0f84fd6e3 🐛 fix(about): 移除重复更新日志入口 (#834) 2026-08-05 11:29:59 +08:00
Syngnat
ad16c1b872 🐛 fix(query-editor): 修复达梦 JOIN 查询自动限行歧义
达梦改用原生 LIMIT/OFFSET,避免 ROWNUM 派生表包装使 JOIN 同名列触发列名歧义。

补充自动限行、AI 只读预览和分页 SQL 的回归覆盖。
2026-08-04 15:13:57 +08:00
Syngnat
f2e773efc5 🐛 fix(window): 修复 Windows 启动最大化显示不全
- 校验原生窗口状态与 WebView2 surface 覆盖率
- 在窗口线程刷新 WebView2 bounds,并为异步窗口命令增加状态屏障
- 完善工作区兜底和多显示器坐标转换
- 补充启动最大化、状态轮询及跨平台回归测试

Fixes #824
2026-08-03 23:26:15 +08:00
Syngnat
07835ea125 🐛 fix(connection): 修复连接环境标识与生产操作保护 (#830)
## 变更说明

Closes #823

- 删除分组级环境预设,连接分组下新建查询的 Tab、侧边栏和相关视图统一读取连接自身的环境类型与颜色。
- 对未配置任何生产保护的生产连接,所有可能修改数据、结构、配置、服务或消息的入口增加 5 秒风险确认,并要求点击“我已知悉”。
- 写操作成功提示等待实际刷新完成,避免提示早于侧栏、表概览、Redis、Nacos 等界面状态更新。
- 增加环境迁移、生产风险确认、刷新竞态和相关入口测试。

## 验证

- `npx tsc --noEmit` 通过
- `npx vite build` 通过
- 定向 Vitest:8 个测试文件,55 个测试全部通过
- `go test ./shared/i18n` 仍受上游已有的 `ru-RU` 缺少
`table_designer.tdengine.tag.value` 阻断,本次未引入该问题
2026-08-03 19:49:10 +08:00
Syngnat
2f9dbdb754 🐛 fix(query-editor): 修复大字号表候选下划线裁剪 (#829)
## 背景

SQL 查询编辑器的表候选项使用 Monaco 原生双行布局,行高固定为 18px + 18px。

当编辑器字号调整为 18px 或 20px 时,表名中的下划线和字母下行部分可能被候选项行高裁剪。

## 变更内容

- 新增 SQL 候选项布局计算逻辑,根据最终编辑器字号动态计算表名行高和候选项总高度。
- 将 Monaco 的 `suggestLineHeight` 与动态布局保持一致。
- 使用 CSS 变量替代候选项中的固定行高,确保大字号下内容完整显示。
- 保持默认字号下原有 36px 候选项高度不变。
- 增加默认字号、大字号和显式字号配置的单元测试。

## 影响范围

- 仅影响 v2 SQL 查询编辑器的表候选项。
- 旧版编辑器和其他类型的 Monaco 编辑器不受影响。
- 不涉及数据结构、接口、数据库或构建配置变更。
- SQL 字号为 18px 时,候选项高度调整为 43px;20px 时调整为 46px。

## 验证方式

- `sqlEditorTypography.test.ts`:3 个测试通过。
- `MonacoEditor.typography.test.tsx`:6 个测试通过。
- TypeScript 类型检查通过:`npx tsc --noEmit`。
- `git diff --check 630ba7fc^ 630ba7fc` 通过。
2026-08-03 19:48:26 +08:00
AutumnNazi
ad7179941f 🐛 fix(connection): 修复连接环境标识与生产操作保护
- 分组不再覆盖连接自身环境类型,Tab 和侧栏视图统一使用连接环境颜色\n- 为未配置生产保护的生产连接增加 5 秒风险确认,覆盖 SQL、数据、结构、同步、Redis、Nacos 和消息操作\n- 写操作完成后等待刷新请求结束再提示成功,避免界面状态落后于实际结果\n- 增加连接环境、生产风险确认和刷新竞态测试,关联 Issue #823
2026-08-03 16:39:06 +08:00
kunghim
630ba7fc3f 🐛 fix(query-editor): 修复大字号表候选下划线裁剪 2026-08-03 15:34:07 +08:00
Syngnat
67981575a9 🐛 fix(nativewindow): 同步独立窗口主题与透明背景
- 同步主窗口解析后的自定义主题上下文,覆盖独立窗口主题变量和 Ant Design 令牌\n- 使用主题背景绘制 detached WebView,避免透明区域回退为白色\n- 按 macOS、Windows 和 Linux 配置原生窗口透明参数\n- 补充主题通信、覆盖层主题和原生窗口视觉选项回归测试
2026-08-03 15:27:30 +08:00
Syngnat
d06d9a0f7f 🐛 fix(tdengine): 兼容超级表元数据查询结果
- 兼容 stable_name 及不同大小写的超级表字段
- 增加 SHOW STABLES 多种语法回退
- 新增超级表选项解析与去重回归测试
2026-08-03 15:05:16 +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
8446c4dfb6 feat(connection-package): 支持导出时多选连接
- 后端导出请求增加 connectionIds,仅打包所选连接
- 导出弹窗支持连接多选与未选校验
- 同步 Wails 绑定与传输测试
2026-08-02 12:42:05 +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
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
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
2ecccae148 ️ perf(driver-manager): 优化驱动状态缓存与加载协调
- 抽离驱动状态快照注册、恢复和请求收尾逻辑
- 避免过期请求覆盖最新目录状态或持续占用加载态
- 补充缓存恢复与请求竞态回归测试
2026-08-01 14:50:09 +08:00