Commit Graph

413 Commits

Author SHA1 Message Date
Syngnat
005113dd79 🐛 fix(redis): 修复列表新增与精确删除
- 对齐新版 Redis List 头尾新增的 Wails 参数契约

- 分别使用 LPUSH 与 RPUSH 保证插入位置语义

- 按索引原子删除并避免重复值误删

- 补充多语言文案与前后端回归测试

Refs #639
2026-08-05 22:33:53 +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
7ec66dc732 🐛 fix(query-editor/db): 修复运行中 SQL 无法停止
- 查询 ID 生成前支持终止执行,并统一刷新、翻页和 Mongo 多语句的取消代际
- 后端在连接建立和事务锁等待前登记取消,保留登记直到执行 owner 退出
- 使用 registration ID 防止旧任务清理同 ID 的新查询
- 补充前后端取消竞态与并发回归测试

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

Fixes #824
2026-08-03 23:26:15 +08:00
Syngnat
75f897c1ab 🐛 fix(query-editor): 修复 Cmd 点击失效表链接异常
- 表链接跳转前精确校验对象存在性并清理过期元数据
- 隔离标签、数据库及连接切换后的迟到响应并合并重复点击
- 扩展 Elasticsearch 与可选驱动代理的存在性检查及兼容回退
- 补充前后端回归测试和 Wails 绑定
2026-08-03 14:57:06 +08:00
Syngnat
3fe41f3700 feat(update): 将更新日志写入静态清单并打通 CI 生成
- 扩展 latest.json / UpdateInfo 支持 releaseNotes 字段
- latest 发版将 changelog 同步写入清单与 GitHub Release
- dev 构建按上一版基线自动生成相对更新日志
- 补充清单生成与后端映射测试
2026-08-02 13:07:26 +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
7dfe159b26 test(audit): 修复脱敏断言随机误报
- 将敏感信息检查限定到 SQL 文本和错误字段
- 避免审计 UUID、时间戳及哈希短串碰撞导致误报
2026-08-01 19:49:12 +08:00
Syngnat
c23878504d feat(db): 创建数据库支持选择字符集与排序规则
MySQL 系数据源(mysql/mariadb/diros/oceanbase 及归一化为 mysql 的
goldendb/greatdb)创建数据库时可指定字符集与排序规则,不再强制
utf8mb4;空值使用服务器默认。新增 ListDatabaseCharsets /
ListDatabaseCollations 查询 SHOW CHARACTER SET / SHOW COLLATION,
字符集/排序规则标识符仅允许字母数字下划线,防止注入。
2026-08-01 18:22:21 +08:00
Syngnat
198c58fcf3 🐛 fix(saved-queries): 缺失 SQL 文件的孤儿记录跳过加载,不再阻断退出/更新
saved_queries.json 引用的旧 .sql 文件缺失时(如用户手动删除,
或切换更新通道时迁移中断),此前 hydrateDiskFile 整体加载失败,
导致退出/更新流程弹出“检查未保存 SQL 失败,已取消退出”,更新无法进行。
现在孤儿记录被跳过并在迁移时清理,其余查询正常加载。
2026-08-01 18:22:21 +08:00
Syngnat
88434e77a9 feat(elasticsearch): 新增 REST 控制台并完善安全执行链
- 复用查询页提供 ES 控制台、模板、AI 辅助及原始与表格结果
- 新增统一解析分类、危险确认、连接保护和受控 REST 执行
- 扩展 driver agent、版本适配、Wails 绑定、多语言与文档
- 修复完整回归中发现的跨平台和前端基线用例问题

