Enhance Git features, editor capabilities, and task management#107
Open
qianmoQ wants to merge 35 commits into
Open
Enhance Git features, editor capabilities, and task management#107qianmoQ wants to merge 35 commits into
qianmoQ wants to merge 35 commits into
Conversation
- 后端 git_get_signing / git_set_signing,读写本仓库 commit.gpgsign 与 user.signingkey - GitConfig 弹层拓展为「仓库 Git 配置」,新增签名开关与签名密钥;身份与签名一并保存 - 补充 git.config/signing* 文案
- 后端 git_hooks(列出常见客户端钩子及启用/可执行状态)、git_hook_read/save/delete(钩子名白名单防穿越,类 Unix 维护可执行权限) - 新增 GitHooks 弹层:查看钩子状态、内置编辑器编辑内容、可执行开关、删除 - GitPanel 头部新增钩子入口;补充 git.hooks/hook* 文案
- 引入 @codemirror/search,编辑器接入查找面板(正则/大小写/逐个替换)与选中词匹配高亮 - 修正过期注释:自定义 extensions 已覆盖 vue-codemirror 默认 basicSetup,查找能力此前并未启用
- 为 CodeMirror 查找面板加跟随明暗主题的样式:圆角输入框、蓝色聚焦、灰色按钮、右上角关闭按钮,替换原生控件外观
- AppHeader 在 AI 按钮旁增加 GitBranch 图标按钮,emit show-git - App.vue 绑定 @show-git 调用 openGit(未打开文件夹时提示先打开) - 补充 header.git 文案;此前 Git 面板仅能从命令面板进入
- 接入 @codemirror/language 的 codeFolding/foldGutter/foldKeymap(Ctrl/Cmd-Shift-[ 折叠 / ] 展开) - 折叠箭头默认淡显、悬停加深;gutter 透明无边框 - 修正 hideLineNumbersTheme:仅隐藏行号列而非整个 gutter,否则折叠箭头会被一并隐藏
- 查明 vue-codemirror 在 onMounted 用默认 basicSetup 建初始 state,再把 CodeEditor 传入的 extensions 叠加(非替换),故 basicSetup 的查找/折叠/括号匹配/行号一直生效 - 移除我方重复添加的 codeFolding/foldGutter/foldKeymap(导致双折叠箭头)与 search/searchKeymap/highlightSelectionMatches,并撤销不再直接引用的 @codemirror/search 依赖 - 保留:查找面板美化、折叠箭头主题样式,以及「仅隐藏行号列」使 basicSetup 折叠箭头可见
- 将 Git 面板头部所有按钮的原生 title 改为应用统一的 Tooltip 组件(样式一致、跟随主题) - v-if 条件移至 Tooltip 包裹层,隐藏时不残留空节点
- 新增 plugins/tooltip:全局委托监听,任何带原生 title 的元素悬停显示统一深色气泡(与 ui/Tooltip.vue 同款),并抑制浏览器默认 title;自动覆盖全应用现有及未来的 title - 同时提供可选指令 v-tooltip 用于显式文案 - main.ts 注册插件与指令
- 左缘新增拖拽手柄,可调整 Git 面板宽度(范围 360px ~ 窗口宽-200px) - 宽度持久化到 KV(git-panel-width),重开恢复;卸载时清理拖拽监听 - 沿用侧栏一致的拖拽交互
- lspExtension 新增可 await 的 formatDocumentAsync(请求 textDocument/formatting 并应用编辑) - App 新增 formatOnSave 开关(命令面板切换、KV 持久化);handleSave 在保存前对支持 LSP 的语言先格式化再写盘,无能力/失败则静默跳过 - 补充 command/app.formatOnSave* 文案
- 引入 @replit/codemirror-minimap,右侧显示代码缩略图 - 设置-编辑器新增「显示代码缩略图」开关(show_minimap),默认关闭,切换即时重建编辑器 - 补充 settings.editor.showMinimap 文案
- 后端 EditorConfig 缺少 show_minimap,导致保存设置时该字段被 serde 丢弃(开关不持久化/不生效) - 补充字段及三处默认初始化(默认 false)
- 渲染改为 characters 模式(替代杂乱的色块,更接近迷你代码、可读性更好) - 新增 minimap 主题:左侧分隔线、贴合编辑器背景、去除厚重阴影、视口浮层更柔和,跟随明暗主题
- git_log 新增可选 grep/author 参数(--grep -i / --author),旧调用省略即为 None - GitLog 新增过滤栏:提交信息搜索 + 作者过滤(防抖 300ms / 回车即查 / 一键清除),仅分支提交历史视图显示 - 补充 git.logSearch/Author/ClearFilter 文案
- 新增 editor/stickyScroll:语言无关的「缩进链」启发式,将外层作用域头部固定在视口顶部,可点击跳转(适配缩进型与花括号型语言,含无语法树的 StreamLanguage) - 设置-编辑器新增「启用粘性滚动」开关(show_sticky_scroll),默认关闭;同步前端 types 与后端 config.rs 字段(避免 serde 丢弃) - 粘性浮层样式跟随明暗主题;补充 settings.editor.showStickyScroll 文案
- Terminal 暴露 runCommand:在集成终端执行命令(无会话则新建,初始化期间排队) - 新增 TaskRunner 弹层:按项目(KV)管理命名任务(名称+命令),可添加/删除/一键运行 - 命令面板新增「运行任务」入口;运行时自动挂载并展开终端、写入命令 - 补充 command.tasks 与 task.* 文案
- 编辑器右键菜单与命令面板新增「发送到终端」:将选区(无选区则当前行)写入集成终端,用于 REPL 式交互 - 复用 Terminal.runCommand;自动挂载并展开终端 - 补充 app/command.sendToTerminal 文案
- 右键菜单弹出时会把光标移到点击处(折叠选区),导致发送到终端读到空选区退化为整行 - onEditorContext 在折叠前捕获选区文本(ctxSelText),sendToTerminal 经右键触发时回退使用,仍无选区才取当前行
- onEditorContext 之前总把光标移到点击处,导致右键后选区高亮消失 - 改为仅在无选区或点在选区外时移动光标;点在选区内则保留选区 - 选区得以保留后,发送到终端可直接读实时选区,移除不再需要的 ctxSelText 兜底
- 读取项目根目录标记文件自动识别测试命令(Cargo/go.mod/package.json[pnpm·yarn·npm]/pyproject·pytest/pom·gradle/Gemfile/composer/Makefile),在集成终端运行 - 命令面板新增「运行测试」;未识别时提示改用「运行任务」自定义 - 补充 command.runTests / app.testCmdNotFound 文案
- 新增 dap.rs:按语言拉起调试适配器(debugpy/dlv dap/lldb-dap),转发 DAP 消息(Content-Length 帧),dap:messages/dap:exit 事件 - 复用 lsp.rs 的 find_in_path/augmented_path/read_message(改为 pub(crate)) - 命令 dap_available/dap_start/dap_send/dap_stop;DapState 注册到 Tauri - B1 调试器第一阶段:语言无关的后端地基,握手/协议由后续前端 DAP 客户端负责
- 新增 debug/dapClient.ts:封装后端 dap_* 为请求-响应(按 request_seq 关联) + 事件分发 + 反向请求应答 - 提供 start/request/on/onReverseRequest/onClose/stop 原语;与 lspTransport 同构 - launch 握手与会话编排留待 P3 的 useDebug
- 新增 useDebug 状态 store(断点集合 + 当前执行行 + 版本号驱动同步) - 新增 breakpointGutter:可点击断点 gutter(红点)、当前执行行整行高亮,数据经 setBreakpointData 由外部派发 - 仅可调试语言(python/go/rust/c/cpp)显示断点 gutter;dapSupportsLanguage 判定 - App 监听断点版本/执行行/文件切换/编辑器重挂,派发到编辑器(沿用 diffGutter 同步模式)
- useDebug 编排 DAP 握手:initialize→launch→(initialized 时)setBreakpoints/configurationDone;先打通 Python(debugpy) - 处理 stopped(取栈顶帧定位执行行)/continued/output/terminated 事件;会话进行中断点实时下发 - 控制:继续/暂停/步过/步入/步出/重启/停止;新增 DebugToolbar 悬浮工具栏(随会话显示) - 命令面板「开始调试当前文件」;停驻时自动打开文件并跳转执行行;补充 debug.* 文案
- useDebug 停驻时加载完整调用栈(stackTrace),提供 scopes/variables 懒加载、selectFrame 与 reveal 跳转通道 - 新增 DebugPanel 侧栏:调用栈列表(点击帧跳转源码)、作用域→变量树(默认展开 Locals) - 新增 DebugVarNode 递归变量节点(可展开嵌套对象) - App reveal 监听改为 debug.reveal(停驻/选帧统一跳转,不扰执行行高亮);补充 debug 面板文案
- useDebug 新增 evaluate(watch/repl/hover)、监视表达式(停驻/选帧自动重算)、evalRepl - DebugPanel 增加监视区(增删表达式)与调试控制台(output 流 + REPL 求值输入) - 新增 debugHover:停驻时悬停标识符即在当前帧求值显示其值(仅可调试语言) - 补充 debug.watch/console/repl 文案
- 后端 dap_available 对 Python 进一步校验 debugpy 模块(import 测试) - useDebug 按语言构建 launch 参数(Python=debugpy / Go=delve mode:debug,均源码级) - 前端可调试语言收敛为 python/go;开始调试前检查适配器可用性,缺失给安装提示(debugpy / delve) - Rust/C/C++ 为编译型(lldb-dap 调试可执行文件),需先构建,留待 P6b
- 后端 dap_adapter_list / dap_install(debugpy / delve),实时日志事件 dap:install / dap:install-done(复用 lsp 的 read_raw_line) - 语言服务设置页新增「调试适配器」区:列出安装状态、一键安装、日志输出,与重新检测联动 - 补充 settings.lsp.dapTitle/dapDesc 文案
- 复用现有 ui/Tabs.vue(type=line)分「语言服务 / 调试适配器」两个 Tab,重新检测按钮放 #extra 槽 - 替换上一版手搓的标签栏与堆叠布局,无需再滚动即可切到调试适配器 - 补充 settings.lsp.tabServers/tabAdapters 文案
- useDebug 新增 allBreakpoints(跨文件枚举)与 revealLocation - DebugPanel 新增断点列表:点击跳转、悬停删除 - 状态栏在会话进行中显示调试状态(启动中/运行中/已停驻) - 补充 debug.breakpoints 文案
- 断点模型由 行集合 升级为 行→条件 映射;setBreakpoints 下发 condition - 断点列表面板每行可编辑条件(回车/失焦生效),有条件的断点显示为◆ - useDebug 新增 breakpointCondition/setBreakpointCondition;统一 bpArgs 构造带条件的下发参数 - 补充 debug.conditionPlaceholder 文案
- 从 initialize 能力读取 exceptionBreakpointFilters,首次按适配器 default 选中 - DebugPanel 新增异常断点勾选区;切换即 setExceptionBreakpoints 下发 - useDebug 新增 exceptionFilters/selectedExceptionFilters/setExceptionFilter;补充 debug.exceptions 文案
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.