tianqijiuyun-latiao
|
52d193b2e8
|
fix(i18n): 收口 dev 合并后的驱动与 QueryEditor 本地化
|
2026-06-23 14:04:25 +08:00 |
|
tianqijiuyun-latiao
|
d9e52c734a
|
Merge remote-tracking branch 'origin/dev' into feature/20260602_connection_driver_i18n
|
2026-06-23 13:14:43 +08:00 |
|
tianqijiuyun-latiao
|
3ce85617da
|
feat(i18n): 收口导出前端多语言
|
2026-06-23 13:14:22 +08:00 |
|
tianqijiuyun-latiao
|
0ba984b277
|
Merge remote-tracking branch 'origin/dev' into feature/20260602_connection_driver_i18n
# Conflicts:
# frontend/src/App.tsx
# frontend/src/components/AISettingsModal.tsx
# frontend/src/components/ConnectionModal.edit-password.test.tsx
# frontend/src/components/ConnectionModal.tsx
# frontend/src/components/DataSyncModal.i18n.test.ts
# frontend/src/components/DataSyncModal.tsx
# frontend/src/components/QueryEditor.external-sql-save.test.tsx
# frontend/src/components/QueryEditor.tsx
# frontend/src/components/Sidebar.locate-toolbar.test.tsx
# frontend/src/components/Sidebar.tsx
# frontend/src/components/SnippetSettingsModal.tsx
# frontend/src/components/TableOverview.tsx
# frontend/src/components/ai/AIChatHeader.test.tsx
# frontend/src/components/ai/AISettingsProvidersSection.tsx
# frontend/src/components/ai/aiChatPayloadDispatch.ts
# frontend/src/components/ai/aiChatReadiness.ts
# frontend/src/components/ai/aiSettingsModalConfig.tsx
# frontend/src/components/ai/messageBubble/AIMessageCodeBlock.tsx
# frontend/src/components/sidebarV2Utils.ts
# frontend/src/i18n/catalog.test.ts
# frontend/src/utils/connectionTypeCatalog.test.ts
# frontend/src/utils/connectionTypeCatalog.ts
# frontend/src/utils/tabDisplay.ts
# internal/ai/provider/custom.go
# internal/ai/service/service.go
# internal/app/methods_driver.go
# internal/app/methods_file.go
# internal/db/custom_impl.go
# internal/db/iris_impl.go
# internal/db/mariadb_impl.go
# internal/db/sqlserver_impl.go
# shared/i18n/de-DE.json
# shared/i18n/en-US.json
# shared/i18n/ja-JP.json
# shared/i18n/ru-RU.json
# shared/i18n/zh-CN.json
# shared/i18n/zh-TW.json
|
2026-06-23 12:41:27 +08:00 |
|
Syngnat
|
8da8cc7f91
|
🐛 fix(mongodb): 修复 DataGrid 编辑后 BSON 类型丢失
- 为 MongoDB 结果展示、单元格编辑和行编辑接入类型感知格式化与解析
- 支持 ObjectId、日期、Int32、Int64、Double、Decimal128、UUID 等常见类型保真
- 统一 v1/v2 驱动查询结果的 Extended JSON 输出与 ApplyChanges BSON 恢复
- 补充前端提交链路与后端类型转换回归测试
|
2026-06-23 12:14:27 +08:00 |
|
Syngnat
|
bc63311003
|
🐛 fix(oracle): 修复普通查询重复列自动别名缺失
- 在 QueryEditor 查询计划阶段识别显式列与 alias.* 的重复列冲突
- Oracle 执行前自动为冲突显式列补充 _1 风格唯一别名
- 让 locator 与后续追加表达式复用改写后的可执行 SQL
- 补充普通查询重复列自动别名的 Oracle 回归测试
|
2026-06-23 10:46:35 +08:00 |
|
Syngnat
|
8f1e6cf379
|
⚡️ perf(frontend): 优化长时运行下的搜索与缓存占用
- 为 V2 cmd+k 搜索预建索引并限制初始/宽泛结果数量
- 清理冷数据库树和 DataViewer 长生命周期快照缓存
- 收紧运行时 SQL 日志预算并在 hydration 时压缩旧缓存
|
2026-06-22 22:36:39 +08:00 |
|
tianqijiuyun-latiao
|
f282da3bcb
|
feat(i18n): 收口多语言功能业务代码
|
2026-06-22 15:12:42 +08:00 |
|
tianqijiuyun-latiao
|
eba689754c
|
test(ai): 对齐多语言 fallback 测试基线
|
2026-06-22 13:46:42 +08:00 |
|
tianqijiuyun-latiao
|
d13c153f5e
|
✨ feat(i18n): 收口数据库驱动多语言代码
- 提交 internal/db 多驱动用户可见错误与状态文案多语言化
- 补齐数据库驱动多语言测试与六语言 catalog
- 修复 frontend i18n catalog 的 4 个失效 guard
|
2026-06-22 10:09:45 +08:00 |
|
Syngnat
|
4999fd544d
|
🐛 fix(data-sync): 完善多种目标库的 schema 同步链路
- 扩展数据同步目标端 schema 选择与元数据加载,覆盖 SQL Server、IRIS、DuckDB 等独立 schema 场景
- 修正同步链路中的目标表 schema 归一化与 query/apply 表名解析,避免落到错误模式
- 补充前后端回归测试与多语言文案,覆盖 schema 选择、别名识别和结果预览路径
Fixes #571
|
2026-06-21 22:46:57 +08:00 |
|
Matt Van Horn
|
4408bce159
|
feat(redis): support per-database alias in the Redis viewer tree
|
2026-06-21 00:44:22 -07:00 |
|
Syngnat
|
e7b8e78f9c
|
🐛 fix(query-editor): 修复当前语句快捷选择在 CRLF 文本下错位
- 统一当前语句选择与执行路径的归一化 offset/position 换算
- 避免 Windows CRLF 文本下 SQL 语句选区错位
- 补充 QueryEditor 当前语句选择回归测试
Fixes #575
|
2026-06-21 15:08:34 +08:00 |
|
Syngnat
|
8ea7ecc477
|
✨ feat(trino): 新增 Trino 可选驱动接入并补齐查询支持
- 后端新增 Trino 数据库实现与 optional driver-agent provider
- 前端补齐 catalog.schema 连接配置、URI 解析与能力开关
- SQL 编辑器对 Trino 禁用托管事务并补充前后端测试
|
2026-06-21 13:54:42 +08:00 |
|
Syngnat
|
99b75378c3
|
✨ feat(data-grid): 完善 ER 图多层关系展开与字段浏览
- 支持按层扩展关联关系并重置为一层视图
- 支持节点字段展开收起与全部字段切换
- 补充 ER 图模型、Hook 与界面回归测试
|
2026-06-21 11:37:45 +08:00 |
|
Syngnat
|
5f56859898
|
🐛 fix(query-editor): 兜底 SQL 编辑器中文输入首次不上屏
- 补充 Monaco IME 组合输入提交兜底
- 统一拦截候选键避免快捷键链路抢占
- 增加 QueryEditor 中文输入回归测试
Fixes #578
|
2026-06-21 11:30:17 +08:00 |
|
Syngnat
|
7f2445a6f5
|
🐛 fix(monaco-editor): 禁用 EditContext 修复中文输入异常
- 在 MonacoEditor 中统一关闭 editContext
- 修复单引号场景下中文输入首次上屏异常
- 补充编辑器选项回归断言
Close #578
|
2026-06-20 17:05:38 +08:00 |
|
Syngnat
|
b3a54b3ff8
|
✨ feat(data-grid): 新增完整 ER 图视图并收口导出回归
- 新增完整 ER 图建模、布局与交互 hook
- 在元数据视图接入 ER 图并补齐样式与多语言文案
- 修正查询结果导出测试交互与 Wails 导出 mock
|
2026-06-20 15:45:58 +08:00 |
|
Syngnat
|
c8c8497a2f
|
✨ feat(query-editor): 收敛 SQL 分析工作台与结果区日志体验
- 新增 SQL 分析工作台,统一承载慢 SQL 和 SQL 诊断视图
- 将 SQL 执行日志收进结果区首个日志标签并在失败时展示错误摘要
- 调整侧边栏入口、标签展示、多语言文案与定向前端测试覆盖
|
2026-06-20 14:09:58 +08:00 |
|
Syngnat
|
e7935db84b
|
✨ feat(db-connection): 新增连接后台定时探活保活能力
- 为连接配置新增 keepAlive 开关与探活间隔
- 在后端缓存连接上增加后台定时 Ping 调度与失效剔除
- 补充前端表单、Wails 模型映射与定向测试覆盖
Close #579
|
2026-06-20 11:24:44 +08:00 |
|
Syngnat
|
0f67305100
|
♻️ refactor(codebase): 拆分大文件并收敛模块职责
- 拆分 ConnectionModal、DataGrid、QueryEditor、App 等前端大文件
- 抽出 driver assets、v2 workbench 样式和 source-as-test 读取辅助
- 更新相关测试以覆盖拆分后的源码位置
|
2026-06-19 23:10:00 +08:00 |
|
Syngnat
|
6179c3fbd9
|
♻️ refactor(sidebar): 拆分动作与搜索逻辑
|
2026-06-19 18:46:08 +08:00 |
|
Syngnat
|
13705f9098
|
♻️ refactor(sidebar): 抽出 V2 右键菜单逻辑
|
2026-06-19 18:08:54 +08:00 |
|
Syngnat
|
1dea343aa2
|
♻️ refactor(sidebar): 抽出 V2 树标题渲染
|
2026-06-19 18:03:28 +08:00 |
|
Syngnat
|
293a8ff3e9
|
♻️ refactor(sidebar): 抽出实体操作弹窗
|
2026-06-19 17:56:12 +08:00 |
|
Syngnat
|
6e422aea33
|
♻️ refactor(sidebar): 抽出树节点加载器
|
2026-06-19 17:32:45 +08:00 |
|
Syngnat
|
39e52469f2
|
♻️ refactor(sidebar): 抽出批量操作弹窗
|
2026-06-19 17:23:53 +08:00 |
|
Syngnat
|
3ff5141184
|
♻️ refactor(sidebar): 抽出外部 SQL 文件流程
|
2026-06-19 17:13:24 +08:00 |
|
Syngnat
|
db31513c0b
|
♻️ refactor(sidebar): 抽出批量导出状态逻辑
|
2026-06-19 16:55:43 +08:00 |
|
Syngnat
|
5da2c7ff1a
|
♻️ refactor(sidebar): 抽出元数据加载工具
|
2026-06-19 16:45:15 +08:00 |
|
Syngnat
|
d109f2891f
|
♻️ refactor(sidebar): 复用 V2 侧栏工具函数
|
2026-06-19 16:33:16 +08:00 |
|
Syngnat
|
f946951580
|
♻️ refactor(sidebar): 迁出 legacy 节点菜单构建逻辑
|
2026-06-19 16:21:36 +08:00 |
|
Syngnat
|
f6ebfc2e44
|
♻️ refactor(sidebar): 清理 V2 rail 残留死代码
- 删除未被调用的 rail connection button/group 渲染闭包
- 移除对应的折叠、拖拽状态和 badge/host 辅助函数
- 保留当前可达的 active connection 状态展示和树拖拽排序逻辑
|
2026-06-19 15:16:31 +08:00 |
|
Syngnat
|
540dbc2a28
|
♻️ refactor(sidebar): 抽出 Command Search 面板组件
- 新建 SidebarSearchPanel,承接 V2 命令搜索弹层的行、分组和空状态渲染
- Sidebar.tsx 保留搜索状态、过滤和执行逻辑,仅通过 typed props 传入子组件
- 保持 @ 对象搜索、? AI 提问、同步过滤与键盘导航行为不变
|
2026-06-19 14:55:21 +08:00 |
|
Syngnat
|
2c8128724e
|
♻️ refactor(sidebar): 抽出 ConnectionRail 为独立子组件
- 新建 sidebar/SidebarConnectionRail.tsx:V2 连接栏(新建分组/批量导出/SQL 文件/定位/AI/工具/设置 7 个按钮)
- Props 用聚合对象(labels + handlers + canLocateActiveTab)避免 18+ 个独立 props drilling
- Sidebar.tsx 删除 renderV2ConnectionRail(-93 行),加 v2ConnectionRailProps 构造 + <SidebarConnectionRail /> 调用
- Sidebar.tsx 从 10187 减至 10122 行
|
2026-06-19 14:29:57 +08:00 |
|
Syngnat
|
528f3c51a0
|
♻️ refactor(sidebar): 迁出命令搜索相关类型与 shouldLoadSidebarNodeOnExpand
- 迁出 V2CommandSearchMode/V2CommandSearchQuery 类型与 parseV2CommandSearchQuery(支持 @/?前缀切换 object/ai 模式)
- 迁出 shouldLoadSidebarNodeOnExpand(节点懒加载判定)
- SidebarNodeLike 加可选 key 字段以适配测试用法
- Sidebar.tsx 从 10235 减至 10187 行,sidebarHelpers.ts 增至 215 行
|
2026-06-19 14:19:06 +08:00 |
|
Syngnat
|
a4d94624cd
|
♻️ refactor(sidebar): 继续抽离 resolveV2ObjectGroupTitle 等 2 个工具函数
- 新增 SidebarNodeLike 结构化类型,替代 Pick<TreeNode, ...> 解除对 Sidebar 内部类型的依赖
- 迁出 resolveV2ObjectGroupTitle(对象分组标题本地化)与 resolveSidebarTableNameForCopy(节点表名提取)
- Sidebar.tsx 从 10243 减至 10235 行
|
2026-06-19 14:15:35 +08:00 |
|
Syngnat
|
87bd16c4ba
|
♻️ refactor(sidebar): 抽离独立工具函数到 sidebarHelpers 模块
- 新建 sidebar/sidebarHelpers.ts:迁出 6 个无内部类型依赖的纯函数(formatSidebarRowCount/hasSidebarLazyChildren/getV2RailConnectionGroupBadgeText 等)+ V2ExplorerFilter 类型 + V2_RAIL_UNGROUPED 常量
- Sidebar.tsx 通过 import + re-export 双向引用,外部测试文件的 `from './Sidebar'` 保持兼容
- 文件规模:Sidebar.tsx 从 10275 减至 10243 行,建立 sidebar/ 子目录作为后续拆分的目标归宿
|
2026-06-19 14:11:54 +08:00 |
|
Syngnat
|
dc54d24d2b
|
✨ feat(sidebar): 新增 Sidebar 慢 SQL 历史浮动入口
- 新建 SlowQueryRailButton:独立小组件,从 store 直接读 tabs/connections 解析激活连接
- 挂载方式:浮动在 Sidebar 右下角,不修改 Sidebar.tsx 内部代码(避免改 10275 行的大文件)
- 体验优化:无激活连接时按钮自动禁用并 tooltip 提示;与 Ctrl+Shift+L 快捷键路径并存
- bundle 保持:SlowQueryPanel 继续走 lazy 加载独立 chunk,不进入主 bundle
|
2026-06-19 13:56:15 +08:00 |
|
Syngnat
|
8457f6c4b7
|
✨ feat(shortcuts): 把 SQL 诊断与慢查询快捷键注册到管理系统并加菜单入口
- 注册到系统:diagnoseQuery 与 showSlowQueries 加入 ShortcutAction,可在快捷键管理面板自定义
- 修复冲突:原硬编码 Ctrl+Shift+D 与 toggleTheme 冲突、Ctrl+Shift+H 与 toggleLogPanel 冲突;改为 Ctrl+Shift+P / Ctrl+Shift+L
- 菜单入口:QueryEditor 的"更多"下拉加 SQL 诊断、慢 SQL 历史两个菜单项,附带快捷键提示
- i18n 同步:6 种语言补齐 label/description
|
2026-06-19 13:43:12 +08:00 |
|
Syngnat
|
577a417292
|
✨ feat(explain-ui): 新增慢 SQL 历史面板与 Ctrl+Shift+H 快捷键
- 面板组件:SlowQueryPanel 含 TopN 列表 + 耗时/扫描行数/时间三种排序 + 清空操作
- 入口接入:QueryEditor 加 Ctrl+Shift+H 快捷键,点击条目回填 SQL 到编辑器
- Wails 绑定:手动同步 GetSlowQueries 与 ClearSlowQueries 到 App.js/App.d.ts
- 颜色提示:耗时 >5s 红色、>1s 橙色,便于一眼识别重查询
|
2026-06-19 13:23:02 +08:00 |
|
Syngnat
|
0c320234fd
|
✨ feat(explain-ui): 将诊断工作台接入 QueryEditor 并支持快捷键触发
- 快捷键绑定:QueryEditor 监听 Ctrl+Shift+D(Mac 为 Cmd+Shift+D)打开诊断面板
- 配置解析:从 currentConnectionId 复用 SavedConnection 模式解析 ConnectionConfig
- lazy 加载:ExplainWorkbench 通过 React.lazy + Suspense 隔离,避免 reactflow 进入主 bundle
- 端到端联通:用户在编辑器写 SQL 后按快捷键即可触发 DiagnoseQuery 并可视化结果
|
2026-06-19 13:11:20 +08:00 |
|
Syngnat
|
f5ae2e51f9
|
✨ feat(explain-ui): 新增执行计划图渲染组件与索引建议侧栏
- 依赖引入:新增 reactflow + dagre 用于执行计划 DAG 自动布局
- 构建配置:vite manualChunks 拆分 reactflow/dagre/recharts 独立 chunk,便于按需加载
- 类型镜像:utils/explainTypes.ts 镜像后端 ExplainResult/Node/Stats/IndexSuggestion,含颜色与格式化 helper
- 图渲染:ExplainGraph 自定义节点按 opType 着色 + 警告 flag 边框高亮 + dagre TB 布局
- 侧栏组件:ExplainSidebar 含统计条、节点详情、索引建议按 severity 排序
- 主容器:ExplainWorkbench 含 Modal + 执行计划/原文双 tab,调用 DiagnoseQuery 端到端联通
|
2026-06-19 13:04:49 +08:00 |
|
Syngnat
|
6b67bb24b4
|
✨ feat(tool-center): 优化工具中心分组交互与通用弹窗
- 重构工具中心为侧边分组导航,固定弹窗高度并支持内部滚动
- 新增通用可拖拽可缩放 Modal,统一主要弹窗打开体验
- 为工具中心内嵌入口补充返回上一步交互与底部操作区
- 补充多语言文案和工具中心/Modal/i18n 回归测试
|
2026-06-18 20:28:47 +08:00 |
|
Syngnat
|
06dd9507ee
|
✨ feat(ai): 补齐 Cursor 与 CodeBuddy 会话态聊天链路
- 新增 SessionChatProvider 接口,补齐非流式对话的会话态复用能力
- 为 Cursor Agent 和 CodeBuddy CLI 同步实现流式与非流式会话续接及状态持久化
- CustomProvider 补充会话态透传,统一 custom provider 的会话复用行为
- Service 新增 AIChatSendInSession,聊天主链路非流式回退改走带 session 的发送接口
- 保留原 AIChatSend 无状态语义,避免标题生成和记忆压缩污染主会话上下文
- 补充前后端定向测试,覆盖会话恢复、续接发送和前端回退分流
|
2026-06-18 13:35:08 +08:00 |
|
Syngnat
|
b588235b62
|
✨ feat(ai): 接入 Cursor Cloud Agents API
- 新增 cursor-agent provider,支持创建 agent、轮询 run 状态和 SSE 流式响应
- 接入 AITestProvider 与 AIListModels,支持 Cursor 官方 /v1/models 连通性测试和模型发现
- 在 AI 设置中新增 Cursor 供应商预设,固定 cursor-agent 协议并补齐默认端点配置
- 调整 provider readiness 与 insights 规则,允许 Cursor 未显式选模型时走官方默认模型
- 补充后端 provider/service 测试和前端 preset、表单、readiness 相关用例
Close #576
|
2026-06-18 12:35:58 +08:00 |
|
Syngnat
|
f457f6aaca
|
✨ feat(ai): 接入 CodeBuddy CLI 并兼容官方登录态
- 新增 CodeBuddy CLI provider,支持 codebuddy/cbc 命令调用与输出解析
- 将 Base URL、API Key/Auth Token、自定义请求头映射到 CodeBuddy CLI 环境变量
- 扩展 custom provider 路由与测试链路,兼容空 Base URL 和 CLI 默认模型选择
- AI 设置新增 CodeBuddy 预设,并补齐 preset 回显识别与匹配逻辑
- 修正就绪态、模型列表与表单校验,允许留空凭证直接复用本机已登录账号
- 补充前后端定向测试并覆盖 CodeBuddy 配置展示文案
Close #574
|
2026-06-18 12:06:58 +08:00 |
|
Syngnat
|
6bd87fa568
|
🐛 fix(export-workbench): 补齐整表导出百分比进度
- 为整表导出链路补充 COUNT(*) 预统计,并把总行数写回首个导出进度事件
- 兼容解析多种总数返回类型,避免后端已知总量时前端仍降级为不定进度条
- 补充后端导出总数解析与前端 runner 状态切换回归测试
|
2026-06-18 10:58:01 +08:00 |
|
Syngnat
|
293fc6e0fe
|
🐛 fix(data-grid): 修复字段元数据偶发缺失
- 为字段元数据提取补充可用性判断并在空类型/空备注时自动重试
- 刷新结果集时同步清理字段、外键和唯一键缓存并强制补拉元数据
- 补充 DataGrid 头部元数据回归测试,覆盖首次空结果重试与刷新重载场景
|
2026-06-18 10:57:51 +08:00 |
|
Syngnat
|
2a8ae05363
|
🐛 fix(export-workbench): 修正未知总数进度展示并优化 XLSX 收尾阶段
- 修正总行数为 0 时仍被当作已知总数的问题,避免导出进度百分比失真
- 调整导出进度条判定逻辑,未知总数时改为展示实时写入进度
- 统一 Sidebar、TableOverview 和导出工作台的预计行数口径,仅在总数大于 0 时视为已知
- 优化 XLSX 收尾阶段的 ZIP 压缩策略和拷贝缓冲,降低 Windows 大文件导出封装耗时
- 细化 finalizing 阶段文案,明确显示 XLSX 正在封装压缩
- 补充导出进度状态与零总数场景的回归测试
|
2026-06-18 10:15:00 +08:00 |
|