layue13 and Claude 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
layue13 and Claude 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
layue13 and Claude 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
layue13 and Claude 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
layue13 and Claude 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
layue13 and Claude 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
layue13 and Claude 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
layue13 and Claude 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
layue13 and Claude 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
layue13 and Claude 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
layue13 and Claude 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
layue13 and Claude 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
layue13 and Claude 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
layue13 and Claude 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