Commit Graph

657 Commits

Author SHA1 Message Date
Syngnat
b7d2908a1b 🐛 fix(update): 更新与驱动检测优先使用镜像
- 契约变更:更新检查在镜像清单有效时立即返回,仅镜像失败后顺序回退 GitHub
- 驱动网络检测优先探测镜像,失败后再检查实际 GitHub 与 Go 模块回退端点
- 区分镜像不可用但回退可用和全部下载链路不可用,并同步六种语言文案
- 补充镜像短路、条件回退和驱动网络状态回归测试
2026-08-11 13:25:51 +08:00
Syngnat
cb4a4fefd3 Merge remote-tracking branch 'origin/dev' into dev 2026-08-11 11:39:27 +08:00
Syngnat
4d5c0e6bb9 feat(cli): 新增独立命令行与发布链
- 新增无头运行时及连接、查询、导出、批处理、审计和 MCP 命令
- 复用活动数据根、密文存储与跨进程锁,落实写入安全和取消语义
- 增加六平台 CLI 归档、独立校验和、Docker、npm 与 WinGet 分发
- 隔离 GUI/CLI 更新资产并强化 macOS 签名与公证门禁
- 补充并发、审计、事务及发布契约回归测试

Refs #902
2026-08-11 10:34:58 +08:00
Syngnat
e25d89759c ️ perf(download): 启用八路 HTTP Range 并发下载
- 探测服务端 Range 支持并以八个分片并发写入文件
- 保留单路回退、下载进度汇总与 SHA-256 完整性校验
- 补充更新包及驱动资产并发下载回归测试
2026-08-11 09:09:49 +08:00
Syngnat
3adedff09c 🐛 fix(messaging): 避免字段元数据读取样本消息 (#913)
## 背景与问题

Kafka、MQTT 和 RocketMQ 的 `GetColumns` 会读取最多 20
条实际消息并推断动态字段。查看字段元数据因此可能产生等待、订阅或 Broker 消费活动,并要求额外消息读取权限。

## 变更点

- Kafka、MQTT 和 RocketMQ 的 `GetColumns` 只返回静态消息字段,不再调用 `FetchMessages`
- `GetAllColumns` 继续复用静态 `GetColumns`,批量字段加载也不会读取消息
- 保留显式 `SELECT` 查询消息及其动态结果字段行为
- 为三类消息服务补充回归断言,验证字段元数据读取次数为 0,并精确校验静态字段集合

## 影响范围

- 字段元数据与自动补全不再展示从样本消息推断出的动态字段
- 实际查询结果仍会根据消息内容返回动态字段
- 不影响显式消息查询、发布及 Topic 元数据能力

## 验证

- `go test ./internal/db -run
"Test(KafkaGetColumnsReturnsStaticFieldsWithoutFetchingMessages|MQTTQueryExecAndColumns|RocketMQQueryExecAndColumns)$"
-count=1`
- `go test ./internal/db -count=1`
- 独立对抗性代码审查通过;审查发现的字段断言子串误匹配已改为精确匹配

Closes #898
2026-08-11 09:05:12 +08:00
Kunghim
93fa4a7630 🐛 fix(messaging): 避免字段元数据读取样本消息 2026-08-10 22:22:18 +08:00
Kunghim
aaf3397e6c 🐛 fix(test): 统一 JVM fixture JDK 工具链 2026-08-10 22:20:35 +08:00
mango
3243082c8e 🐛 fix(sidebar): 修复外部 SQL 缺失目录恢复 (#896)
Fixes #896
2026-08-10 17:23:10 +08:00
kunghim
4e30bc82a9 🐛 fix(ai): 修复 Windows CodeBuddy Git Bash 解析 2026-08-10 15:20:31 +08:00
Kunghim
2330a5a52d Merge upstream/dev into fix/884-composite-primary-key 2026-08-09 21:02:30 +08:00
Kunghim
52cd1936f7 fix(sync): support composite primary keys 2026-08-09 19:53:24 +08:00
Syngnat
56b46d95a8 fix(sync): constrain TDengine and IoTDB targets to append writes (#891)
## Summary

- expose append-only capability for TDengine and IoTDB targets
- constrain the delivery UI to INSERT/append and remove delete
propagation
- block mutation and delete configurations during backend preflight
- add Go and frontend regression coverage

## Verification

- Go sync capability and preflight regression tests passed
- frontend delivery and Wails DTO regression tests passed
- frontend production build passed
- Wails desktop build passed

Closes #883
2026-08-09 15:56:59 +08:00
Syngnat
01a7a6cbf0 🐛 fix(sqlserver): 避免 DDL 查看伪成功 (#890)
## 背景与问题

SQL Server 的 GetCreateStatement 会返回未支持的占位注释且不返回错误,调用方会将其视为成功 DDL。

Closes #882

## 变更点

- 原生 SQL Server DDL 不可用时返回明确、本地化的 unsupported 错误。
- 让既有 DDL fallback 使用字段和索引元数据生成可执行的 CREATE TABLE。
- 补充 SQL Server 原生错误和 fallback 控制流回归测试。
- 补齐六种语言的错误提示。

## 影响范围

- SQL Server DDL 查看不再显示伪成功的占位注释。
- 元数据可读取时,DDL 视图将展示 fallback 生成的表定义、主键、默认值和索引。
- 若 fallback 元数据读取失败,既有 UI 将展示后端错误。

## 验证方式

`	ext
go test -tags gonavi_sqlserver_driver ./internal/db -run
TestSQLServerMetadataErrorsUseCurrentLanguage -count=1
go test ./internal/app -run
TestResolveCreateStatementWithFallback_SQLServerBuildsFallbackDDL
-count=1
go test ./shared/i18n -run Test -count=1
` 

## 风险与回滚

未涉及数据库迁移或构建链路。没有真实 SQL Server Driver Agent
环境,真实服务端元数据兼容性仍待补充验证;如需回滚可直接回滚本 PR。
2026-08-09 15:56:57 +08:00
Syngnat
545ff37f6c 🐛 fix(rabbitmq): 避免字段元数据读取队列消息 (#889)
## 背景与问题

RabbitMQ 的 GetColumns 为推断 Payload 动态字段,会调用队列 /get 接口并使用
ck_requeue_true。该操作会实际读取并重新投递消息,使本应只读的字段元数据读取产生 Broker 副作用。

Closes #881

## 变更点

- GetColumns 仅返回 RabbitMQ 静态消息字段,不再读取队列样本消息。
- 保留 SELECT 查询的消息预览逻辑。
- 增加回归断言,确保普通字段元数据读取不会请求 /api/queues/{vhost}/{queue}/get。

## 影响范围

- 字段元数据和全库字段搜索不再触碰真实队列消息。
- payload.*、headers.*、properties.* 等样本推断字段不再自动出现在元数据中;项目当前没有显式样本读取入口。

## 验证方式

`	ext
go test ./internal/db -run RabbitMQ -count=1
` 

## 风险与回滚

不涉及数据迁移或构建链路。若需要恢复隐式动态字段推断,可回滚本 PR。
2026-08-09 15:56:54 +08:00
mango
bb882faac7 🐛 fix(sync): 明确未迁移索引并提供补救 DDL (#885)
Fixes #885
2026-08-09 15:49:18 +08:00
mango
f887deb44c 🐛 fix(rocketmq): 支持经隧道访问隔离网络 (#886)
Fixes #886
2026-08-09 14:22:41 +08:00
Kunghim
2b90a62159 fix(sync): constrain time-series targets to append writes 2026-08-09 14:11:19 +08:00
Kunghim
664c7a05d3 Merge remote-tracking branch 'upstream/dev' into fix/882-sqlserver-ddl-unsupported 2026-08-09 13:33:05 +08:00
Kunghim
52488cf3f7 🐛 fix(sqlserver): 避免 DDL 查看伪成功 2026-08-09 13:32:51 +08:00
mango
f74ebb05a5 🐛 fix(mongodb): 支持 SRV 连接使用 SSH 隧道 (#887)
Fixes #887
2026-08-09 13:23:27 +08:00
Kunghim
93fbb013e5 🐛 fix(rabbitmq): 避免字段元数据读取队列消息 2026-08-09 12:54:51 +08:00
Syngnat
390a249105 feat(data-import): 重构大文件导入与安全任务运行时
- SQL、CSV、JSON 与 XLSX 改为资源受限的流式解析,并支持压缩、编码和方言预检

- 增加遇错停止/继续策略、持久任务、错误行导出、源文件身份与安全取消

- 为数据库驱动补齐上下文事务和写入结果未知语义,避免失败重放与脏会话复用
2026-08-08 20:51:23 +08:00
Syngnat
11dbb1f9dd feat(sync): 接入同步任务编排与安全执行 API
- 接入任务持久化、生命周期、调度运行与检查点管理
- 提供 ID 作用域元数据、能力解析、预检和生产审批接口
- 串联水位与 MongoDB CDC 执行、错误行隔离及安全重放
2026-08-08 19:13:25 +08:00
Syngnat
23c40c36c4 🐛 fix(connection): 隔离保存连接中的扩展密钥
- 将 JVM 凭据与敏感连接参数拆入密钥存储
- 公共和编辑连接视图仅返回脱敏值与存在标记
- 完善连接包迁移、显式清除和密钥往返测试
2026-08-08 19:10:51 +08:00
Syngnat
bc02a4c614 feat(syncjob): 新增可恢复的数据同步任务运行时
- 持久化任务、运行、事件、检查点与错误行状态
- 支持调度、暂停取消、恢复重试、并发限制和故障接管
- 增加执行 fencing、连续失败退避与错误行重放租约
2026-08-08 19:06:57 +08:00
Syngnat
e40cdbc016 feat(synccdc): 新增 MongoDB 变更流适配器
- 建立 CDC 适配器注册、探测与安全游标契约
- 支持 MongoDB change stream、恢复令牌和批量读取
- 覆盖权限探测、取消关闭与流位置恢复测试
2026-08-08 19:06:36 +08:00
Syngnat
c91a1555a4 feat(sync): 完善跨数据源迁移与增量同步内核
- 增加迁移能力矩阵、对象字段映射与安全预检守卫
- 支持批大小、行错误隔离、水位增量和变更事件重放
- 复用 CDC 目标会话并补齐分页、投影与增量同步测试
2026-08-08 19:06:12 +08:00
AutumnNazi
9e661958fe 🐛 fix(sync): 禁止仅同步数据时修改表结构 (#878)
Fixes #878
2026-08-08 07:22:42 +08:00
Syngnat
14f24925ab 🐛 fix(query-editor): 支持 PostgreSQL 查询选择 Schema
- 在查询工具栏加载并持久化 PostgreSQL Schema
- 将选择的 Schema 安全注入 search_path,并保留显式连接配置
- 绑定事务、结果与元数据执行上下文,避免跨 Schema 误查询或写入
- 补充查询、DataGrid、独立窗口及差异比较回归测试

Refs #864
2026-08-07 23:25:25 +08:00
mango
303cb5cc79 🐛 fix(update): 启动时获取最新开发版更新 (#866)
Fixes #866
2026-08-07 19:48:43 +08:00
Syngnat
e406aba664 🐛 fix(mqtt): 修复 Broker 地址端口重复追加
- 前端统一规范化协议、主机与端口,清理历史重复端口配置
- 后端防御性解析 Broker 地址并兼容非默认端口与 IPv6
- 补充保存重开测试及 Broker 地址回归覆盖
2026-08-06 18:20:23 +08:00
Syngnat
32dfd39827 🐛 fix(query): 放开所有数据源默认查询超时
- 区分连接超时与查询超时,默认查询仅保留手动取消能力
- 清理各数据库及 HTTP 数据源由连接配置派生的请求超时
- 新增按请求 queryTimeout 透传并保留计数任务显式时限
- 补充前后端、缓存键与多驱动超时策略回归测试
2026-08-06 16:50:28 +08:00
Syngnat
0e46b9ff87 🐛 fix(mqtt): 修复 mqttBrokerAddresses 拼接端口号时重复追加的问题
- 问题根因:mqttBrokerAddresses 中主 broker 地址经过 net.JoinHostPort 再解析再格式化的冗余往返
- 触发条件:config.Host 中已含端口号时,net.JoinHostPort 会再次拼接导致 host:port:port
- 修复方式:去掉中间往返,直接使用 mqttFormatHostPort(host, port) 构建地址
- 影响范围:仅 MQTT 数据源的主 broker 地址构造逻辑
2026-08-06 16:47:51 +08:00
Syngnat
bdd84db52c 🐛 fix(data-sync): 修复跨库同步静默失败与数据安全问题
- 聚合表级失败并保留已确认提交计数,避免任务误报成功

- 绑定分析上下文与实际同步模式,阻止陈旧或无效配置执行

- 加固全量覆盖及同端点分页写入,补充跨库与失败回归测试

Refs #846
2026-08-05 23:55:44 +08:00
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
53d0480058 🐛 fix(oracle): 修复触发器编辑误启用问题
- 移除 Oracle 元数据附带的 ALTER TRIGGER ENABLE 语句
- 保留触发器主体与 DISABLE 状态,避免禁用触发器被误启用
- 补充触发器状态语句回归测试

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

Fixes #824
2026-08-03 23:26:15 +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
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
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
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