Commit Graph

1820 Commits

Author SHA1 Message Date
Syngnat
e5e80cbbe8 🐛 fix(nacos): 完善多版本连接与配置服务可靠性
- 支持 Nacos v1、v2、v3 就绪探测与受限账号连接
- 强化认证、缓存、单飞连接和关闭代际的并发边界
- 修复监听重复事件、导入身份碰撞及部分失败误报成功
- 补齐只读保护、结构化错误与六语言提示
2026-07-28 23:51:17 +08:00
Syngnat
199ab4fea1 🐛 fix(proxy): 修复 Nacos 隧道目标透传与握手取消
- 保留 Nacos 远端 Host、TLS SNI 与默认 8848 端口
- 规范化 HTTP、SOCKS5 与 SSH 代理组合路径
- 让停滞的 HTTP CONNECT 响应上下文取消并保持成功隧道可用
2026-07-28 23:51:01 +08:00
Syngnat
875de21e5a fix(update): 统一更新缓存与成功清理目录 (#771)
统一 macOS、Windows 和 Linux 更新包到用户缓存目录,失败时回退系统临时目录。成功更新后清理整个
GoNavi/updates,失败时保留安装包、脚本和日志,并补充跨平台路径与清理测试。
2026-07-28 22:40:21 +08:00
Syngnat
e41fbafefc 🐛 fix: 修复 Issue #759 (#770)
## 关联 Issue

Closes #759

## 变更内容

原逻辑在 Redis 前缀匹配拿到任意非空批次后就停止,后端又可能因单次请求的目标数量或扫描时限返回非零
cursor,导致用户仍需手动加载后续匹配项。

- 非空前缀匹配自动沿真实 Redis cursor 扫描至 `cursor=0`,跨批次合并并按 Key 去重;
- 正确处理空批次、非空部分批次和超过默认 2000 条的结果,已覆盖 2001 条自动加载场景;
- 精确搜索继续使用原有 600/1000 分页策略,普通 `*` Key 浏览行为不变;
- Redis Cluster 前缀搜索扫描全部 master 至完成,统一受 3 秒 deadline 和 10000
条结果安全上限保护;超时、超限、SCAN 或元数据错误均明确失败,不再以 `cursor=0` 返回不完整结果;
- 检测重复 cursor,避免普通加载、精确分页和“加载全部”假完成或无限请求;
- 保留 requestId 竞态保护,新搜索可安全取代进行中的“加载全部”请求。

影响范围仅限 Redis Key 搜索和相关扫描完成性,不涉及数据写入、存储格式或 Wails RPC 模型变更。

## 测试结果

- `go test ./...`:通过;
- `go vet ./...`:通过;
- Redis 扫描 race 测试连续 3 轮:通过;
- `cd frontend && npm test`:通过(418 个测试文件,3404 个测试);
- RedisViewer 严格交互测试:22/22 通过,连续稳定性复测通过;
- `cd frontend && npm run build`:通过;
- `cd frontend && npm run i18n:scan`:通过;
- `git diff --check`:通过。

覆盖边界包括:空/部分 SCAN 页、2001/10001 条结果、重复 Key、重复 cursor、精确分页、异步请求竞态、Cluster 多
master、SCAN 批次超过 COUNT、统一 deadline、结果上限和元数据错误。

## 风险说明

不涉及数据变更或兼容性迁移。前缀匹配现在会自动完成扫描,远程或稀疏 Key 空间下请求时间可能比原先更长;单节点请求仍按后端分页和 3
秒扫描预算续传。为控制内存和渲染成本,自动全量结果超过 10000 条时会明确提示失败。Cluster 前缀搜索必须在统一 3 秒内完成全部
master,否则明确返回错误,避免静默漏项。

回滚时可回退提交 `880ed671` 和 `498e9b80`。
2026-07-28 22:39:20 +08:00
liuqiufeng
9c42cfeec4 fix(update): 统一更新缓存与成功清理目录
统一 macOS、Windows 和 Linux 更新包到用户缓存目录,失败时回退系统临时目录。成功更新后清理整个 GoNavi/updates,失败时保留安装包、脚本和日志,并补充跨平台路径与清理测试。
2026-07-28 22:11:33 +08:00
mango
880ed671c9 🐛 fix(redis): 完善 Issue #759 全量扫描逻辑 2026-07-28 21:35:53 +08:00
mango
498e9b804b 🐛 fix: 修复 Issue #759 (Closes #759) 2026-07-28 20:00:53 +08:00
Syngnat
01b666216a 🐛 fix(sql-editor): 保留 PostgreSQL JSONB 问号运算符
仅对 OceanBase Oracle 启用问号位置占位符,避免格式化 PostgreSQL JSONB ?| 与 ?& 运算符时插入空格。

Refs #762
2026-07-28 19:40:45 +08:00
Syngnat
8f7b80eb8c Merge pull request #769 from virgosgod-maker/fix/issue-762 2026-07-28 19:31:01 +08:00
Syngnat
347063f136 Merge pull request #768 from virgosgod-maker/fix/issue-763 2026-07-28 19:31:01 +08:00
Syngnat
bb2a577159 Merge pull request #767 from virgosgod-maker/fix/issue-764 2026-07-28 19:31:00 +08:00
Syngnat
49ebcc5125 Merge pull request #765 from virgosgod-maker/fix/issue-753 2026-07-28 19:31:00 +08:00
Syngnat
a38dc80469 Merge pull request #766 from virgosgod-maker/fix/frontend-test-baseline-20260728 2026-07-28 19:30:59 +08:00
Syngnat
4d42ce746c feat(nacos): 完善分组服务发现交互
- 在服务发现树中按 Group 展示入口并向工作台传递初始筛选
- 统一解析分组服务名并在列表中展示服务与所属 Group
- 防止快速切换服务时旧实例响应覆盖当前选择
- 服务增删后刷新对应命名空间的侧栏分组并保护强制刷新顺序
- 补充服务路由、分组菜单、侧栏刷新和实例竞态测试
2026-07-28 19:23:07 +08:00
Syngnat
8472c56812 🐛 fix(nacos): 兼容多版本 API 与精确分组查询
- 自动探测并缓存 Nacos v1、v2、v3 API,区分接口缺失与鉴权失败
- 适配命名空间、配置、历史、Beta、服务实例和监听协议差异
- 修复 v1/v2 响应解包及 v3 跨页 Group 精确过滤
- 补充三代 API、认证降级、监听超时和命名服务回归测试
2026-07-28 19:22:43 +08:00
mango
7aaf36ac2c 🐛 fix: 修复 Issue #762 (Closes #762) 2026-07-28 19:01:39 +08:00
mango
3e933358e6 🐛 fix: 修复 Issue #763 (Closes #763) 2026-07-28 18:30:23 +08:00
mango
30d6257b04 🐛 fix: 修复 Issue #764 (Closes #764) 2026-07-28 18:16:32 +08:00
mango
a37dc1c469 🐛 fix(test): 修复前端基线测试断言 2026-07-28 17:48:31 +08:00
mango
67198e5a9c 🐛 fix: 修复 Issue #753 (Closes #753) 2026-07-28 17:31:32 +08:00
Syngnat
0f78637ea3 🐛 fix(bindings): 修复 Nacos 模型类边界
- 恢复 StartSecurityUpdateRequest 的完整类定义
- 将 Nacos 模型声明保持在 app 命名空间层级
- 通过干净依赖安装、前端生产构建和 TypeScript 检查
2026-07-28 16:38:09 +08:00
Syngnat
6fc11c4c8b 🐛 fix(redis): 修复字段弹窗旧值与缩放布局
- 打开字段和列表项时同步初始化编辑值
- 重建并受控更新 Monaco 模型避免沿用上次内容
- 调整编辑弹窗为弹性布局并随窗口缩放填充
- 统一 V2 弹窗外壳与编辑器背景样式
2026-07-28 16:01:02 +08:00
Syngnat
d3fabe29d4 🐛 fix(theme): 统一 Monaco 与通用弹窗主题细节
- 统一 Monaco 编辑器背景变量并避免全局主题相互污染
- 为自定义主题补充编辑器表面变量及兼容处理
- 区分 DataGrid 数据编辑器与 SQL 定义编辑器字号
- 修复 V2 输入框重复边框和弹窗关闭按钮错位
- 支持可缩放弹窗内容及 Monaco 编辑器自适应填充
2026-07-28 16:00:24 +08:00
Syngnat
cef273f228 feat(nacos): 新增 Nacos 数据源管理能力
- 支持 Nacos 连接测试及多命名空间资源树
- 提供配置搜索、发布、删除、历史回滚和变更监听
- 增加 Beta 发布、配置导入导出与批量操作
- 支持服务发现、实例管理、只读保护和多语言界面
- 补充 Wails 接口绑定及前后端回归测试

Refs #756
2026-07-28 15:58:22 +08:00
Syngnat
ce9f5cffb9 🐛 fix(oracle): 修复大对象查询导致客户端崩溃
- 限制交互查询中 BLOB、CLOB 和 LONG 字段的预览大小
- 将默认预取行数降至 25,控制大对象批量加载内存
- 保持流式导出完整内容并补充回归测试
2026-07-28 15:28:23 +08:00
Syngnat
b806f17cbb Merge remote-tracking branch 'origin/dev' into dev 2026-07-28 14:10:33 +08:00
Syngnat
71ba2f4b7b 🐛 fix(dameng): 修复设计表无法读取表注释 (#758)
## 变更内容

- 从达梦表注释字典视图补充读取表备注
- 将表注释安全追加到建表 DDL,并在元数据查询失败时保留基础 DDL
- 增加 schema、注释转义、重复追加及真实查询链路回归测试

## 测试

- `go test -tags gonavi_dameng_driver ./internal/db -count=1`
- `go test ./internal/db -count=1`
- `go vet -tags gonavi_dameng_driver ./internal/db`

Closes #737
2026-07-28 14:09:51 +08:00
Syngnat
0674216d53 🐛 fix(sidebar): 将 PostgreSQL 分区表归入主表
- 读取 PostgreSQL 分区父子关系并隐藏分区主表行数
- 在主表下增加 Partitions 分组并保留分区表操作能力
- 兼容多级分区、跨 schema 显隐及异常元数据
- 补充分区树接入测试与多语言文案

Refs #750
2026-07-28 13:58:56 +08:00
Syngnat
19bb9d633b 🐛 fix(data-grid): 刷新总数后跳转尾页
- 为表数据视图增加独立尾页刷新回调
- 按当前筛选条件执行精确 COUNT 后计算最新页码与偏移
- 丢弃过期计数请求并在计数失败时停止旧尾页查询
- 覆盖数据增减、并发翻页和兼容回退测试

Refs #706
2026-07-28 11:31:37 +08:00
Syngnat
33ddee28ff 🐛 fix(sidebar): 修复表名快捷复制
- 为表节点菜单绑定 macOS Command+C 与 Windows/Linux Ctrl+C
- 使用捕获阶段处理快捷键并复制当前菜单表名
- 增加平台映射、非法组合和最新节点回归测试

Refs #736
2026-07-28 11:31:14 +08:00
AutumnNazi
de26949a5e 🐛 fix(dameng): 修复设计表无法读取表注释
- 从达梦表注释字典视图补充读取表备注
- 将表注释安全追加到建表 DDL,并保留元数据查询失败降级
- 增加 schema、转义、去重及真实 GetCreateStatement 回归测试
2026-07-28 10:44:16 +08:00
Syngnat
c39fa3e8fe 🐛 fix(window): 遵循启动最大化偏好并恢复窗口尺寸
- 原生窗口统一以普通状态启动,避免关闭偏好后仍被强制最大化
- 关闭偏好时恢复持久化尺寸与位置,并阻止启动瞬态覆盖窗口数据
- Windows、Linux 与 macOS 开启偏好时统一使用窗口最大化
- 更新启动窗口文案与跨平台回归测试

Refs #703
2026-07-28 10:43:06 +08:00
Syngnat
3156d8df7f 🐛 fix(update): 恢复检查更新按钮加载动效
- 为设置中心加载图标恢复持续旋转
- 保留其他界面的减少动态效果策略
- 补充 reduced-motion 样式回归测试
2026-07-28 09:55:48 +08:00
Syngnat
861d4ace3f 🐛 fix(redis): 将 Key 搜索调整为前缀匹配
- 移除搜索 pattern 的前导通配符,避免中段 Key 误命中
- 将搜索模式和六语言文案由模糊统一为前缀
- 更新模式生成与命名空间筛选回归测试
2026-07-28 09:42:12 +08:00
Syngnat
a133bf4b6a 🔧 chore(issue): 完善需求模板并增加中英文支持
- 细化功能建议的场景、痛点、方案与验收信息
- 为问题反馈和功能建议增加独立英文模板
- 对齐中英字段结构并修正复选框必填配置
2026-07-28 08:55:04 +08:00
Syngnat
c192b6cc3a 🐛 fix(dameng): 修复索引元数据查询与错误提示
修正 ALL_IND_COLUMNS 与 ALL_INDEXES 的索引归属关联;保留复合索引顺序、唯一性与索引类型元数据;索引加载失败时显示错误,并补齐回归测试和多语言文案。

Fixes #735
2026-07-27 22:57:50 +08:00
Syngnat
8ed3fb9413 Merge remote-tracking branch 'origin/dev' into dev 2026-07-27 22:33:41 +08:00
Syngnat
3b70fcc9c8 fix: 为检查更新按钮添加加载状态 (#748)
- 在更新管理 hook 中暴露检查更新中的 loading 状态
- 检查更新请求结束后统一复位 loading 状态
- 关于页检查更新按钮接入 loading 动画
- 补充测试覆盖检查中的 pending 状态

Fixes #730
2026-07-27 22:24:13 +08:00
Syngnat
5db921c99e 🐛 fix(ai): 隐藏 Claude CLI 后台控制台窗口 (#749)
## 背景

Windows 下选择 Claude CLI 作为当前 AI Provider 后,执行 SQL 美化、AI 洞察等会调用 Claude CLI
的功能时,会弹出 Claude 控制台窗口并打断界面操作。

Closes #694

## 变更点

- 统一 Claude CLI 认证检查、非流式聊天与流式聊天的命令创建入口
- Windows 子进程启用 `HideWindow` 与 `CREATE_NO_WINDOW`,同时保留已有启动标志
- 通过 build tag 保持 macOS/Linux 原有进程行为
- 新增 Windows 回归测试,覆盖隐藏窗口参数和既有 flags 保留逻辑

## 影响范围

- 仅影响 Claude CLI Provider 在 Windows 上启动后台子进程的窗口行为
- 不修改 AI 配置、请求参数、认证流程或前端交互
- 不新增依赖,不涉及数据迁移;macOS/Linux 行为不变

## 验证

- `go test ./internal/ai/provider -run ClaudeCLI -count=1`
- `go test ./internal/ai/service -count=1`
- `go vet ./internal/ai/provider`
- Linux amd64 与 macOS amd64 包级交叉编译通过
2026-07-27 22:23:54 +08:00
Syngnat
92001b7fe9 feat(sidebar): 支持侧边栏宽度随拖动实时调整 (#747)
## 背景

现有侧边栏拖拽过程中只移动一条 ghost 指示线,真正的侧边栏宽度要到 mouseup 或 blur
时才写入,因此左侧连接区域和右侧查询工作区不会随鼠标即时变化。

Closes #721

## 主要变更

- 使用 requestAnimationFrame 合并 mousemove,在每帧通过 Sider CSS
宽度变量实时更新侧边栏与工作区布局
- 保留拖动期间禁用 Ant Design width transition 的机制,避免额外动画造成滞后
- Store 宽度仍只在拖动结束时提交一次,避免每帧触发 React 重渲染和配置持久化
- 提交后保留实时宽度覆盖两帧,等待 React 绘制最终宽度后再清理,避免交接闪动
- 移除不再需要的侧边栏 ghost 指示线
- 补充实时预览、最终提交、blur、自愈和卸载清理测试

## 影响范围

- Legacy 与 V2 主侧边栏共用该实时拖拽行为
- 不改变侧边栏最小/最大宽度、折叠行为和持久化格式
- 不影响日志面板、AI 面板、Redis 面板等独立分隔条

## 验证

- 侧边栏及相关布局测试通过:10/10
- TypeScript 类型检查通过
- Vite 生产构建通过,仅有项目现有 chunk-size warning
2026-07-27 22:19:57 +08:00
Syngnat
85c3319680 fix(redis): 避免 Redis 搜索因稀疏 SCAN MATCH 返回空结果 (#746)
fixes #738

Redis SCAN MATCH 可能连续返回空批次,但后续 cursor 页仍然存在匹配 key。
此前搜索模式最多扫描 16 轮,可能导致首次点击搜索无数据,而点击“加载更多”后才出现结果。

移除搜索模式的固定轮数限制,改由已有的搜索时间上限和目标数量限制兜底。
新增回归测试,验证搜索可以继续越过 16 个空匹配页并返回后续结果。
2026-07-27 22:19:49 +08:00
Syngnat
89503cdb71 🐛 fix(query-editor): 修复 SQL 美化后横向视口偏移 (#745)
## 背景

关闭自动换行时,超长单行 SQL 会把 Monaco 编辑器横向滚动到右侧。执行 SQL
美化后,文本已经被拆成多行并回到左侧,但编辑器仍保留格式化前的横向滚动位置,导致当前视口停留在右侧空白区域,直到用户再次点击编辑器。

Closes #696

## 修复内容

- SQL 格式化通过 Monaco executeEdits 成功更新文本后,将横向滚动位置重置到起点
- 保留原有格式化内容、选区处理、纵向滚动和 undo/redo 行为
- 补充超长单行 SQL 在关闭自动换行时的横向滚动回归测试

## 影响范围

- 仅影响查询编辑器中成功执行 SQL 美化后的横向视口位置
- 不修改 SQL formatter 配置、格式化结果、快捷键注册或编辑器布局
- 开启自动换行时归零操作为幂等行为,不改变现有展示

## 验证

- QueryEditor 完整组件测试通过:280/280
- TypeScript 类型检查通过
- Vite 生产打包通过,仅有项目现有 chunk-size warning
2026-07-27 22:19:41 +08:00
AutumnNazi
cdc484fd96 🐛 fix(ai): 隐藏 Claude CLI 后台控制台窗口
- 统一认证检查、非流式与流式请求的 Claude CLI 命令创建
- Windows 启用 HideWindow 与 CREATE_NO_WINDOW,并保留已有启动标志
- 增加跨平台进程配置与 Windows 回归测试
2026-07-27 22:15:52 +08:00
Syngnat
0f6834283c 🐛 fix(ci): 提升驱动元数据探测稳定性
为元数据探测增加重试,并在 UPX 压缩产物持续启动失败时改用临时解压副本探测。

补充 exit 127 回归测试,并修复 Windows 宿主下跨平台清单测试夹具。
2026-07-27 22:11:18 +08:00
liuqiufeng
c4d172030e fix: 为检查更新按钮添加加载状态
- 在更新管理 hook 中暴露检查更新中的 loading 状态
- 检查更新请求结束后统一复位 loading 状态
- 关于页检查更新按钮接入 loading 动画
- 补充测试覆盖检查中的 pending 状态

Fixes #730
2026-07-27 22:09:20 +08:00
AutumnNazi
cebf256a44 feat(sidebar): 支持侧边栏宽度随拖动实时调整
- 使用 CSS 宽度变量与 RAF 实时更新侧边栏及工作区布局
- 仅在拖动结束后持久化最终宽度,避免每帧触发 Store 重渲染
- 移除侧边栏 ghost 指示线并补充交互清理回归测试
2026-07-27 21:40:21 +08:00
liuqiufeng
5255aa221d Merge branch 'Syngnat:dev' into dev 2026-07-27 21:23:56 +08:00
liuqiufeng
203e8aac6c fix(redis): 避免 Redis 搜索因稀疏 SCAN MATCH 返回空结果 2026-07-27 21:22:22 +08:00
Syngnat
32eed103a4 feat(redis): 支持按命名空间快速模糊筛选
- 为 Redis Key 目录增加完整路径快捷筛选入口
- 自动回填搜索框并切换到模糊匹配模式
- 补齐多语言文案、无障碍标签和交互回归测试

Fixes #692
2026-07-27 21:21:21 +08:00
AutumnNazi
df87e50b33 🐛 fix(query-editor): 修复 SQL 美化后横向视口偏移
- SQL 格式化完成后重置 Monaco 横向滚动位置
- 保留格式化内容、选区、纵向滚动与撤销行为
- 补充超长单行 SQL 非自动换行场景回归测试
2026-07-27 21:10:04 +08:00