Skip to content

Commit fafd8bf

Browse files
committed
docs: rewrite changelog as release notes for v3.3.2
1 parent d7f43a1 commit fafd8bf

1 file changed

Lines changed: 23 additions & 49 deletions

File tree

CHANGELOG.md

Lines changed: 23 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,74 +1,48 @@
1-
this update is the big architecture and API release. the entire codebase was modernized to java 21,
2-
a public developer API module was added, security was hardened, and the test suite was rebuilt from scratch.
1+
this update adds a public developer API for third-party plugins, hardens auth security,
2+
and fixes a bunch of stability issues across the board.
33

44
so whats new:
55

66
**developer API**
77

8-
- added `api` module with a full public developer API for third-party plugins
9-
- typed message channels with target builder pattern, send, request, broadcast, and listen
10-
- delivery conditions on senders: `requirePlayer(UUID)` and `whenOnline(UUID)` for conditional and queued delivery
11-
- `whenOnline` queue with player join and disconnect lifecycle wiring on the proxy
12-
- server connect/disconnect event subscriptions via `onServerConnected` and `onServerDisconnected`
13-
- connection state tracking via `onConnectionStateChanged`, available on all platforms
8+
- new `api` module for third-party plugin integration, available on maven central
9+
- typed message channels via `CommandBridgeAPI.channel(Class)` with send, request, broadcast, and listen
10+
- delivery conditions on senders: `requirePlayer(UUID)` to gate on player presence, `whenOnline(UUID)` to queue until the player connects
11+
- server lifecycle events via `onServerConnected` and `onServerDisconnected` (proxy only)
12+
- connection state tracking via `onConnectionStateChanged` (all platforms)
1413
- player locator service for resolving which server a player is on (proxy only)
15-
- `CommandBridgeProvider.get()` and `CommandBridgeProvider.get(Class)` for obtaining the API instance
14+
- `CommandBridgeProvider.get()` and `CommandBridgeProvider.get(Class)` to obtain the API instance
1615
- proxy-only methods return `Optional<Subscription>` instead of raw `Subscription`, returning `Optional.empty()` on backends
17-
- comprehensive JDK-style JavaDocs across all 13 API source files with `@param`, `@return`, `@throws`, and cross-references
18-
- each type's JavaDoc examples are scoped to its own responsibility, no tutorial-style chains leaking into other types
19-
- maven central publishing configuration
16+
- full JDK-style JavaDocs across all API types
2017

2118
**security**
2219

2320
- hardened auth flow with constant-time HMAC comparison to prevent timing attacks
24-
- fixed `AUTH_OK` race condition where the server could send messages before the client processed auth success
21+
- fixed `AUTH_OK` race condition where messages could be sent before the client processed auth success
2522
- added reconnect on failed server proof verification
26-
- removed wildcard permission grant in operator execution, only grants explicit permissions now
27-
- fixed concurrency issues in `CommandBridgeProvider`, `RateLimiter`, `InNode`, and `OutNode`
23+
- operator execution no longer grants wildcard permissions, only explicit ones
2824

2925
**fixes**
3026

31-
- fixed thread-safe script reload and session replacement notifications
32-
- fixed player join events firing for already-tracked players
33-
- fixed `WsEndpoint` send completion callback not propagating properly
34-
- fixed `ResponseAwaiter` to use UUID directly instead of string conversion
3527
- fixed cooldown being applied before dispatch instead of after
3628
- fixed MiniMessage tags in error messages not being escaped
37-
- fixed `PlaceholderStage` being recreated on every dispatch instead of reused
29+
- fixed script reload not being thread-safe
30+
- fixed player join events firing for already-tracked players
3831
- fixed polling not being reset on shutdown
39-
- fixed `serverId` overwrite guard missing in registration handler
40-
- fixed auth check missing on reload
32+
- fixed auth check missing on config reload
4133
- fixed `Log` varargs handling for single-argument messages
42-
- fixed `UserCache` creating its own `ObjectMapper` instead of using `Envelope.MAPPER`
43-
- fixed `FoliaExecutor` duplicating logic from `PlatformExecutor`
44-
- fixed `RunAs.OPERATOR` resolution inconsistency across platform executors
45-
- fixed null guards missing in merge processor, command dispatcher, registration request, and player tracker
4634
- fixed config name not being passed to `ConfigManager` in the velocity backend adapter
47-
- left-aligned all Minecraft chat UI output and removed pixel-width centering
48-
49-
**refactoring**
50-
51-
- modernized entire codebase to java 21 idioms: records, sealed interfaces, pattern matching, switch expressions, `var`, `List.of()`, `Map.of()`
52-
- improved type safety across `OutNode`, `InNode`, and handler registration
53-
- redesigned public API from wrapper types to target builder pattern on `MessageChannel`
54-
- removed internal `RunAs` and `ConnectionState` duplicates in favor of the API types
55-
- deduplicated `FoliaExecutor` to inherit from `PlatformExecutor`
56-
- renamed `VelocityExecutor` to `LocalDispatcher` for clarity
57-
- extracted `ScheduleHandle` abstraction for platform adapters
58-
- added debug observability improvements throughout dispatch pipeline
35+
- fixed operator permission resolution being inconsistent across platform executors
36+
- left-aligned all chat UI output and removed pixel-width centering
37+
- various null guard and stability improvements across dispatch, registration, and player tracking
5938

60-
**testing**
39+
**internals**
6140

62-
- deleted all existing AI-generated test files (22 files, ~233 methods)
63-
- rebuilt test suite from scratch with 136 tests across core (84), velocity (40), and backends (12)
64-
- added shared test fixtures: `TestEndpoint` and `ScriptFixtures`
65-
- covers: `AuthService`, `RateLimiter`, `CooldownManager`, `PlayerTracker`, `SessionHub`, `ConfigManager`, `SecretLoader`, `ResponseAwaiter`, `ProblemSink`, `PlaceholderExtractor`, `EnumAdapter`, `DurationAdapter`, validation processors, pipeline stages, command dispatcher, platform detection, and more
66-
- added `test.yml` CI workflow
67-
- added `TESTING.md` documentation
41+
- modernized codebase to java 21 idioms
42+
- rebuilt test suite from scratch with 136 tests across core, velocity, and backends
43+
- added CI test workflow and testing documentation
6844

6945
breaking changes:
70-
- the public API module is new and the channel/event interfaces may still evolve
71-
- internal `RunAs` and `ConnectionState` enums were removed, use the API types instead
72-
- `VelocityExecutor` was renamed to `LocalDispatcher`
46+
- `RunAs` and `ConnectionState` moved to the `api` package, internal duplicates removed
7347

74-
latest commit: ad03680
48+
latest commit: d7f43a1

0 commit comments

Comments
 (0)