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
3c0322a5c6
test(pgint): 只读绑定账号的测试角色带密码登录,CI 的 PG 要求密码验证
2026-09-29 02:28:50 +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
b6751eac0f
feat(backups): 主人和管理员可删除单个备份,归档由 reaper 下一轮删除、异地副本随下次同步删除,恢复可能在读时拒绝
2026-09-27 18:09:49 +08:00
Lemon-miaow
56a4bbcf4c
refactor(api): 删掉没有调用方的 QuotaAvailable,修正 passkey last_used_at 的过时注释
2026-09-27 14:20:20 +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
1124413876
fix(api): setup 链接在同一事务里消费并建会话,存储故障回 500 且链接仍可重试
2026-09-27 13:55:56 +08:00
Lemon-miaow
fef8d962c9
fix(api): UserDetail 读不到绑定账号时返回错误,不再显示为未绑定
2026-09-27 13:18:37 +08:00
Lemon-miaow
2c5a85a033
fix(api): 调整资源先在 owner 的认领锁内核配额并写缓存再 patch 集群,集群拒绝时缓存回到集群的大小
2026-09-27 13:15:18 +08:00
Lemon-miaow
7f203b9245
fix(api): ListUsers 的 total 按同一组过滤条件计数,面板不再翻出空页
2026-09-27 13:01:12 +08:00
Lemon-miaow
f692725bed
fix(migrate): 兑换迁移码在双方认领锁下检查目标配额,超出返回 403 migrate_quota_exceeded 且码不消耗
2026-09-27 12:46:49 +08:00
Lemon-miaow
fe48319866
test(watchdog): 整轮巡检测试覆盖集群告警保持、dry-run、主机 relay 密码、按配置检查与状态存不下,收件人查询移入 watchdog 并加 pgint 契约
2026-09-27 12:33:11 +08:00
Lemon-miaow
983727d9c0
fix(offsite): 复制新归档后补打并上传 DB 包,桶内无记录的归档过最长保留期后清理
2026-09-27 09:16:00 +08:00
Lemon-miaow
fa46733859
fix(offsite): fetch-db latest 跳过新装机器的空库包,取包后显示包内账号和服务器数
2026-09-27 06:52:09 +08:00
Lemon-miaow
0e08fa7ced
fix(servers): 主人可放弃服务器、管理员可删除服务器,由 reaper 归档世界后释放或移除
2026-09-27 03:49:49 +08:00
Lemon-miaow
4a26bf4ca0
fix(allowlist): 唤醒名单可查看、可取消或恢复唤醒权限,换主人时清空
2026-09-27 02:55:30 +08:00
Lemon-miaow
d807fd5887
fix(servers): 同名重建服务器时旧行从头开始,不再继承上一任的主人、别名、allowlist 和回收警告
2026-09-27 02:30:54 +08:00
Lemon-miaow
7aa5034c1a
fix(quota): 配额表单整体替换,留空即不限、0 即不给、负数和越界拒收,超配额的服务器仍可调小
2026-09-27 02:26:03 +08:00
Lemon-miaow
ee4065b986
fix(migrate): 迁移确认只对做确认的会话在 10 分钟内有效,签发和兑换迁移码都给源账户邮箱发通知
2026-09-27 02:14:22 +08:00
Lemon-miaow
9a89254146
test(db): 恢复链在真实 PostgreSQL 上跑往返与三种失败回滚,-yes 闸门测试真正走到闸门,e2e 按文档做一次同机恢复
2026-09-27 01:58:35 +08:00
Lemon-miaow
8ef7112dab
feat(backup): 玩过的世界每天在停服后自动打一个定时恢复点,按服按 owner 保留 7 个、90 天过期
2026-09-27 00:02:49 +08:00
Lemon-miaow
d6e1a6464c
fix(quota): 回收的服务器保留资源规格,认领时按集群里的真实规格过配额并写回缓存
2026-09-26 23:28:18 +08:00
Lemon-miaow
3b58b39763
fix(bootstrap): 迁库比对行数的 SQL 不再对常量排序报错,宿主机库能真正迁入 felis-postgres
2026-09-26 19:48:52 +08:00
Lemon-miaow
24373823cc
feat(build): 扫描门按可配严重度拦截并可接受已知风险,留存 Trivy 报告与 CycloneDX SBOM,面板构建页展示扫描结果
2026-09-25 21:28:57 +08:00
Lemon-miaow
1054e62fa9
feat(api): 集群列表读改走 informer 缓存,审核队列、我的提交与备份列表改为服务端分页筛选并一次批量查构建,面板三页跟进
2026-09-25 18:13:21 +08:00
Lemon-miaow
0a66385d9f
fix(store): passkey 挑战与账号迁移的并发开始改由 advisory 锁串行,登录挑战按来源上限在并发下精确,迁移重启不再给已退役账号留活动记录,补 pgint 契约测试
2026-09-25 17:36:44 +08:00
Lemon-miaow
d93c1b6913
feat(api): op-login 游戏内审批先展示目标账号、邮箱与发起来源,须输入账户名确认,velocity 显示审批卡片
2026-09-25 17:02:43 +08:00
Lemon-miaow
4757353324
fix(api): 登录验证码与 passkey 挑战不再被他人的 start 作废,冷却内重复 start 照常 202,登录挑战按来源限量
2026-09-25 16:37:03 +08:00
Lemon-miaow
084ba1ed9e
feat(retention): felis-api 定时清理过期会话、验证码、挑战、绑定码等表,审计按 [audit] retention 保留,新增 felis db audit-export 导出归档
2026-09-25 15:53:34 +08:00
Lemon-miaow
d3769b5c31
feat(api): 添加或删除 passkey、修改邮箱前须 5 分钟内用已有因子重新验证,变更后邮件通知账户,面板加确认对话框与修改邮箱入口
2026-09-25 14:47:54 +08:00
Lemon-miaow
9e7f23ca13
feat(api): 会话记录设备与最近活动,账户页可查看并退出任一设备,删除 passkey 或更换邮箱时退出其它设备,staff 会话空闲 30 分钟失效,吊销会话校验所属用户
2026-09-25 14:06:02 +08:00
Lemon-miaow
98295e630e
fix(api): 禁用用户与吊销会话合为一个事务,passkey 签名计数只增不减,引导检查遇到数据库故障返回 503
2026-09-25 13:29:52 +08:00
Lemon-miaow
88d3dd7121
fix(store): 数据库连接池限 25 条并设语句与空闲事务超时,迁移锁固定在取锁的连接上释放,API 导出连接池指标
2026-09-25 13:25:45 +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
ea425cffa4
fix(passkey): 删除 passkey 先确认并显示名称与注册时间,邮箱未验证时后端拒删最后一把,错误内联显示
2026-09-25 10:04:31 +08:00
Lemon-miaow
7766e8efa4
fix(reaper): 回收前先停服并持有世界维护锁再归档,锁丢失不删卷;无世界卷的无主服务器只重置时钟不再重复回收
2026-09-25 03:31:50 +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
3ed6603201
feat(store): api/reaper/offsite/migrate 按版本集合校验 schema,库比二进制新时拒绝启动;bootstrap 迁移前失败回滚宿主二进制
2026-09-25 01:46:33 +08:00
Lemon-miaow
b1627e9ba0
style(pgint): gofmt
2026-09-24 23:52:30 +08:00
Lemon-miaow
5cadbd40a9
fix(submit): 待审上限在事务内加咨询锁原子检查,跨副本不超额
2026-09-24 22:26:30 +08:00
Lemon-miaow
e521cf5976
fix(submit): 审阅绑定上下文 sha256,批准须带摘要,构建只从内部 API 取上下文并校验字节
2026-09-24 22:24:50 +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
857c73a66a
fix(audit): 审计按账号 id 归属并记录来源 IP/UA,登录失败与限速入审计和指标,写入失败计数告警
2026-09-24 16:02:44 +08:00
Lemon-miaow
15f729ffea
fix(auth): 邮箱验证码按账号累计错误次数封顶并通知
2026-09-24 15:37:01 +08:00