Commit Graph
100 Commits
Author SHA1 Message Date
Lemon-miaow 20994be996 feat: configure authenticated player entry routes 2026-10-07 17:19:20 +08:00
Lemon-miaow 07973a4bbd fix: restrict platform maintenance and backup visibility to Owner 2026-10-07 16:47:57 +08:00
Lemon-miaow 285c56955d fix: keep the Passkey hostname in local sign-in guidance 2026-10-07 13:53:21 +08:00
Lemon-miaow 373af3b0bc fix: gate worker management behind distributed activation 2026-10-07 12:49:26 +08:00
Lemon-miaow 1b49b4df06 fix: grant API the dedicated node-control socket group 2026-10-07 12:37:15 +08:00
Lemon-miaow 3327c13429 fix: register canonical SELinux socket path and pass staticcheck 2026-10-07 03:07:35 +08:00
Lemon-miaow 296c7bb274 feat: manage distributed node operations from Owner panel 2026-10-07 00:46:17 +08:00
Lemon-miaow c8957cf191 feat(panel): expose distributed deployment in platform settings 2026-10-06 01:38:10 +08:00
Lemon-miaow 9d2de72c31 fix(panel): format RCON replies and hide connection log noise 2026-10-06 00:08:36 +08:00
Lemon-miaow df19878c2a refactor(panel): standardize interface copy in documentation style 2026-10-06 00:02:20 +08:00
Lemon-miaow fa1b8a905d fix(panel): standardize operational copy to documentation style 2026-10-05 23:08:22 +08:00
Lemon-miaow a7d3ca4c9f fix(panel): diagnose runtime failures and add owner recovery controls 2026-10-05 18:06:55 +08:00
Lemon-miaow d7ae1e66c1 fix(panel): unify fixed headers and collapsible auth sources 2026-10-05 15:43:57 +08:00
Lemon-miaow 34b450bf2c fix(panel): refine branding and login layout 2026-10-05 12:34:50 +08:00
Lemon-miaow 1cdec4dd79 docs: mark Felis as development-only after withdrawing releases 2026-10-05 02:06:02 +08:00
Lemon-miaow 862ff3929f fix(ci): preserve installer compatibility with older releases 2026-10-05 00:23:35 +08:00
Lemon-miaow 30c37617c7 fix(panel): use supplied Felis logo throughout the interface 2026-10-05 00:00:16 +08:00
Lemon-miaow a002607d47 assets: preserve supplied Felis icon kit 2026-10-04 23:50:01 +08:00
Lemon-miaow 61b283ae2f feat(auth): add Owner authentication source settings
Manage Yggdrasil providers from the panel using durable platform settings, protected identity namespaces and atomic revisions. Apply changes to subsequent logins and profile lookups without restarting. Return operator-host logouts to the login method selection page.
2026-10-04 22:18:37 +08:00
Lemon-miaow 2c98e8b2ab perf(panel): speed up file browsing and preserve loading forms 2026-10-04 20:18:11 +08:00
Lemon-miaow 4d8e9af240 feat(cli): apply coordinated updates during maintenance 2026-10-04 17:36:21 +08:00
Lemon-miaow cb3ed94026 fix(panel): streamline system settings and server creation
Use shared action buttons and default to the login space. Allow staff to save startup-only experience settings while running and request a durable restart through the existing operator flow.

Grant the API PVC list permission needed to detect retained worlds before server creation, and show internal failures with a request ID. Cover permission, maintenance, restart and UI behavior with regression checks.
2026-10-04 16:26:03 +08:00
Lemon-miaow e67896979e feat(cli): show download progress and copy setup links 2026-10-04 15:49:21 +08:00
Lemon-miaow e4a2a6339a fix(panel): place login space before lobby tab 2026-10-04 12:58:07 +08:00
Lemon-miaow 77c1e7404f fix(panel): refine login and lobby settings layout 2026-10-04 12:56:46 +08:00
Lemon-miaow 10bd2ddad0 feat: customize login and lobby spaces from the panel 2026-10-04 12:38:39 +08:00
Lemon-miaow efbbe27629 feat: initialize panel access before linking Minecraft accounts
Configure connection and storage before creating or resuming the one-time Owner login. Remove Minecraft prerequisites from setup and preserve established login credentials.

