Commit Graph
100 Commits
Author SHA1 Message Date
layue13andClaude Opus 5.5 7f68e5682e feat: 运维日志策略、玩家与服务器事件日志、滚动日志文件
- docs/logging.md 规定各级别写什么、永远不写什么,以及新增日志的做法
- core.log.ConnectionLog 统一写玩家(加入、离开、转服、转服失败、未能加入)和服务器
  (注册、地址变更、注销、不可达/恢复)事件,logger 为 moonbridge.players / moonbridge.servers
- LogText 清理对端与插件文本(控制字符、双向文字控制字符、长度上限),防止伪造日志行
- logging.playerAddresses 开关:false 时玩家地址写成 [hidden]
- Session 记录结束原因(先记录者为准),在 closePair 中写离开或未能加入的原因
- 合并的 WARN(ThrottledWarning):连接数上限、插件命令/补全/事件/初次选服过载
- 控制通道:租约过期、注册被拒(按地址和原因去重);插件启用/停用;启动与关闭摘要
- logback:控制台 + logs/latest.log,按天压缩滚动保留 14 天;测试只写控制台

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 16:44:27 +08:00
layue13 192eca2a46 Merge pull request #5 from layue13/refactor/repo-layout
refactor: 精简仓库根目录与代理发行包
2026-10-22 15:03:28 +08:00
layue13andClaude Opus 5.5 afea023bce build: 代理发行包改为单个可运行的 moonbridge.jar
发行包去掉 bin/ 启动脚本和 lib/ 下的 42 个依赖 jar,改为与其他代理服务端一样
用 java -jar moonbridge.jar 启动:
- proxy-core 用 shadow 打出含全部依赖的 moonbridge.jar(合并 META-INF/services,
  清单写入 Main-Class、Multi-Release 与 Enable-Native-Access: ALL-UNNAMED)
- 泄漏检测默认关闭改由 ProxyMain 在加载 Netty 前设置,显式 -D 仍优先
- 移除不再使用的 application 约定插件
- 安装包检查、烟测与基准脚本改用发行包根目录作 classpath;文档同步

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 15:00:14 +08:00
layue13andClaude Opus 5.5 789648c82f refactor: 仓库根目录按用途分组
- proxy/:core、plugin-api、luckperms 及其上游子模块 vendor/luckperms
- messaging/、backend/ 保持在根目录(messaging 是代理与后端共用的 API)
- build-logic/(原 proxy-build-logic)
- testing/:smoke/ 与 benchmarks/,不进入发行物

