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 |
|
Syngnat
|
89b65cfb2d
|
⚡️ perf(result-diff): 主动回收过期比对会话
|
2026-07-22 09:00:33 +08:00 |
|
Syngnat
|
375b472143
|
⚡️ perf(db-cache): 防止释放竞态复活数据库连接
|
2026-07-22 07:47:34 +08:00 |
|
Syngnat
|
f64c4a4b98
|
⚡️ perf(db-cache): 合并并发冷连接并缩短缓存锁
按连接缓存键合并并发建连,避免同一数据源瞬间创建重复物理连接。
将慢速 Close 移出全局缓存锁,并保持每个调用的连接保活策略,补充并发回归测试。
|
2026-07-22 00:49:18 +08:00 |
|
Syngnat
|
446707698f
|
✨ feat(table-copy): 新增整表复制与自动副本命名
- 在表概览及新旧侧栏右键菜单接入复制整表入口与确认、进度和刷新反馈
- 按 source_copyN 原子创建目标表并复制列、索引、默认值及全部数据
- 处理 PostgreSQL 生成列、identity/serial 序列校准与失败清理
- 限定安全数据源与连接保护策略,阻止分区表、RLS 及引用型存储引擎
- 加固 MySQL/PostgreSQL 元数据标识符处理并补齐六语种文案
- 增加后端、能力矩阵、菜单接线和国际化回归测试
|
2026-07-21 13:27:24 +08:00 |
|
Syngnat
|
60d172254d
|
🐛 fix(update): 安装前确认并安全关闭当前安装的全部实例
- 安装更新前先确认关闭当前安装目录下的 GoNavi 实例,并继续执行未保存 SQL 退出保护
- 按可执行文件路径枚举并复核进程身份,优雅关闭超时后再强制终止,避免 PID 复用误杀
- 通过全局维护事件阻止更新期间启动新实例,并由 PowerShell 更新器完成跨权限无空窗交接
- 同步更新前端交互、多语言提示、Wails 绑定及 Windows 发布资产校验
|
2026-07-21 10:55:08 +08:00 |
|
Syngnat
|
2597d087ad
|
✨ feat(windows): 支持 MSI 主程序严格单实例启动
- 仅对带 MSI 安装标识的 Windows 主程序启用单实例门禁,Portable 与特殊运行模式保持原行为
- 重复启动通过命名事件唤醒首个窗口,并兼容 Wails 运行时尚未就绪的激活请求
- 新增并发抢占、窗口激活与安装模式测试,覆盖同一安装仅保留一个主实例
|
2026-07-21 10:49:52 +08:00 |
|
Syngnat
|
19d962d9ba
|
✨ feat(data-export): 增强备份进度与原子写入
- 为整库与 Schema 备份补齐逐对象进度和最终文件路径
- 通过临时文件同步落盘和原子替换保护已有完整备份
- 增加任务进度及失败保留回归测试
|
2026-07-20 13:43:20 +08:00 |
|
Syngnat
|
63ffa12958
|
🐛 fix(connection): 修复多数据源连接与浏览异常
- 修复 Milvus 表概览元数据查询与 SELECT 预览路由异常
- ClickHouse 非标端口 Native 握手超时后继续 HTTP 自动探测
- Elasticsearch 连接测试与索引枚举解耦,避免健康服务误判
- 更新可选驱动 revision 并补充回归测试
|
2026-07-20 10:55:19 +08:00 |
|
Syngnat
|
c4f24a6245
|
🐛 fix(data-export): 自动补齐导出文件格式后缀
- 为 CSV、XLSX、JSON、Markdown、HTML 和 SQL 保存对话框绑定对应过滤器并统一补齐扩展名
- 覆盖单表、查询、批量 SQL、数据库、Schema 与 SQL 审计导出路径
- 防止补后缀后的目标绕过覆盖确认,并补充真实落盘、多语言与安全回归测试
|
2026-07-19 14:27:00 +08:00 |
|
Syngnat
|
2428fe6cc5
|
🐛 fix(tdengine): 修复查询结果仅显示执行日志
- TDengine 只读查询跳过不支持的多结果集探测
- 保证可选驱动代理通过普通查询返回完整行列数据
- 补充应用层与驱动层回归测试
Fixes #610
|
2026-07-19 13:32:52 +08:00 |
|
Syngnat
|
94ad5ae2f6
|
✨ feat(connection): 支持自定义 SQL 探活
- 新增连接级自定义探活 SQL 配置与多语言表单校验
- 限制单条 SELECT/WITH 并使用可取消的超时查询
- 隔离陈旧探活策略,避免配置错误驱逐健康连接
Fixes #611
|
2026-07-19 12:29:21 +08:00 |
|
Syngnat
|
3aea725f7b
|
✨ feat(import-export): 支持 SQL 导出前删除同名对象
- 新增默认关闭的 DROP IF EXISTS SQL 导出选项和数据删除提示
- 覆盖数据库、Schema、单表、批量导出及工作台入口
- 按方言生成逆序 DROP 前导段并保持纯数据与旧 API 兼容
Fixes #514
|
2026-07-18 18:20:30 +08:00 |
|
Syngnat
|
fd093b3325
|
✨ feat(clickhouse): 支持自定义连接兼容 JDBC DSN
- 解析 ClickHouse 与 JDBC 风格 DSN 并映射协议、TLS、认证及数据库参数
- 统一连接缓存、DDL、数据同步与导出 driver-agent 生命周期
- 保持 DSN 加密存储并补充前后端回归测试和多语言提示
Fixes #383
|
2026-07-18 17:48:19 +08:00 |
|
Syngnat
|
0136b87311
|
🐛 fix(proxy): 避免全局代理影响数据库连接
移除数据库和 Redis 连接对全局代理的隐式继承
保留连接自身代理与 HTTP 隧道配置并修正缓存释放链路
同步六种语言的代理作用域说明并增加回归测试
Fixes #347
|
2026-07-18 16:43:39 +08:00 |
|
Syngnat
|
5f5b28ced3
|
🐛 fix(schema): 修复 PostgreSQL 模式备份恢复与重命名
- 模式备份脚本写入安全转义的 CREATE SCHEMA IF NOT EXISTS
- 支持仅大小写变化的 PostgreSQL 模式重命名
- 补充备份头顺序、非 PostgreSQL 隔离和模式 DDL 回归测试
Fixes #480
|
2026-07-18 15:51:48 +08:00 |
|
Syngnat
|
15fba1d89f
|
✨ feat(import-export): 优化数据表导入导出能力
- 修复表格格式导出时空值显示为 null 的问题
- 支持按列导出并保持字段顺序
- 支持导入列与数据库字段映射及冲突校验
- 隔离并发导入任务进度并完善元数据回退
Fixes #646
|
2026-07-18 15:17:54 +08:00 |
|
Syngnat
|
7017db418b
|
🐛 fix(updater): 修复 MSI 更新后任务栏图标失效与桌面快捷方式重建
- 自动迁移引用失效 MSI 缓存图标的旧任务栏固定项并刷新 Shell
- 在在线更新前备份桌面快捷方式状态,成功或失败后安全恢复
- 将桌面快捷方式拆分为条件安装组件并补充 Windows 回归测试
|
2026-07-18 13:48:35 +08:00 |
|
Syngnat
|
d0a6a97f71
|
🐛 fix(sql-file): 修复整库备份导入失败
Fixes #662
|
2026-07-17 23:37:53 +08:00 |
|
Syngnat
|
54f18cdd2f
|
🐛 fix(driver-agent): 阻止运行不匹配的驱动代理
- 连接前复用安装阶段的严格 revision 与 metadata 校验
- 对旧版或无法验证的 agent 返回明确重装错误而非继续运行
- 覆盖 stale、metadata 失败、当前版本和自定义驱动边界
- 隔离 SQL 审计测试对本机已安装 agent 的依赖
|
2026-07-17 17:06:44 +08:00 |
|
Syngnat
|
d3dee295d6
|
🐛 fix(query-results): 修复 SQLite 与 SQL Server 查询结果空页
- SQLite 只读查询优先普通 Query,并安全降级不支持的多结果集接口
- SQL Server 在结果集边界前恢复未扫描数据,保持 data/affectedRows 顺序
- 普通与事务查询过滤状态空壳,修正结果展示与审计返回行数
- 更新 SQL Server driver-agent revision 并补充 SQLite、MSSQL 回归测试
|
2026-07-16 20:24:39 +08:00 |
|
Syngnat
|
c90dcce859
|
🐛 fix(driver-agent): 修复驱动重装循环与旧资产复用
- 在线重装与本地导入统一使用 staging 并严格校验 agent revision
- 旧候选失败时继续回退,激活异常时恢复原驱动与运行文件
- 修复公共驱动源码变更被误判为单一驱动的问题并补齐 Trino
- 显式传播依赖枚举失败,避免生成部分 revision 指纹
- 将驱动发布契约回归接入开发版与正式版构建流程
|
2026-07-16 15:57:49 +08:00 |
|
AutumnNazi
|
2400823ca4
|
🐛 fix(sqlite): 修复表概览行数与大小统计
- 通过 driver-agent 为 SQLite 表列表补充精确行数与存储占用
- 使用 dbstat 区分数据页和索引页并支持相对大小展示
- 区分未知统计与真实零值并补充前后端回归测试
|
2026-07-16 12:44:18 +08:00 |
|
autumn
|
4df1dac2c2
|
✨ feat(data-grid): 支持查询结果导出 INSERT SQL
- 导出弹窗新增 INSERT SQL 格式并支持选中行、当前页和全部结果
- 单表查询自动映射真实表名与字段类型,连表结果使用带方言引号的 <table_name> 占位符
- 复用流式导出与批量 INSERT 生成逻辑,兼容 PostgreSQL 布尔字面量
- 补充前后端回归测试,覆盖单表、连表、别名和占位表场景
|
2026-07-16 10:58:00 +08:00 |
|
Syngnat
|
176b100274
|
🐛 fix(app): 修复品牌图标与 SQLite 查询展示
- 修复 Windows、macOS 与关于页的品牌图标展示及资源裁切问题
- 补齐 SQLite 表记录数与 SELECT 查询结果渲染
- 增加品牌图标和 SQLite 回归测试
|
2026-07-15 22:53:47 +08:00 |
|
Syngnat
|
d87e314880
|
🎨 style(brand): 吉祥物品牌图标可选,并同步 macOS Dock
新增 10 款品牌吉祥物资源与设置页选择器;标题栏/关于页/favicon 跟随切换,
macOS 通过原生 API 更新 Dock 图标(满铺浅蓝 Dock 专用图)。
同步默认 appicon 与 README 品牌展示。
|
2026-07-15 19:55:20 +08:00 |
|
tianqijiuyun-latiao
|
89c25e3019
|
🐛 fix(updater): 阻止 Windows 多实例并发安装更新
|
2026-07-15 15:26:53 +08:00 |
|
Syngnat
|
8a1c1842ee
|
✨ feat(saved-query): 支持多级已存查询分组
- 新增已存 SQL 分组的持久化模型与后端管理接口
- 支持创建、编辑、嵌套、排序、移动和删除分组
- 在侧栏树和菜单中提供分组管理与未分组查询视图
- 同步 Wails 绑定、六种语言文案及前后端回归测试
|
2026-07-14 17:09:27 +08:00 |
|
Syngnat
|
1b3137d947
|
🐛 fix(transaction): 修复匿名SQL块自动提交
- 区分匿名 BEGIN...END 块与显式事务控制语句
- 统一前后端方言判定并挂起 Oracle、达梦和 SQL Server 块内 DML
- 补充编辑器、事务控制器及 SQL Server 回滚链路回归测试
|
2026-07-14 12:22:07 +08:00 |
|