Skip to content

Temp/sync dev latest - #3

Merged
htmambo merged 48 commits into
fix/restore-connection-terminal-lag-by-codexfrom
temp/sync-dev-latest
May 16, 2026
Merged

Temp/sync dev latest#3
htmambo merged 48 commits into
fix/restore-connection-terminal-lag-by-codexfrom
temp/sync-dev-latest

Conversation

@htmambo

@htmambo htmambo commented May 16, 2026

Copy link
Copy Markdown
Owner

Closes #[issue number]

Description

Describe in English for the changes made in this pull request and the problem it solves.
Please keep 1 PR to solve 1 problem, and keep Small improvements should be small modifications to make PR easier to review and to merge.

Screenshot

Before After
[Put Before Screenshot here] [Put After Screenshot here]

Break Changes

Describe any breaking changes introduced by this pull request. If none, remove this section.

  • Change 1
- Old code snippet
+ New code snippet

How to Test

Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce.

Checklist

  • I have read the CONTRIBUTING document and followed the guidelines.
  • Reviewed the changes in this PR and confirmed AI generated code (If any) is accurate.
  • Passed cargo run for story tests related to the changes.
  • Tested macOS, Windows and Linux platforms performance (if the change is platform-specific)

feigeCode and others added 30 commits May 7, 2026 16:04
- 将 JsonRpcClient 改为内部共享状态,使用 Arc 和异步 Mutex 保护写操作
- 通过 HashMap 和 oneshot 通道实现请求响应的路由和匹配
- 实现 reader task 持续接收并路由响应,支持响应乱序返回
- 增加请求取消安全机制,防止挂起响应泄漏
- 添加显式关闭方法,安全中断 reader task 和子进程
- ExternalDbConnection 客户端改用 Arc<JsonRpcClient> 支持并发请求
- 在请求接口中检测连接关闭,故障时自动清理并触发重连
- 优化驱动进程启动,支持通过环境变量传递独立动态 socket 名
- 新增丰富的并发请求和生命周期管理测试覆盖
- 调整 duckdb_driver 测试,支持多连接并发使用同一驱动
- 更新 duckdb_driver 主程序,优先使用环境变量传递 socket 名,增强兼容性
- 将各数据库插件中支持特性的接口替换为统一的 capabilities() 方法
- 修改相关代码逻辑改用 capabilities 字段判断数据库特性支持
- 为 IPC 插件新增通用的 optional_metadata 方法简化元数据请求
- 合并多驱动能力信息,提供统一的能力合并函数 merge_capabilities
- 调整 IpcDriverManifest 以支持顶层声明 capabilities 字段并优先使用
- 更新测试以验证 capabilities 的正确性和兼容性
- 移除多余的 supports_xxx、uses_schema_as_database 等老接口实现与调用
- 修改 manager 及 plugin 使用新能力接口,保持行为一致
- 优化插件能力相关测试,确保仍支持函数和存储过程能力默认值
- 修正 IPC 客户端对 UnsupportedMethod 错误的映射,提升错误处理一致性
- 新增 scrollbar_plugin 模块,实现水平和垂直滚动条的渲染与交互
- 在 scroll_pan_plugin 中集成滚动条状态,支持拖动滚动条控制视图偏移
- 修改 pan_mode_plugin,使用本地画布坐标判断鼠标点击位置
- 增加滚轮平移支持,优化滚动时的视图偏移与刷新调度
- 完善滚动条拖动交互,支持鼠标移动和释放事件处理
- 新增滚动条轨道和滑块的渲染逻辑,包含颜色样式和位置计算
- 实现滚动条滑块长度的最小值限制,保证滑块可用性
- 在 lsp completions 中修复触发逻辑,避免光标在触发点前时错误弹出补全菜单
- 添加相关单元测试,覆盖滚动条长度计算和补全菜单显示条件
- 在刷新调度开始时缓存所有节点端口偏移
- 调用通知方法确保界面正确更新
- 保持原有的定时调度逻辑不变
- 在英文README中添加ER图及相关致谢链接
- 在中文README中添加ER图及对应致谢说明
- 保持两者内容一致,增强文档信息完整性
- 提升项目文档的可读性和参考价值
- 新增日志相关国际化文案,包括日志组标题与日志文件路径说明
- 增加配置项支持自定义日志文件保存路径,默认为配置目录下logs文件夹
- 实现日志文件初始化逻辑,支持自动创建父目录及文件权限设置(Unix系统权限为600)
- 日志初始化失败时输出错误日志,并降级为控制台打印
- 使用tracing-appender实现异步非阻塞日志写入文件功能
- 添加单元测试覆盖日志路径解析及文件写入行为,保证功能稳定
- 在设置界面新增日志文件路径配置项,支持用户输入自定义路径并保存
- 新增 sgr_mouse_wheel_report 函数,为鼠标滚轮提供 SGR 报告支持
- 终端视图处理鼠标滚轮时,根据模式发送正确的 SGR 控制序列
- 在 shell_integration.sh 中增加 Vim 和 Neovim 鼠标支持的包装函数
- 通过 shell_integration.rs 添加多项单元测试,确保 Vim 包装函数行为正确
- 支持 ONETCLI_VIM_MOUSE 环境变量禁用 Vim 鼠标功能
- 单元测试覆盖 vim/neovim 包装函数参数传递和别名、函数保护机制
- 在 sql_dump_view、sql_run_view、table_export_view 和 table_import_view 中引入 TitleBar 组件
- 将视图内容包装在带有 TitleBar 的垂直布局容器中
- 调整布局高度以适应 TitleBar 的加入
- 优化界面整体视觉层次感和用户体验
- 新增多标签页管理,支持打开、切换、关闭标签
- 按标签ID和远程路径唯一定位标签页
- 根据关闭的标签调整激活标签索引,实现正确聚焦
- 标签支持保存、加载、显示加载和保存状态
- 增加关闭未保存修改时的确认提示,支持保存或放弃关闭
- 完善标签软换行、语言模式、文件大小显示功能
- 实现关闭窗口时所有标签的未保存内容处理逻辑
- 主窗口只允许单实例,多次打开文件时复用现有窗口
- 优化窗口标题显示为当前激活标签名
- 本地加入关闭标签按钮,禁用正在保存的标签关闭操作
- 添加相关单元测试覆盖新功能和边界情况
- sftp模块排序相关代码使用sort_by_key简化提高可读性
- 语言配置文件新增“关闭页签”文本支持中文和英文
- 在 GpuiEventProxy 中添加窗口尺寸同步和 Wakeup 事件去重逻辑,防止事件堆积
- 实现默认颜色回复,避免 OSC 颜色请求总返回黑色
- 终端事件循环支持 Wakeup 去重标记重置,避免高频输出时阻塞事件转发
- 增加多项终端事件去重单元测试,保证 Wakeup 行为正确
- 新增块状字符 (U+2580..U+259F) 的几何绘制支持,避免字体回退时出现渲染接缝
- RenderCache 新增块字符缓存,重构重建逻辑以支持块字符几何渲染
- 终端渲染阶段绘制块字符几何路径,提高渲染质量和字体兼容性
- 终端视图添加多项块字符几何绘制单元测试,确保坐标计算正确
- 优化按键映射单元测试,覆盖常用键及修饰键序列生成
- 终端视图中新增 SGR 鼠标按钮事件生成及回报,完善鼠标按钮编码和修饰符支持
- 终端主流程改用 wakeup_pending 标记,避免重复 Wakeup 事件引发的性能问题
- 调整窗口尺寸更新接口,确保所有相关模块共享正确终端尺寸信息
- 在 Terminal 结构中新增 pixel_width 和 pixel_height 字段用于记录像素尺寸
- resize 方法中若单元格尺寸未变则仅更新像素尺寸,避免重复调整行列
- 新增 nudge_resize 方法,重新向 PTY 发送当前尺寸以触发 SIGWINCH
- 在 View 模块监测 alt screen 模式切换,进入时调用 nudge_resize
- 多处终端视图代码添加详细的调试日志,追踪尺寸与重建状态
- 记录底部若干行内容分布,辅助调试 TUI 应用残留旧画面问题
- 在 RenderCache 和绘制函数中添加额外日志,助力性能与渲染分析
选中单元格使用 border_2 绘制高亮边框,边框会占用盒模型内部空间,
通过 content_box_inset 挤压内容区,导致文字位置跳动。改为在施加
选中边框后等量减少对应方向的 padding,保持内容区原点不变。
…-shift

