Skip to content

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 10 Aug 02:32
07f3efb

新增

  • Java 下载源可选 —— 「Java 运行时」页安装前多了一个「下载源」:清华大学 TUNA、南京大学、
    华为云、GitHub 加速,以及 Adoptium 官方直连。Adoptium 的包放在 GitHub 发布页上,国内机器
    (尤其是各家云主机)直连常年只有几十 KB/s,一个 50 MB 的 JRE 能下半小时甚至超时失败;换成
    国内镜像通常是几十秒的事。

    默认是自动:按清华 → 南大 → 华为云 → GitHub 加速 → 官方的顺序挨个试,哪个通就用哪个。
    指定了某个源也一样保底 —— 镜像同步有延迟,刚发布的版本可能还没同步过去,这时会自动落到官方,
    界面上的「下载源」会显示实际在用的那个,不会因为镜像没跟上就装不了。

    换源不改变装的是什么。 版本列表、文件名、大小和 SHA-256 始终来自 Adoptium 官方 API,
    镜像只负责传那几十兆的压缩包,下完仍然逐字节校验,对不上直接丢弃、不解压——所以镜像没有
    能力塞给你一个别的 JDK。安装失败时的报错也会写清是哪个源传的,方便换一个再试。

    选择记在 panel.json 里(javaSource),下次安装默认还用这次选的;老配置没有这一项,
    等同于「自动」。

  • 本机终端(默认关闭) —— 「设置 → 终端」里打开开关后,侧栏多一个「终端」页:面板所在这台
    机器的一个真 shell,跑在伪终端上,所以 top、vim、htop、Ctrl-C、颜色和 shell 自己的
    Tab 补全全都正常,中文输入输出也没问题。装插件、翻日志、改配置不用再单独 SSH 上来。

    跑的就是本机、身份就是面板进程的身份,不是 SSH 到别的服务器 —— 所以面板里不存任何
    SSH 密钥或密码,终端也拿不到比面板本身更高的权限。

    默认关闭,升级面板也不会自动打开。 开启等于把面板密码变成这台机器的 SSH 密码:任何能
    登录面板的人都能以运行面板的用户执行任意命令。界面上开启前会要求确认一次,开关的开/关都记进
    panel.json 并写进日志。关掉开关会立刻挂断所有已经开着的会话,不只是拦住新连接。

    会话跟着页面走:关掉标签页就挂断,连同它启动的程序一起(先 SIGHUP,3 秒后 SIGKILL)——
    和实例控制台正好相反,因为没人看着的 shell 只会把命令留在半路。要让命令活得比标签页久,
    用 systemd 或者在里面开 tmux / screen。同时最多 4 个会话。

    Windows 上不可用(需要 ConPTY),面板会直接说明,开关点不动,其余功能不受影响。

  • 快照版与更新通道 —— main 分支每个通过 CI 的提交都会自动出一版快照,发布成 GitHub 上的
    prerelease,想提前试新功能不用自己编译。面板更新页多了「更新通道」,在「正式版」和「快照」
    之间切;默认是正式版,没人会被动升到快照上。

    快照版本号是下一个次版本号加后缀(0.2.0 发布后的快照是 0.3-snapshot.86,数字是提交数),
    按语义化版本正好落在 0.2.0 之后、0.3.0 之前 —— 所以正式版通道永远看不见快照,而快照通道
    在 0.3.0 发布的那一刻会自动更新过去,不会一直卡在快照轨道上。快照通道取的是版本号最新的
    那一个,正式版和快照一起比。

    切回正式版通道时,如果当前跑的快照比最新正式版新,面板会提示把它装回最新正式版 ——
    版本号是往回走的,确认弹窗里会明说,并提醒先备份数据目录。除此之外面板不会往回装。

    快照走的是和正式版完全相同的构建、打包和校验流程(同一个 make package),装的时候一样
    校验 SHA256SUMS.txt。GitHub 上只保留最近 5 个快照,旧的连同 tag 一起删掉,正式版不受影响。

  • 服务端核心库 —— 下载好的服务端 jar 现在存在面板级的 data/cores/ 里,在
    「设置 → 服务端核心」管理。一个核心只下载一次,之后开多少个服都是从库里复制一份过去,
    不必每建一个服就再拉一遍同样的 60 MB —— 断网的机器上也照样能开新服。

    实例拿到的是自己的副本而不是共享路径,所以删掉库里的核心、或者下载一个更新的构建,
    都不会改变一个正在跑的服务器是从什么启动的。自己丢进 data/cores/ 的 jar(Fabric、
    Forge、整合包服务端)也会被列出来,一样能复制给实例。

  • 全局仪表盘 —— 首页从一段说明文字变成了真的仪表盘:实例运行中/总数、已装 Java 数、
    核心库存量、面板版本各占一格,点进去就是对应的管理页;崩掉的实例和待更新的版本直接
    在顶上提示。实例卡片上带了启动/停止按钮,常见的那两个操作不用再先进控制台。

  • 实例目录选择器 —— 「服务器目录」旁边多了「浏览…」,可以直接翻本机的目录树选一个:
    外挂硬盘、NAS 挂载点,或者一个你已经有服务端的目录。选了不存在的目录也没关系,创建
    实例时会一并建好。目录里已有的 jar 会自动出现在「服务端 jar」的下拉里,跟着你输入的
    路径走 —— 接管一个现成的服务器不再需要照着记忆敲文件名。

  • 设备令牌 —— 原生客户端(桌面端 / Android)现在可以用 Authorization: Bearer 认证,
    不必再去模拟浏览器的 Cookie。配对走 POST /api/auth/devices,要的是密码而不是一个
    已登录的会话:签发一个比会话活得久的凭证,就该出示凭证本身。令牌只在配对那一次返回,
    面板只留它的摘要。

    和浏览器会话是两套东西,互不通用 —— 会话故意存在内存里、重启即失效,这对坐在电脑前的
    人是对的,对手机 App 不是:面板每自更新一次就把人登出,体验很差。设备令牌写进
    panel.json,重启照常能用,可以单独吊销,在「设置 → 已配对设备」里能看到名字和最后
    使用时间。

    改密码会一并解除所有设备的配对:这个动作通常意味着「旧密码不该再打开任何东西」,
    而每个设备令牌都是拿旧密码换来的。

