Files
Nexus/docs/changelog/2026-06-02-files-editor-copy-paste-improvements.md
T
2026-07-08 22:31:31 +08:00

2.6 KiB

Changelog: 文件管理器复制粘贴、编辑器外观与 sudo 自动配置

日期: 2026-06-02
类别: 功能改进 + Bug 修复

变更摘要

1. 文件管理器复制粘贴逻辑修复

  • Ctrl+C / Ctrl+X 仅在有勾选文件时拦截浏览器默认行为并执行复制/剪切;无勾选时让浏览器原生复制正常工作
  • Ctrl+V 仅在剪贴板有内容时执行粘贴,空剪贴板不触发

2. 文件编辑器大小限制提升至 2MB

  • FILE_EDITOR_MAX_BYTES 新增为 2MB(原 300KB 仅用于预加载)
  • 编辑/查看文件 >300KB 时显示"正在加载…"提示
  • 错误提示文案更新为"文件超过 2MB"

3. 非 root 用户一键配置 sudo 权限

  • 后端新增 POST /servers/{id}/setup-files-sudo 端点
  • 使用服务器已存储的 SSH 密码,通过 sudo -S 自动写入 /etc/sudoers.d/nexus-files
  • 前端:权限提示横幅(非 root 服务器)增加「一键配置 sudo 权限」按钮
  • 成功后自动刷新权限探测并重新浏览目录

4. 编辑器外观全面改进

  • 工具栏重构:移除 v-toolbar,改用 flexbox 布局,解决语言选择器位置错乱问题
  • 语法选择器:改为 variant="plain" 更轻量,宽度从 132px 调整至 110px
  • 状态栏:背景改为主题色(蓝色),跟随 Vuetify 主题,不再硬编码 #252526;显示行:列、语言、路径、"未保存"提示
  • 自动换行:工具栏新增换行切换按钮(mdi-wrap / mdi-wrap-disabled),支持 Alt+Z 快捷键
  • 文件标签:未保存标记从 text-error 改为 text-warning,更柔和
  • 全屏/Esc 提示:全屏按钮 title 补充"(Esc)"说明

涉及文件

  • frontend/src/composables/useFilesHotkeys.ts — 复制粘贴快捷键守卫
  • frontend/src/utils/filePreload.ts — 新增 FILE_EDITOR_MAX_BYTES
  • frontend/src/pages/FilesPage.vue — 大文件加载提示、sudoers 一键配置、剪贴板守卫
  • frontend/src/components/FileEditorWorkbench.vue — 编辑器外观全面改进
  • server/api/servers.py — 新增 setup-files-sudo 端点

验证方式

  1. 文件管理器无勾选时 Ctrl+C 不弹出"已复制 N 项" snackbar
  2. 无剪贴板时 Ctrl+V 无反应
  3. 编辑 300KB~2MB 文件时显示"正在加载…"蓝色提示
  4. 非 root 服务器权限横幅出现「一键配置 sudo 权限」按钮
  5. 编辑器工具栏语言选择器正常显示,状态栏为蓝色主题
  6. Alt+Z 切换换行,状态栏出现"换行"标记

是否需要迁移/重启

  • 后端需重启(新增 API 端点): 已执行
  • 数据库无变更