Let staff preview and confirm roles from configured authentication sources using the existing account-link storage and game UUID mapping. Retain in-game code proof for players, add client-version and lobby guidance, and support NodePort passkey origins.
2026-10-04 03:05:05 +08:00
Lemon-miaow 75845d8f58 docs: add website and documentation entry points 2026-10-02 22:22:15 +08:00
Lemon-miaow 2e4f118939 feat(login): 未绑定 Owner 时说明原因和绑定方式 2026-10-02 19:38:36 +08:00
Lemon-miaow 9139c5bd35 fix(bootstrap): 重跑时修复中断的安装 2026-10-02 18:49:29 +08:00
Lemon-miaow 8d78d245b2 fix(updater): 官方仓库 404 不再提示私有仓库 2026-10-02 18:12:29 +08:00
Lemon-miaow 80141deeb5 fix(bootstrap): 重跑时接管残留的源码目录 2026-10-02 18:12:20 +08:00
Lemon-miaow 47a2dec4bc fix(setup): 绑定码可重试并说明连接方式 2026-10-02 17:07:53 +08:00
Lemon-miaow d2a6b6ec73 feat(bootstrap): 安装结束后引导进入设置向导 2026-10-02 17:07:52 +08:00
Lemon-miaow 94cbd7e120 ci(e2e): 上游下载被拒时跳过 2026-10-02 16:08:56 +08:00
Lemon-miaow ce8c7893fe docs: 重写 README 2026-10-02 16:08:42 +08:00
Lemon-miaow 109701a276 fix(ci): 修正分布式实现的 staticcheck 错误
迁移 CLI 不再遮蔽 BeginMigration 的错误,拒绝启动时正确返回失败。规范节点批准错误文案和归档 HTTP 状态常量;tar.Reader 已将旧普通文件类型归一化,无需引用已弃用常量。

验证:CI 固定版本 staticcheck 全量通过;cmd/felis、archivetransfer、backup、distributed 的 go test -race 通过。
2026-10-01 20:06:08 +08:00
Lemon-miaow b01aae77a2 fix(bootstrap): 在源码构建后安装分布式节点防火墙
首次源码安装或旧发布版升级时,等待新二进制构建完成后调用 node firewall;worker 的源码安装也按所请求的版本重新构建。补充安装顺序回归检查和 main 接入说明,更新单机默认与多节点运维边界。

验证:Linux VM 上 bootstrap shell 测试全量通过;go test ./cmd/felis;shell 语法和 git diff --check。
2026-10-01 19:57:17 +08:00
Lemon-miaow adf563ffe3 feat(distributed): 支持单主控多节点部署和停服迁移
复用现有 k3s 调度和 Job 生命周期,增加 worker 接入与批准、受保护节点身份、归档传输、持久迁移锁及活动 PVC 切换;同步管理员 API、CLI、面板和隔离规则。分布式模式默认关闭,保持单机兼容。