Refs #782
2026-08-01 14:58:12 +08:00
Syngnat
84dd276466 🐛 fix(driver-manager): 优化首次加载并修正版本与卡片展示
- 将驱动包元数据预热移至后台,避免状态首屏等待网络
- 复用状态快照并合并并发请求,防止重复刷新与过期响应覆盖
- 修正版本重复及历史版本选择,保证展示与安装目标一致
- 重排版本、进度和操作区域,并提升深色主操作对比度
- 补充首屏、并发、布局与性能边界回归测试
2026-07-31 23:48:27 +08:00
liuqiufeng
c259e2ebe2 feat(oracle): 支持 SID 连接模式
- 在连接弹窗中切换 Service Name 与 SID,并完善 URI 和参数回显
- 使用 SID 查询参数生成 Oracle DSN,兼容 Navicat 导入及历史配置
- 补充多语言、弹窗滚动布局和前后端回归测试
2026-07-31 22:02:11 +08:00
Syngnat
457a77d13a 🐛 fix(oracle): 修复视图 DDL 截断与 ROWID 注入问题
- 完整读取 Oracle DDL CLOB,避免元数据预览截断
- 统一对象设计器视图 DDL 获取和格式化
- 仅对物理表注入 ROWID,避免 ORA-01445
2026-07-30 23:20:03 +08:00
Syngnat
c4e7142309 🐛 fix(mac-window): 固定使用 macOS 原生窗口控制
- macOS 窗口创建时启用原生标题栏与红黄绿控制
- 移除主题切换及持久化偏好,兼容旧前端禁用调用
- 保持 Windows/Linux 自定义无边框窗口并补充回归测试
2026-07-30 21:06:12 +08:00
Syngnat
3ea3223749 🐛 fix(query-editor/logging): 修复达梦SQL美化并完善诊断日志
- 为达梦和自定义 DM8 连接启用 SQL 格式化位置占位符
- 记录 SQL 美化方言、作用域、耗时及脱敏错误信息
- 将 Wails 前端日志接入 GoNavi 应用日志文件
- 启动时输出应用版本及实际驱动模块和代理版本
- 补充达梦占位符、日志落盘与启动诊断回归测试
2026-07-30 18:17:08 +08:00
Syngnat
b64c7e92d1 ️ perf(kingbase): 消除 SQL 查询周期性探活延迟
- 成功 SQL 往返后刷新缓存连接健康时间
- 避免活跃连接跨过旧时间边界时同步重复 Ping
- 保留空闲连接探活、失效清理与重建机制
- 新增 Kingbase 查询健康时间回归测试
2026-07-30 14:32:52 +08:00
Syngnat
bd259e4e51 🐛 fix(mongodb/query-editor): 修复受限账号连接与不限行数
- MongoDB 指定数据库时保留连接校验并跳过全库枚举
- 允许查询最大行数为 0 并持久化不限设置
- 补充数据库枚举与不限行数持久化回归测试

Refs #741
Refs #752
2026-07-29 17:19:15 +08:00
Syngnat
4222bbbd48 feat(redis): 支持 List 数据倒序显示
- 为索引列增加倒序优先排序,保持默认正序不变
- 倒序读取真实尾部窗口并保留原始 Redis 索引
- 补充前后端回归测试并同步 Wails 绑定

Refs #751
2026-07-29 11:32:58 +08:00
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
liuqiufeng
9c42cfeec4 fix(update): 统一更新缓存与成功清理目录
统一 macOS、Windows 和 Linux 更新包到用户缓存目录,失败时回退系统临时目录。成功更新后清理整个 GoNavi/updates,失败时保留安装包、脚本和日志,并补充跨平台路径与清理测试。
2026-07-28 22:11:33 +08:00
Syngnat
cef273f228 feat(nacos): 新增 Nacos 数据源管理能力
- 支持 Nacos 连接测试及多命名空间资源树
- 提供配置搜索、发布、删除、历史回滚和变更监听
- 增加 Beta 发布、配置导入导出与批量操作
- 支持服务发现、实例管理、只读保护和多语言界面
- 补充 Wails 接口绑定及前后端回归测试

Refs #756
2026-07-28 15:58:22 +08:00
Syngnat
70282286fc Merge pull request #744 from AutumnNazi/fix/cloud-backup-provider-separation 2026-07-27 20:47:37 +08:00
Syngnat
770243e0da 🐛 fix(kingbase): 修复开表与 ER 图加载缓慢问题
- 解耦 Kingbase 首屏查询与编辑定位元数据加载
- 使用单次全库外键快照替代 ER 图逐表扫描
- 补充大规模表结构和异步元数据回归测试

