mirror of
https://github.com/Gloridust/WechatOnCloud.git
synced 2026-09-20 11:33:32 +08:00
feat(panel): 显示构建版本号 + 自动检测新版(Docker Hub/GHCR 红点)
管理界面此前看不到面板版本,也无从知道有没有新版可升。现在: - 构建时把版本号烤进面板镜像:Dockerfile 新增 ARG/ENV WOC_VERSION(放末尾不 破坏依赖缓存);release.yml 用 git tag 注入(vX.Y.Z,手动触发为 dev-<sha>), 仅面板镜像消费;build-local.sh 支持 --build-arg(默认 dev)。 - 后端 version.ts:best-effort 查询 Docker Hub 与 GHCR 上 woc-panel 的语义化 标签取最大值,与当前版本比对;启动后 4s 首检 + 每 6h 复检 + 接口惰性触发, 失败静默(离线/被墙/私有源不报错、不显红点)。命名空间从 WOC_WECHAT_IMAGE 推断。 - 接口:GET /api/version(任意登录用户读缓存)、POST /api/admin/version/check (管理员手动重查)。 - 前端:管理页「关于」卡显示当前版本/最新版/升级提示/检查更新/发布日志链接; 侧栏「管理」入口在有新版时点红点(仅管理员)。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -75,6 +75,15 @@ export interface VolEntry {
|
||||
mtime: number; // epoch ms
|
||||
}
|
||||
|
||||
export interface VersionInfo {
|
||||
current: string; // 当前构建版本(如 v1.2.0 / dev)
|
||||
latest: string | null; // 仓库上最新发布版(如 v1.2.1);查不到为 null
|
||||
hasUpdate: boolean; // 有更高的语义化版本可用
|
||||
checkedAt: number; // 上次检查时间戳(ms);0=尚未检查
|
||||
source: string | null; // 数据来源:dockerhub / ghcr / dockerhub+ghcr
|
||||
error: string | null; // 检查失败原因
|
||||
}
|
||||
|
||||
// 原始二进制上传(File 直传 application/octet-stream),用于数据卷上传/解压/恢复
|
||||
async function rawUpload(url: string, file: File): Promise<any> {
|
||||
const res = await fetch(url, {
|
||||
@@ -116,6 +125,10 @@ export const api = {
|
||||
changePassword: (oldPassword: string, newPassword: string) =>
|
||||
req('/api/account/password', { method: 'POST', body: JSON.stringify({ oldPassword, newPassword }) }),
|
||||
|
||||
// 版本与更新检测
|
||||
getVersion: () => req<VersionInfo>('/api/version'),
|
||||
checkUpdate: () => req<VersionInfo>('/api/admin/version/check', { method: 'POST' }),
|
||||
|
||||
// 子账号
|
||||
listUsers: () => req<{ users: PanelUser[] }>('/api/admin/users'),
|
||||
createUser: (username: string, password: string, allowedInstances: string[] = []) =>
|
||||
|
||||
Reference in New Issue
Block a user