fix(edit_table): 修复选中单元格时内容因边框挤压产生偏移
编辑模式和显示模式走了两套不同的布局路径,前者完全跳过
table_cell_size 和边框补偿,渲染的 Input 组件又自带 py/px,
导致文本位置不一致。

改动:
- 统一 render_cell 的容器布局,两种模式共用 table_cell_size + 边框补偿
- Input 新增 bare() 模式,跳过自带的 padding/height/items_center,
  让父容器完全控制布局,保留所有键盘/鼠标事件处理
- 在 SSH 连接配置中新增 disable_shell_integration 字段支持用户关闭 shell 集成注入
- 修改 ssh_backend 逻辑,关闭时跳过安装 shell integration,走裸 request_shell 路径
- 设计 zsh 和 bash wrapper,保留完整用户 shell 行为并集成环境恢复和 source 机制
- 对关闭集成场景增加单测,确保只启动交互 shell channel 不写缓存
- 终端 UI 界面新增禁用 shell 集成功能选项及描述提示
- 修正鼠标 SGR 事件处理,支持 shift 拖拽文本选区穿透,兼容多终端约定
- 更新 Cargo 版本号至 v0.4.1
…iner

fix(edit_table): 修复双击编辑时单元格内容位移
- 将各数据库插件中支持特性的接口替换为统一的 capabilities() 方法
- 修改相关代码逻辑改用 capabilities 字段判断数据库特性支持
- 为 IPC 插件新增通用的 optional_metadata 方法简化元数据请求
- 合并多驱动能力信息,提供统一的能力合并函数 merge_capabilities
- 调整 IpcDriverManifest 以支持顶层声明 capabilities 字段并优先使用
- 更新测试以验证 capabilities 的正确性和兼容性
- 移除多余的 supports_xxx、uses_schema_as_database 等老接口实现与调用
- 修改 manager 及 plugin 使用新能力接口,保持行为一致
- 优化插件能力相关测试,确保仍支持函数和存储过程能力默认值
- 修正 IPC 客户端对 UnsupportedMethod 错误的映射,提升错误处理一致性
- 新增 scrollbar_plugin 模块,实现水平和垂直滚动条的渲染与交互
- 在 scroll_pan_plugin 中集成滚动条状态,支持拖动滚动条控制视图偏移
- 修改 pan_mode_plugin,使用本地画布坐标判断鼠标点击位置
- 增加滚轮平移支持,优化滚动时的视图偏移与刷新调度
- 完善滚动条拖动交互,支持鼠标移动和释放事件处理
- 新增滚动条轨道和滑块的渲染逻辑,包含颜色样式和位置计算
- 实现滚动条滑块长度的最小值限制,保证滑块可用性
- 在 lsp completions 中修复触发逻辑,避免光标在触发点前时错误弹出补全菜单
- 添加相关单元测试,覆盖滚动条长度计算和补全菜单显示条件
- 在刷新调度开始时缓存所有节点端口偏移
- 调用通知方法确保界面正确更新
- 保持原有的定时调度逻辑不变
- 在英文README中添加ER图及相关致谢链接
- 在中文README中添加ER图及对应致谢说明
- 保持两者内容一致,增强文档信息完整性
- 提升项目文档的可读性和参考价值
- 新增日志相关国际化文案,包括日志组标题与日志文件路径说明
- 增加配置项支持自定义日志文件保存路径,默认为配置目录下logs文件夹
- 实现日志文件初始化逻辑,支持自动创建父目录及文件权限设置(Unix系统权限为600)
- 日志初始化失败时输出错误日志,并降级为控制台打印
- 使用tracing-appender实现异步非阻塞日志写入文件功能
- 添加单元测试覆盖日志路径解析及文件写入行为,保证功能稳定
- 在设置界面新增日志文件路径配置项,支持用户输入自定义路径并保存
- 新增 sgr_mouse_wheel_report 函数,为鼠标滚轮提供 SGR 报告支持
- 终端视图处理鼠标滚轮时,根据模式发送正确的 SGR 控制序列
- 在 shell_integration.sh 中增加 Vim 和 Neovim 鼠标支持的包装函数
- 通过 shell_integration.rs 添加多项单元测试,确保 Vim 包装函数行为正确
- 支持 ONETCLI_VIM_MOUSE 环境变量禁用 Vim 鼠标功能
- 单元测试覆盖 vim/neovim 包装函数参数传递和别名、函数保护机制
feigeCode and others added 18 commits May 12, 2026 23:07
- 在 sql_dump_view、sql_run_view、table_export_view 和 table_import_view 中引入 TitleBar 组件
- 将视图内容包装在带有 TitleBar 的垂直布局容器中
- 调整布局高度以适应 TitleBar 的加入
- 优化界面整体视觉层次感和用户体验
- 新增多标签页管理,支持打开、切换、关闭标签
- 按标签ID和远程路径唯一定位标签页
- 根据关闭的标签调整激活标签索引,实现正确聚焦
- 标签支持保存、加载、显示加载和保存状态
- 增加关闭未保存修改时的确认提示,支持保存或放弃关闭
- 完善标签软换行、语言模式、文件大小显示功能
- 实现关闭窗口时所有标签的未保存内容处理逻辑
- 主窗口只允许单实例,多次打开文件时复用现有窗口
- 优化窗口标题显示为当前激活标签名
- 本地加入关闭标签按钮,禁用正在保存的标签关闭操作
- 添加相关单元测试覆盖新功能和边界情况
- sftp模块排序相关代码使用sort_by_key简化提高可读性
- 语言配置文件新增“关闭页签”文本支持中文和英文
- 在 GpuiEventProxy 中添加窗口尺寸同步和 Wakeup 事件去重逻辑,防止事件堆积
- 实现默认颜色回复,避免 OSC 颜色请求总返回黑色
- 终端事件循环支持 Wakeup 去重标记重置,避免高频输出时阻塞事件转发
- 增加多项终端事件去重单元测试,保证 Wakeup 行为正确
- 新增块状字符 (U+2580..U+259F) 的几何绘制支持,避免字体回退时出现渲染接缝
- RenderCache 新增块字符缓存,重构重建逻辑以支持块字符几何渲染
- 终端渲染阶段绘制块字符几何路径,提高渲染质量和字体兼容性
- 终端视图添加多项块字符几何绘制单元测试,确保坐标计算正确
- 优化按键映射单元测试,覆盖常用键及修饰键序列生成
- 终端视图中新增 SGR 鼠标按钮事件生成及回报,完善鼠标按钮编码和修饰符支持
- 终端主流程改用 wakeup_pending 标记,避免重复 Wakeup 事件引发的性能问题
- 调整窗口尺寸更新接口,确保所有相关模块共享正确终端尺寸信息
- 在 Terminal 结构中新增 pixel_width 和 pixel_height 字段用于记录像素尺寸
- resize 方法中若单元格尺寸未变则仅更新像素尺寸,避免重复调整行列
- 新增 nudge_resize 方法,重新向 PTY 发送当前尺寸以触发 SIGWINCH
- 在 View 模块监测 alt screen 模式切换,进入时调用 nudge_resize
- 多处终端视图代码添加详细的调试日志,追踪尺寸与重建状态
- 记录底部若干行内容分布,辅助调试 TUI 应用残留旧画面问题
- 在 RenderCache 和绘制函数中添加额外日志,助力性能与渲染分析
选中单元格使用 border_2 绘制高亮边框,边框会占用盒模型内部空间,
通过 content_box_inset 挤压内容区,导致文字位置跳动。改为在施加
选中边框后等量减少对应方向的 padding,保持内容区原点不变。
编辑模式和显示模式走了两套不同的布局路径,前者完全跳过
table_cell_size 和边框补偿,渲染的 Input 组件又自带 py/px,
导致文本位置不一致。