Fixes #731
Fixes #732
2026-07-27 20:39:08 +08:00
AutumnNazi
ee53a56183 feat(cloud-backup): 支持加密云端备份与选择性恢复
- 新增 WebDAV 与 S3 独立配置、凭据和远端状态管理
- 使用 Argon2id 与 AES-256-GCM 加密连接及配置备份
- 支持分类备份、自动同步、远端预览和一次性确认恢复
- 连接与已保存查询按 ID 合并恢复,并保留本地独有数据
- 补充前后端回归测试、六语言文案和恢复失败回滚
2026-07-27 20:20:00 +08:00
mango
5a16c2b201 🐛 fix(test): 修复后端测试环境与跨平台隔离 2026-07-27 19:05:06 +08:00
Syngnat
d48c7d06d6 🐛 fix(updater): 修复状态竞态与后台进程回收 2026-07-27 00:14:03 +08:00
Syngnat
970d861c39 🐛 fix(driver-agent): 为 IPC 超时与关停增加可取消回收 2026-07-27 00:11:16 +08:00
Syngnat
e6d77cd7ab 🐛 fix(transaction): 修复前端刷新后托管事务变成孤儿并长期持有行锁
复现路径:SQL 编辑器执行 DELETE 进入托管事务后不点提交、直接刷新前端,再执行同一条 DELETE,
会卡满 innodb_lock_wait_timeout(默认 50 秒)并报 Error 1205 Lock wait timeout exceeded,
只能重启应用才能恢复。

根因:待提交事务的 ID 只存在于前端组件内存(useSqlEditorTransactionController 的
useState/useRef),持久化状态里只有 commitMode/autoCommitDelayMs 这类设置。前端一旦刷新,
残留在 a.sqlTransactions 中的条目就再也无法被提交或回滚,却仍开着并持有 pinned 连接与行锁。
原先只有显式提交/回滚与应用退出(rollbackPendingSQLTransactionsOnShutdown)两条清理路径,
刷新不经过其中任何一条。

- 新增 Wails OnDomReady 钩子(每次 WebView 导航完成即触发,刷新必然命中),
  回滚所有已无法被引用的托管事务。首次加载时事务表为空,故无副作用;
  本应用是 React SPA,正常使用中不会产生整页导航,不会误杀活跃事务
- rollbackPendingSQLTransactionsOnShutdown 抽出公共实现,审计来源区分
  app_shutdown 与 frontend_reload,便于事后区分两类自动回滚
- 补 4 项回归测试:回滚并释放会话、空表无副作用、nil 容错、已完成事务不重复回滚。
  已确认禁用钩子后首个用例必定失败(回滚 0 次)

顺带说明:界面把 Error 1205 归类为「查询超时或被取消」并建议「检查执行计划、调整超时时间」
是误导——1205 是行锁等待超时,成因是另一事务持锁。该错误语义映射未在本次修改范围内。
2026-07-26 22:11:10 +08:00
Syngnat
88b427c41a 🔥 remove(go-test): 删除后端读取源码文本断言的测试函数
- 移除 99 个仅读取同包 .go 源码做字符串包含断言的测试函数,共 3746 行
- 判据为函数内出现 os.ReadFile 读取 .go 文件且剥离字符串字面量后不调用任何生产代码
- 保留 2 个同时调用生产接口的测试函数,清理 45 个文件中失去引用的 import
- go build、go vet 通过,测试失败集合由 40 项减至 39 项且无新增,减少项为已长期失败的墓碑用例
2026-07-26 21:37:22 +08:00
Syngnat
663ef8259b 🐛 fix(app): 修复已存查询导入丢失 SQL 与连接配置并发写入互相覆盖
- saved_queries.Import 改为复制 file.Queries 再原地更新:原先直接引用底层数组,下标写会同时
  污染 file.Queries,使 replaceQueries 拿到的「磁盘旧快照」已含新值,比较 previous.SQL 相等
  而跳过写盘。同 ID 同名条目只改 SQL 时,元数据已更新但 .sql 文件仍是旧内容,新 SQL 永久丢失
- connections.json 增加包级互斥 savedConnectionsMu:savedConnectionRepository() 每次返回新
  实例,实例级锁无效。Save/Delete/Duplicate 与 migrateSavedConnectionSecrets 的
  load→修改→saveAll 序列纳入同一临界区,避免后写者用旧列表整体覆盖前写者导致连接静默丢失,
  以及 Delete 删除密文后被 Save 写回而产生的僵尸连接
- saveAll 改为临时文件 + Sync + 原子替换:os.WriteFile 先截断,进程在该窗口被杀会留下空的
  connections.json;原子替换后读者只会看到旧文件或完整新文件,只读路径无需加锁
- 补 4 项回归测试,均已确认在移除修复后必定失败(12 条并发保存、并发混合增删的 JSON 完整性、
  原子写无临时文件残留、同名改 SQL 的落盘)
