# 2026-06-02 文件编辑器卡住（空壳遮罩）修复

## 日期
2026-06-02

## 变更摘要
修复点击「编辑」后页面卡住、出现透明全屏遮罩无法操作的问题。

## 动机
生产环境监听控制台得到：`TypeError: (e ?? "").trim is not a function`。浮动层 `file-editor-float` 已渲染但内部 `v-card` 因渲染异常未挂载，留下 968×758 透明层拦截所有点击。

## 根因
`FilesPage.vue` 向 `FileEditorWorkbench` 传入 `page.currentPath` / `page.selectedServer` 时未经过 `proxyRefs`，子组件收到的是 Vue `Ref` 对象而非字符串/数字。`normalizeRemotePath(Ref)` 对非字符串调用 `.trim()` 抛错，编辑器面板渲染失败。

## 涉及文件
- `frontend/src/pages/FilesPage.vue` — 模板绑定改用 `proxyRefs(page)` 的 `filesPage`
- `frontend/src/utils/remotePath.ts` — `coercePathString` 防御性入参
- `frontend/src/components/FileEditorWorkbench.vue` — `openFile` try/catch、v-tabs 绑定、空 tab 不显示遮罩

## 迁移 / 重启
- 仅前端：需重新 `vite build` 并部署 `web/app/`
- 无需重启后端

## 验证方式
1. 强刷 `Ctrl+Shift+R` 打开文件管理，选服务器后点任意文件「编辑」
2. 应出现完整编辑器（工具栏、目录树、Monaco），页面可继续点击
3. 控制台无 `trim is not a function`
