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
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
Syngnat
a9595f6fb0
🐛 fix(sidebar): 优化 Host 拖入分组的命中与反馈
...
- 扩大分组中心放入热区并保留边缘排序
- 增加整行目标高亮、紧凑预览与悬停展开
- 覆盖拖拽意图、DOM 命中和移动目标回归
Refs #877
2026-08-08 12:31:21 +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
virgosgod-maker
85439eb8de
✨ feat(query): 新建查询继承当前表上下文 ( #874 )
...
## 变更说明
- 当前活动标签为表数据页或表设计页时,新建查询会自动继承连接、数据库和表名上下文
- 按数据库方言正确引用表名,并为 Elasticsearch 生成原生查询模板
- 只有活动表与用户最新选择的连接、数据库一致时,才继承表名,避免跨数据库误带旧表上下文
- 无有效表上下文时保持原有新建查询行为
- 自定义模板仅在以 FROM 结尾、存在明确表名插入点时自动补全,避免破坏用户模板
## 验证
- `npm test -- src/components/QueryEditor.external-sql-save.test.tsx
src/utils/newQueryContext.test.ts
src/utils/objectQueryTemplates.test.ts`:344 项测试通过
- `npm run build`:TypeScript 与 Vite 生产构建通过
- 已基于最新 `dev`(包含 #872/#870/#875)解决 `App.tsx` 冲突
Closes #849
2026-08-07 22:03:18 +08:00
mango
4acf16893f
fix(query): preserve selected new query context
2026-08-07 21:58:53 +08:00
mango
0e2a28039e
Merge origin/dev into pull request 874
2026-08-07 21:50:01 +08:00
virgosgod-maker
0810fed618
🐛 fix(query-editor): 修复右键菜单无法粘贴内容 ( #875 )
...
## 背景
Issue #873 中,Windows 安装包内的 SQL 编辑器通过右键菜单执行“粘贴”时,浏览器剪贴板 API 会受到 WebView
权限限制,导致 Monaco 无法取得剪贴板内容。
## 变更点
- 在 Wails 运行环境中覆盖 Monaco 的粘贴命令,优先读取 Wails 原生剪贴板
- 将原生剪贴板文本交回 Monaco 的 paste handler,保留选区、多光标和撤销行为
- 使用引用计数管理全局命令生命周期,并保留浏览器剪贴板回退
- 增加原生读取、浏览器回退、多编辑器卸载及只读编辑器回归测试
## 影响范围
- 仅影响 Wails 环境下 SQL 编辑器的右键粘贴
- 普通浏览器环境继续使用 Monaco 默认粘贴逻辑
- 不涉及后端接口、配置、依赖或生成文件变更
## 验证
- 定向单元测试:14/14 通过
- TypeScript 类型检查通过
- 前端生产构建通过(7981 modules transformed)
- Wails runtime 实际验证右键粘贴可插入剪贴板文本
- 前端全量测试中 3 个测试文件因并发资源争用超时,隔离重跑 131/131 通过
Closes #873
2026-08-07 21:45:05 +08:00
virgosgod-maker
b085d01ba9
✨ feat(query): 支持拖拽结果字段插入 SQL ( #870 )
...
## 变更说明
- 支持将查询结果集字段拖入 SQL 编辑器,并按光标位置、选区和字段上下文生成插入文本
- 复用同一次表头拖拽完成结果集内部列排序,不影响字段拖入查询区
- 使用结果集作用域隔离列排序,避免跨结果集误重排
- 鼠标使用原生 HTML 拖放,触摸和触控笔保留 dnd-kit PointerSensor 排序能力
## 测试
- `npm test -- sqlFieldDrop.test.ts dataGridColumnOrder.test.ts`(19
个测试通过)
- `npm run build`
- Windows Wails 桌面端手动验证:结果集列排序、字段拖入查询区
Closes #848
2026-08-07 21:45:02 +08:00
virgosgod-maker
8af55f35cd
🐛 fix(query-editor): 修复新建查询数据库上下文错误 ( #872 )
...
## 背景与问题
选中数据库 A 新建查询后,再从侧边栏选中数据库 B 创建查询,旧查询 Tab 的数据库 A 会错误覆盖当前侧边栏选择。
## 变更点
- 新建查询优先使用侧边栏当前选中的连接和数据库
- 仅选择连接时保持数据库为空,不再在数据库列表加载后自动选库
- 手动切换数据库后同步查询 Tab 上下文并刷新 SQL 补全元数据
- 增加新建查询上下文及多 Tab 补全回归测试
## 影响范围
仅影响 SQL 查询 Tab 的新建上下文、数据库选择和补全元数据切换,不改变查询执行与数据源连接逻辑。
## 验证方式
- 相关测试:325 项通过
- 生产构建:通过
Fixes #865
2026-08-07 21:35:00 +08:00
mango
fc038b73a5
fix(query-editor): scope native clipboard paste
2026-08-07 21:16:00 +08:00
mango
6de2304531
fix(data-grid): handle update clause boundaries
2026-08-07 21:15:59 +08:00
mango
5a0d167a21
fix(query): sync toolbar connection context
2026-08-07 21:15:59 +08:00
mango
6115bae2c3
🐛 fix(data-grid): 点击行号选中并取消行悬浮加深 ( #871 )
...
Fixes #871
2026-08-07 20:00:53 +08:00
mango
303cb5cc79
🐛 fix(update): 启动时获取最新开发版更新 ( #866 )
...
Fixes #866
2026-08-07 19:48:43 +08:00