summaryrefslogtreecommitdiff
path: root/website/src/en/docs
diff options
context:
space:
mode:
authorSho Sakuma <me@m1sk9.dev>2026-06-01 13:58:03 +0900
committerSho Sakuma <me@m1sk9.dev>2026-06-01 13:58:03 +0900
commit04ab6c92a6849e3d2af7439c2f0092324bc8889b (patch)
tree1c82b390468e2baea38456dad459ae8807e53bfa /website/src/en/docs
parent8b7ce2853aeca22b6eff61e3faac6fb8671aa17b (diff)
downloadLunaticChat-04ab6c92a6849e3d2af7439c2f0092324bc8889b.tar.gz
LunaticChat-04ab6c92a6849e3d2af7439c2f0092324bc8889b.tar.bz2
LunaticChat-04ab6c92a6849e3d2af7439c2f0092324bc8889b.zip
docs(compatibility): clarify protocol version validation is Velocity-only
Update the compatibility matrix logic and documentation to reflect the actual implementation: only Velocity performs the handshake validation, not Paper. - Remove velocity-too-new and velocity-too-old from CompatibilityResult - Simplify checkCompatibility() to check only if Velocity accepts Paper - Update reason labels to clarify direction (Paper vs Velocity perspective) - Add note distinguishing plugin version from protocol version - Clarify Velocity-only validation in the protocol section - Rewrite compatibility rules from Velocity's perspective Paper only sends the handshake; it does not validate Velocity's version. This aligns documentation with the actual behavior in platform-velocity/.../PluginMessageHandler.kt. Co-Authored-By: Claude <noreply@anthropic.com>
Diffstat (limited to 'website/src/en/docs')
-rw-r--r--website/src/en/docs/reference/compatibility.md20
1 files changed, 14 insertions, 6 deletions
diff --git a/website/src/en/docs/reference/compatibility.md b/website/src/en/docs/reference/compatibility.md
index a2b1e8f..ac7002d 100644
--- a/website/src/en/docs/reference/compatibility.md
+++ b/website/src/en/docs/reference/compatibility.md
@@ -6,6 +6,10 @@ layout: doc
The Paper and Velocity plugins of LunaticChat are versioned independently. Whether a given combination works is determined by the **protocol version** embedded in each plugin.
+::: warning Plugin version ≠ protocol version
+The **plugin version** (e.g., Paper v1.2.0) and the **protocol version** (e.g., 1.0.0) are different things. New plugin releases do not necessarily change the protocol — and only the protocol version determines compatibility.
+:::
+
## TL;DR
- **The latest Paper and the latest Velocity are always compatible.** When in doubt, use the latest of both.
@@ -20,15 +24,19 @@ Each cell indicates whether the corresponding Paper × Velocity combination can
## What Is a Protocol Version?
-Paper and Velocity communicate via a LunaticChat-specific plugin messaging protocol. The protocol carries a semantic version (`MAJOR.MINOR.PATCH`), and a handshake at connection time validates both sides.
+Paper and Velocity communicate via a LunaticChat-specific plugin messaging protocol. The protocol carries a semantic version (`MAJOR.MINOR.PATCH`), and at connection time Velocity validates the protocol version sent by Paper.
+
+::: tip Velocity is the only side that checks
+Only Velocity performs the compatibility check. Paper just sends a handshake — it does not validate Velocity's version. So the question reduces to: "Does Velocity accept Paper's protocol version?"
+:::
-The rules are:
+The rules (from Velocity's perspective) are:
- **MAJOR** must match exactly
-- The remote **MINOR** must be at least `MIN_SUPPORTED_MINOR` and at most the local `MINOR`
+- Paper's **MINOR** must be at least Velocity's `MIN_SUPPORTED_MINOR` and at most Velocity's `MINOR`
- **PATCH** does not affect compatibility
-`MIN_SUPPORTED_MINOR` controls how far back the local plugin accepts older peers, providing a grace window during rolling updates.
+`MIN_SUPPORTED_MINOR` controls how far back Velocity accepts older Paper peers, providing a grace window during rolling updates.
### Version Bump Rules
@@ -50,8 +58,8 @@ The rules are:
Compatibility is checked at connection time:
1. The Paper server sends a handshake to Velocity at startup
-2. Velocity validates the protocol version against its own
-3. On mismatch, the connection is rejected and the state becomes `FAILED`
+2. Velocity validates Paper's protocol version against its own
+3. On mismatch, Velocity rejects the connection and Paper's state becomes `FAILED`
4. The handshake timeout is 5 seconds
Live connection state is available via `/lcv status`. See [Velocity Integration](/en/docs/features/velocity#connection-states) for details.