Skip to content

Add AI SQL generation, chart configuration, and LSP support#84

Merged
qianmoQ merged 25 commits into
devlive-community:devfrom
qianmoQ:dev-26.1.0
Jun 8, 2026
Merged

Add AI SQL generation, chart configuration, and LSP support#84
qianmoQ merged 25 commits into
devlive-community:devfrom
qianmoQ:dev-26.1.0

Conversation

@qianmoQ

@qianmoQ qianmoQ commented Jun 8, 2026

Copy link
Copy Markdown
Member

No description provided.

qianmoQ added 25 commits June 7, 2026 23:17
- 新增 AiSql: SQL 编辑器头部「AI」入口, 输入自然语言生成 SQL
- 自动附带当前数据源结构(表+字段)作上下文, 复用 ai_chat 命令与已配置的 AI 服务商
- 结果去除 Markdown 围栏后插入到编辑器光标处; ⌘/Ctrl+↵ 快捷生成
- 未配置 API Key 时友好提示
- ChartPanel 增加「AI 配图」: 描述需求, AI 返回图表配置 JSON 并自动应用
- 以可用列(名+类型)与支持的图表类型作上下文, 复用 ai_chat
- 解析后设置图表类型/维度/指标/聚合(散点映射 X/Y/分组), 字段按列名校验
- ⌘/Ctrl+↵ 生成; 未配置 Key 友好提示
- 每张表新增「复制建表语句」: MySQL 用 SHOW CREATE TABLE, SQLite 取 sqlite_master.sql
- 复制到剪贴板并提示; 兼容库限定(库.表)
- 每张表新增「导出 CSV」: 运行 SELECT *(上限 10 万行)并下载
- 复用 downloadCsv(带 BOM); 兼容库限定与 MySQL/SQLite
- 图表配置可「存预设」(命名)并以标签列表一键套用、删除
- 预设存入 KV(数据库), 套用时字段按当前结果列过滤
- 抽出 buildConfig/applyConfig, 与上次配置持久化共用
- Tauri WebView 不支持 window.prompt, 导致点击无反应
- 改为内联命名输入(回车保存/Esc 取消)
- window.confirm 在 Tauri WebView 不可靠
- 全部替换前改为内联确认条(取消/确认替换), 展示影响处数与文件数
- 后端 xlsx 插件(console_type=xlsx, 运行输出文件路径)
- 新增 XlsxView: 用 Tauri fs 读取字节 + SheetJS 解析, 工作表切换
- 复用 VirtualTable(虚拟滚动) + ChartPanel(27 种图表) + 导出 CSV
- SheetJS 动态导入按需分包(~430KB), 不拖大主包
- App.vue 增加 xlsx 输出分支, 设置项新增 Excel 表/图表
- smartOpen 对 Excel 扩展名直接路由到数据视图(切 xlsx 语言, 控制台显示 Excel 表/图表)
- 不再走文本打开判断, XlsxView 读取该路径解析展示
- 新增 lsp.rs: 按语言拉起语言服务器, Content-Length 帧解析, 事件转发(lsp:message/lsp:exit)
- 命令: lsp_available/lsp_start/lsp_send/lsp_stop, 透明转发 JSON-RPC
- 解析可执行全路径并增广 PATH(解决 GUI 应用 PATH 缺失)
- 内置 python/ts-js/rust/go/c-cpp/lua/php/ruby/html/css/json 服务器映射
- 新增 lspTransport: 把 codemirror-languageserver 的 Transport 桥到 Tauri 命令/事件
- 新增 lspExtension: 按语言+文件构建 LSP 扩展, 语言/服务器不可用时返回 null(不影响编辑器)
- useCodeMirrorEditor: 有文件且服务器可用时挂载 LSP, 文件切换就地重配置
- CodeEditor/App 传入 filePath/rootDir
- 引入 codemirror-languageserver 等依赖
- 后端 lsp_server_list/lsp_install: 列出状态并执行安装命令, 实时输出日志(lsp:install/lsp:install-done)
- 新增设置「语言服务」标签: 显示各语言服务器是否已安装, 未装可一键安装并看日志, 装完自动重检
- 安装走 npm/rustup/go/brew/gem, 失败可按提示手动安装
- 无文件路径时用 untitled: 文档 URI(语言服务器按内存内容分析)
- 放开仅已保存文件才挂载 LSP 的限制; 默认 Python 草稿即可触发诊断/补全
- autoClose:true 避免扩展重建时事件监听泄漏
- tooltip 挂到 document.body, 解决父级 transform/overflow 导致的悬浮窗错位
- 新增 lspStatus 共享状态, 状态栏显示绿色「LSP」表示当前语言已启用语言服务
- tooltip 配置用 Prec.highest + parent:body + position:fixed, 确保精确定位到悬停 token
- 新增 buildTooltipTheme: 悬浮文档/诊断/补全统一美化, 跟随明暗主题(圆角/阴影/代码块/选中态/诊断色条)
- 之前的 Prec.highest + parent:body + position:fixed 反而把悬浮窗顶到下方
- 改回与 useCodeMirrorFunctionHelp 一致的默认定位机制, 仅保留样式主题
- 不再依赖 CodeMirror tooltip 定位; 监听鼠标 posAtCoords 取诊断+hover, 挂到 body 的 fixed 浮层显示在鼠标下方(越界翻转/夹紧)
- 隐藏库默认的 hover/诊断 tooltip(避免重复与错位)
- 主题适配(明暗), 诊断按严重级色条; 引入 @codemirror/lint 读诊断
- posAtCoords 会就近吸附到最近字符, 导致移到空白处仍显示错误并跟随
- 增加行垂直区间 + 行内水平范围判断, 鼠标不在文本上即隐藏
- 之前用 lineBlockAt 的文档内坐标与鼠标视口坐标比较, 永远判定不在行内 → 全隐藏
- 改用 coordsAtPos 的视口坐标做行内垂直/水平判断
- 内层选项列表由固定 max-h-60 改为 flex-1 + min-h-0 + overflow-auto, 始终在算出的可用高度内滚动
- 下方放不下且上方更大时翻转到上方显示
- 自建 LanguageServerClient, 用 onCapabilities/onError/onClose 驱动状态: connecting(索引中)→on(就绪)/off
- 状态栏: 启动/索引时显示旋转图标 + 「LSP 索引中」, 就绪后绿点「LSP」
- 避免从无提示突然跳到报错, 交互更清晰
- 两处 loop+match 改为 while let
- Content-Length 用 message.len()(字符串字节长度)替代 as_bytes().len()
@qianmoQ qianmoQ merged commit aa8842c into devlive-community:dev Jun 8, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant