Commit Graph

1139 Commits

Author SHA1 Message Date
mango
eddbe563e2 feat(datagrid): 支持选区单元格复制粘贴 (#718)
实现从选中单元格起按二维剪贴板矩阵粘贴,支持多行多列、NULL 空值和现有草稿更新。\n\nFixes #718
2026-07-25 17:15:00 +08:00
Syngnat
fdfdebf24e feat(sidebar): 表新建查询展开全部字段而非 select *
- 新建查询时通过 DBGetColumns 拉取字段并生成 SELECT 列表
- 元数据不可用时回退 SELECT *,消息队列仍保持 LIMIT 预览
- 覆盖 V2/旧版右键菜单与表总览入口,补充模板单测

Refs #710
2026-07-25 09:25:04 +08:00
Syngnat
365c72ad22 🐛 fix(tabs/theme): 修复标签顶条与标题栏主题不一致 (#715)
## 背景

V2 工作区的活动 Tab
顶部仍显示一条绿色强调线,与当前圆角标签样式不协调。同时,自定义标题栏使用独立的固定背景,切换内置或自定义主题后无法与侧栏表面颜色保持一致。

## 变更点

- 移除 V2 主工作区活动 Tab 顶部的 inset 强调条
- 保留活动 Tab 的选中背景、8px 圆角及原有交互状态
- V2 自定义标题栏改为复用侧栏的 `--gn-bg-panel-2` 主题表面
- 补充活动 Tab 和标题栏主题来源的回归断言

## 影响范围

- 仅影响 V2 主工作区 Tab 和应用自定义标题栏的视觉表现
- legacy 标题栏继续使用原有 `bgMain`,透明度与模糊逻辑不变
- Modal、Drawer 等其他 Ant Tabs 的强调条不受影响
- 不修改标签尺寸、拖拽、关闭、窗口控制或主题配置逻辑
- 无后端、数据库、依赖或配置变更

## 验证

- `npm test -- --run src/components/TabManager.adaptive-width.test.ts
src/App.sidebar-collapse.test.ts`:12/12 通过
- `npx tsc --noEmit --pretty false`:通过
- Playwright 运行时验证:标题栏与侧栏背景一致,主题 token 更新后同步变化
- Playwright 活动 Tab 样式验证:`box-shadow: none`、顶部伪元素隐藏、圆角保持 8px
- `git diff --check origin/dev...HEAD`:通过
2026-07-24 22:44:44 +08:00
Syngnat
4c0f0a8fdd 🔧 fix(ui): 清理控制台 Form 与 Modal 弃用警告
- 关闭消息发送弹窗时不再对已卸载 Form 调用 resetFields
- 缩放修复路径中 ResetWebViewZoom 不可用时最多告警一次
- 将 Drawer/Modal 的 destroyOnClose 统一迁移为 destroyOnHidden
2026-07-24 22:31:33 +08:00
AutumnNazi
a2dc8db513 🐛 fix(tabs/theme): 修复标签顶条与标题栏主题不一致
- 移除 V2 工作区活动标签顶部强调条,保留圆角与选中背景
- 让 V2 自定义标题栏跟随侧栏主题表面,同时保持 legacy 背景逻辑
- 补充标签与标题栏主题回归断言
2026-07-24 21:49:19 +08:00
Syngnat
4400fd67c0 🔧 fix(sidebar): 修复 resize 测试类型断言导致镜像构建失败
- 将 FakeHTMLElement 断言改为 unknown 中转,消除 tsc TS2352
- 恢复 image CI 中 npm run build 可通过
2026-07-24 21:42:14 +08:00
Syngnat
2a7ef109fd 🐛 fix(ssh): 修复非 id_rsa 私钥无法浏览选择与读取
- 修正 OpenFileDialog 默认目录,支持无扩展名密钥路径
- macOS 下取消错误文件名过滤,显示隐藏项以选择 ~/.ssh 密钥
- 私钥读/解析失败返回明确错误,示例改为 id_ed25519
- 补充选钥目录解析与私钥读取失败回归测试

Refs #711
2026-07-24 21:31:21 +08:00
Syngnat
e6f39d34d3 Merge remote-tracking branch 'origin/dev' into dev 2026-07-24 21:30:30 +08:00
Syngnat
ce9fdbebc7 🐛 fix(about): 移除关于页非必要滚动条 (#714)
## 背景

Issue #702 中,安装版在“已是最新版本”且页面内容可以完整展示时,关于页右侧仍会出现滚动条。原因是内容根节点额外的 18px
底部留白造成了临界溢出。

## 变更点

- 移除关于页内容根节点冗余的底部留白
- 保留详情容器原有的 `overflowY: auto`,仅在内容真实溢出时显示滚动条
- 补充设置中心布局回归断言,防止非必要底部留白再次引入

## 影响范围

- 仅影响设置中心“关于 GoNavi”页面的垂直布局
- 已是最新版本且内容可完整展示时不再出现滚动条
- 有可用更新并显示“本次更新包”等额外信息时,内容溢出仍可正常滚动
- 不修改更新检查、下载、安装或自动检查间隔逻辑
- 无后端、数据库、依赖或配置变更

## 验证

- `npm test -- --run App.settings-center.test.ts`:22/22 通过
- `npx tsc --noEmit --pretty false`:通过
- Playwright 运行时验证:最新安装版内容 591px / 容器 599px,无溢出;有更新时内容 624px / 容器
599px,保留 25px 可滚动区域
- `git diff --check origin/dev...HEAD`:通过

Closes #702
2026-07-24 21:29:46 +08:00
Syngnat
2f427d3baf 🐛 fix(tabs/query-editor): 优化标签圆角并修复搜索提示遮挡 (#713)
## 背景

Issue #695 希望统一右侧工作区标签的圆角样式。同时,查询页打开 Monaco
搜索后,顶部按钮的悬浮提示会被编辑器区域裁剪,影响操作提示阅读。

## 变更点

- 将 V2 工作区标签四角统一为 8px 圆角
- 使用尊重圆角边界的 inset 激活色,避免顶部绿色条遮住圆角或形成悬浮短条
- Monaco 查找组件可见时放开编辑器区域的浮层裁剪,保持搜索按钮及查找框位置不变
- 补充标签圆角和搜索提示显示的回归测试

## 影响范围

- 仅影响 V2 主工作区标签样式及查询编辑器查找浮层
- 不改变标签尺寸、间距、拖拽和关闭逻辑
- 不改变 Monaco 查找框位置,也不恢复顶部额外留白
- 无后端、数据库、依赖或配置变更

## 验证

- `npx vitest run src/components/TabManager.adaptive-width.test.ts`(7/7
通过)
- `npx vitest run src/components/QueryEditor.external-sql-save.test.tsx
-t "shows Monaco find button hovers without moving the find widget"`(1/1
通过)
- `npx tsc --noEmit`
- `npm run build`
- Playwright 实际页面验证标签圆角、激活色和 Monaco 搜索按钮 Tooltip

Closes #695
2026-07-24 21:29:42 +08:00
AutumnNazi
a6c83d9164 🐛 fix(about): 移除关于页非必要滚动条
- 移除关于页冗余底部留白,内容完整时不再触发滚动
- 保留内容溢出时的滚动能力并补充布局回归断言
2026-07-24 20:53:19 +08:00
AutumnNazi
82a0a02c56 🐛 fix(tabs/query-editor): 优化标签圆角并修复搜索提示遮挡
- 将 V2 工作区标签统一为四角圆角,并让激活色沿圆角自然显示
- 放开 Monaco 查找组件可见时的浮层裁剪,不改变按钮位置和顶部间距
- 补充标签圆角与查找提示显示的回归测试
2026-07-24 20:23:46 +08:00
Syngnat
cbca312a50 🐛 fix(sidebar): 将表置顶星标改为只读状态指示
- 仅为已置顶表展示非交互实心星标
- 保留右键菜单中的置顶与取消置顶入口
- 补充侧边栏置顶指示器回归测试
2026-07-24 20:20:23 +08:00
Syngnat
0c9e807674 ️ perf(sidebar): 消除左侧树拖拽改宽时的卡顿
- 拖拽与松手提交期间标记 data-sidebar-resizing,关闭 Sider 默认 transition
- 避免 Ant Design transition:all 带动工作台/DataGrid 连续 reflow
- 补充 resize 标记生命周期与 CSS 约束回归测试
2026-07-24 19:50:58 +08:00
AutumnNazi
66531b6abd feat(connection): 支持分组快捷新建与环境预设
- 在新旧侧栏分组右键菜单中增加新建连接,并在保存后自动归入目标分组
- 为连接与分组增加生产、测试、开发和本地环境预设及颜色标识
- 持久化连接环境元数据,兼容旧数据与连接包导入导出
- 补充多语言文案及前后端回归测试
2026-07-24 18:31:40 +08:00
Syngnat
b7636f5fdd Merge remote-tracking branch 'origin/dev' into dev 2026-07-24 18:13:22 +08:00
Syngnat
10db415d7a 🐛 fix(datagrid): 修复筛选字段选择失效
- 将 Select 下拉选项识别为交互目标
- 避免页内查找焦点逻辑中断字段选择
- 补充下拉选项交互目标回归测试
2026-07-24 18:12:47 +08:00
Syngnat
55b24b2d02 🐛 fix(table-designer): fix table sorting and column options (#705) (#709)
## Summary

- sort table names in natural numeric order in both the table overview
and sidebar
- preserve MySQL column default values, including explicit empty-string
defaults and supported expressions
- add per-column default, character set, collation, and comment editing
- generate complete MySQL column definitions while filtering
`DEFAULT_GENERATED`
- keep column-level character set behavior scoped to MySQL

## Testing

- `npm --prefix frontend test --
src/components/TableDesignerSqlPreview.test.tsx
src/utils/tableOverviewFilter.test.ts src/utils/columnDefinition.test.ts
src/components/tableDesignerSchemaSql.test.ts` (58 passed)
- sidebar natural-sort focused test (passed)
- `npm --prefix frontend run build` (passed; existing chunk-size warning
only)
- `go test ./internal/db ./internal/connection` (passed)
- i18n JSON validation, Go formatting check, and `git show --check`
(passed)

## Validation notes

- The full sidebar test file still has 5 unrelated source/CSS sentinel
failures. The same 5 failures reproduce against the pre-sidebar-change
baseline.
- Repository-wide frontend and Go suites contain existing
environment/baseline failures unrelated to this change.
- Docker was unavailable, so a disposable MySQL round-trip test could
not be run.
- The development page was reachable, but Playwright is not installed in
the repository, so automated UI interaction screenshots were not
produced.

## Known limitation

MySQL `SHOW FULL COLUMNS` cannot reliably distinguish no `DEFAULT`
clause from an explicit `DEFAULT NULL`. This change preserves non-null
defaults and explicit empty-string defaults without introducing a full
`SHOW CREATE TABLE` parser.

Closes #705
2026-07-24 18:03:33 +08:00
mango
2a7fcb4781 🐛 fix(table-designer): fix table sorting and column options (#705) 2026-07-24 17:55:22 +08:00
Syngnat
7398873435 Merge pull request #708 from virgosgod-maker/fix/data-viewer-refresh-total 2026-07-24 17:36:57 +08:00
Syngnat
ef625ec911 🐛 fix(datagrid): 修复空结果横向滚动条位置异常
- 实测表格 DOM 溢出与轨道宽度,轻微溢出时仍将滚动条固定到底部
- 空结果时关闭数据预览面板并清理聚焦状态,避免残留布局占位
- 扩展性能复现页支持零行数据并补充布局与预览面板回归测试
2026-07-24 17:13:39 +08:00
mango
43c6f5e391 🐛 fix(data-viewer): 刷新表数据时重新统计总数
Fixes Syngnat/GoNavi#707
2026-07-24 16:19:15 +08:00
virgosgod-maker
2b2cc231af Merge branch 'Syngnat:dev' into dev 2026-07-24 15:50:08 +08:00
Syngnat
72432b639e Merge pull request #704 from virgosgod-maker/dev
 feat(query-editor): 美化 SQL 支持仅格式化选中内容
2026-07-24 15:22:10 +08:00
Syngnat
d520c9b806 ️ perf(sidebar): 优化大型资源树折叠动画
- 延迟隐藏资源树内容,使侧栏宽度收起动画保持连续
- 稳定 Sidebar 属性并保留已加载节点,避免大量对象触发重复渲染
- 覆盖 V2、旧版与减少动态效果场景,补充折叠回归测试
- 关联问题:#697
2026-07-24 15:16:15 +08:00
mango
2307a539a8 feat(query-editor): 美化 SQL 支持仅格式化选中内容
有非空选区时只美化选中 SQL,无选区时仍美化全文。
2026-07-24 14:56:31 +08:00
Syngnat
1e4ece74a7 feat(sidebar): 优化窄宽度连接头部展示
- 移除连接头部状态徽章,释放连接名与库名显示空间
- 窄宽度时收起新建查询文字并保持操作按钮可用
- 连接名或库名截断时悬浮同时展示完整信息
- 补充响应式布局、主题对比度与悬浮提示回归测试
2026-07-24 14:46:24 +08:00
Syngnat
c76daa0727 🐛 fix(update): 修复更新完成提示被弹窗遮挡
- 新增静态反馈专用层级,确保消息提示高于嵌套弹窗和退出确认框
- 调整 Ant Design 静态反馈的全局层级配置,保持普通弹出层顺序不变
- 补充反馈层级顺序与全局配置回归测试
2026-07-24 14:15:29 +08:00
Syngnat
e8eb6366c3 feat(tabs): 默认启用双行标签展示
- 主行默认仅展示对象名,副行依次展示对象类型、连接名和数据库
- 调整设置项顺序并默认关闭 Schema 与 Host/IP
- 升级持久化版本并仅迁移未自定义的旧默认配置
- 补充默认快照、标签文案和配置迁移回归测试
2026-07-24 14:00:49 +08:00
Syngnat
340e7837a3 feat(tabs): 支持工作区标签宽度自适应
- 根据工作区可用宽度和标签数量动态分配标签宽度
- 使用 ResizeObserver 响应布局变化并限制可读宽度范围
- 通过 CSS 变量同步标签宽度并补充边界回归测试
2026-07-24 14:00:18 +08:00
Syngnat
aee4da47db 🐛 fix(sidebar): 调整折叠状态下的展开按钮位置
- 将 V2 侧栏展开按钮从标题栏移至固定工具栏顶部
- 保持展开与折叠后的焦点回迁和无障碍属性
- 补充固定栏按钮顺序、交互和样式回归测试
2026-07-24 13:59:43 +08:00
Syngnat
300eb3d48e Merge pull request #699 from AutumnNazi/fix/redis-key-detail-actions-layout 2026-07-24 13:26:14 +08:00
Syngnat
090e51c0ef Merge pull request #701 from AutumnNazi/feature/sidebar-recent-query-actions 2026-07-24 13:05:51 +08:00
AutumnNazi
0d27d2deaa feat(sidebar): 支持删除与清空近期查询
- 为每条近期查询增加删除入口,并在标题区提供清空操作
- 通过持久化可见性标记隐藏近期记录,保留完整 SQL 执行日志
- 补齐六语言文案及交互、订阅和状态持久化测试
2026-07-24 12:35:56 +08:00
Syngnat
9275e93421 🐛 fix(query-editor): 修复 Oracle 长脚本执行卡死
- 线性屏蔽 SQL 注释和字符串,避免 PL/SQL 定义检测发生正则灾难性回溯
- 仅为顶层 SELECT 解析结果表定位,避免匿名块内部查询触发元数据加载
- 新增长注释匿名块与多结果回归,验证 Oracle 过程和 SQLPlus 分隔符兼容性
2026-07-24 12:22:37 +08:00
Syngnat
d3909c7dff feat(saved-query): 支持独立 SQL 文件与自定义存储目录
- 将已存查询内容从 JSON 拆分为独立 .sql 文件,并采用可读名称和数字后缀处理冲突
- 自动迁移旧版内联 SQL 与摘要文件名,保留外部编辑并在失败时回滚
- 支持选择、迁移、打开及恢复默认存储目录,补充数据根切换串行保护
- 新增已存查询右键在文件夹中打开,并同步处理查询重命名后的文件路径
- 补齐 Wails、浏览器模拟、六语言文案及后端和前端回归测试
2026-07-24 11:29:04 +08:00
AutumnNazi
427d22d9e7 🎨 style(redis): 优化 Key 详情操作按钮布局
- 将 Key 名称、类型与 TTL/长度、操作按钮拆分为独立行
- 移除操作按钮组外层灰色容器并保留窄宽度换行
- 增加 Key 详情布局交互回归测试
2026-07-24 11:19:17 +08:00
Syngnat
bbcafe63f4 🐛 fix(update): 修复 Windows 在线更新多实例确认流程
- 安装前获取维护锁并枚举同目录进程,仅检测到其他实例时触发关闭确认
- 改用 Windows 原生系统模态对话框并先收起下载进度窗口,避免确认提示被遮挡
- 单实例直接进入安装,取消确认或退出检查中止后恢复下载完成状态
- 多语言确认文案展示实际实例数量,补齐前后端与发布工作流回归测试
2026-07-24 10:19:09 +08:00
Syngnat
7579bc6eab feat(datagrid): 精简结果工具栏并支持快捷页内查找
- 将结果视图操作改为图标按钮并补充悬浮提示
- 移除冗余状态信息并支持 Ctrl/Cmd+F 打开当前页查找
- 完善查找导航、关闭和自适应布局,避免抢占 SQL 编辑器快捷键
2026-07-23 23:13:56 +08:00
Syngnat
b595c5fdfc 🔁 sync(datagrid): 合并尾页按钮布局调整 (#686)
- 将尾页按钮图标移动到文字右侧,统一分页操作阅读顺序
- 保留 #685 的独立合并记录与两个 PR 的原始提交关系
- 限定合并结果仅修改分页按钮组件
2026-07-23 17:16:52 +08:00
Syngnat
74c2fe6039 🔁 sync(datagrid): 合并跳页输入框居中修复 (#685)
- 调整跳页数字输入框内部布局与行高,保持内容垂直居中
- 排除锁文件、错误 package 校验值与生成绑定空白噪音
- 保留当前分支已完成的侧栏样式与绑定文件内容
2026-07-23 17:16:21 +08:00
Syngnat
61f01b78d0 feat(sidebar): 支持仅折叠资源树并保留固定栏
- 折叠 V2 侧栏时仅隐藏资源树,按界面缩放保留固定操作栏
- 将 SQL 分析与 SQL 审计入口迁移至固定栏并优化小窗口滚动布局
- 增加标题栏展开入口与双向焦点回切,补充侧栏回归测试
2026-07-23 17:12:19 +08:00
Syngnat
a08520f4f3 🔧 chore(frontend): 同步 package 校验文件 2026-07-23 16:41:36 +08:00
Syngnat
d618ef381e feat(data-transfer): 完善数据库 SQL 备份与恢复
- 数据导入工作台新增数据库模式,支持 SQL 文件选择、目标库、进度、取消与重试
- 新增受连接保护约束的 ImportDatabaseSQL 接口并复用流式执行链路
- SQL 导出支持切换数据库上下文,兼顾原库备份和跨库导入
- 调整侧栏与表概览入口,备份先进入工作台确认配置再执行
- 同步 Wails 绑定、Web 运行时限制、六语文案和回归测试
2026-07-23 16:40:44 +08:00
Syngnat
1f17b5cfad 🎨 style(settings/ai): 统一设置中心与 AI 配置交互
- 移除设置导航、详情页和 AI 配置列表的冗余分隔线
- 梳理外观字号项顺序并精简日志目录重复标题
- 恢复安全与上下文选项语义色,统一供应商操作按钮
- 强化 MCP 页签、客户端选中态和折叠交互
- 拆分推荐流程与内置工具视图并补齐六语回归测试
2026-07-23 16:36:21 +08:00
Syngnat
d8c4352b66 🐛 fix(query-editor/data-grid): 修复查询结果预览与保存状态
- 修正保存队列、草稿同步及保存结果校验的生命周期位置
- 查询完成后通过本地请求切回表格数据预览
- 支持 SQLite、ClickHouse、MongoDB 及空结果集重复执行
- 避免共享 DDL 展示状态覆盖新查询结果
- 补充数据预览、DDL 状态恢复和保存状态回归测试
2026-07-23 16:34:09 +08:00
Syngnat
ba28c626fd 🐛 fix(query-editor): 修正 SQL 保存代码错位
- 恢复保存队列与组件挂载状态的声明位置
- 修正草稿同步、保存完成判断和结果关闭逻辑结构
- 恢复保存查询回归用例并补齐异步等待
2026-07-23 16:31:41 +08:00
Syngnat
3c24068190 🎨 style(data-grid/query-editor): 统一工具栏图标交互
- 将 V2 数据查看、查询结果和 SQL 编辑器操作改为纯图标按钮
- 统一工具栏操作尺寸,并保留本地化 Tooltip 与无障碍标签
- 使用状态图标精简 SQL 提交模式和提交时机选择器
- 修复事务下拉选项截断及悬浮提示与菜单重叠问题
- 补充图标布局、下拉交互和旧版兼容测试
2026-07-23 16:17:56 +08:00
Syngnat
dd9a56a70d 🐛 fix(query-editor): 修复 SQL 保存状态与退出检查竞态
- 使用最新编辑器内容维护保存查询草稿基线
- 等待保存查询加载并在退出前刷新恢复状态
- 保留保存期间新增编辑,避免旧请求覆盖最新 SQL
- 串行处理重复保存并阻止卸载后的过期回写
- 增加保存、重启恢复和退出检查竞态测试
2026-07-23 15:29:23 +08:00
Syngnat
1dcc866846 🐛 fix(update): 修复重启更新时退出确认弹窗被遮挡
- 新增应用退出确认专用层级并动态高于当前设置子弹窗
- 未保存 SQL 与关闭其他实例确认框统一使用前景层级
- 补充更新退出链路与弹层层级回归测试
2026-07-23 14:44:09 +08:00