summaryrefslogtreecommitdiff
path: root/website/src/changelog
diff options
context:
space:
mode:
Diffstat (limited to 'website/src/changelog')
-rw-r--r--website/src/changelog/overview.md53
-rw-r--r--website/src/changelog/paper/v1.3.0.md60
-rw-r--r--website/src/changelog/velocity/v1.2.0.md23
3 files changed, 136 insertions, 0 deletions
diff --git a/website/src/changelog/overview.md b/website/src/changelog/overview.md
new file mode 100644
index 0000000..b0e4a97
--- /dev/null
+++ b/website/src/changelog/overview.md
@@ -0,0 +1,53 @@
+---
+layout: doc
+---
+
+# Changelog
+
+The release history of LunaticChat.
+
+## Versioning
+
+::: tip
+
+For the details of independent versioning in LunaticChat, see [Build, Release & Versioning](/docs/developers/resource).
+
+:::
+
+LunaticChat follows semantic versioning. A version number consists of the three numbers `MAJOR.MINOR.PATCH`, each raised on the following basis.
+
+| Position | Raised when | Example |
+|----------|-------------|---------|
+| **MAJOR** | Used for the move from the pre-release (v0) line to the first stable release. It has not been raised since entering the stable line | `v0.11.0` → `v1.0.0` |
+| **MINOR** | A feature is added or changed, and **when a supported platform is dropped** | `v1.2.2` → `v1.3.0` (cross-server DM added, Paper 26.1 dropped) |
+| **PATCH** | Bug fixes and dependency updates only. No functional changes | `v1.2.0` → `v1.2.1` (dependency updates only) |
+
+::: warning Dropping support is done in a MINOR bump
+
+Cutting a runtime environment loose — "support for Paper 26.1 has ended", "support for Velocity 3.5.x has ended" — **is done in a MINOR bump**. MAJOR is not raised for it, so there can be combinations that stop working across nothing more than a minor version update. Check the changelog for the target version before updating.
+
+:::
+
+### The Paper and Velocity builds have separate version numbers
+
+The plugin for Paper / Folia and the plugin for Velocity are released independently, so their version numbers advance separately. Numbers that do not line up are the normal state of affairs.
+
+Releases are cut with a tag naming the target.
+
+| Tag | Released target |
+|-----|-----------------|
+| `paper/vX.Y.Z` | The Paper / Folia build only |
+| `velocity/vX.Y.Z` | The Velocity build only |
+| `vX.Y.Z` | Both at once, for a change that affects them both — such as one in the shared `engine` module |
+
+### The plugin version does not express compatibility
+
+Whether a Paper build and a Velocity build can talk to each other is decided by the **protocol version** embedded in both, not by the plugin version. Builds with distant version numbers may be combinable, and conversely builds with adjacent numbers may not be.
+
+For details, see [Paper / Velocity Compatibility](/docs/reference/compatibility).
+
+### Supported versions
+
+Only **the latest release of each platform** is supported. Fixes are not backported to older versions unless it is unavoidable.
+
+Nightly builds are generated automatically from in-development commits. They are not formal releases and are therefore not supported. When a nightly build is in use, a warning is shown on join and when `/lc status` is run.
diff --git a/website/src/changelog/paper/v1.3.0.md b/website/src/changelog/paper/v1.3.0.md
new file mode 100644
index 0000000..599a59a
--- /dev/null
+++ b/website/src/changelog/paper/v1.3.0.md
@@ -0,0 +1,60 @@
+---
+layout: doc
+---
+
+# v1.3.0
+
+- Download:
+ - [GitHub](https://github.com/m1sk9/LunaticChat/releases/tag/paper/v1.3.0)
+ - [Modrinth](https://modrinth.com/plugin/lunaticchat/version/1.3.0)
+
+## New Features
+
+- Added support for Paper 26.2 (Minecraft 26.2)
+ - Support for Paper 26.1 has ended at the same time.
+ - Paper 26.2 bundles Adventure 5.2.0, which is not binary compatible with 26.1.
+ - Builds from v1.3.0 onward therefore no longer run on Paper 26.1.
+- `/tell <player>@<server>` can now message a player on a server connected through Velocity
+ - Disabled by default.
+ - Enable it with `features.velocityIntegration.crossServerDirectMessage`.
+- Raised the protocol version to `1.0.1`.
+ - Paper and Velocity can be updated in either order.
+ - Cross-server direct messages do, however, require both sides to be updated.
+
+## Improvements
+
+- A failed player data save no longer aborts the remaining shutdown steps, so channel logs and the Velocity connection are always closed.
+- File persistence has been consolidated behind a single storage layer.
+ - As a result, a crash or a concurrent save can no longer leave a file in a half-written state.
+- Each player's messages are now delivered in the order they were sent.
+ - Work still queued when a player disconnects is discarded rather than delivered to a player who has already logged out.
+- Direct message delivery and channel message logging no longer run on the tick thread.
+- Cached romaji conversion results no longer wait for a permit from the shared API concurrency limiter.
+ - Previously, even a message whose every word was already cached could exhaust its conversion budget waiting for a permit it did not need, and be sent unconverted.
+- The words in a message are now converted concurrently.
+- Player settings are only rewritten when something has changed.
+ - Previously, every player quit re-serialized every player stored in the file, even when the bytes were identical.
+- When a player quits without an active channel, clearing their active channel no longer takes a snapshot of the channel caches.
+ - Previously, a mass disconnect produced one full snapshot per disconnecting player within a single tick.
+- Spy notification for direct messages and channel messages no longer builds its translation lookup and member set when no recipient is online.
+- Channel data writes are now batched instead of rewriting the whole file on every change.
+- Performed internal cleanup.
+
+## Changes
+
+- `config.yml` is now read with KAML, which changes how a broken file is treated.
+ - An unreadable configuration file no longer disables the plugin; it starts on its default settings instead.
+ - When a single value cannot be read, the other settings in the file are no longer all discarded: only that value falls back to its default, with a warning.
+- Per-player delivery queues are now bounded.
+ - A player who sends faster than delivery drains is refused with a warning, rather than building an unbounded backlog that arrives all at once minutes later.
+
+## Bug Fixes
+
+- Fixed the player argument of `/tell` matching partially
+ - This came from the switch away from the old Bukkit API.
+- Fixed `features.channelChat.messageLogging` never actually being read and falling back to its default values
+ - The loading was never implemented despite being documented, so it stayed at its defaults regardless of what the file said.
+- Fixed a slow Google IME reply silently stopping every subsequent message delivery for that player's session
+- Fixed a single conversion timeout permanently pinning a word to its hiragana form
+- Fixed `/reply` not recognizing a reply target that had just been recorded
+- Fixed reply target entries that had already been cleared on disconnect being recorded again
diff --git a/website/src/changelog/velocity/v1.2.0.md b/website/src/changelog/velocity/v1.2.0.md
new file mode 100644
index 0000000..272fb50
--- /dev/null
+++ b/website/src/changelog/velocity/v1.2.0.md
@@ -0,0 +1,23 @@
+---
+layout: doc
+---
+
+# v1.2.0
+
+- Download:
+ - [GitHub](https://github.com/m1sk9/LunaticChat/releases/tag/velocity/v1.2.0)
+ - [Modrinth (Velocity)](https://modrinth.com/plugin/lunaticchat/version/1.2.0-velocity)
+
+## New Features
+
+- Added support for Velocity 4.0.0
+ - Support for the Velocity 3.5.x line has ended.
+- Added cross-server direct message relay and player presence tracking.
+- Raised the protocol version to `1.0.1`.
+ - Paper and Velocity can be updated in either order.
+ - Cross-server direct messages do, however, require both sides to be updated.
+
+## Improvements
+
+- The Velocity JAR shrank from about 8.2 MiB to about 2.6 MiB.
+ - Paper-only dependencies (Ktor and the romaji conversion module) were separated out of the shared module and are no longer bundled into the Velocity build.