Skip to content

fix(tui): keep unavailable Windows shares as ordinary text - #462

Merged
x-lixu merged 3 commits into
QwenAudio:mainfrom
kevin9327:fix-tui-unreachable-unc-text
Sep 18, 2026
Merged

x-lixu merged 3 commits into
QwenAudio:mainfrom
kevin9327:fix-tui-unreachable-unc-text

Conversation

@kevin9327

Copy link
Copy Markdown
Contributor

变更说明

TUI 把输入里的路径当成候选附件去 stat(),取不到时按"这只是普通文字"继续发送。
但判断条件只认 ENOENT / ENOTDIR

if (!['ENOENT', 'ENOTDIR'].includes(error?.code)) throw error

Windows 上不可达的主机或不存在的共享返回的是 ERROR_BAD_NETPATH /
ERROR_BAD_NET_NAME,Node 无法映射,统一报成 UNKNOWN(errno -4094):

> stat('\\\\127.0.0.1\\no-such-share\\report.pdf')
UNKNOWN: unknown error, stat '\\127.0.0.1\no-such-share\report.pdf'

于是只要消息里提到一个当前取不到的共享路径(NAS 关机、VPN 未连、共享已撤销,
或者只是在跟 Agent 讨论某个共享目录),inputPartsFromText() 就会抛出
UNKNOWN: unknown error,整条消息发不出去——而同样不存在的本地路径
C:\Users\me\missing.txt)会正常作为文字发送。三条路径(整段粘贴、
文中内联、@ 提及)都受影响。

本仓库在 #429 里已经显式支持了 \\server\share 这种 UNC 路径的识别,
这里补上它对应的失败分支:取不到的共享路径与本地缺失路径一视同仁,按普通
文字发送。目录、超限、无权限读取等"路径确实存在但不能用"的错误仍然照旧上报。

验证

新增 tui/test/input-parts.test.mjskeeps an unavailable Windows share as ordinary text(非 Windows 自动 skip)。用 \\127.0.0.1\... 这个一定可达、但
共享名不存在的地址,避免依赖 DNS 或外部网络(本地实测 4–24ms 返回)。

修复前(未改动的 upstream/main,Windows 11 + Node 24.17):

✖ keeps an unavailable Windows share as ordinary text (4.8769ms)
  Error: UNKNOWN: unknown error, stat '\\127.0.0.1\qwen-audio-agent-missing-share\report.pdf'
      at async filePartFromPath (tui/src/input-parts.mjs:45:16)
      at async filePartFromCandidates (tui/src/input-parts.mjs:117:14)
      at async inputPartsFromText (tui/src/input-parts.mjs:160:18)

修复后本地全部通过,并与未改动的 upstream/main 基线对比无回归:

  • npm test
  • npm run lint
  • npm run build
  • 行为变化已补充测试或说明无法自动测试的原因

兼容性与安全

  • 未提交密钥、用户数据、日志或内部地址
  • 配置、用户可见行为和依赖变化已同步更新文档(CHANGELOG.md
  • 隐私影响:取不到的共享路径原样留在文字里,与本地缺失路径一致,不会
    因此读取或上传任何文件。回滚方式是还原本次提交。

🤖 Generated with Claude Code

kevin9327 and others added 3 commits September 18, 2026 07:32
Windows reports an unreachable host or a missing share as UNKNOWN rather
than ENOENT, so mentioning a UNC path made the whole message fail instead
of being sent as plain text.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

@x-lixu x-lixu left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

感谢修复不可用 Windows 共享路径导致整条 TUI 消息无法发送的问题。已合入最新 main,并将 UNKNOWN 放行范围收窄为 Windows UNC 路径的 stat 查找失败,保留本地路径、权限和实际读取错误。新增跨平台模拟回归覆盖三种文本输入形式,并确认显式附件选择仍报错。本地 60 项 TUI 测试通过,最新全部 CI(含原生 Windows 用例)通过。

@x-lixu
x-lixu merged commit 72ec9a4 into QwenAudio:main Sep 18, 2026
9 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.

2 participants