验证:Go 全量测试与 vet;面板 874 个测试、lint/build;Linux VM 安装器测试、清单服务端 dry-run、网络命名空间防火墙实测。A/B/C 三机 WireGuard、Velocity 和迁移验收仍待完成。
2026-10-01 19:48:37 +08:00
Lemon-miaow 26e817f2c9 perf(bootstrap): k3s 以 GOGC=50 运行,Velocity 1G 以内改用串行回收和 C1,基础设施空载压到约 1 GB 2026-09-29 19:06:37 +08:00
Lemon-miaow a25553413c perf(bootstrap): Velocity 堆从 64M 起步不再预占,Docker 及其 containerd 用完即停且不随开机启动 2026-09-29 19:06:37 +08:00
Lemon-miaow ab4d8c2bf7 test(staticcheck): 删掉没人调用的 mustRead 和一次没被读的赋值 2026-09-29 03:25:26 +08:00
Lemon-miaow 6644046016 fix(panel): 搜索框的停顿计时只在搜索词变了才起,列表刚加载就翻的页不再被拉回第一页 2026-09-29 03:25:26 +08:00
Lemon-miaow 3c0322a5c6 test(pgint): 只读绑定账号的测试角色带密码登录,CI 的 PG 要求密码验证 2026-09-29 02:28:50 +08:00
Lemon-miaow 01cd69692f test(watchdog): 状态文件先拨回上一轮的时间,Linux 粗粒度 mtime 下备用文件不再和它同刻 2026-09-29 02:28:50 +08:00
Lemon-miaow 20c4ae5567 test(exports): 等待浏览器的导出上传在子测试内取走并等它返回,-race 下不再和下一个子测试改领取时限撞车 2026-09-29 02:28:50 +08:00
Lemon-miaow d31fbae3cf test(i18n): 语言检测用例每个都从空存储开始,Node 22 下不再读到模块加载时缓存的英文 2026-09-29 02:28:50 +08:00
Lemon-miaow 6b5bd7055b test(bootstrap): 原子写入残留临时文件的检查改用 glob,shellcheck 不再报 ls | grep 2026-09-29 02:28:50 +08:00
Lemon-miaow 9b4c9bf4b5 ci(ci): ci 可手动触发,推送时没跑成的提交能补跑 2026-09-29 02:15:30 +08:00
Lemon-miaow 94864473ce fix(files): 服务器运行时下载文件的拒绝说明改为先停服再操作文件 2026-09-29 01:45:43 +08:00
Lemon-miaow 2b9cd1869c fix(files): 编辑器保存和打开也逐跳核对 SHA-256,途中变了的内容不写盘也不打开 2026-09-29 01:43:37 +08:00
Lemon-miaow cb3065da1d fix(files): 模组包上传也逐段核对 SHA-256、长文件名能写、卡住的导出按时停掉、世界被占用时文件页说明原因并等它结束 2026-09-29 01:26:24 +08:00
Lemon-miaow 1d1549cea2 feat(files): 大文件分片上传、停服解压 zip 先列冲突再覆盖、文件和文件夹可下载;导出和下载不再带出 RCON 密码与转发密钥 2026-09-28 22:44:03 +08:00
Lemon-miaow 3abf146321 test(cli): 服务器清单导出期限测试给第一次调用留够启动时间,忙时不再误报 2026-09-28 22:43:43 +08:00
Lemon-miaow 5dffadb40d feat(backups): 主人和管理员可下载单个备份、导出停服世界,字节经一次性票据从导出 Job 流式转给浏览器,备份按 sha256 核对 2026-09-28 00:58:42 +08:00
Lemon-miaow 34b81ee8fe feat(schedules): 每台服务器可设计划任务,按星期和时区定时发命令、重启、停服、开服或备份,重启和备份前可在游戏内提醒 2026-09-27 22:48:49 +08:00
Lemon-miaow e8ff8f2fe5 feat(cli): 新增 felis status、doctor 和 support-bundle,一屏看全平台、按区域列出问题、打出脱敏诊断包 2026-09-27 21:11:35 +08:00
Lemon-miaow c97dadc904 docs(cli): felis 用法说明写上 files 的全部操作和服务器 pod 的 egress-gate 2026-09-27 20:11:23 +08:00
Lemon-miaow ab9a6f0bdb fix(operator): 服务器 pod 先等出站围栏生效再启动镜像,新 pod 第一个请求不再能连到内网 2026-09-27 20:10:41 +08:00
Lemon-miaow 051cc1c9f5 feat(files): 文件管理可新建、建目录、删除、重命名和上传,写入内容拆成多个环境变量不再超内核单变量上限 2026-09-27 19:58:28 +08:00
Lemon-miaow b6751eac0f feat(backups): 主人和管理员可删除单个备份,归档由 reaper 下一轮删除、异地副本随下次同步删除,恢复可能在读时拒绝 2026-09-27 18:09:49 +08:00
Lemon-miaow db7fbfec46 fix(preflight): 探测 k3s 安装器在 SELinux 主机上要用的 rpm.rancher.io,运维手册列出 FELIS_ARTIFACT_DIR 安装仍要放行的地址,README 不再说内网主机能装 2026-09-27 17:34:48 +08:00
Lemon-miaow cc0672557c fix(bootstrap): 下载发布版二进制改为普通语句调用,回退看 HAVE_PREBUILT_BINARY,errexit 覆盖替换 HOST_BIN 的步骤;旧二进制备份没拷完就删掉 2026-09-27 17:24:33 +08:00
Lemon-miaow b959c560cc fix(test): 测试脚本有失败就 exit 1,256 个失败不再回绕成通过;非 registry 镜像不推送的断言改按带 --config 的 push 行匹配 2026-09-27 17:17:01 +08:00
Lemon-miaow 7718879bcd fix(bootstrap): 新生成的 offsite 密钥只写到终端,安装输出和日志里只给出读取命令 2026-09-27 17:14:03 +08:00
Lemon-miaow 9fd699e301 ci(alerts): 用固定版本的 promtool 3.15.0 检查告警规则并跑规则单测 2026-09-27 17:06:20 +08:00
Lemon-miaow 125ba1c3a0 test(e2e): 按 bootstrap.sh 列出的全部 timer 检查启用且在等待,另查备份和 watchdog 首轮运行成功及 OnFailure 单元存在 2026-09-27 17:03:35 +08:00
Lemon-miaow e97a73e539 test(e2e): 升级任务先往发布版库里写 12 张表的种子行,升级后逐行比对并检查序列位置 2026-09-27 16:59:18 +08:00
Lemon-miaow 95f4e79ff2 fix(bootstrap): 没有 IPv4 默认路由时从 hostname -I 取第一个 IPv4 地址,跳过 IPv6 2026-09-27 16:42:58 +08:00
Lemon-miaow 840d339760 fix(dbbackup): 备份新鲜度按最新的 daily 包算,手动或异地包不再掩盖停掉的定时任务 2026-09-27 16:40:50 +08:00
Lemon-miaow 46f99a7104 fix(watchdog): 状态文件写不进时把状态留在 /run 下的后备文件,下一轮读较新的一份,同一封告警不再每 2 分钟重发 2026-09-27 16:23:33 +08:00
Lemon-miaow a32e8c19f7 fix(api): 契约检查对请求体按字段严格比对且不看 Content-Type,补上 approve 的 expected_digest 请求体 2026-09-27 16:14:52 +08:00
Lemon-miaow de5fbb7283 fix(panel): LuckPerms 页在手机上玩家栏按内容收高、列表在卡内滚动,选中玩家的面板落在首屏 2026-09-27 16:08:21 +08:00
Lemon-miaow 7b28434068 fix(panel): scan_document_not_kept 按界面语言说明,不再透出后端英文 2026-09-27 15:59:13 +08:00
Lemon-miaow 2c6e29fa0d fix(panel): 收到角色拒绝的 403 时限频重读身份,被降权的管理员随即失去管理页 2026-09-27 15:57:31 +08:00
Lemon-miaow 5282d55214 fix(panel): 侧栏用户卡按界面语言显示角色名,身份未读到时显示横线 2026-09-27 15:53:51 +08:00
Lemon-miaow 68387a3b12 fix(panel): LuckPerms 撤销失败提示改为“撤销失败:原因” 2026-09-27 15:51:29 +08:00
Lemon-miaow d308a5edb1 fix(panel): 构建对话框的提交选择器说明读取失败并可重试,服务端搜索找到最新 100 条之外的提交 2026-09-27 15:49:42 +08:00
Lemon-miaow ec861c10e0 fix(panel): 镜像页构建卡显示真实构建总数并链到构建页,读不到时显示横线 2026-09-27 15:44:10 +08:00
Lemon-miaow 5d95dc6b6b fix(panel): 玩家页四个名单加载失败时带上具体原因 2026-09-27 15:41:26 +08:00
Lemon-miaow d13d99ed75 fix(panel): 我的提交页轮询审核与构建进度,构建进行中走快档,重读失败保留列表并提示 2026-09-27 15:38:10 +08:00
Lemon-miaow c0228f4e86 fix(panel): 文件页目录请求按序号落地,先点的目录慢回来不再盖掉后点的目录 2026-09-27 15:35:16 +08:00
Lemon-miaow e129b04c67 fix(panel): 备份页轮询服务器状态,立即备份按去向判断并在已有备份或回档时等待,重读失败保留页面 2026-09-27 15:31:40 +08:00
Lemon-miaow 9df1178022 fix(panel): 建服对话框每次打开重读镜像白名单,编辑或重开时清掉旧错误,读不到白名单时说明并可重试 2026-09-27 15:28:45 +08:00
Lemon-miaow c1bf1a81a2 fix(panel): 服务器列表的刷新按钮只为自己的点击转圈和禁用,后台轮询时保持可点 2026-09-27 15:25:22 +08:00
Lemon-miaow b6357ad68b fix(panel): 可认领的服务器行去掉点不了的控制台按钮,管理员在认领旁保留唤醒和控制台 2026-09-27 15:23:48 +08:00
Lemon-miaow 50ec181177 fix(panel): 服务器列表无匹配时给出真的清除筛选按钮,清掉搜索和状态筛选并回到第一页 2026-09-27 15:21:20 +08:00
Lemon-miaow f6d586ed0c fix(panel): 服务器列表每页 20 台,可按名称、状态或在线人数排序,轮询时行序不再跳动 2026-09-27 15:19:45 +08:00
Lemon-miaow 9910c78709 fix(limbo): 登录门聊天和 /link 回复里的网址可以直接点击打开 2026-09-27 15:13:08 +08:00
Lemon-miaow 1e42e9a87b fix(velocity): 休眠服 MOTD 按唤醒策略说明谁能唤醒,闲置回收期间加入给出回收提示 2026-09-27 15:02:16 +08:00
Lemon-miaow 249d675bd7 fix(operator): 每次运行首次就绪后留 3 分钟到达窗口再开始空服计时,停服或重启时清掉旧计时 2026-09-27 14:53:40 +08:00
Lemon-miaow 32534e3d56 fix(velocity): 同一玩家同时只跑一个授权和唤醒,排队中再点同一服直接告知 2026-09-27 14:42:28 +08:00
Lemon-miaow 67028727ae fix(velocity): 传送没连上且后端没给理由时重新排队重拨,最多三次 2026-09-27 14:32:30 +08:00
Lemon-miaow 56a4bbcf4c refactor(api): 删掉没有调用方的 QuotaAvailable,修正 passkey last_used_at 的过时注释 2026-09-27 14:20:20 +08:00
Lemon-miaow 4839d52f88 fix(api): passkey 的 RP ID 按面板主机推导,只配 root_domain 的部署也能用 passkey 2026-09-27 14:18:33 +08:00
Lemon-miaow e9e9a7a622 fix(api): 收到 API 时钟的 repo 写操作一律用它打时间戳,不再和 PG now() 混用 2026-09-27 14:15:03 +08:00
Lemon-miaow e491e063cf fix(api): 消费 op-login 请求时要求已审批,fake 同步 2026-09-27 14:04:34 +08:00
Lemon-miaow 009e81b4cf fix(api): op-login finish 拒绝审批后被停用或删除的账号 2026-09-27 14:00:33 +08:00
Lemon-miaow 1124413876 fix(api): setup 链接在同一事务里消费并建会话,存储故障回 500 且链接仍可重试 2026-09-27 13:55:56 +08:00
Lemon-miaow 26d997cb40 fix(submit): 本地上传存储在 rename 前 fsync 文件、rename 后 fsync 目录 2026-09-27 13:46:51 +08:00