2026-07-26 20:36:04 +08:00
Syngnat
6a21b75ff7 🐛 fix(export): 补齐 SQL 导出反斜杠转义漏掉的 ClickHouse 与 TDengine 方言
- isMySQLLikeDBType 更名为 dialectEscapesBackslashInStringLiteral,按语义而非协议族命名
- 新增 clickhouse/tdengine/taos:这三个方言的字符串字面量同样支持 C 风格反斜杠转义,
  上一提交漏掉会导致其 dump 还原时仍被静默改写
- 补充双向断言:漏加方言(数据被改写)与误加方言(反斜杠被写成两个)都会测试失败
2026-07-26 19:43:41 +08:00
Syngnat
1a8effb51f 🐛 fix(export,ssh,secret,explain): 修复 SQL 导出注入与六处静默数据丢失/资源泄漏
- SQL 导出:formatSQLValue 按方言转义反斜杠,修复 MySQL 系 dump 还原时静默改写数据、
  且以反斜杠结尾的值吞掉闭合引号致源库恶意行可执行任意 SQL 的问题;非 MySQL 方言保持原样
- 明文凭据:daily_secrets.json 由 0o644 改为 0o600、目录改 0o700,并对历史文件显式 Chmod
- SSH 隧道:RegisterSSHNetwork 改为确定性 network 名并复用缓存客户端,消除驱动全局 dialer
  表随重连线性增长、永久钉住 ssh.Client 的连接与 goroutine 泄漏
- xlsx 导入:单元格 r 属性列号增加 OOXML 16384 上限并提前熔断,避免篡改文件放大分配致 OOM
- 数据导出:三处非 SQL 导出入口捕获 file.Close 错误,不再在落盘失败时返回“导出成功”
- 数据根迁移:copyFile 捕获 Close 错误并补 Sync,避免被截断的副本被判定为迁移成功
- 执行计划:节点 ID 改为按 ExplainResult 派生,移除进程级全局计数器与 reset,
  修复并发诊断互相踩踏编号导致的重复 node ID 与错挂父子边
- 补充 5 个回归测试文件,含“导出→切分”闭环断言与未转义时的反向对照
2026-07-26 19:40:33 +08:00
Syngnat
702a21cbfa 🐛 fix(proxy,export): 修复转发器并发竞争泄漏与 xlsx 导出错误吞噬
- 转发器缓存改为写锁内双重检查,避免并发下重复创建 listener 造成端口与 goroutine 泄漏
- writeRowsToXlsx 通过命名返回值捕获 file.Close 错误,防止导出数据未落盘被静默忽略
2026-07-26 18:53:51 +08:00
Syngnat
2a7ef109fd 🐛 fix(ssh): 修复非 id_rsa 私钥无法浏览选择与读取
- 修正 OpenFileDialog 默认目录,支持无扩展名密钥路径
- macOS 下取消错误文件名过滤,显示隐藏项以选择 ~/.ssh 密钥
- 私钥读/解析失败返回明确错误,示例改为 id_ed25519
- 补充选钥目录解析与私钥读取失败回归测试