改动:
- 统一 render_cell 的容器布局,两种模式共用 table_cell_size + 边框补偿
- Input 新增 bare() 模式,跳过自带的 padding/height/items_center,
  让父容器完全控制布局,保留所有键盘/鼠标事件处理
- 在 SSH 连接配置中新增 disable_shell_integration 字段支持用户关闭 shell 集成注入
- 修改 ssh_backend 逻辑,关闭时跳过安装 shell integration,走裸 request_shell 路径
- 设计 zsh 和 bash wrapper,保留完整用户 shell 行为并集成环境恢复和 source 机制
- 对关闭集成场景增加单测,确保只启动交互 shell channel 不写缓存
- 终端 UI 界面新增禁用 shell 集成功能选项及描述提示
- 修正鼠标 SGR 事件处理,支持 shift 拖拽文本选区穿透,兼容多终端约定
- 更新 Cargo 版本号至 v0.4.1
- edit_table: 修复边框补偿逻辑和单元格编辑
- terminal: 增强 PTY 后端、shell integration 控制
- remote_file_editor: 保留当前分支实现
- popup_window: 保持当前分支 API 兼容性
- 解决 SshParams disable_shell_integration 字段冲突

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- 移除 table/mod.rs 中未使用的 TableModel trait 定义
- 移除 table/delegate.rs 中对 TableModel 的 blanket impl
- 移除 ssh.rs 中多余的 #[cfg(test)] 和 #[cfg(unix)] 限制
- 修复 home 页面 rounded 值使用 theme.radius_lg 替代硬编码
- 清理 model_settings.rs 多余空行
- 更新 Cargo.lock (serial2 版本升级)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- SshTerminalConfig 添加 disable_shell_integration 字段
- spawn_ssh_connect 改用 SshBackend::connect 替代不存在的 connect_with_progress
- SshBackend 实现 TerminalBackend::close 方法
- ssh_backend 处理 OscEvent::SshPromptReady 事件
- editor_window.rs 补充 cx 类型注解

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- open_remote_file_editor 签名添加 window 参数
- 移除不必要的 async spawn 包装
- 更新 file_manager_panel 和 sftp_view 的调用处

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- 传递 wakeup_pending 句柄给事件循环,转发 Wakeup 后重置标志位,
  避免被 GpuiEventProxy 去重逻辑永久吞掉
- 放宽时间正则为 \d{1,2} 并支持毫秒/微秒分隔符
- 数量正则增加单字母单位 B/M/G/T 匹配

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
详细说明:
- 重构表格单元格选区边框实现,从绝对定位子元素改为直接边框样式
- 添加边框补偿逻辑,避免边框宽度导致内容区域偏移
- 优化筛选器逻辑操作符选择器的居中布局和宽度常量化
- 调整 codium_dark 主题多个颜色的 alpha 透明度
- 删除 main.yml 中重复的 Log 国际化配置项

文件变更:
- 修改:crates/db_view/src/table_data/filter_editor.rs
- 修改:crates/one_ui/src/edit_table/state.rs
- 修改:main/locales/main.yml
- 修改:themes/codium_dark.jsonc

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 16, 2026 04:32

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review this pull request because it exceeds the maximum number of lines (20,000). Try reducing the number of changed lines and requesting a review from Copilot again.

@htmambo
htmambo merged commit 4a3cec1 into fix/restore-connection-terminal-lag-by-codex May 16, 2026
0 of 3 checks passed
htmambo added a commit that referenced this pull request Jul 4, 2026
从 dev 同步提交 c5dbbc8 的 rename 部分(补完第四批跳过的 rename)。

详细说明:
- 文件菜单加 Rename 项(Edit icon)→ rename_item 对话框(Input + 确认/取消)
- on_ok:校验非空 + is_valid_entry_name(非法→invalid_name 通知);sftp_client.rename(old, new) + refresh_dir;失败→rename_failed 通知(含 error)
- build_rename_target_path:remote_path_parent + join_remote_path(HEAD join_remote_path 处理根目录,无 // 双斜杠)
- on_ok 返回 false 保持对话框,spawn 成功后 close_dialog(失败保持打开供重试)

文件变更:
- 修改: crates/terminal_view/src/sidebar/file_manager_panel.rs(build_rename_target_path helper + rename_item 方法 + 菜单项 + clones + 1 测试)

测试状态:
- [x] cargo test -p terminal_view --lib file_manager_panel::tests: 14 passed(含新增 build_rename_target_path_keeps_parent_directory)
- [x] cargo build -p terminal_view 通过
- [x] External Review(coding-bridge 32547a61)无阻塞:#3 root // 误报(HEAD join_remote_path 处理根目录);feigeCode#4 error 已含;#1/#2 dev 原设计(无 active_rename 锁/None 静默,忠实移植)

> OMC trailers:
> Constraint: 仅 file_manager_panel.rs;rename 部分(补完 c5dbbc8)
> Rejected: 加 active_rename 锁 | dev 原设计无锁,忠实移植;失败保持对话框可重试
> Directive: 用户要求第五批继续推进,每步 External Review
> Confidence: 高 | 14 测试通过 + 编译 + review 无阻塞 + 逻辑为 dev 已测功能忠实移植
> Scope-risk: terminal 侧栏文件管理器远程重命名;无重入锁(dev 设计)
> Not-tested: 运行时真实 SFTP 重命名(需远程环境手测);并发重入场景

Co-Authored-By: Claude <noreply@anthropic.com>
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.

4 participants