What happened? / 实际发生了什么?
在 Windows 桌面版 AstrBot 的 ChatUI 中,无法通过从资源管理器拖拽文件的方式为当前会话添加附件。
将文件拖到消息输入框或附件区域时,界面没有显示附件,文件也没有进入待发送列表。使用附件按钮打开系统文件选择对话框后,选择同一个文件则可以正常添加。
然而,在通过浏览器访问同一个 AstrBot Web UI 时,拖拽文件添加附件可以正常工作,因此问题似乎只出现在 AstrBot Desktop 内嵌的 WebView2/Tauri 窗口中。
我实际复现时使用的桌面端版本为 v4.26.7,当前 main 分支的 tauri.conf.json 中似乎仍未配置 dragDropEnabled,我在本地源码中配置了该选项后重新构建,成功修复了这个问题。
Expected behavior / 预期行为
Windows 桌面版的 ChatUI 应当与浏览器 WebUI 保持一致,将文件从文件资源管理器中拖入 ChatUI 内时,可以正常上传为附件。
Steps to reproduce / 复现步骤
- 在 AstrBot Desktop 中打开 ChatUI,并进入任意一个可以发送消息的会话
- 从 Windows 资源管理器中选择一个普通文件
- 将文件拖到 ChatUI 的消息输入框或附件区域,松开鼠标,观察到文件没有被添加,界面没有正常进入附件上传流程
- 在浏览器中访问同一个 AstrBot Web UI,再次拖拽同一个文件,浏览器中的拖拽添加可以正常工作
Desktop version / 桌面端版本
v4.26.7
Installation channel / 安装来源
GitHub Release installer
OS / 操作系统
Windows
Architecture / 架构
amd64
Upstream AstrBot ref used by desktop build (optional) / 桌面构建使用的上游 AstrBot Ref(可选)
No response
Logs, screenshots, and additional context / 日志、截图与补充信息
目前未观察到桌面端或后端错误日志。该问题似乎发生在文件进入附件上传流程之前,因为桌面版没有收到正常的 HTML5 文件拖放事件。我的检查结果如下:
打包后的 ChatUI 已经实现了 dragover、dragleave 和 drop 处理,且文件拖拽入口读取 event.dataTransfer.files、文件选择框入口读取 event.target.files,两种方式获得文件后,都会进入同一个 fileSelect 附件处理流程。
因此,现有 ChatUI 和后端上传流程应该已经支持拖拽附件,问题应该出在桌面端 WebView 的事件转发层,当前 AstrBot Desktop 源码中没有发现对 Tauri 原生 DragDropEvent 的监听,而且当前 src-tauri/tauri.conf.json 的主窗口配置没有显式设置 dragDropEnabled。
Tauri v2 官方文档说明,dragDropEnabled 默认启用 Tauri 自己的文件拖放处理器,在 Windows 上,如果希望 WebView 使用标准 HTML5 drag-and-drop,需要将其设置为 false。因此,可以解决此问题的最小修复是对文件:
https://github.com/AstrBotDevs/AstrBot-desktop/blob/main/src-tauri/tauri.conf.json
应用如下更改:
"fullscreen": false,
- "backgroundThrottling": "disabled"
+ "backgroundThrottling": "disabled",
+ "dragDropEnabled": false
### Willing to submit a PR? / 是否愿意提交 PR?
- [ ] I am willing to submit a PR to fix this issue. / 我愿意提交 PR 修复此问题。
### Code of Conduct
- [x] I agree to follow the project's Code of Conduct. / 我同意遵守项目行为准则。
What happened? / 实际发生了什么?
在 Windows 桌面版 AstrBot 的 ChatUI 中,无法通过从资源管理器拖拽文件的方式为当前会话添加附件。
将文件拖到消息输入框或附件区域时,界面没有显示附件,文件也没有进入待发送列表。使用附件按钮打开系统文件选择对话框后,选择同一个文件则可以正常添加。
然而,在通过浏览器访问同一个 AstrBot Web UI 时,拖拽文件添加附件可以正常工作,因此问题似乎只出现在 AstrBot Desktop 内嵌的 WebView2/Tauri 窗口中。
我实际复现时使用的桌面端版本为 v4.26.7,当前 main 分支的
tauri.conf.json中似乎仍未配置dragDropEnabled,我在本地源码中配置了该选项后重新构建,成功修复了这个问题。Expected behavior / 预期行为
Windows 桌面版的 ChatUI 应当与浏览器 WebUI 保持一致,将文件从文件资源管理器中拖入 ChatUI 内时,可以正常上传为附件。
Steps to reproduce / 复现步骤
Desktop version / 桌面端版本
v4.26.7
Installation channel / 安装来源
GitHub Release installer
OS / 操作系统
Windows
Architecture / 架构
amd64
Upstream AstrBot ref used by desktop build (optional) / 桌面构建使用的上游 AstrBot Ref(可选)
No response
Logs, screenshots, and additional context / 日志、截图与补充信息
目前未观察到桌面端或后端错误日志。该问题似乎发生在文件进入附件上传流程之前,因为桌面版没有收到正常的 HTML5 文件拖放事件。我的检查结果如下:
打包后的 ChatUI 已经实现了
dragover、dragleave和drop处理,且文件拖拽入口读取event.dataTransfer.files、文件选择框入口读取event.target.files,两种方式获得文件后,都会进入同一个fileSelect附件处理流程。因此,现有 ChatUI 和后端上传流程应该已经支持拖拽附件,问题应该出在桌面端 WebView 的事件转发层,当前 AstrBot Desktop 源码中没有发现对 Tauri 原生
DragDropEvent的监听,而且当前src-tauri/tauri.conf.json的主窗口配置没有显式设置dragDropEnabled。Tauri v2 官方文档说明,
dragDropEnabled默认启用 Tauri 自己的文件拖放处理器,在 Windows 上,如果希望 WebView 使用标准 HTML5 drag-and-drop,需要将其设置为false。因此,可以解决此问题的最小修复是对文件:应用如下更改: