diff options
| author | Sho Sakuma <me@m1sk9.dev> | 2026-08-05 20:56:07 +0900 |
|---|---|---|
| committer | Sho Sakuma <me@m1sk9.dev> | 2026-08-05 20:56:07 +0900 |
| commit | 54c369939455bcfd7b66faa9d0a18aff901c05b0 (patch) | |
| tree | 66d615f6ca0b7a4bc5885cce59651d02baf9def1 /website/src | |
| parent | 1a7b6ec2586db0663f09924721db71f3f2e1eadc (diff) | |
| download | LunaticChat-54c369939455bcfd7b66faa9d0a18aff901c05b0.tar.gz LunaticChat-54c369939455bcfd7b66faa9d0a18aff901c05b0.tar.bz2 LunaticChat-54c369939455bcfd7b66faa9d0a18aff901c05b0.zip | |
feat: warn where a pair connects but falls short of a feature
The matrix marked every accepted pair with a plain tick, which reads as
"everything works". It does not. ProtocolVersion bumps PATCH for sub-channels a
peer can safely ignore, so Paper 1.3.0 (protocol 1.0.1) against Velocity 1.1.0
(1.0.0) completes the handshake and then silently drops cross-server direct
messages — the very feature that PATCH was bumped for. An operator reading the
tick had no way to learn that, and the pages around it repeated the claim.
The handshake is settled by MAJOR and MINOR alone, so any difference left once a
pair is accepted is a feature the newer end offers and the older will never
answer. Those pairs now carry a warning that says which end lags. Naming the
feature would take a protocol-version-to-feature table on the website, which
would drift from the protocol it describes, so the warning stays general and
leaves the reader one hop from the compatibility page.
The handshake verdict keeps the three checks that mirror Velocity's gate, with
the new one layered after them, so the mirror stays honest. isCompatible now
holds for a degraded pair, which does connect.
Cells are built once per pair in a computed instead of recomputing on each of the
template's reads, which a third state would otherwise have multiplied.
Co-Authored-By: Claude <noreply@anthropic.com>
Diffstat (limited to 'website/src')
| -rw-r--r-- | website/src/docs/reference/compatibility.md | 4 | ||||
| -rw-r--r-- | website/src/ja/docs/reference/compatibility.md | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/website/src/docs/reference/compatibility.md b/website/src/docs/reference/compatibility.md index 23274ab..2adcea6 100644 --- a/website/src/docs/reference/compatibility.md +++ b/website/src/docs/reference/compatibility.md @@ -18,7 +18,7 @@ The **plugin version** (e.g., Paper v1.2.0) and the **protocol version** (e.g., ## Compatibility Matrix -Each cell indicates whether the corresponding Paper × Velocity combination can connect. Data is fetched from GitHub Releases automatically. +Each cell indicates how far the corresponding Paper × Velocity combination works: ✓ where every feature is available, ⚠ where the pair connects but the older side cannot answer what the newer one adds, and ✗ where the handshake is rejected. Data is fetched from GitHub Releases automatically. <CompatibilityMatrix /> @@ -42,7 +42,7 @@ The rules (from Velocity's perspective) are: | Level | Example Change | Compatibility | Deployment Order | |-------|---------------|---------------|------------------| -| **PATCH** (1.0.0 → 1.0.1) | Adding optional fields, new sub-channels | Fully compatible (safe with `ignoreUnknownKeys=true`) | Any order, anytime | +| **PATCH** (1.0.0 → 1.0.1) | Adding optional fields, new sub-channels | Connects (safe with `ignoreUnknownKeys=true`), but the older peer ignores the new sub-channel, so the feature behind it stays unavailable | Any order, anytime | | **MINOR** (1.0.x → 1.1.0) | Adding required fields, changing existing sub-channel semantics | Backward compatible within `MIN_SUPPORTED_MINOR` range | **Update Velocity first** → then update each Paper server | | **MAJOR** (1.x.x → 2.0.0) | Wire format changes, removing/renaming sub-channels | Incompatible | **Simultaneous deployment of all servers** | diff --git a/website/src/ja/docs/reference/compatibility.md b/website/src/ja/docs/reference/compatibility.md index 781dbf6..4416a26 100644 --- a/website/src/ja/docs/reference/compatibility.md +++ b/website/src/ja/docs/reference/compatibility.md @@ -18,7 +18,7 @@ LunaticChat の Paper プラグインと Velocity プラグインは独立にバ ## 互換性マトリクス -各セルは「その Paper × Velocity の組み合わせが接続できるか」を示します.データは GitHub Releases から自動取得されます. +各セルは「その Paper × Velocity の組み合わせがどこまで動作するか」を示します.✓ は全機能が利用可能,⚠ は接続できるが新しい側が追加した機能に古い側が応答できない,✗ はハンドシェイクで拒否されます.データは GitHub Releases から自動取得されます. <CompatibilityMatrix /> @@ -42,7 +42,7 @@ Paper / Velocity 間の通信は LunaticChat 独自のプラグインメッセ | レベル | 変更例 | 互換性 | デプロイ順序 | |--------|--------|--------|-------------| -| **PATCH** (1.0.0 → 1.0.1) | optional フィールド追加,新 sub-channel 追加 | 完全互換 (`ignoreUnknownKeys=true` で安全) | 順不同,いつでも | +| **PATCH** (1.0.0 → 1.0.1) | optional フィールド追加,新 sub-channel 追加 | 接続可能 (`ignoreUnknownKeys=true` で安全).ただし古い側は新 sub-channel を無視するため,その機能は利用できない | 順不同,いつでも | | **MINOR** (1.0.x → 1.1.0) | required フィールド追加,既存 sub-channel のセマンティクス変更 | `MIN_SUPPORTED_MINOR` の範囲内で後方互換 | **Velocity を先に更新** → 各 Paper を順次更新 | | **MAJOR** (1.x.x → 2.0.0) | ワイヤフォーマット変更,sub-channel 削除/リネーム | 非互換 | **全サーバー同時デプロイ** | |