Refs #711
2026-07-24 21:31:21 +08:00
AutumnNazi
66531b6abd feat(connection): 支持分组快捷新建与环境预设
- 在新旧侧栏分组右键菜单中增加新建连接,并在保存后自动归入目标分组
- 为连接与分组增加生产、测试、开发和本地环境预设及颜色标识
- 持久化连接环境元数据,兼容旧数据与连接包导入导出
- 补充多语言文案及前后端回归测试
2026-07-24 18:31:40 +08:00
Syngnat
e43fc6e1a1 🐛 fix(ci): 修复 Windows 更新 MSI 测试夹具
- 为多实例确认和单实例直启用例显式固定当前 MSI 安装模式
- 在测试清理阶段恢复安装模式解析器,避免全局注入污染后续用例
- 避免临时安装目录被误判为 Portable 后提前触发包兼容性失败
2026-07-24 12:00:40 +08:00
Syngnat
d3909c7dff feat(saved-query): 支持独立 SQL 文件与自定义存储目录
- 将已存查询内容从 JSON 拆分为独立 .sql 文件,并采用可读名称和数字后缀处理冲突
- 自动迁移旧版内联 SQL 与摘要文件名,保留外部编辑并在失败时回滚
- 支持选择、迁移、打开及恢复默认存储目录,补充数据根切换串行保护
- 新增已存查询右键在文件夹中打开,并同步处理查询重命名后的文件路径
- 补齐 Wails、浏览器模拟、六语言文案及后端和前端回归测试
2026-07-24 11:29:04 +08:00
Syngnat
bbcafe63f4 🐛 fix(update): 修复 Windows 在线更新多实例确认流程
- 安装前获取维护锁并枚举同目录进程,仅检测到其他实例时触发关闭确认
- 改用 Windows 原生系统模态对话框并先收起下载进度窗口,避免确认提示被遮挡
- 单实例直接进入安装,取消确认或退出检查中止后恢复下载完成状态
- 多语言确认文案展示实际实例数量,补齐前后端与发布工作流回归测试
2026-07-24 10:19:09 +08:00
Syngnat
d618ef381e feat(data-transfer): 完善数据库 SQL 备份与恢复
- 数据导入工作台新增数据库模式,支持 SQL 文件选择、目标库、进度、取消与重试
- 新增受连接保护约束的 ImportDatabaseSQL 接口并复用流式执行链路
- SQL 导出支持切换数据库上下文,兼顾原库备份和跨库导入
- 调整侧栏与表概览入口,备份先进入工作台确认配置再执行
- 同步 Wails 绑定、Web 运行时限制、六语文案和回归测试
2026-07-23 16:40:44 +08:00
Syngnat
84d6007be9 ️ perf(driver/release): 优化驱动镜像下载与发布链路
- 将各平台驱动拆分为独立 ZIP,并为 DuckDB 同包携带运行库
- 仅生成 ZIP 下载候选,按 Gatewaysentry 与 GitHub 短测速结果调整优先级
- 扩展发布索引的归档摘要与条目元数据,强化跨平台资产校验
- 禁止裸驱动与 CI 总包进入 VPS 镜像,并校验载荷摘要和索引一致性
- 显式控制驱动镜像发布,自动清理失败暂存、过期目录和旧版本
2026-07-23 16:10:08 +08:00
Syngnat
830403b04b 🐛 fix(update): 避免旧镜像遮蔽开发版更新 2026-07-23 14:45:31 +08:00
Syngnat
83952abad4 🔧 chore(release): 将下载镜像迁移至 Gatewaysentry
- 将 stable 与 dev 的应用和驱动镜像改为 SSH/rsync 发布到 Gatewaysentry
- 新增发布载荷校验、原子切换、版本清理及 Nginx 部署工具
- Windows 发布保留原始 EXE 并增加普通 Portable ZIP,移除 Windows UPX
- 删除 Cloudflare R2 上传保留脚本并统一镜像探测命名
2026-07-23 13:08:26 +08:00
Syngnat
3ac390f0dc 🐛 fix(update): 支持 Windows 便携版 ZIP 自动更新
- 将便携版更新资产切换为普通 ZIP,并兼容复用已下载包
- 解压后映射版本化目标文件名,保留旧版 EXE 更新兼容
- 将内嵌 PowerShell 更新脚本策略收紧为 RemoteSigned
- 补充 ZIP、目标路径与启动参数回归测试
2026-07-23 13:07:03 +08:00
Syngnat
97cffa7809 feat(settings): 支持自定义并持久化日志目录
- 将日志目录配置整合到数据目录设置,支持选择、打开、恢复默认与保存
- 持久化日志目录并保留环境变量优先级,目录调整后重启生效
- 通过跨进程锁和原子写入保护数据目录与日志目录配置
- 移除重复标题并互斥目录修改操作,补齐六语言文案
- 补充桌面接口、浏览器模拟及并发回归测试
2026-07-23 11:40:17 +08:00
Syngnat
caf450d4f0 🐛 fix(import): 修复导入进度与任务停止
- 修正 SQL 文件执行进度提前完成及终态竞态
- 支持停止导入并保留已提交的部分统计
- 完善取消审计、多语言提示与回归测试

Refs #677
Refs #678
2026-07-22 22:36:19 +08:00
Syngnat
e11706f9a9 feat(release): 接入 R2 镜像并限制发布保留量
- 应用与驱动更新优先使用 R2,并保留 GitHub 回退
- stable/dev 各保留当前版本并实施 9GB 发布预算
- 增加指针校验、安全清理和发布回归测试
2026-07-22 21:43:57 +08:00
Syngnat
b272c2e39c ️ perf(jvm-monitor): 回收停止的监控会话 2026-07-22 09:36:57 +08:00