475 Commits

Author SHA1 Message Date
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
octo-patch
4f12dd8436 feat(ai): add MiniMax regional endpoint options 2026-08-01 13:25:16 +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
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
Syngnat
68df0b440d ️ perf(workbench): 优化表格列宽与侧栏拖拽性能
- 列宽拖动实时同步表头、表体与滚动区域,移除辅助线
- 合并侧栏拖动期间的尺寸观察与布局刷新
- 补充拖拽生命周期和边界回归测试
2026-08-01 00:59:28 +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
84dd276466 🐛 fix(driver-manager): 优化首次加载并修正版本与卡片展示
- 将驱动包元数据预热移至后台,避免状态首屏等待网络
- 复用状态快照并合并并发请求,防止重复刷新与过期响应覆盖
- 修正版本重复及历史版本选择,保证展示与安装目标一致
- 重排版本、进度和操作区域,并提升深色主操作对比度
- 补充首屏、并发、布局与性能边界回归测试
2026-07-31 23:48:27 +08:00
Syngnat
e942f7dc5a 🐛 fix(ddl): 保留 Oracle 视图 DDL 原始排版
- Oracle 视图与物化视图跳过展示格式化
- 补充预览及对象编辑原始排版回归测试
2026-07-31 20:06:25 +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
736c20640e 🐛 fix(ai-window): 同步独立 AI 窗口主题与显示设置
- 使用宿主解析后的主题状态渲染浮动 AI 窗口

- 在原生独立窗口注入自定义主题样式与 Ant Design 令牌

- 同步主题、字号、缩放和界面版本到子窗口

- 增加主题切换与独立窗口状态同步回归测试
2026-07-31 16:22:27 +08:00
廖鹏
af80e07e4a 🔧 fix(message):修复打开表数据时,提示 data_viewer.edit_hint.all_columns_locator 消息,但是在其他语言模式下没有转换成友好提示词。 2026-07-31 11:02:14 +08:00
home
4e96660eab 🐛 fix(datagrid): 修复最小列宽下筛选与排序控件隐藏 2026-07-30 23:44:13 +08:00
Syngnat
457a77d13a 🐛 fix(oracle): 修复视图 DDL 截断与 ROWID 注入问题
- 完整读取 Oracle DDL CLOB,避免元数据预览截断
- 统一对象设计器视图 DDL 获取和格式化
- 仅对物理表注入 ROWID,避免 ORA-01445
2026-07-30 23:20:03 +08:00
Syngnat
ffd1be8ad6 🐛 fix(query-editor): 统一主题背景与结果区布局
让 Monaco、SQL 工具栏、数据网格和嵌入日志统一使用当前主题的工作台表面色,并兼容自定义主题覆盖。

统一结果 Tab 的高度、圆角与间距,移除嵌入日志重复标题,将清空日志和隐藏结果区操作并排放到 Tab 栏右侧。

补充主题、工具栏、结果 Tab 和日志面板回归测试。
2026-07-30 17:49:58 +08:00
Syngnat
09a1bceabf ️ perf(kingbase): 优化数据表首屏加载性能
- 连接池保留 Kingbase 空闲连接,减少重复建连开销
- 首屏数据查询完成后再加载编辑定位元数据
- 合并列、索引和外键元数据请求并保留强制刷新
- 新增连接复用、加载时序和请求缓存回归测试
2026-07-30 11:26:50 +08:00
Syngnat
12e410aead 🐛 fix(nacos-connection): 支持受限命名空间与权限保护
- 在连接表单中独立维护 Namespace ID 与 contextPath
- 为无命名空间列表权限的账号回退到已配置作用域
- 细分数据编辑、结构管理与导入保护并阻止陈旧操作
- 补齐侧边栏请求代际和连接 URI 回归测试
2026-07-28 23:51:36 +08:00
Syngnat
347063f136 Merge pull request #768 from virgosgod-maker/fix/issue-763 2026-07-28 19:31:01 +08:00
mango
3e933358e6 🐛 fix: 修复 Issue #763 (Closes #763) 2026-07-28 18:30:23 +08:00
mango
a37dc1c469 🐛 fix(test): 修复前端基线测试断言 2026-07-28 17:48:31 +08:00
Syngnat
d3fabe29d4 🐛 fix(theme): 统一 Monaco 与通用弹窗主题细节
- 统一 Monaco 编辑器背景变量并避免全局主题相互污染
- 为自定义主题补充编辑器表面变量及兼容处理
- 区分 DataGrid 数据编辑器与 SQL 定义编辑器字号
- 修复 V2 输入框重复边框和弹窗关闭按钮错位
- 支持可缩放弹窗内容及 Monaco 编辑器自适应填充
2026-07-28 16:00:24 +08:00