Files
Nexus/docs/changelog/2026-05-30-monaco-ide-editor.md
T
2026-05-31 02:08:31 +08:00

2.2 KiB
Raw Blame History

Changelog — Monaco 编辑器 + IDE 重构 + 文件管理增强

日期: 2026-05-30
Commit: e8c1acb (含 15+ commits)
类型: 功能增强 + 安全修复
涉及文件:

  • web/app/files.html — IDE 编辑器全面重构
  • web/app/api.js — Monaco 预加载(后移入 files.html
  • web/app/terminal.html — path 参数自动 cd
  • web/app/servers.html — 「文件」按钮
  • server/api/sync_v2.py — chmod/compress/decompress 端点
  • server/api/schemas.py — FileChmod/FileCompress/FileDecompress schema

Monaco 编辑器

  • 全局预加载:页面加载后 CDN 后台下载 Monaco (~2MB)
  • IDE 面板:全屏替代模态框,支持多文件标签页
  • 每个标签独立 Monaco 实例,切换保持状态
  • 语法高亮:30+ 语言自动检测(conf→ini, sh→shell, py→python 等)
  • Ctrl+S 保存 + 未保存指示器
  • 状态栏:光标位置 + 语言 + 文件路径

文件管理增强

  • 右键菜单:预览/下载/重命名/权限/复制路径/终端/压缩/解压/删除
  • 文件树:IDE 左侧面板,点击文件打开/目录导航
  • 最小化/恢复:底部标签栏
  • 新建文件按钮(📄+
  • chmod 权限修改
  • 压缩 tar.gz / 解压 tar.gz+zip
  • 排序切换(名称/大小/时间)
  • 文件类型筛选(.conf/.log/.sh/.py/.json/.yml/.txt
  • 文件预加载 + 缓存(≤1MB 文本文件,双击秒开)

SSH 终端集成

  • 工具栏「🖥 终端」按钮
  • 新标签页打开 SSH + 自动 cd 到当前目录
  • terminal.html 支持 path URL 参数

服务器列表

  • 每行操作栏新增「文件」按钮(琥珀色)
  • 点击直达文件管理,自动选中服务器

安全修复(审计 FINDING

  • H-01: esc() 加引号转义防 onclick XSS
  • H-02: initialPath 路径白名单防命令注入
  • H-03: 新建文件文件名白名单
  • H-13: 移除 showModal 中已删除的 textarea 引用
  • H-20: initialPath 仅首次连接 cd
  • H-26: esc() 跨文件一致性

已知限制

  • Monaco CDN 无 SRI(版本锁定 @0.45.0 降低风险)
  • Nginx 静态文件缓存可能导致更新延迟(需 nginx -s reload

是否需迁移/重启

  • 需要重启后端服务(新增 chmod/compress/decompress 端点)