Lemon-miaow
88d3dd7121
fix(store): 数据库连接池限 25 条并设语句与空闲事务超时,迁移锁固定在取锁的连接上释放,API 导出连接池指标
2026-09-25 13:25:45 +08:00
Lemon-miaow
fde677c07e
fix(panel): 本人与所有者账户的禁用和删除按钮提前锁定并说明原因,角色改为只读,后端拒绝改用专用错误码 self_protected 与 owner_protected
2026-09-25 13:20:01 +08:00
Lemon-miaow
bb9c2168df
fix(panel): 服务器列表的归属与可认领改由后端按账号判定,无邮箱管理员也能认出自己的服务器,所有者查询失败时显示未知且不给认领
2026-09-25 12:36:38 +08:00
Lemon-miaow
06d5e652c6
fix(panel): 构建记录改由服务端分页列表提供,任何浏览器与管理员都能看到并取消进行中的构建,列表刷新失败保留原行并提示
2026-09-25 12:28:22 +08:00
Lemon-miaow
2f99874d5e
test(panel): 加组件测试与浏览器冒烟、hooks lint、OpenAPI 双向类型对齐,修复 CI 类型检查空转、列表不显示服务器名称与玩家停服不确认
2026-09-25 10:47:19 +08:00
Lemon-miaow
ea425cffa4
fix(passkey): 删除 passkey 先确认并显示名称与注册时间,邮箱未验证时后端拒删最后一把,错误内联显示
2026-09-25 10:04:31 +08:00
Lemon-miaow
e0fa0268e0
docs(troubleshooting): 新增整机灾难恢复清单、各类数据的恢复点、恢复顺序与重建后核验步骤
2026-09-25 09:24:54 +08:00
Lemon-miaow
2779d8f5cf
fix(offsite): 服务器或白名单按摘要钉住的 felis/ 与 mirror/ 版本也进异地副本,恢复只按摘要推回不动安装器的 tag
2026-09-25 05:00:02 +08:00
Lemon-miaow
8fb3d298ae
feat(offsite): 异地副本加入提交上传的整合包,按内容去重加密,索引按版本保留 14 天,新增 fetch-uploads 恢复
2026-09-25 04:48:34 +08:00
Lemon-miaow
e3ac9cd545
feat(offsite): 异地副本加入 registry 用户镜像,按摘要加密去重,索引按版本保留 14 天,新增 fetch-images 回推恢复
2026-09-25 04:33:23 +08:00
Lemon-miaow
e1c325d594
fix(files): 配置文件改为同目录临时文件 fsync 后原子改名写入,读取返回内容哈希、保存带期望哈希冲突返回 409,磁盘满返回 507,面板提示载入最新或仍然覆盖
2026-09-25 03:56:30 +08:00
Lemon-miaow
0770a4d676
feat(reaper): 未配置世界目录时渲染只清理备份库存的 CronJob,默认安装也每日删除过期备份,安装器与清单生成器说明回收开关状态
2026-09-25 03:42:55 +08:00
Lemon-miaow
fe15b56074
docs(reaper): 说明回收前停服持锁、归档回读校验与存储清扫、无世界卷时的处理及运行汇总各计数
2026-09-25 03:34:54 +08:00
Lemon-miaow
89a0134707
feat(backup): 归档先写 .partial 再 fsync 改名并记录 sha256,删除原件前回读校验,reaper 抽样巡检与清扫半截归档,保留权限与 mtime,面板标出损坏与已校验
2026-09-25 03:16:06 +08:00
Lemon-miaow
489eff4494
feat(restore): 恢复前默认为当前世界做安全快照并串接恢复 Job,快照失败则不恢复;并发恢复另一备份返回 409
2026-09-25 02:52:18 +08:00
Lemon-miaow
d44243c0ac
docs(ops): 支持矩阵标注 Ubuntu 24.04 x86_64 由 CI 跑全新安装、重跑与升级,README 链接已验证发行版
2026-09-25 02:52:17 +08:00
Lemon-miaow
f8f112b8ca
feat(api): 访问日志与 HTTP/运行时指标、安全响应头与面板 CSP、跨站写拦截、请求体读截止、SSE 定期重鉴权与续传、404/405/413 信封、status 按所有权裁剪、停机并发排空
2026-09-25 02:14:08 +08:00
Lemon-miaow
3ed6603201
feat(store): api/reaper/offsite/migrate 按版本集合校验 schema,库比二进制新时拒绝启动;bootstrap 迁移前失败回滚宿主二进制
2026-09-25 01:46:33 +08:00
Lemon-miaow
b1678f78c8
feat(update): felis update 报告 JRE 与 PostgreSQL(含停更提示),bootstrap 支持 FELIS_UPGRADE_DEPS=1 升级 k3s/cloudflared
2026-09-25 01:35:52 +08:00
Lemon-miaow
6f7b8d7b30
feat(deploy): 新增 uninstall.sh(默认保留数据,--purge 全删)与 docs/operations.md 支持矩阵、容量与重装恢复手册
2026-09-25 01:20:52 +08:00
Lemon-miaow
3e61fde06d
fix(bootstrap): 关闭 BuildKit 默认 attestation,无改动重跑不再重启 login/lobby;同版本重跑同时重启 registry gate
2026-09-25 00:43:02 +08:00
Lemon-miaow
82545548e7
feat(bootstrap): game stack 按 lock 文件固定构建并校验 sha256,基础镜像按 digest 固定,JRE 固定补丁版本
2026-09-25 00:24:02 +08:00
Lemon-miaow
aace66e8d3
fix(bootstrap): 重跑只重启有变化的 Velocity、系统服与 PostgreSQL,无 firewalld 时用 nftables 收口 5432,PG 大版本不符拒绝启动
2026-09-25 00:06:47 +08:00
Lemon-miaow
a4fa16ae69
feat(bootstrap): 控制面镜像按版本打 tag,升级后 rollout undo 可回到上一版本
2026-09-24 23:52:30 +08:00
Lemon-miaow
07eb682358
docs(upgrade): 列出安装器对下载物的校验与离线导入 registry 镜像的做法
2026-09-24 23:39:39 +08:00
Lemon-miaow
8296153a38
docs(build): 说明构建工具镜像、定时刷新与离线环境做法
2026-09-24 23:25:21 +08:00
Lemon-miaow
80c4ea8966
docs(registry): 说明 manifest 清理、GC 窗口、PVC 容量与上传上限
2026-09-24 23:10:40 +08:00
Lemon-miaow
5cadbd40a9
fix(submit): 待审上限在事务内加咨询锁原子检查,跨副本不超额
2026-09-24 22:26:30 +08:00
Lemon-miaow
a27d76ae1d
docs(build): 修正上下文存储与构建镜像拉取的过时描述
2026-09-24 22:26:29 +08:00
Lemon-miaow
e836a73a8a
fix(build): 构建并发上限与排队,构建命名空间加 ResourceQuota,SyncAll 逐个容错
2026-09-24 22:26:21 +08:00
Lemon-miaow
e521cf5976
fix(submit): 审阅绑定上下文 sha256,批准须带摘要,构建只从内部 API 取上下文并校验字节
2026-09-24 22:24:50 +08:00
Lemon-miaow
13b65e19ec
fix(build): 构建 pod 等出口策略生效再运行,加 seccomp、可选 user namespace 与磁盘上限,上下文解包限总字节与条目数
2026-09-24 20:42:14 +08:00
Lemon-miaow
9bda3a52fa
fix(backup): 手动备份按服冷却、每服保留上限与独立保留期,容量驱逐不再删除回收世界的唯一副本
2026-09-24 19:58:59 +08:00
Lemon-miaow
f69cdec9d4
fix(reaper): 有服务器处理失败或过期备份删不掉时以非零码退出,让 Job 失败告警触达运维
2026-09-24 19:34:09 +08:00
Lemon-miaow
22becd6859
fix(reaper): 认领时重置活跃时钟与预警,回收只复用本次认领后的 reaper 归档
2026-09-24 19:31:23 +08:00
Lemon-miaow
47890ca913
feat(offsite): 世界归档与数据库备份加密同步到异地 S3,reaper 确认异地副本后才删除世界
2026-09-24 19:25:16 +08:00
Lemon-miaow
d17524cd67
feat(watchdog): 主机侧巡检定时器按异常邮件通知平台所有者,operator 增加 phase 与 build_info 指标、卡死存活探针与告警规则
2026-09-24 18:06:19 +08:00
Lemon-miaow
215bfd78d7
fix(images): 服务器镜像在创建时固定到仓库 digest,更换镜像需确认备份,安装器重建前先固定旧服并推送不可变版本标签
2026-09-24 16:57:38 +08:00
Lemon-miaow
857b6da886
fix(operator): 删除依赖 rcon-cli 的 preStop 死代码,缩容前由 operator 经 RCON 执行 save-all flush
2026-09-24 16:39:22 +08:00
Lemon-miaow
5521e498a9
fix(platform): minecraft 命名空间强制 PodSecurity baseline,reaper 世界根目录改走静态 hostPath PV
2026-09-24 16:28:12 +08:00
Lemon-miaow
c1796bea17
feat(servers): 新建服务器默认空闲 10 分钟自动停服,面板可调,converge 回填旧服,系统服不休眠
2026-09-24 16:12:53 +08:00
Lemon-miaow
bd909d5858
fix(operator): 读不出玩家数时暂停空闲自动停服,支持 1.12/Bukkit/EssentialsX 与颜色码
2026-09-24 16:06:55 +08:00
Lemon-miaow
857c73a66a
fix(audit): 审计按账号 id 归属并记录来源 IP/UA,登录失败与限速入审计和指标,写入失败计数告警
2026-09-24 16:02:44 +08:00
Lemon-miaow
c4e4953f3d
fix(auth): 公开登录门按来源限速并设全站发信上限,冷却表定期清理
2026-09-24 15:51:42 +08:00
Lemon-miaow
15f729ffea
fix(auth): 邮箱验证码按账号累计错误次数封顶并通知
2026-09-24 15:37:01 +08:00
Lemon-miaow
c7db7d4126
feat(db): 控制面 PG 定时备份、迁移前快照与原子恢复
2026-09-24 15:19:42 +08:00
Lemon-miaow
abfe60d62d
fix(api): wake 与回档/备份/改文件按服务器互斥
2026-09-24 14:39:02 +08:00
Lemon-miaow
7819e5de50
feat(netpol): 锁定游戏服出站并为 registry 加入站围栏
2026-09-24 14:25:17 +08:00
Lemon-miaow
b9ebc872ad
docs(troubleshooting): the [INERT] legend points at a field that no longer exists
...
The legend said "§12 lists the one field this still applies to", but the last
inert field (spec.storage.retainOnDelete) was removed rather than implemented
(§13), and §12 has said "every field below is read by a controller" since.
Reworded so a reader whose change looks ignored follows the condition question
instead of hunting for a dead field.
2026-09-24 10:35:35 +08:00
Lemon-miaow
c57daaf861
feat(cli): add felis converge for fields a newer desired spec never delivered (tracker #1 )
...
Provisioning is create-if-absent, so a field the desired spec gained after an
install (spec.rcon, spec.startup.healthHTTPPort, a derived env key) never
reaches the existing login/lobby CR while every re-run of setup reports
success — the reported 'configuration updates never reach an installed
deployment' symptom. converge is the explicit pass: it fills exactly the
zero-valued whitelist fields and the derived env (including a missing key,
which refreshDerivedEnv deliberately never adds), and never overwrites a
non-zero value. The timing stays with the operator because enabling RCON or
the HTTP readiness gate on a pre-listener image would wedge that server in
Starting until it was marked Failed.
Tests: fills predated fields while operator edits survive / non-zero values
left alone / absent + foreign + unset-image guards. usage table updated so the
router-parity test passes; troubleshooting gains §12b.
2026-09-24 10:35:14 +08:00