用户反馈现象
用户在 1.3.0 首页看到默认根目录显示为:
用户反馈:
- 不确定为什么普通目录前出现
\\?\。
- 不确定路径是否合法。
- 担心这种写法是否影响反斜杠替换和后续使用。
- 如果这是内部 Windows verbatim path,也不应该直接展示给普通用户。
问题判断
\\?\ 这类前缀可以作为 Windows 内部长路径处理形式,但 UI 展示、用户配置、README 示例、错误提示中不应直接暴露。否则用户会误以为根目录异常,降低信任感。
该问题不只影响首页默认根目录,也可能影响:
- 安装根目录卡片。
- DEVENV_HOME 展示。
- JAVA_HOME 展示。
- current 指针路径展示。
- 运行时安装目录展示。
- 项目启动向导路径展示。
- C 盘急救、空间搬家、打开目录、报告导出中的路径展示。
- 错误提示和日志中展示给用户看的路径。
修复目标
建立“内部路径”和“用户展示路径”的分层:
- 内部执行可以使用 canonical / verbatim path。
- UI、报告、toast、README 示例和用户可复制路径必须使用普通 Windows 路径。
具体要求
新增或统一路径处理函数:
normalize_user_input_path(input: &str) -> Result<PathBuf, String>
display_path_for_user(path: &Path) -> String
strip_windows_verbatim_prefix(value: &str) -> String
validate_managed_root(path: &Path) -> Result<(), String>
前端如有独立路径展示函数,也应统一调用。
rootDir 保存前校验
保存安装根目录前必须检查:
- 非空。
- 不是文件。
- 路径不存在时,提示将创建目录,并在执行前确认。
- 不允许保存到 Windows 系统目录。
- 不允许保存到 Program Files、Windows、System32 等高风险目录。
- 不允许保存到回收站、临时压缩包路径、网络不可达路径。
- 对盘符根目录如
D:\ 可规范化为 D:\DevEnvManager。
- 去除首尾引号、重复斜杠、尾部多余斜杠。
- UI 展示必须去掉
\\?\ 前缀。
报告与错误提示要求
错误提示中必须展示用户可理解路径,例如:
不要展示:
除非是调试日志,并明确标注为内部路径。
测试要求
新增测试覆盖:
\\?\C:\Dev\DevEnvs 展示为 C:\Dev\DevEnvs。
\\?\UNC\server\share 展示为可理解 UNC 路径。
"D:\DevEnvManager\" 去引号、去尾部斜杠。
D:\ 规范化为推荐根目录。
- 系统目录被拒绝。
- 文件路径被拒绝。
验收标准
- 首页默认根目录不再显示
\\?\。
- 环境页、版本管理、项目向导、报告、toast 中展示路径均不暴露
\\?\。
- 保存 rootDir 前有合法性校验和明确错误提示。
cargo test --all-targets 通过。
npm run build 通过。
- 文档或 release notes 记录该修复。
用户反馈现象
用户在 1.3.0 首页看到默认根目录显示为:
用户反馈:
\\?\。问题判断
\\?\这类前缀可以作为 Windows 内部长路径处理形式,但 UI 展示、用户配置、README 示例、错误提示中不应直接暴露。否则用户会误以为根目录异常,降低信任感。该问题不只影响首页默认根目录,也可能影响:
修复目标
建立“内部路径”和“用户展示路径”的分层:
具体要求
新增或统一路径处理函数:
前端如有独立路径展示函数,也应统一调用。
rootDir 保存前校验
保存安装根目录前必须检查:
D:\可规范化为D:\DevEnvManager。\\?\前缀。报告与错误提示要求
错误提示中必须展示用户可理解路径,例如:
不要展示:
除非是调试日志,并明确标注为内部路径。
测试要求
新增测试覆盖:
\\?\C:\Dev\DevEnvs展示为C:\Dev\DevEnvs。\\?\UNC\server\share展示为可理解 UNC 路径。"D:\DevEnvManager\"去引号、去尾部斜杠。D:\规范化为推荐根目录。验收标准
\\?\。\\?\。cargo test --all-targets通过。npm run build通过。