Syngnat
baccc6b85d
🔧 chore(wails): 同步 MCP 与数据同步接口绑定
...
- 补齐 AuthorizeMCPConnectionSQL 的 TypeScript 声明与 JavaScript 调用包装
- 同步 MigrationCapability 的 supportsMutations 字段及构造赋值
- 更新 frontend/package.json 对应的 MD5 校验值
2026-08-11 13:35:57 +08:00
Syngnat
4682474008
Merge remote-tracking branch 'origin/dev' into dev
2026-08-11 13:27:43 +08:00
Syngnat
836877e374
合并拉取请求 #916
...
🐛 fix(data-grid): 支持只读结果单击选中
2026-08-11 13:27:35 +08:00
Syngnat
b7d2908a1b
🐛 fix(update): 更新与驱动检测优先使用镜像
...
- 契约变更:更新检查在镜像清单有效时立即返回,仅镜像失败后顺序回退 GitHub
- 驱动网络检测优先探测镜像,失败后再检查实际 GitHub 与 Go 模块回退端点
- 区分镜像不可用但回退可用和全部下载链路不可用,并同步六种语言文案
- 补充镜像短路、条件回退和驱动网络状态回归测试
2026-08-11 13:25:51 +08:00
kunghim
d54e0bdd03
🐛 fix(data-grid): 支持只读结果单击选中
2026-08-11 13:18:21 +08:00
Syngnat
cb4a4fefd3
Merge remote-tracking branch 'origin/dev' into dev
2026-08-11 11:39:27 +08:00
Syngnat
d690b83d55
🐛 fix(window): 修复窗口尺寸与最大化状态未记忆
...
- 启动时恢复上次普通窗口尺寸与最大化状态
- 在标题栏最大化和退出前采样最新原生窗口状态
- 最大化前保留普通窗口恢复边界
- 补充启动恢复与退出持久化回归测试
2026-08-11 11:33:33 +08:00
Syngnat
cafabd124a
🐛 fix(titlebar): 移除下拉菜单重复标题
...
- 为通用 V2 菜单增加可选标题头开关,默认行为不变
- 隐藏标题栏主菜单和更多菜单的重复标题
- 添加回归测试覆盖两类标题栏下拉菜单
2026-08-11 10:39:37 +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
16df9a2e8e
feat(ai): add Atlas Cloud provider preset ( #915 )
...
## Background
GoNavi supports OpenAI-compatible providers, but Atlas Cloud currently
requires users to enter the endpoint and model manually. This adds a
first-class preset while keeping the existing OpenAI-compatible runtime
and remote model discovery path.
## Changes
- add an Atlas Cloud provider preset with the default API endpoint and
`qwen/qwen3.8-max`
- recognize saved Atlas Cloud endpoints when reopening AI settings
- add localized provider labels and descriptions for all supported
locales
- cover preset metadata and endpoint matching with focused tests
## Impact
The change is additive. Existing providers and custom OpenAI-compatible
configurations are unchanged. Users still supply their own API key.
## Validation
- frontend focused tests: 39 passed
- frontend full test suite: passed
- frontend production build: passed
- `go test ./internal/ai/provider ./internal/ai/service`: passed
- Atlas Cloud `/models`: HTTP 200 and `qwen/qwen3.8-max` present
- Atlas Cloud Chat Completions smoke test: HTTP 200
- `git diff --check`: passed
## Risk and rollback
Risk is limited to the additive preset metadata and endpoint matching.
Reverting this commit removes the preset without changing persisted
provider schema or backend behavior.
2026-08-11 10:29:48 +08:00
Syngnat
ff61a64179
🔧 chore(issue-template): 放宽中英文表单必填限制
...
- Bug 模板将连接方式、最小复现步骤和实际行为调整为非必填
- 功能建议模板将使用场景与目标用户、验收标准和使用频率调整为非必填
- 同步更新中英文版本,保持字段校验规则一致
2026-08-11 10:21:52 +08:00
binyangzhu000-sudo
c8e67348a9
feat(ai): add Atlas Cloud provider preset
...
Signed-off-by: binyangzhu000-sudo <224954946+binyangzhu000-sudo@users.noreply.github.com >
2026-08-11 10:12:35 +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
Syngnat
3c77ad0bb3
🐛 fix(test): 统一 JVM fixture JDK 工具链 ( #912 )
...
## 背景
JVM HTTP 和 JMX 真实 fixture 会分别从 PATH 查找 java 与 javac。在多 JDK 环境中可能使用 Java
8 运行 javac 17 的编译产物,readiness 最终只报告 EOF。
## 变更
- 新增 HTTP、JMX、Agent 共用的测试 JDK 工具链解析 helper
- 优先使用完整 JAVA_HOME,否则选择 javac 同目录的 java 和 jar
- 启动前校验 java 与 javac major version
- fixture 启动失败时报告 stderr、退出状态、工具路径和版本
- 补充 JAVA_HOME、javac sibling、版本不一致和诊断信息测试
## 影响范围
仅修改 internal/jvm 测试代码,不影响产品运行时逻辑。
## 验证
- Issue 指定 HTTP/JMX 真实 round-trip 通过
- Agent 真实 round-trip 通过
- go test ./internal/jvm -count=1 -timeout=10m 通过
Closes #894
2026-08-11 09:05:05 +08:00
Syngnat
99742af2e3
✨ feat(ui): 优化 Schema 标签与表概览显示 ( #908 )
...
## 变更说明
- Tab 标签启用 Schema 元素时,直接显示 schema 名称,不再添加 `SCHEMA:` 前缀
- PostgreSQL、Kingbase 及其他 PG 兼容方言的表概览在标题区显示 `数据库 · schema`
- 表概览的卡片、列表和紧凑表格仅显示裸表名
- 保留 `schema.table` 作为打开、设计、导出、复制结构和其他操作的对象标识,避免跨 schema 误操作
## 验证
- `npm --prefix frontend test -- src/utils/tabDisplay.test.ts
src/components/TableOverview.tdengine.test.tsx`
- 手工验证 PostgreSQL 17.4:Schema 标签、表概览三种视图、双击打开正确 schema 下的表
- 此前相同修复已通过 `npm --prefix frontend run build`
完整前端测试运行结果:4101 项测试通过;1 个与本次无关的既有测试文件在初始化时因重写只读 `navigator` 失败。
Closes #899
Closes #900
2026-08-11 09:04:58 +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
kunghim
a84a44d2ac
✨ feat(ui): 优化 Schema 标签与表概览显示
2026-08-10 17:38:18 +08:00
mango
3243082c8e
🐛 fix(sidebar): 修复外部 SQL 缺失目录恢复 ( #896 )
...
Fixes #896
2026-08-10 17:23:10 +08:00
Syngnat
7a3f20ad41
🐛 fix(ai): 修复 Windows CodeBuddy Git Bash 解析 ( #907 )
...
## 变更说明
- 在 Windows 上优先通过 `git.exe` 和 Git for Windows 常见安装目录定位 Git Bash
- 排除 `System32`、`Sysnative` 和 `WindowsApps` 下的 WSL `bash.exe` 启动器
- Claude CLI 与 CodeBuddy CLI 共用 Git Bash 检测逻辑,并对显式配置的 WSL 路径返回可定位错误
- 改善 CodeBuddy 非流式执行失败信息:保留 stderr 和退出状态,但不在错误或日志中泄漏完整 stdout
## 问题原因
Windows 的 PATH 可能优先解析到 `C:\Windows\System32\bash.exe`。该文件是 WSL 启动器,无法像
Git for Windows Bash 一样执行 CodeBuddy 创建的 Windows 临时脚本,尤其会影响带空格或中文的路径。
## 验证
- `go test ./internal/ai/... -count=1 -timeout=10m`
- `git diff --check upstream/dev...HEAD`
Closes #893
2026-08-10 16:16:38 +08:00
Syngnat
6f9e956137
🐛 fix(sidebar): 延长连接树滚动条显示时间 ( #906 )
...
## Summary
- 延长左侧 V2 连接树滚动条的显示时间,滚动停止 2 秒后再隐藏
- 增加回归断言,锁定滚动条空闲延迟配置
## Testing
- `npm --prefix frontend test -- Sidebar.locate-toolbar.test.tsx`(93/93
通过)
- `npm --prefix frontend run build`
- `npm --prefix frontend test`
- 浏览器桌面与窄窗口滚动条时序验证
- 用户手动自测通过
2026-08-10 16:13:50 +08:00
Syngnat
d8716c1e5a
🐛 fix(datagrid): 修复固定选择列透明问题 ( #901 ) ( #903 )
...
## Summary
- Keep the row-number and selection columns opaque while a DataGrid row
is hovered or selected.
- Cover regular and virtual table body layouts, including selected plus
hovered controls.
## Testing
- `npm test -- --run src/components/DataGrid.layout.test.tsx`
- `npm run build`
- `npm test`
Fixes #901
2026-08-10 16:12:46 +08:00
kunghim
4e30bc82a9
🐛 fix(ai): 修复 Windows CodeBuddy Git Bash 解析
2026-08-10 15:20:31 +08:00
AutumnNazi
f66c7d00b8
🐛 fix(sidebar): 延长连接树滚动条显示时间
2026-08-10 14:46:50 +08:00
AutumnNazi
58f1029966
🐛 fix(datagrid): 修复固定选择列透明问题 ( #901 )
...
Fixes #901
2026-08-10 12:30:31 +08:00
Kunghim
5c96d4a466
fix(sync): support composite primary keys ( #892 )
...
## Summary
- model difference-sync row identity using complete ordered primary-key
tuples
- support composite keys for table and SQL-result synchronization,
preview, and row selection
- generate frontend update/delete SQL using every primary-key column
- preserve single-key paging and legacy preview compatibility
## Testing
- `go test ./internal/sync -count=1`
- `go test ./internal/db -run
"Test(MySQL|Postgres)ApplyChangesUsesEveryCompositeKeyColumn" -count=1`
- `npm --prefix frontend test -- DataSyncModal.sql-preview.test.ts`
- `npm --prefix frontend run build`
Closes #884
2026-08-09 21:11:43 +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
mango
02da747e28
🐛 fix(test): 同步工作台菜单测试夹具
2026-08-09 16:13:55 +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
Syngnat
bf5a1b7681
🎨 style(context-menu): 统一工作台右键菜单视觉规范
...
- 复用表对象菜单的上下文标题、功能分组与快捷键布局
- 统一查询标签、结果标签、工具栏、顶栏、Redis 与 Monaco 菜单
- 补充菜单结构、交互和视觉规范回归测试
Refs #879
2026-08-09 14:11:23 +08:00
Syngnat
0a238c551c
✨ feat(connection): 支持新建连接数据源置顶
...
- 新增数据源类型置顶与取消置顶交互
- 按个人置顶顺序优先展示并持久化偏好
- 完善主题样式、无障碍标签与六语言文案
- 补充排序、持久化及图钉视觉回归测试
Refs #876
2026-08-09 14:11:23 +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
16a601e6a4
✨ feat(data-import): 完善导入工作台与任务交互
...
- 表导入与数据库导入统一提供遇错停止和继续策略,并跟随主题变量
- 增加能力校验、高级解析选项、字节进度、停止状态与持久任务历史
- 防止重复启动和运行中面板卸载,完善六语言语句统计及回归测试
2026-08-08 20:51:59 +08:00
Syngnat
20d5255eb4
🔧 chore(wails): 同步导入与数据同步接口绑定
...
- 更新导入能力、文件选项、任务历史与错误行导出绑定
- 保留数据同步任务、审批与检查点接口的生成模型
- 同步前端依赖校验值并校验 JS/TypeScript 契约
2026-08-08 20:51:37 +08:00
Syngnat
390a249105
✨ feat(data-import): 重构大文件导入与安全任务运行时
...
- SQL、CSV、JSON 与 XLSX 改为资源受限的流式解析,并支持压缩、编码和方言预检
- 增加遇错停止/继续策略、持久任务、错误行导出、源文件身份与安全取消
- 为数据库驱动补齐上下文事务和写入结果未知语义,避免失败重放与脏会话复用
2026-08-08 20:51:23 +08:00
Syngnat
4df879ccde
✨ feat(sync): 按数据源组合约束迁移能力
...
- 展示源端到目标端的完整、部分、规划中和不支持状态
- 按能力控制自动建表、补列、索引及继续执行入口
- 支持数据库列表为空时手工输入并补齐六语言提示
2026-08-08 19:34:36 +08:00
Syngnat
f15b630e70
✅ test(i18n): 支持数据同步局部词典解析校验
...
- 为功能局部词典注册明确的源码作用域
- 局部调用仅允许命中自身词典并保留拼写错误检测
- 避免将 DataSync 文案误判为全局六语言缺失
2026-08-08 19:29:53 +08:00
Syngnat
4c04609df2
✨ feat(data-sync): 新增多对象迁移与同步任务工作台
...
- 以五步流程组织端点、对象、写入、运行方式和预检
- 支持批量选表、同名目标匹配、字段映射与主键识别
- 完善生命周期、运行记录、CDC、错误行和响应式交互
2026-08-08 19:29:29 +08:00
Syngnat
53dde950fd
✨ feat(data-sync): 建立同步任务模型与运行网关
...
- 定义任务、映射、调度、预检和运行记录前端模型
- 接入 Wails 元数据、审批、生命周期、检查点与错误行 API
- 严格解码后端协议并补齐模型和网关回归测试
2026-08-08 19:26:57 +08:00
Syngnat
11dbb1f9dd
✨ feat(sync): 接入同步任务编排与安全执行 API
...
- 接入任务持久化、生命周期、调度运行与检查点管理
- 提供 ID 作用域元数据、能力解析、预检和生产审批接口
- 串联水位与 MongoDB CDC 执行、错误行隔离及安全重放
2026-08-08 19:13:25 +08:00