Repository navigation
Releases: live-ling/BlockNexus
Release list
BlockNexus v0.7.0
Minecraft 服务器管理面板:本地 Web 面板 + SSH 部署远程 Agent,token 加密通道,浏览器即开即用,面板无需公网地址。
⚠️ 升级须知:本版是 0.7.0(更新引擎 v2),为 1.0.0 正式版做铺垫。
0.6.0 用户:设置 →「版本与更新」→「检查更新」→「立即更新」→「开始更新」即可(旧三步流程,不需要输入下载源;若之前填过自定义源且失败,先清空它)。
0.5.0 及更早:Release 里没有应用包/更新元数据,请手动下载BlockNexus-v0.7.0-portable.zip覆盖程序文件(保留data/)。
0.6.0 的「检查更新」仍依赖 GitHub API;如果这一步不可达,需要手动装一次 0.7.0,之后才能用「不依赖 API 的发现 + 镜像 + 签名」。
更新体验:一键更新(0.7.0 起)
- 设置页「版本与更新」不再需要「立即更新 → 预览 → 开始更新」两次点击:直接显示 「更新到 vX」,下载量、迁移条数、来源、签名状态内联展示;不可逆更新仍然要求勾选确认。
- 版本卡上的「下载源」降为高级项;留空即自动(默认 GitHub,可配置镜像)。
- 更新完成后面板自动重启,页面自动刷新。
发现与校验:不再被 GitHub API 卡住
- 主路径改为
releases/latest/download/update.json,不消耗 GitHub API 速率限制;API 只用于更新日志/资产大小。 - 资产 URL 按版本 + 命名约定构造,不再依赖 Release assets 列表。
- 新增 Ed25519 签名清单:
update.json.sig+update.json.files(三个 zip 的 SHA256)。签名通过时镜像也可信;无签名时退回「只认 GitHub 的SHA256SUMS.txt」。 - 解压前先列出 zip 条目并拒绝
../、绝对路径、盘符、NUL;下载失败自动重试一次;磁盘空间不足提前拒绝。
跨版本与恢复
- 修复 bridge 路径必失败:预检支持目标版本,桥接按钮现在真的能把这一跳限制在中间版本;同时禁止绕过桥接直接硬升最新版。
- 修复 git-clean 更新一次后变 git-dirty、后续永久禁用更新:
plan.mode(能不能跳)与applyMode(git/payload)拆成两个维度。 - 修复 Release 缺 app zip 仍放行、旧 Release 缺 update.json 一律拒绝(现在用 tag 合成安全默认,需人工确认)。
- 更新器新增
pending.json/heartbeat.json:面板等更新器真的起来才退出;更新器没起来/中途死了,下次启动显示「上次更新未完成」,可重试或回滚。 - 新增鉴权前的
GET /api/health;/api/version对未认证请求只回版本号,保证 0.6.0 的旧更新器在开启登录保护时也能通过健康检查(否则 0.6.0 → 0.7.0 会被误判失败并回滚)。 - 回滚前会停掉已知的新面板进程;
/api/health上报 pid,避免 Windows 上替换文件被占用。
systemd
- 新增
scripts/start-panel.sh:面板内更新期间等待data/update/in-progress,避免Restart=always在换文件途中把面板拉起来。部署文档的 unit 已改为调用它;旧写法仍可运行,但可能和更新器抢时间。
发布门禁
- 新增
scripts/finalize-release.js(补 files + 签名 + SHA256SUMS)与scripts/check-release.js(版本/资产/dataSchema/minSourceVersion/lockHash/shellHash/签名全量断言)。 - 门禁拦下了 0.6.0 遗留的两个元数据错误:
dataSchema写成 1、minSourceVersion为空。
兼容性与边界
- 依赖与外壳未变:
package-lock.json与BlockNexus.exe/dll 保持 0.6.0 字节一致(lockHash/shellHash相同),所以 0.6.0 用户可以用应用包(~5.5 MB)直接升级,不需要完整便携包。 - Agent 未变(0.5.5),无需重装。
- 本版仍是 payload 更新:不替换外壳、
node_modules或runtime;未来若依赖/外壳变化,会先发带完整包能力的版本。 - 暂未包含:GitHub Actions 自动发布、多跳自动续跑(bridge 已可用,需再点一次)、HTTP 代理支持。
便携版
BlockNexus-v0.7.0-portable.zip:内置 Node 运行时、依赖与已构建前端,解压到任意目录双击 BlockNexus.exe 即用,数据在 data/ 目录内。
BlockNexus-shell-v0.7.0.zip:仅托盘外壳,需要本机已装 Node ≥ 18。
校验
BlockNexus-v0.7.0-app.zip
5F11C2FB6C5EFC3BCA58E6ABB6E5C90224927B549514AE69F3F24DE7A09201A
BlockNexus-v0.7.0-portable.zip
067BC9CD62564F8398DFFBAA694432AFB00D3D6B972D3A345B681B3D4C4EC648
BlockNexus-shell-v0.7.0.zip
6662418B8D81BC6A057EB34A17D0975393A441DDA0420372B35AB7B3D110EF50
完整校验值见 Release 资产 SHA256SUMS.txt;update.json 的签名见 update.json.sig。
BlockNexus v0.6.0
Minecraft 服务器管理面板:本地 Web 面板 + SSH 部署远程 Agent,token 加密通道,浏览器即开即用,面板无需公网地址。
⚠️ 升级须知:本版起面板支持应用内自更新。从 0.5.0 升上来仍按老办法:下载BlockNexus-0.6.0-portable.zip覆盖程序文件(保留data/目录),或源码方式git pull && npm install && npm run build:web。从下一版开始,设置页「版本与更新」点「立即更新」即可就地升级。Agent 版本与协议未变,无需重装。
新功能:面板应用内自更新
设置页「版本与更新」不再只是"检查更新 + 跳 GitHub",可以直接把面板升掉:点「立即更新」→ 看升级预览 → 面板替换程序文件并自动重启。
判定与执行分离:所有"能不能升、怎么升、要迁移什么、失败要不要回滚"的判定都收在 panel/update.js(纯函数,97 个单测钉住),执行交给 detached 进程 scripts/panel-updater.js——面板必须先真正退出,它才能替换 node 正在使用的程序文件。顺序是:等端口释放 → 备份将被替换的文件 → 替换 → 拉起 → 健康检查(GET /api/version 期望新版本)→ 失败则回滚程序与数据快照。
跨版本升级:Release 可声明"可直跳的最低来源版本"与"逐跳桥接路径"。源版本差距过大时,面板不会硬升,而是提示"先升到 vX"并把这一跳限制在桥接版本上;没有桥接路径时给手动路径(下载便携包 + 保留 data/)。迁移链覆盖不到的旧数据同样会被这条规则挡住。
数据自迁移:data/config.json 现在带 schemaVersion,新版启动时执行迁移——迁移代码属于新版,所以便携包替换、应用包更新、手动覆盖、git 检出四条路径都自动生效。迁移前备份原文件,失败即拒绝启动,不会带着半成品数据跑起来。
更新推荐分级:security(红色横幅,安全更新)/ critical / recommended / optional,带一句话摘要与更新说明链接,可「跳过此版本」;本地版本高于线上时不提示。
自动更新:设置页三选一 off / notify / auto(默认 notify 只提示)。auto 也必须发布方显式声明该版本可安全自动安装才会真的自动装,且要求:非破坏性、不需要重装 Agent、迁移可逆、面板空闲(没有实例启停/备份在跑)、未连续失败 3 次、24 小时冷却。本项目 v1.0 之前 semver 不严格,所以不按"minor 就安全"猜——一切以发布方声明为准。
完整性与安全边界:
- 校验值只认 GitHub 的
SHA256SUMS.txt(下载可走自建镜像,但镜像不在信任链上),拿不到校验值就拒绝更新; - 解压与写入按白名单(
panel/、web/dist/、agent/agent.js、scripts/、images/、package.json等),data/、root.txt、.git/、web/src/、agent/src/、docs/一律拒绝; - 面板对外且未开启登录保护时禁止触发更新;有实例启停 / 备份 / 安装在跑时拒绝;
- 源码工作区有未提交改动时禁用应用内更新(避免覆盖你的工作区);
- 过程与结果都落在
data/update/(日志、last-result.json、最近 3 份备份),可追溯、可一键回滚;声明为不可逆的迁移在升级后拒绝程序回滚(备份仍保留)。
Linux 面板:同样的网页入口。git 干净检出走 git fetch --tags + 切 Release 标签 + 重建前端;解压目录走应用包替换;systemd 托管时优先让它自己重启,等不到再由更新器补拉起。
新功能:实例总览页(默认落地页)
所有服务器的所有实例按服务器分组展示,一眼看到"哪些实例在跑、各有多少人",点卡片直接进详情。保持只读——在大视野列表里放启停按钮容易误操作,控制仍在实例详情页与服务器设置页。分组统计、Agent 不可达与"实例名在不同服务器重名"等坑都有单测覆盖。
新功能:玩家在线时长统计与聊天记录
- 在线时长:Agent 侧解析控制台日志的加入/离开,累计每个玩家的在线时长、会话数与最近在线时间;面板离线期间由服务器上的 Agent 继续记录;
- 聊天记录:玩家聊天 / 表情 / 私聊以明文追加写入实例目录
.blocknexus-data/chat.ndjson(目录 0700、文件 0600,随备份保留),支持按玩家与关键词过滤、清空; - 入口都在实例详情页(聊天页签、玩家统计对话框)。聊天正文只作为 React 文本节点渲染、绝不拼 HTML,防玩家名/发言注入。
界面:实例详情页重构
指挥条(主操作位不随状态漂移)+ 5 张等高指标卡 + 三栏(实例与工具 | 终端 | 玩家)。整页不再滚动——终端填满剩余高度,需要滚动的只有日志、玩家名单这些内部区域;终端支持关键字过滤;停止态的空数据一律显式写「—」或原因,不留白。
界面:服务器设置页
Agent 卡与系统信息卡重排:连接方式那行只说方向、地址单独一行(同一串地址不再在一张卡里说两遍);Agent 安装目录与实例目录并进连接卡(它们讲的是"Agent 落在哪",与连接信息本就是一回事);系统信息卡不再重复实例目录;Java 版本列表默认收起(装过五六个版本时原来能占掉半屏)。
修复
- 版本比较:
semverGreater把缺段当空串比较,于是0.6.0 > 0.6判为真——遇到两段版本号的 Release 标签会误报"有新版本";同时预发布段现在正确地低于正式段; - 通知去重:离线 / 恢复提醒不再重复发送(含 24 小时补发规则与"同一故障只发一封"),SMTP 失败会退回"未通知"并保留重试机会;
- 启动单飞:同一实例的并发启动只执行一次;
- 文件管理:归档解压/压缩超时放宽到 180 秒,Linux 上 zip 优先
unzip、缺失退bsdtar。
安装与升级
- 便携版(推荐,无需 Node.js):下载
BlockNexus-0.6.0-portable.zip,解压到任意目录双击BlockNexus.exe;数据保存在解压目录的data/下,删除目录即完全卸载; - 源码运行:
git pull && npm install && npm run build:web && npm start(前端为构建产物,更新后需要重新构建); - 从 0.5.0 升级:保留
data/即可,配置按 schema 自动迁移,无需手工处理。
BlockNexus v0.5.0
Minecraft 服务器管理面板:本地 Web 面板 + SSH 部署远程 Agent,token 加密通道,浏览器即开即用,面板无需公网地址。
⚠️ 升级须知:Agent 版本 0.3.8 → 0.4.5,含地图与托盘相关变更,请在面板设置页更新一次 Agent。协议未变,自动更新可用。
新功能:网页地图
实例详情页新增「地图」页签,把世界的方块俯视图画出来:可拖动、滚轮缩放(以光标为锚点)、跳坐标、切换世界。
做法与常见的「把方块数据传给浏览器用 wasm 渲染」不同:解析 .mca 与渲染都放在 Agent 侧完成,直接产出 PNG,浏览器原生解码。带来几个直接好处:
- 前端零解码代码,也不需要自研二进制瓦片协议;
- 粒度是一个区域文件(512×512 方块 = 一张 512×512 PNG),一屏只覆盖几个区域 → 每次交互只发几个请求(按单区块出图要上千个);
- PNG 天然可被 HTTP 缓存协商(ETag/304),拖回看过的区域零请求。
Anvil 解析是零依赖实现:NBT 解析、调色板位解包、gzip/zlib/未压缩、.mcc 外置标志,以及自写 CRC32 的 PNG 编码器 —— 目标机不需要 npm 装任何东西。
其他细节:
- 维度切换:Paper 的独立目录(
world_nether)与原版的嵌套布局(world/DIM-1、world/DIM1)都支持; - 缓存:落盘在实例目录下的
.blocknexus-map/(已排除在备份与文件管理器之外,避免污染存档备份);缓存签名含渲染版本,升级 Agent 后旧图自动失效重渲染,无需手动清理; - 「重新生成」:工具条一键清掉服务端与前端缓存并重渲染;
- 缺色自报:色表里没有的方块会显示为紫色,并在工具条直接列出方块名(悬停可看),便于精确补齐;
- 缩放量级与参考实现对齐:每方块 1.75~10 像素(默认 2)。早先版本默认 1 像素/方块,方块会小到看不出形状。
界面
- 全局语言切换搬到「设置 → 语言」;首次访问按浏览器语言自动判定,英文用户不再对着中文登录页。
修复
地图(每一条都有回归测试):
- 位解包用错了版本布局 —— MC 1.16 起改为「填充式」(每个 long 固定塞
floor(64/bits)个值、不跨边界),我按 1.15- 的「连续式」实现,调色板 17+ 项时从第 12 个值起全错 → 随机方块 → 满屏噪点。这一条也解释了早期地图为什么不可用; - 区块读取的
length少减 1(该字段含压缩类型字节)→ gzip 压缩的区块全部解压失败; - 调色板可能是字符串列表或使用
id键(不只Name),未兼容时那些列会被静默丢弃; - 世界最低高度改用区块
yPos(原先的启发式在候选相差 16 整数倍时会取错); - 明暗第一行方向与参考实现相反(有坡度时每张图顶部一条色线);
- 滚轮监听与 ResizeObserver 从未挂上(effect 依赖不全,挂在尚不存在的 ref 上)→ 滚轮不缩放且页面跟着滚;
- 初始视角硬编码导致世界原点不在画布正中;滚轮锚点 border/content box 错配导致反复缩放时画面漂移。
托盘:无法注册托盘图标的环境下降级而不是失效 —— 主窗口保持可见并显示常驻提示,关闭窗口时给出「以管理员重启 / 直接退出」选项(此前会静默隐藏,用户既无图标又无窗口,只能去任务管理器结束进程,表现成「程序坏了」)。另外重试放宽到 60 秒(覆盖开机自启时 Explorer 托盘尚未就绪这一最常见原因),并修了提权重启会被单实例互斥锁静默吞掉的问题。
便携版
BlockNexus-v0.5.0-portable.zip:内置 Node 运行时、依赖与已构建前端,解压到任意目录双击 BlockNexus.exe 即用,数据在 data/ 目录内。
BlockNexus-shell-v0.5.0.zip:仅托盘外壳,需要本机已装 Node ≥ 18。
校验
BlockNexus-v0.5.0-portable.zip
1FE464A3EDE8E2C089B416E6E66A0A482062AA3D36D89665081874B04CD3683C
BlockNexus-shell-v0.5.0.zip
D2042BAFBE411FC3A02C64FA1C455127A4C096D99D805ED1C458999EBD6D5747
BlockNexus v0.4.0
Minecraft 服务器管理面板:本地 Web 面板 + SSH 部署远程 Agent,token 加密通道,浏览器即开即用,面板无需公网地址。
⚠️ 升级须知:本版含协议与 Agent 行为变更,旧版 Agent 必须重装一次(面板设置页的 Agent 安装/更新按钮即可)。旧 Agent 无法靠自动更新自救——它在握手阶段就会被拒绝,因而发不出触发更新的上报。
安全(本版重点)
对面板与 Agent 做了一轮完整的安全审计(5 份报告,发现的问题全部处理),其中 6 个高危:
- Agent 解压逃逸:恶意压缩包里的符号链接/硬链接可逃出实例目录,而 Agent 以 root 运行 → root 任意读/写/截断。现在解压先进隔离目录,校验链接与体积后才启用;
tar参数注入:文件名以-开头会被当作 tar 的选项(如--checkpoint-action=exec=…)→ root 任意命令执行。已用--终止选项解析;- AI 接口地址的 SSRF:
baseUrl原先只校验协议,可被用来探内网/读云元数据,且响应体会回显到界面。现拒绝链路本地与云元数据地址; - SSH 不校验主机密钥 → 中间人可拿到 SSH 凭据并完全接管服务器。现改为 TOFU(首次记录、之后不一致即拒绝);
- 压缩炸弹 + 上传上限形同虚设:上传的 200MB 限制原先只在客户端自报 size 时检查,不带该字段即可绕过;解压无体积/条目数上限。现按真实写入字节与解压后实际体积判定;
- 面板默认免密 + 对外暴露 = 任何人可完全接管。现检测到该组合时在界面顶部显示持久告警(默认行为不变)。
其余修复:畸形请求体泄露内部堆栈、找回密码可被用来枚举管理员邮箱(响应差异构成预言机)、限流表可被唯一键洪水打爆内存、/tmp 固定文件名竞态导致的本地提权、无鉴权连接可耗尽 fd/内存、Agent token 响应未禁缓存、邮件正文未转义、以及三处「环境变量写 false 反而开启功能」的解析缺陷。
新功能
- 中英双语界面:全界面文案支持中英切换(右上角),后端错误按错误码本地化,语言选择记忆在本地;
- 统一错误码表:45 个错误码带中英文案与 HTTP 状态,前端单点渲染,脚本/curl 调用方也能拿到稳定的
code。
改进
- Agent 打包器支持内联第三方依赖:交付物仍是单文件(SSH 只传一个文件、支持
curl一行安装),目标机无需npm install; - 找回密码流程纳入 CI 端到端测试(此前长期无人执行);
- 基础安全响应头(禁止 iframe 嵌套、禁止 MIME 嗅探、跨站不带 Referer)。
修复
- Agent 安装时改用私有临时目录下载解压(原先在
/tmp用固定文件名); - 找回密码发信失败不再把 SMTP 原始报错回给未认证调用方;
- 面板会话表补上过期回收。
便携版
BlockNexus-v0.4.0-portable.zip:内置 Node 运行时、依赖与已构建前端,解压到任意目录双击 BlockNexus.exe 即用,数据在 data/ 目录内。
BlockNexus-shell-v0.4.0.zip:仅托盘外壳,需要本机已装 Node ≥ 18。
校验
BlockNexus-v0.4.0-portable.zip
A9F3DC591B67BC07DE9F30D80D6EAECA1E3E42D6BE210F7AA1C87878BE0B97E5
BlockNexus-shell-v0.4.0.zip
05F7424AED01E38BDEAA61387826AF004E763BB77434F37AEB57DC0962E45AB1
BlockNexus v0.3.0
Minecraft 服务器管理面板:本地 Web 面板 + SSH 部署远程 Agent,token 加密通道,浏览器即开即用,面板无需公网地址。
新功能
- 插件配置可视化编辑:实例详情页新增「插件配置」(实例目录存在
plugins/或config/时显示),自动发现并分组列出配置文件;YAML/JSON 按值类型生成表单(布尔=开关、嵌套=可折叠分组、数组=可增删改的列表),保存只写改动路径——未触碰的键、注释与键序完整保留;TOML、锚点/别名等无法安全表单化的文件自动降级为原文编辑; - Java 环境多版本管理:服务器设置页新增「Java 环境」卡,可选安装 Temurin JRE 8 / 11 / 17 / 21 / 25(清华 TUNA 镜像 → Adoptium 官方兜底),每个版本独立目录落位
/opt/blocknexus-java,互不覆盖;完整安装列表(含系统包 Java)单选勾选即生效,支持卸载(卸载使用中的版本自动回退);旧版 MC(Java 8)到最新版全覆盖,启动不再按 Java 版本硬性拦截。
改进
- Agent 交付物改为「模块化源码
agent/src/**+ build.js 打包单文件」,附npm run test:agent完整零依赖测试链(产物新鲜度校验:改了源码忘打包会直接失败); - 面板 HTTP 请求的 User-Agent 由版本号派生(清华 TUNA 对无 UA 请求 403、MSL 要求 UA 含应用名),版本升级不再停留在旧字面量;
- 面板设置页「检查更新」真正跳过缓存(
?refresh=1此前未实现)。
修复
- Java 8 的 Temurin 解压目录名(
jdk8u*,无连字符)无法识别导致安装失败。
便携版
BlockNexus-v0.3.0-portable.zip:内置 Node 运行时、依赖与已构建前端,解压到任意目录双击 BlockNexus.exe 即用,数据在 data/ 下,删目录即卸载。
SHA256: AC39370DFD717525D86D65480FA26B6CD5AB90EC305E730E69A2494019808B43
Windows 桌面外壳(可选)
BlockNexus-shell-v0.3.0.zip:仅外壳,解压到项目根目录(已完成 npm install 与 npm run build:web)后运行;Node ≥ 18 需在 PATH 中。未签名,SmartScreen 提示点「仍要运行」。
SHA256: F07A45572956991150DF1282D6300D21B3EBB60B788350B6A46C73731AEC3E7F
详见 README。
Full Changelog: v0.2.0...v0.3.0
BlockNexus v0.2.0
Minecraft 服务器管理面板:本地 Web 面板 + SSH 部署远程 Agent,token 加密通道,浏览器即开即用,面板无需公网地址。
新功能
- Agent 版本管理与自动更新:远端 Agent 上报版本,落后于面板时自动经 SSH 替换脚本并重启服务(失败退避 + 手动兜底按钮);
- Mod 管理:实例 mods 目录的列表、启用/禁用(.disabled 约定)、删除与上传;
- 玩家快捷管理:踢出 / 封禁 / 封禁 IP 统一确认框(可填原因);封禁目录查看与解封(含理由与期限);
- server-icon:编辑实例时上传图片,本地裁切并压缩到 64×64 PNG;
- 域名连通检测:解析域名(含
_minecraft._tcpSRV)并 TCP 探测实例端口; - 版本与更新检查:设置页对比当前版本与 GitHub 最新 Release,附更新日志;
- 终端着色:日志按级别显示(ERROR 红 / WARN 黄 / 就绪绿 / DEBUG 灰);
- history 路由:
/settings等路径直达,旧#/链接自动迁移。
修复
- 启动器首次运行未创建 data 目录;
agent.js下载路由缺失根路径(手动安装命令 404);- 外壳:外链转系统默认浏览器、禁止加载外部网页、找不到项目根时给出提示。
便携版
BlockNexus-v0.2.0-portable.zip:内置 Node 运行时、依赖与已构建前端,解压到任意目录双击 BlockNexus.exe 即用,数据在 data/ 下,删目录即卸载。
SHA256: 2538DC35FF8C20686317F8203C7EC0F73015341E1BCC07B3EF0F3E0DE7AADCB8
Windows 桌面外壳(可选)
BlockNexus-shell-v0.2.0.zip:仅外壳,解压到项目根目录(已完成 npm install 与 npm run build:web)后运行;Node ≥ 18 需在 PATH 中。未签名,SmartScreen 提示点「仍要运行」。
SHA256: F20E1200331062DA45CDA6E5BB324262D321826B0C250452B0272CEBD58F4C72
详见 README。
Full Changelog: v0.1.0...v0.2.0
BlockNexus v0.1.0
Minecraft 服务器管理面板:本地 Web 面板 + SSH 部署远程 Agent,token 加密通道,浏览器即开即用,面板无需公网地址。
便携版(推荐,开箱即用)
BlockNexus-v0.1.0-portable.zip:内置 Node 运行时、全部依赖与已构建的前端,解压到任意目录后双击 BlockNexus.exe 即可使用,无需安装 Node.js 或任何工具链。
- 面板地址
http://127.0.0.1:3080,系统托盘图标可打开主窗口或退出; - 全部数据与配置保存在解压目录的
data/下,删除目录即完全卸载; - Windows 10/11 自带 WebView2 Runtime,无需额外安装。
SHA256: 6FA23EA4E8D860672020AB8AF1F77760CEEB9FCA0A23F520635ECFB97F34CF8E
从源码运行
要求 Node.js ≥ 18:
npm install
npm run build:web
npm start # 浏览器打开 http://127.0.0.1:3080Windows 桌面外壳(可选)
BlockNexus-shell-v0.1.0.zip 是仅外壳(托盘 + 应用窗口),体积小,适合已用源码方式部署的环境:解压到项目根目录后双击 BlockNexus.exe。需要 Node ≥ 18 在 PATH 中;exe 未做正式签名,首次运行 SmartScreen 会提示,点「更多信息 → 仍要运行」。
SHA256: 3F359F94D6FB031DCFBE8A58C5CD1A05635FAC199FA146071858B2CA9EC61F13
详见 README。
Full Changelog: https://github.com/live-ling/BlockNexus/commits/v0.1.0