Gradle 项目名不变(settings.gradle.kts 映射目录),任务路径与 Maven 坐标照旧。
脚本的仓库根定位、文档与记录中的链接同步更新。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 14:34:01 +08:00
layue13andClaude Opus 5.5 7664c1cf60 build: 代理发行包只保留运行所需内容
发行包根目录去掉 docs/、smoke/results/、benchmarks/results/ 和 backend/,
只剩 bin/、lib/、config/、README(-Pluckperms 时另有 plugins/)。
后端 jar 已由 release 单独放在 build/release/backend/;channel-java8 烟测改为
从 backend/build/libs 取后端 jar。文档同步。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 14:19:36 +08:00
layue13 480999a448 Merge pull request #4 from layue13/refactor/build-and-modules
重构构建与模块:后端 5 合 2、LuckPerms 可选构建、统一 release
2026-10-21 03:26:15 -07:00
layue13 d904410c4b Merge pull request #3 from layue13/feat/websocket-transport
WebSocket 玩家监听(与 TCP 并存)+ 1.7.10 客户端 mod + 文档整理
2026-10-21 03:25:59 -07:00
layue13andClaude Sonnet 5.5 e9a916a192 ci: 统一 workflow 写法,并把 Maven 密钥限定在独立的 publish 任务 [skip ci]
[skip ci]

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-15 16:44:09 +00:00
layue13andClaude Sonnet 5.5 13a3a15dee Merge branch 'chore/bench-record-and-test-timeout'
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 07:50:43 -07:00
layue13andClaude Sonnet 5.5 c5fe042173 Record session split benchmark and relax a timing-sensitive messaging test
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 07:50:32 -07:00
layue13andClaude Sonnet 5.5 0ad66b6e1d Merge branch 'refactor/split-session': split Session, PluginHost and control classes
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 04:17:16 -07:00
layue13andClaude Sonnet 5.5 aed2d5ca93 Extract ClientControl from Session, narrow package visibility, document layers
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 04:08:31 -07:00
layue13andClaude Sonnet 5.5 fc951bfb7b Split LocalMessaging operations and failure helpers; deduplicate outbound dispatch
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 03:25:20 -07:00
layue13andClaude Sonnet 5.5 765dcffeaa Split BackendChannelClient into session, dispatcher and operation classes
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 03:24:17 -07:00
layue13andClaude Sonnet 5.5 4b9f240c1b Split BackendControlService into registry, router, exchange and writer
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 03:22:51 -07:00
layue13andClaude Sonnet 5.5 22739ed0c4 Split PluginHost into lifecycle, event, command and placement services
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 03:19:50 -07:00
layue13andClaude Sonnet 5.5 133e46f25b Split Session into login, routing, transfer and play packages
Session delegates frontend login to FrontendLogin, first-backend dialing to
InitialRouter and the whole transfer state machine to TransferCoordinator
behind the TransferHost port. Per-frame PLAY handlers move to session.play and
dialing helpers to session.channel. Relay hot path is unchanged.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 03:16:09 -07:00
layue13 1efbbafbad Merge pull request #2: add CLAUDE.md
Add CLAUDE.md
2026-10-05 18:17:03 -07:00
layue13 c834879640 Merge pull request #1: batch relay flushes, native transport, leak gate, Session helpers
Batch relay flushes, native transport, leak gate, Session helpers
2026-10-05 18:14:22 -07:00
layue13 15e5abb325 Default permission storage to MariaDB 13.0.2 and verify recovery 2026-10-02 05:30:59 +08:00
layue13 21e6006104 Revert "Merge pull request 'Authenticate shared backend sessions before Join' (#20) from feature/early-backend-session into main"
This reverts commit 08eb4454f4, reversing
changes made to 043123e168.
2026-10-01 06:27:29 +08:00
layue13 631b623a3f Revert "Merge pull request 'Exercise Uranium authoritative loading on real transfers' (#21) from test/uranium-player-data-authority into main"
This reverts commit a2382b2bd5, reversing
changes made to 08eb4454f4.
2026-10-01 06:27:29 +08:00
layue13 9675fa42e6 Exercise Uranium authoritative player loading on real transfers 2026-10-01 05:55:18 +08:00
layue13 66762ac8bb Authenticate backend player sessions before Join 2026-10-01 05:00:01 +08:00
layue13 d7e3f13d66 Simplify source release confirmation API 2026-10-01 04:00:07 +08:00
layue13 1bf903ea35 Measure transfer coordination and default PLAY paths 2026-10-01 03:30:45 +08:00
layue13 e8cc2a72bd Add optional source-release transfer coordination events 2026-10-01 02:39:31 +08:00
layue13 bc6db124a7 Revert "Merge pull request 'Guard all backend transfers and recover failed handoffs' (#17) from feature/transfer-guard-lifecycle into main"
This reverts commit 5d4b80d670, reversing
changes made to a3b13dd47b.
2026-09-30 04:26:17 +08:00
layue13 de825615c2 Add central guarded transfer lifecycle 2026-09-30 03:41:11 +08:00
layue13 80a753abc7 Merge branch 'feature/permissions-luckperms' of https://git.nest.potatolab.uk:8443/layue13/MoonBridge into codex/backend-session-binding 2026-09-28 02:45:48 +08:00
layue13 3278ce74b4 Consume private session proofs before legacy player broadcasts 2026-09-28 02:45:04 +08:00
layue13 fc5f8d4753 Verify native LuckPerms integrations and render translated command output 2026-09-28 02:27:15 +08:00
layue13 63f3f97038 Forward exact session proofs for configured offline backends 2026-09-28 02:09:54 +08:00
layue13 672914cdbe Bind Bukkit players to signed exact proxy sessions 2026-09-28 01:50:28 +08:00
layue13 7f1980269a Add permissions service and native LuckPerms platform 2026-09-28 01:32:31 +08:00
layue13 cea296eeb0 Publish MoonBridge modules under project-specific Maven group 2026-09-28 00:11:41 +08:00
layue13 8401e34639 Make development publishing traceable and polish operator and plugin docs 2026-09-27 23:43:13 +08:00
layue13 c0c8f05110 Decouple directory update regression from snapshot implementation 2026-09-27 23:13:14 +08:00
layue13 14d9b59b05 Assert candidate exhaustion disconnect reason in login regression 2026-09-27 23:10:20 +08:00
layue13 9481403684 Redesign initial player routing with explicit candidates and bounded retries 2026-09-27 23:05:58 +08:00
layue13 64152878d0 Rename project to MoonBridge and expose standalone Bukkit API 2026-09-27 22:39:16 +08:00
layue13 8c2d35b8be feat: name backend host and verify real Uranium lifecycle 2026-09-27 22:16:21 +08:00
layue13 cc817c057c test: complete synthetic read cycle during transfer 2026-09-27 20:01:46 +08:00
layue13 7e045e0ddc feat: unify plugin channel messaging and remove v1 API 2026-09-27 19:00:17 +08:00
layue13 d0aca24839 Merge main backend channel into messages completion 2026-09-27 17:57:21 +08:00
layue13 230f317d0a feat: replace backend discovery with control channel 2026-09-27 02:52:46 +08:00
layue13 1185ae2b2e feat: add Adventure messages and asynchronous command completion 2026-09-27 00:01:02 +08:00
layue13 7fe2c99d6e docs: record current Forge pack acceptance and paired measurements 2026-09-26 22:39:12 +08:00
layue13 47ea7ccdf0 Avoid tiny TCP receive windows in slow-reader regression 2026-09-26 22:08:10 +08:00
layue13 12340e146c Test relay backpressure with real TCP slow readers 2026-09-26 21:58:44 +08:00
layue13 2341e757a7 Simplify login state tracking 2026-09-26 04:39:24 +08:00
layue13 71a958a6ec Bound frame count during login relay transition 2026-09-26 04:32:07 +08:00
layue13 2bd7902556 End pending Forge world transition on session close 2026-09-26 04:24:10 +08:00
layue13 9e60e162c7 Clarify real Forge transfer reliability boundary 2026-09-26 04:18:53 +08:00
layue13 c4c145c571 Record successful real Forge roundtrip control 2026-09-26 04:17:28 +08:00
layue13 b43207400d Document real Forge client Uranium login stall 2026-09-26 04:11:22 +08:00
layue13 abfe8a0306 Capture backend bytes during Uranium login stalls 2026-09-26 04:02:37 +08:00
layue13 a04d275a30 Record coalesced direct-login control 2026-09-26 03:54:55 +08:00
layue13 b70dd6965c Record direct Uranium login isolation check 2026-09-26 03:52:38 +08:00
layue13 db520df97f Record repeated Uranium login stall evidence 2026-09-26 03:48:58 +08:00
layue13 05aba68621 Capture early Uranium login stall evidence 2026-09-26 03:44:25 +08:00
layue13 494cc609ff Explain backend closure during initial login 2026-09-26 03:25:21 +08:00
layue13 1409e55afb Send login disconnect when initial backend deadline expires 2026-09-26 03:10:23 +08:00
layue13 e5df858725 Connect numeric backend addresses without DNS 2026-09-26 02:56:34 +08:00
layue13 ba06e0f7be Record post-transfer synthetic session baseline 2026-09-26 02:37:24 +08:00
layue13 883d439e6b Add diagnostics for intermittent initial login EOF 2026-09-26 02:34:31 +08:00
layue13 a09fc07726 Keep server views as registration snapshots 2026-09-26 02:07:09 +08:00
layue13 2eeb342d74 Exercise Forge round-trip through plugin transfer API 2026-09-26 01:41:20 +08:00
layue13 f0e9abdd57 Record current minimal Forge client transfer smoke 2026-09-26 01:17:34 +08:00
layue13 c909f6a0e2 Await session capacity release in disconnect tests 2026-09-26 01:04:06 +08:00
layue13 112efd839d Wait for capacity cleanup in backend close test 2026-09-26 00:56:37 +08:00
layue13 c99d296cd4 Verify authenticated Forge transfer on encrypted session 2026-09-26 00:48:42 +08:00
layue13 aa4d7e560d Cover authenticated transfers and unblock cutover test writes 2026-09-26 00:34:53 +08:00
layue13 315ad15f28 Interrupt placement callbacks before disabling plugins 2026-09-26 00:10:07 +08:00
layue13 377a06cf34 Record current Forge client transfer revalidation 2026-09-25 23:53:16 +08:00
layue13 7925b868af Cancel abandoned initial placement requests 2026-09-25 22:55:24 +08:00
layue13 68e7f87477 Smoke test backend discovery across container network 2026-09-25 22:35:16 +08:00
layue13 9c35ec92d2 Correct Linux benchmark with rebuilt current distribution 2026-09-25 22:22:15 +08:00
layue13 3f31bc1d0f Record Linux post-transfer session benchmark 2026-09-25 22:14:40 +08:00
layue13 6b2d12e9b0 Verify pull requests without cross-repository workflow access 2026-09-25 22:00:03 +08:00
layue13 7eb9b086c2 Record real Forge client and current transfer benchmark 2026-09-25 21:50:58 +08:00
layue13 562e00be8e Guard Forge backend transfer until target world is ready 2026-09-25 21:36:53 +08:00
layue13 24e6de0eff Measure ordinary forwarding after backend transfer 2026-09-25 21:14:27 +08:00
layue13 91d2d016e1 Verify dynamic plugin registration with real Forge transfer 2026-09-25 21:06:00 +08:00
layue13 c41c2c5c8e Verify plugin API transfer through installed proxy 2026-09-25 21:02:41 +08:00
layue13 a93fd3c36c Smoke test Forge transfer between Uranium backends 2026-09-25 20:56:49 +08:00
layue13 70e12b1764 Smoke test minimal Uranium backend through proxy 2026-09-25 20:50:37 +08:00
layue13 446ff76da0 Verify active sessions survive Agent unregister 2026-09-25 20:41:32 +08:00
layue13 86a3fad5b8 Close handed-off backend candidate on pipeline error 2026-09-25 20:36:27 +08:00
layue13 d90ebf903e Record current session throughput after lifecycle fixes 2026-09-25 20:26:12 +08:00
layue13 0b15bd85e0 Preserve login disconnect frames across backend close 2026-09-25 20:21:31 +08:00
layue13 5cb322c2b1 Verify relay drain deadline on real TCP channels 2026-09-25 20:11:16 +08:00
layue13 a7f85a22d0 Drain accepted clientbound writes before backend disconnect cleanup 2026-09-25 20:05:02 +08:00
layue13 9e7c91a45d Reset Forge client registry when switching to vanilla 2026-09-25 19:37:48 +08:00
layue13 a27d577d8b Record relay callback experiment and keep original path 2026-09-25 19:21:55 +08:00
layue13 56eeb1bf9a fix: complete plugin transfer results off session event loop 2026-09-25 19:11:36 +08:00
layue13 c810e1a4cc fix: recover Agent registration after lease expiry 2026-09-25 19:02:55 +08:00
layue13 82032fd673 fix: retain DNS family addresses across partial query failures 2026-09-25 18:58:04 +08:00
layue13 95b23e0922 fix: release session after event loop shutdown 2026-09-25 18:46:04 +08:00
layue13 fd8c851e75 test: cover vanilla to Forge transfer handshake sequence 2026-09-25 18:39:48 +08:00