变更

  • 面板换了一套配色,并且有了浅色模式 —— 颜色统一从一套 Material 3 配色(源色 #8F4C38,
    一种暖陶土色)生成,深浅两套只是同一张表的两组取值,样式表里其余的规则都只认语义名,不认
    具体颜色。

    默认跟随系统,侧栏底部多了一个开关,在「跟随系统 / 浅色 / 深色」之间轮换,选择记在浏览器
    本地(所以是一人一设备的偏好,不写进 panel.json)。模式在首屏渲染之前就定好了,刷新不会
    先闪一下另一套颜色。

    控制台和终端在两种模式下都保持深色画布 —— Minecraft 的日志用的是 ANSI 颜色,而 ANSI 是按
    深色背景配的;浅色模式下这块画布用的是配色自带的反相表面,仍然属于同一套色板。切换模式时
    终端就地换色,会话和已经打印出来的内容都不受影响。

    图表的两条线(CPU 与内存)每种模式各有一组取值,都按各自的卡片底色跑过色觉与对比度校验;
    「运行中 / 启动中 / 已崩溃」这些状态色也没有被品牌色吞掉,仍然是各自的绿、黄、红。

  • 默认监听地址改成 0.0.0.0:19190 —— 原先是 127.0.0.1:8080,只有本机能连,想从外网
    打开面板还得先开 SSH 隧道或配反代。现在装好直接用服务器 IP 加 19190 就能访问,记得在防火墙
    或安全组里放行这个端口。

    只影响新装的面板。 listen 是持久化在 panel.json 里的,已经跑起来的面板升级后仍然
    沿用原来的地址;要跟着改,在配置里改掉或者用 -listen / HYPERCRAFT_LISTEN 覆盖。

    面板讲的是明文 HTTP,而且能在这台机器上执行任意控制台命令,所以挂公网请配 TLS 反代;想回到
    原来只监听本机的行为,用 -listen 127.0.0.1:19190。

  • 面板级的东西都收进了「设置」 —— Java 运行时、服务端核心、面板更新现在是「设置」
    下的三个分页(/settings/java、/settings/cores、/settings/update,刷新和分享链接
    都认;老的 /java 会跳到对应分页)。这些都是不属于任何一个实例的共享资源,原先散在
    总览页和实例的「启动设置」里,装个 Java 或下个核心得先滚半屏。

    安装/下载状态跟着提到了应用级:装到一半切去看实例,侧栏会一直标着「安装中」或「下载中」,
    切回来进度条接着走 —— 这些任务本来就归守护进程管,现在界面也不再假装它只在那一页上存在。

  • 实例里的「下载服务端核心」改成了「从核心库复制」 —— 联网下载统一在核心库那一页做,
    实例这边只负责挑一个复制过来。原先每个实例各自下载,同一个 Paper 版本在磁盘上会存好几份,
    下载任务的状态也是一实例一份;现在下载路径只有一条。

移除

  • GET /api/instances/{id}/jars 和 POST /api/instances/{id}/jars/download(及其状态、
    取消端点)。前者被 GET /api/fs 取代(它能列出任意目录,不只是实例自己的),后者被
    POST /api/cores + POST /api/instances/{id}/core 取代。

安装

下载对应平台的压缩包,解压后直接运行:

tar -xzf hypercraft-0.3.0-linux-amd64.tar.gz
cd hypercraft-0.3.0-linux-amd64
./hypercraft -data ./data

前端已经嵌在二进制里,不需要另外部署。开机自启参考包内的
hypercraft.service。

校验

sha256sum -c SHA256SUMS.txt --ignore-missing