# Changelog 本文件遵循 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/) 约定, 版本号遵循 [Semantic Versioning](https://semver.org/lang/zh-CN/)。 各版本对应的完整提交记录见 git tag(`v1.4.5`、`v1.5.0`、`v1.5.2` 等)。 ## [Unreleased] ### Added - **Go 后端补齐 Python 旧版缺失能力**: - 统一出站 SSRF 防护(`backend-go/internal/graw/ssrf.go`):通知 Webhook、站点可用性、备份 WebDAV、网络储存、服务/端口监控在拨号阶段校验并固定已解析 IP(防 DNS rebinding),拒绝回环 / 链路本地(含云元数据)/ 组播 / 保留地址;支持 `GRAW_NOTIFY_ALLOW_PRIVATE_NET` / `GRAW_UPTIME_ALLOW_PRIVATE_NET` / `GRAW_SVCMON_ALLOW_PRIVATE_NET` - 通知中心对齐 Python 语义:顶层 `enabled/interval_seconds/cooldown_seconds`、渠道 `has_password/has_bot_token/has_key` 脱敏、Server酱 `key` 字段、SMTP `ssl/starttls/subject`、资源阈值后台告警与冷却去重、告警记录字段与前端对齐 - 站点可用性 / 服务与端口监控补齐后台调度、`last_status/last_detail/last_checked_at/down_since/history` 状态机、预期状态码校验、systemd `enable/disable` 与 `is_enabled` 回验;证书到期检查对齐 `remind_days` 多档位、`ok/warn/expired` 状态与「每档位只提醒一次」去重 - 巡检报告补齐五段内容(资源 24h / 证书 / 服务 / 可用性 / 告警),报告改存 `.txt` 并保留 30 份轮转 - 内网映射代理对齐 Python:剥离 `__graw_token`、改写 `Location`、放宽 iframe 头、目标不可达返回友好 HTML 页 - Docker 引擎配置支持 Podman `registries.conf`(TOML)读取与写入;`GRAW_AGENT_TS_WINDOW`、`GRAW_CONTAINER_NAME` 与 compose 目录自动探测 - **Go 重构版后端(backend-go)**:用 Go 完整重写 Python/FastAPI 后端,接口路径、请求/响应结构与 `data/` 文件格式保持兼容,前端无需改动即可切换 - 单包实现 `backend-go/internal/graw/`:Go 1.22 `ServeMux` 路由、JWT(HS256)+bcrypt+TOTP 鉴权、会话/权限模型、安全响应头与请求体限额、SPA 静态托管 - 覆盖原后端全部业务路由(鉴权/系统监控 + WebSocket、Docker/文件/进程/磁盘/终端、网站与 WAF/SSL/伪静态/访问统计、数据库、计划任务/防火墙/日志、应用商店/运行时/任务、备份/面板备份/回滚/巡检报告、通知/可用性/证书/服务监控、多节点与 Agent 隧道、SSH 密钥/端口转发/批量操作、Frp/内网映射/网络储存/VPN/Git 部署/插件协议) - 多节点:SSH 连接池与主机密钥 TOFU、成对密钥换取子节点 JWT、`direct-tcpip` 上的 HTTP 与 WebSocket 隧道桥接(system/docker/terminal/tamper) - 依赖原生驱动(MySQL/PostgreSQL/SQLite/Redis)+ CLI(docker/podman、crontab、certbot、smbclient/mc),提供多阶段 `backend-go/Dockerfile` - **VPN 转发策略**:把面板里维护的 VPN 节点整理成兼容 Clash / Clash.Meta / mihomo 的订阅链接(`/api/vpn/sub?token=`,32 字节随机令牌可随时重置、恒时比较、未启用/令牌错一律 404 防枚举),并可在宿主机托管 mihomo/clash 核心真正跑起来 - 策略三项勾选:**端口转发**(每条转发条目生成 `DST-PORT` 分流规则,核心侧以 `listeners: type: tunnel` 落地,可勾选经 VPN 或直连目标)/ **全局代理**(`MATCH,VPN` 兜底规则,核心开放 mixed-port HTTP/SOCKS5 混合端口做网关)/ **低占用模式(默认勾选)** - 低占用模式:看门狗 30 秒轮询核心 `external-controller /connections`(有并发连接或流量增量即活跃),空闲超过阈值(默认 15 分钟)自动关停核心;拉取订阅、`POST /api/vpn/wake`、手动启动等「初次请求」自动重新拉起;非低占用模式下核心意外退出 60 秒限频自愈 - 核心仅监听本机(`allow-lan: false`、`external-controller` 绑 `127.0.0.1` + secret);`binPath` 留空自动探测 mihomo / clash-meta / clash,未装核心时订阅仍可用(端口转发/全局代理提示安装) - 后端 `vpn_policy.py`(配置渲染/进程托管/看门狗)+ `routers/vpn.py`(config/status/start/stop/wake/subtoken/detect/preview/log);`auth.MODULES` 新增 `vpn` 模块(`PERM("vpn")`),`/api/vpn` 与 portforward 同为面板主机定位(在 `_AGENT_PROXY_EXCLUDE_PREFIX`,不经 Agent 代理) - 前端「VPN转发策略」窗口(桌面 + 面板模式侧边栏「网络」分组,Star 解锁范围):策略勾选、订阅链接显隐/复制/重置、节点与转发条目内联表单(按节点类型显隐字段)、核心管理(探测/日志);28 个语言包补全文案 - **内网映射(netmap)**:把「当前节点」的内网 HTTP 服务(如 `http://localhost:3000`)反代到面板侧,窗口内 iframe 直达或新标签打开;数据按节点视角存于节点本地 `data/netmap.json`,远端节点经 Agent 隧道在子节点执行(CRUD 与反代全自动透传) - 后端 `routers/netmap.py`:条目 CRUD + `/api/netmap/proxy/{id}/{path}` 流式反代(`?__graw_token=` 弹性鉴权兼容 iframe、剥目标防嵌套头并放宽为 `SAMEORIGIN`、绝对 `Location` 重写回代理路径、显式绕开系统代理、同步 requests 放线程池);`auth.MODULES` 新增 `netmap` 模块(`PERM("netmap")`),登记 `remote_cap.LOCAL_PREFIX`(裸 SSH 远端禁用);依赖 `requests` 显式入 `requirements.txt` - 前端「内网映射」窗口(桌面 + 面板模式侧边栏「网络」分组,Star 解锁范围):列表 / 内联新建编辑表单 / iframe 预览;支持深链 `?c=<本机|节点名|节点id>&s=<服务地址>` 登录后自动切节点:已有同地址条目直接预览,没有则自动创建并立即打开目标内容,无需手动保存 - 反代目标不可达(端口未开放 / 服务未启动)时不再返回裸 JSON,改为渲染友好的 HTML 提示页(「无映射端口」+ 处理建议,带 SAMEORIGIN 头保证 iframe 内可见) - 修复深链失效(真实浏览器回归发现的两处):`immediate` watch 在 setup 同步阶段执行 `openWindow` 踩 TDZ(部分 ref 尚未初始化)被静默吞掉——深链推迟到挂载后的宏任务执行;代理端点弹性鉴权 Query 参数名与前端 `__graw_token` 不一致导致 401——改为 `Query(alias="__graw_token")`;深链直达同时绕过 Star 引导弹窗(`openWindow(key, props, { skipStarGate })`,手动点击入口的引导不变) - **非 Docker 守护进程一键命令**:仓库根目录新增 `graw.sh`(Linux/macOS)与 `graw.bat`(Windows)——`deps` / `build` / `start` / `stop` / `restart` / `status` / `log` 七个子命令:自动下载 Go 模块、构建前端并编译 Go 后端,再以脱离控制台的方式启动守护进程(PID 写 `logs/graw.pid`、日志写 `logs/graw.log`、轮询 `/api/health` 就绪);支持 `GRAW_PORT` / `GRAW_HOST`,详见 `docs/deployment.md` 方式四 - **启动页语录彩蛋**:加载动画(boot-splash)的 Graw 字样前随机展示一句诗(露从今夜白 / 见人初解语呕哑 / 欲渡黄河冰塞川),纯内联实现,失败静默跳过不影响启动 - **Release 变更摘要 CLI(graw-relnote)**:`backend-go/cmd/relnote` 根据两个 tag 之间的提交自动生成版本变更摘要,按提交前缀(feat / add / fix / 修复 等)归类并逐条列出每次提交,统计作者与 `Co-authored-by` 共同作者,附 GitHub compare 与单条提交链接;`--create` 直接创建 GitHub Release(同名已存在时改为更新,可安全重跑),新增 `.github/workflows/release.yml` 在每次推送 `v*` tag 后自动执行;本地预览 `cd backend-go && go run ./cmd/relnote --tag v1.9.2` ### Changed - **默认后端切换为 Go**:根 `Dockerfile`(docker-publish 多架构构建与 docker-compose 共用)改为「前端 Node 构建 → Go 交叉编译 → Alpine 运行时」;CI 新增 Go 编译/vet/测试 job,CodeQL 增加 Go 扫描;`start.sh` / `start.bat` 开发启动与 `graw.sh` / `graw.bat` 守护进程部署均改用 `backend-go`。Python/FastAPI 保留在 `backend/` 作为旧版实现与回归测试。 ### Fixed - **Go 后端安全加固**: - `/api/auth/me` 不再返回完整用户记录(此前会回传 bcrypt 密码哈希与 TOTP 密钥),改为脱敏后的 `PublicUser` - 面板自身安全边界(用户管理 / 节点 / SSH 密钥 / 插件 / 更新 / 面板备份 / 安全入口等 `adminOnly` 路由)改为要求「完整管理员」,受限管理员无法再通过改自己的 `perms` 提权 - 登录限流:失败计数只在密码与 2FA 全部通过后清零,避免知道密码的攻击者反复重置计数、无限爆破 TOTP - FRP `configPath` 限制在 `/etc/frp` 内并阻断 `..`/符号链接逃逸;`serverBin/clientBin` 只允许 frps/frpc 类可执行文件;VPN 核心 `binPath` 只允许 mihomo/clash 类程序 - 网络储存:连接创建/更新补齐类型、主机、端口、基础路径与凭据校验;FTP/FTPS 支持显式 TLS 与基础目录;WebDAV 支持完整根 URL、禁止跟随重定向;SMB 命令串拒绝 `"` `;` `!` 等可逃逸字符;PASV 数据连接固定回原主机 - 文件管理 / 备份 / 日志 / 删除守卫的面板 `data/` 目录判定改为覆盖「容器内路径 + `GRAW_HOST_DATA` + `HOST_ROOT` 映射」三种视角;容器部署下不再可经宿主机视角读取 `secret.key` / `users.json` - 文件管理路径校验在目标尚不存在时解析最近已存在的父目录,阻断经符号链接父目录写入面板 `data/` 目录 - 服务监控远端端口探测先做 SSRF 与字符校验,避免把用户输入直接拼进远程 shell 脚本;访问日志去除路径中的 CR/LF 防日志伪造 - 备份恢复(`backup.py`)与面板备份导入(`panelbackup.py`)的 `tarfile.extractall` 增加 `filter="data"` 参数(旧版本 Python 自动降级),消除 Python 3.14 起的 DeprecationWarning,同时作为既有逐成员校验之外的第二道防线 ## [1.8.0] - 2026-10-06 ### Added - **节点资源聚合视图(节点总览)**:新增全节点资源总览窗口,一屏掌握所有节点的健康状态 - 后端 `/api/nodes/overview`:并发采集全部节点的 CPU / 内存 / 磁盘 / 负载 / 运行时长 / 主机名与在线状态(本机走 psutil,SSH 子节点单次连接脚本采集,与 system.py 远端采集同思路);并发上限 3,单节点失败标记 `offline` 不中断整批,附采集延迟(`latency_ms`) - 节点分组 / 标签元数据:`nodes.json` 新增 `group` / `tags` 字段(分组 ≤64 字符、标签 ≤32 字符 × 最多 12 个,入口清洗校验),新增 `POST /api/nodes/{id}/meta` 元数据更新接口,本机节点同样支持;`list_nodes` 脱敏列表随以下发 - 前端新增「节点总览」窗口(`NodeOverviewWindow`,桌面与面板模式侧边栏「监控」分组均可进入):状态卡片按分组归类展示(未分组置底)、标签多选筛选、CPU/内存/磁盘进度条(≥75% 橙色 / ≥90% 红色)、勾选多节点后直接批量执行命令 / 容器启停(复用 `/api/batch/*`),支持 10s 自动刷新 - 节点增删改表单(`SSHNodeIn`)同步支持分组 / 标签 - 单元测试 `test_node_overview_unit.py`(16 项:分组/标签清洗校验、元数据更新、远端脚本解析、聚合接口结构与单节点故障隔离) - 多语言:28 个语言包补全「节点总览」全部文案 - **Star 引导(GitHub Star 激活引导)**:建站 / 数据库 / 容器 / 应用商店 / 备份回滚 / 报告等 20 个核心功能入口在未 Star 时显示小锁角标,点击弹出引导弹窗引导前往 GitHub Star - 校验通过(Star 已完成)后解锁,支持复查;断网 / GitHub 限流导致无法确认时保持现状,不因网络问题回收解锁状态 - 纯前端引导性质(localStorage 记忆,清掉即绕过),不是后端权限边界(真正的边界仍是后端 `require_perm`);桌面与标准面板模式共用 ## [1.7.6] - 2026-10-03 ### Fixed - 面板一键更新:增强「面板自身容器」的识别。host 网络部署下容器 hostname 是宿主机名、无法按名称定位自身,新增按特征评分兜底(`GRAW_HOST_DATA` 绑定源一致性 / 官方镜像 `shunx/graw` / 容器名 / 关键挂载,最低分 7 高于「更新执行容器」避免误判)+ `/proc` cgroup 解析容器 ID 的二级兜底,避免误把执行容器 / 兄弟容器当作面板重建;新增 `test_update_unit.py` 单测,`docs/deployment.md` 补充说明 ## [1.7.5] - 2026-10-03 仅版本号同步,无功能变更。 ## [1.7.4] - 2026-10-03 ### Added - **受限管理员(RBAC 模块级权限)**:在管理员身份之上按模块收窄权限——`users.json` 新增 `perms` 白名单字段(字段缺失 / `null` = 全量权限,升级前的存量管理员行为完全不变;`[]` = 不放行;类型非法按空集合取最严) - 后端:`auth.MODULES`(26 个模块 key)+ `user_perms()` / `has_perm()` + `require_perm("模块")` / `require_perm_ws("模块")` 依赖工厂;40 余条业务路由由 `ADMIN` 改为 `PERM("模块")`(多节点 / SSH 密钥 / 插件 / 面板更新 / 面板备份 / 用户管理等「面板自身安全边界」仍要求完整管理员) - Agent 隧道:代理前用 `_proxy_perm_map()`(从路由依赖自动汇总)做等价的模块判定——子节点侧拿到的是 agent 管理员令牌,拦不住越权,必须在主面板本地先拦 - WebSocket:终端 / Docker 实时推送改用 `require_perm_ws("模块")`;会话管理对受限管理员降级为「仅本人会话」 - 启动期自检 `_audit_route_perms()`:扫描仍走 `ADMIN` 而未登记为面板自身边界的接口并打 warning,避免新路由漏挂 - 兜底约束:面板必须始终保留至少一个「完整权限的超级管理员」,改角色 / 收窄 `perms` / 删除账号时校验(`routers/auth._super_admin_count()`),违规返回 400 - 用户管理界面:新增「模块权限」列与「模块授权」弹窗(默认「完整管理员」,可切换为模块多选);模块清单经 `GET /api/auth/modules` 下发(单一来源,避免前后端漂移) - 前端:`store/auth` 新增 `hasPerm()` / `isFullAdmin()`。**按产品约定不按模块隐藏入口**——受限管理员可见全部功能入口,点开无权限模块时提示「该用户无此权限」且不打开窗口(`App.vue` 的 `openWindow()` 提示条、ShunX 聚合窗口的标签级提示);`fullAdminOnly` 的面板自身功能(账号管理 / 界面设置)仍隐藏 - **硬件温度监控(CPU 温度)**:新增 `app/temps.py` 从宿主 sysfs 只读采集温度(hwmon 优先、thermal 回退,容器经 `/host` 映射;Windows / 无传感器主机自动隐藏,不造假数据) - 系统概览随 `/api/system/ws` 与 `/api/system/overview` 附带 `temps` 字段(CPU 优先排序、多设备同名自动消歧、最多 8 条);桌面与标准面板首页「系统概览」卡片新增温度行(≥80°C 标红,最多展示 3 条 + “+N”) - 历史监控落盘新增可缺省 `temp` 字段(无传感器不写该键、聚合跳过缺失行),历史监控窗口新增温度曲线(区间内有数据才出现) - 通知中心新增「CPU 温度」告警指标(单位 °C,无 CPU 传感器自动跳过;告警文案与日志按单位显示) - SSH 直连远端节点:`_REMOTE_SCRIPT` 新增 HWMON/THERMAL 分段采集,解析规则与本地一致(`_remote_temps`);Agent 子节点天然由子节点自行采集 - 单元测试 `test_temps_unit.py`(20 项:换算过滤 / CPU 判定 / sysfs 扫描 / 消歧 / 落盘聚合 / 告警跳过 / 远端解析) - **内存占用优化**:`users.json` / `sessions.json` 增加 stat 指纹热缓存(按 `mtime_ns + size` 失效,本进程保存时主动失效,外部修改靠 stat 变化感知),鉴权依赖链每请求 3-4 次读表不再逐次落盘;`databases` / `docker_api` 同步调优,降低小内存 VPS 上的请求路径开销 - **组件后加载**:`lazyWindows` 进一步拆分窗口组件,加快面板启动 - 前端工程化:新增 ESLint 扁平配置(`frontend/eslint.config.js`,`@eslint/js` 推荐规则 + `eslint-plugin-vue` Vue3 essential,并用 `eslint-config-prettier` 关闭排版类冲突规则)与 Prettier 配置(`.prettierrc.json` / `.prettierignore`) - 前端新增脚本:`lint` / `lint:fix` / `format` / `format:check` - CI:恢复 Backend / Frontend 检查工作流(Backend 补装 httpx,修复 TestClient 收集阶段报错) - 单元测试:新增 `test_rbac_unit.py`(35 项,覆盖 perms 兼容语义 / 依赖 403 行为 / 入参校验 / 代理映射与自检 / 超级管理员兜底约束) - 多语言:补全英语(en)与世界语(eo)的模块权限相关文案(`users.perm.*` 模块名、模块授权界面文案与「无此权限」提示) ### Changed - CI:前端新增 ESLint 检查步骤;后端测试集扩容为「`test_*_unit.py` 整跑 + 其余套件逐文件独立进程」(规避模块级全局状态跨文件污染),并明确排除依赖真实后端 / 会改写 `data/users.json` 的用例 - 依赖升级(已用独立虚拟环境跑通全量测试验证):`fastapi` 0.115.14 → 0.141.1、`uvicorn[standard]` 0.30.6 → 0.52.4、`psutil` 6.0.0 → 7.2.2;并因 uvicorn 新版要求 `websockets>=13` 同步将 `websockets` 12.0 → 17.1 - 代码扫描告警收敛:修复 CodeQL 12 项告警(重复导入 / 空 except / 日志注入 / 未使用导入与变量 / 恒真条件) - 测试活债清理:`test_tamper_unit.py` 补 pytest fixture 与临时目录隔离、`test_backup_unit.py` mock 掉真实 DNS 解析、`test_databases_sqlite.py` 与 SQL 首动词白名单对齐 ### Fixed - 模块权限路由映射与启动自检在 FastAPI ≥ 0.141 下**静默失效**:该版本起 `include_router` 不再把子路由复制进 `app.routes`,而是登记 `_IncludedRouter` 包装(前缀与 router 级依赖留在包装里),导致 `_proxy_perm_map()` 取不到任何模块前缀(Agent 隧道代理的模块判定退化为空映射)、`_audit_route_perms()` 也扫不到漏挂路由。改用官方 `iter_route_contexts()` 展开生效路由(旧版本无该函数则直读 `app.routes`),并优先从路由 `dependencies` 读取 `require_perm` 的模块元数据;另加「映射条数异常」启动告警,避免同类静默退化 - Windows 计划备份命令在非 Windows 主机上生成时路径切分错误:`_build_cron_command` 的 Windows 分支改用 `ntpath`(`os.path` 在 Linux 上是 posixpath,会把 `C:\site` 整条当作文件名),修复 CI 下 `test_cron_command_windows_escape` 失败 - `test_frp_unit.py` 不再依赖系统目录权限:`_write_toml` 会对配置文件父目录 `makedirs`,默认 `/etc/frp` 在非 root 的 CI 上不可写,改为在用例内把 `_config_path` 指向临时目录 - `test_phpversions_discovery.py` 在 Linux 上取不到 PHP 版本:用例用 `open(...,"w")` 造的桩文件是 0644,而 `_detect_linux()` 用 `os.access(X_OK)` 过滤真实二进制(Windows 无执行位,本地不暴露该差异);改为造桩后 `chmod 0o755` - 计划任务「新增 → 标准」表单崩溃:`CronTaskFormWindow` 调用了未定义的 `defaultStd()`,补齐默认值工厂函数 - 防篡改告警弹窗操作报错:`TamperAlert` 使用未定义的 `t()`(漏了 `useI18n`),并修复「完全关闭」提示显示为原始 key 文本的问题 - 日志审计窗口空态误判:`AuditLogWindow` 对 computed 漏写 `.value`,导致恒显示「文件不存在」 - SSH 密钥部署窗口:prop 名 `key` 为 Vue 保留属性,重命名为 `sshKey`(调用方同步调整) - 文件管理窗口:prop `path` 与内部状态同名造成模板命名空间冲突,prop 重命名为 `initialPath` - 防篡改窗口:清理引用未定义变量的死代码 - 其余 ESLint 报出的死代码 / 未使用导入与变量、多余正则转义等若干处;有意静默的空 catch 通过 `no-empty: allowEmptyCatch` 显式放行(避免为 17 处「尽力而为」的容错分支逐个加注释) ## [1.7.3] - 2026-10-01 ### Added - 面板启动过渡动画:面板挂载前显示静态「Graw」文字 + 浅蓝色旋转指示,挂载完成后自动移除 - 系统概览「显示两位小数」开关:开启后 CPU / 内存 / 磁盘百分比按两位小数展示(界面设置实时生效,无需保存) - 窗口组件懒加载拆分(`lazyWindows.js`),进一步切割组件、加快面板启动速度 - Docker 实时数据单元测试(`test_docker_realtime_unit.py`) - Docker Hub 说明文档(DOCKERHUB.md)与演示图目录(demo-photo);Issue 模板补充 question 模板并新增 FUNDING.yml ### Changed - Docker:移除 `/api/docker/status`、`/api/docker/containers` 的常驻轮询,改为按需拉取,降低空闲开销 - Docker:修复部分容器日志无法获取、显示为「空」的问题 - README 与多语言 README(readme-i18n)更新;docs/deployment 补充说明 ## [1.7.2] - 2026-09-26 仅版本号同步,无功能变更。 ## [1.7.1] - 2026-09-25 仅版本号同步,无功能变更。 ## [1.7.0] - 2026-09-25 ### Added - 界面多语言:新增 11 种语言包(阿拉伯语、埃及阿拉伯语、古埃及语、爱尔兰语、希腊语、意大利语、拉丁语、波兰语、越南语、藏语、壮语),累计支持 22 种界面语言 - 古代语言语言包:新增苏美尔语 / 阿卡德语 / 赫梯语语言包,并新增「语言括号提示」设置(控制 `本语言书写形式 (中文原文/拉丁转写)` 括号注释的展示内容) - 标准面板模式:侧边栏分组菜单 + 顶部多标签栏(标签页可缓存窗口状态),并补充传统服务器面板主页与 Docker / 进程窗口适配 - 应用商店:README / 详情窗口增强(README 拉取增加 512KB 上限与 owner/name 路径白名单校验) - 贡献者许可协议(CLA):CONTRIBUTING.md 新增第 7 节「贡献者许可协议」(提交即视为同意) - 文档体系完善:新增 docs/README、docs/api-overview、docs/deployment、docs/node-agent、docs/app-store-recipe - Web 终端「保留持久化终端」:勾选后 shell 进程常驻后端(会话按节点隔离、支持多窗口共享),刷新面板或重开窗口会接回同一会话并回放最近 256KB 输出,长时间任务不再因刷新而中断;新增 `GET/DELETE /api/terminal/persist` 管理接口,面板退出时自动结束全部常驻会话 ### Changed - 安全审查与漏洞修复:新增全局请求体大小限制中间件(防未认证超大请求体内存耗尽 DoS)、新增 security-audit 攻击面验证脚本、收敛 code-scanning 告警(path-injection / log-injection / stack-trace / empty-except) - README 与多语言 README(readme-i18n)全面更新 ### Removed - VIP 付费功能:移除 `/api/vip` 路由与 `vip.py`、VipWindow、store/vip.js 及相关语言包条目,相关能力改为免费开放 ## [1.6.1] - 2026-09 ### Added - 界面多语言:补全 9 种语言包全文翻译(德语、世界语、西班牙语、法语、日语、韩语、葡萄牙语、俄语、繁体中文)并扩充英文语言包 ## [1.6.0] - 2026-09 ### Added - 配置快照与一键回滚:站点 nginx conf、防火墙规则写前自动快照,支持列表 / 预览 / 回滚 / 删除,并按类型触发 reload - 批量操作中心:多节点批量执行 shell 命令、按关键字批量启停 / 重启容器(并发受限,单节点失败不影响整批) - 站点 Git 自动部署:绑定仓库 / 分支 / 目标目录,支持手动触发与 Git 平台 Webhook(HMAC-SHA256 或 secret 校验)自动拉取部署 - 巡检报告:每日 08:00 汇总资源 / 证书 / 服务监控 / 站点可用性 / 告警生成报告并推送,支持手动生成与历史查看 - SSH 端口转发:在面板主机本地监听,经 SSH 隧道直连远程 MySQL / Redis 等服务 - Docker 镜像漏洞扫描:基于本地 advisory 库比对镜像软件包版本,输出命中 CVE - MySQL 慢查询分析:解析慢查询日志 TOP N 并给出低效模式建议 - 站点维护模式:一键将站点切换到维护页(nginx 层 503 拦截),支持自定义维护页 - 服务监控:新增 start / stop / restart / enable / disable 处置动作 - 工具箱:新增网络诊断(ping / traceroute / DNS)与运维脚本库 - 面板一键更新:新增 docker run 单容器部署检测、独立执行容器内置重建脚本与更新日志查看 - 命令面板(CommandPalette)与桌面偏好持久化(desktopPrefs) - 前端 PWA:新增 manifest 与 Service Worker - 前端表单窗口化:备份 / 计划任务 / 数据库 / 防火墙 / Frp / FTP / 通知 / 服务监控 / SSL / WAF 等表单拆分为独立窗口(formBus) ### Changed - 数据库管理:新增创建 / 管理独立窗口 - 应用商店:新增应用商店配置窗口 ## [1.5.9] / [1.5.8] / [1.5.7] / [1.5.6] / [1.5.5] / [1.5.4] / [1.5.3] - 2026-08 ### Added - 应用接口开放协议(GPOP):插件协议核心库(plugin_protocol)与插件管理接口(安装 / 启停 / 卸载 / 轮换令牌),附协议文档与 hello-graw 示例插件 - 桌面偏好(desktopPrefs):桌面布局与偏好持久化 - 开源协作规范:CONTRIBUTING.md、SECURITY.md、CHANGELOG.md、.editorconfig、GitHub Issue/PR 模板与 CodeQL 扫描工作流(AGPL 许可文件重命名为 LICENSE) - Web 终端:新增应用层心跳(ping/pong)与空闲读超时容错,修复「挂久了 / 多终端时无法输入」;终端与文件管理窗口增强 - ShunX 安全入口:聚合系统体检、面板备份等子应用 - VIP:面板级共享(任一账号激活即整面板解锁)与无限叠加(按授权码时长增量顺延);应用商店免责声明等文案接入多语言 ### Changed - 阻塞 IO 下沉线程池:文件管理、数据库、日志、防火墙、Frp、网站、网站统计等接口将本地文件 IO / SSH 调用移入线程池,避免阻塞事件循环 - 安全与健壮性加固:日志去除用户可控值、空异常分支补充说明、WAF / 网络储存 / Frp 等路径与错误回传收敛(规避 stack-trace 泄露) - 多节点:节点切换与当前管理主机上下文的日志收敛 ## [1.5.2] - 2026-08 ### Added - 回收站:删除文件进入回收站,支持还原与定时自动清理(跨节点) - 文件管理:Windows 风格剪贴板(Ctrl+C/V/Delete)、拖拽文件夹上传、复制自动重命名 - 会话管理:在线会话列表按 token 有效期与最后活跃时间判定在线状态 - 页面防篡改(Tamper)WebSocket 实时告警 ### Changed - 实时监控数据流稳定性修复,减少闪断 ## [1.5.0] - 2026-07 ### Added - WAF(Web 应用防火墙)与网站增强(rewrite/伪静态、构成单站点管理) - 网站统计(webstats)、证书到期检测(certcheck)、服务监控(svcmonitor) - 健康体检(healthcheck)与面板备份(panelbackup) - PHP 版本管理(phpversions)、FTP 用户管理(ftpusers)、工具箱(toolbox) - 登录日志(loginlog)、网络储存(netstorage)、内网穿透(frp) - 服务可用性检测(uptime)、通知中心(notify)、VIP 功能(vip) - ShunX 安全入口 ### Changed - 1Panel/OpenResty 兼容:自动发现外部真实站点(conf.d)并支持直接编辑 - 防火墙规则统一(reconcile)与 Docker 端口出入站双链管控 ## [1.4.10] / [1.4.9.1] / [1.4.9] / [1.4.8] / [1.4.7.x] / [1.4.6] / [1.4.5] 多节点管理(nodes)、SSH 密钥部署(sshkeys)、子节点 Agent 隧道架构 与远端子节点能力门控(remote_cap)等功能逐步演进上线,详细变更 请查看对应 git tag 提交记录。 [Unreleased]: https://github.com/wuhulab/Graw/compare/v1.8.0...HEAD [1.8.0]: https://github.com/wuhulab/Graw/releases/tag/v1.8.0 [1.7.6]: https://github.com/wuhulab/Graw/releases/tag/v1.7.6 [1.7.5]: https://github.com/wuhulab/Graw/releases/tag/v1.7.5 [1.7.4]: https://github.com/wuhulab/Graw/releases/tag/v1.7.4 [1.7.3]: https://github.com/wuhulab/Graw/releases/tag/v1.7.3 [1.7.2]: https://github.com/wuhulab/Graw/releases/tag/v1.7.2 [1.7.1]: https://github.com/wuhulab/Graw/releases/tag/v1.7.1 [1.7.0]: https://github.com/wuhulab/Graw/releases/tag/v1.7.0 [1.6.1]: https://github.com/wuhulab/Graw/releases/tag/v1.6.1 [1.6.0]: https://github.com/wuhulab/Graw/releases/tag/v1.6.0 [1.5.9]: https://github.com/wuhulab/Graw/releases/tag/v1.5.9 [1.5.8]: https://github.com/wuhulab/Graw/releases/tag/v1.5.8 [1.5.7]: https://github.com/wuhulab/Graw/releases/tag/v1.5.7 [1.5.6]: https://github.com/wuhulab/Graw/releases/tag/v1.5.6 [1.5.5]: https://github.com/wuhulab/Graw/releases/tag/v1.5.5 [1.5.4]: https://github.com/wuhulab/Graw/releases/tag/v1.5.4 [1.5.3]: https://github.com/wuhulab/Graw/releases/tag/v1.5.3 [1.5.2]: https://github.com/wuhulab/Graw/releases/tag/v1.5.2 [1.5.0]: https://github.com/wuhulab/Graw/releases/tag/v1.5.0 [1.4.10]: https://github.com/wuhulab/Graw/releases/tag/v1.4.10