summaryrefslogtreecommitdiff
path: root/website/src/docs/features
AgeCommit message (Collapse)Author
2026-10-11feat(conversion): run anthy in-process through WebAssemblyCharlie Root
Add a second engine for romaji-to-Japanese conversion that leaves the process alone: anthy, compiled to a WebAssembly module and executed in the JVM by Chicory's build-time AOT, so conversion needs no outbound request. anthy/ carries the module sources, the WASI shims, the reproducible build script, the committed AOT output and the dictionary (~23 MB, extracted into the plugin data folder on first start; an existing file is left alone). features.japaneseConversion.engine selects "google" or "anthy", and the anthy block adds dictionary, workDirectory and sentenceLevel. RomanjiConverter now sits on a KanjiConverter interface, so a whole message is handed to the engine at once - anthy segments and reorders a sentence instead of converting word by word - and the conversion cache is keyed by that sentence. The engine tests drive the real module, the dictionary tests cover the extraction, and everything else keeps running on the existing fakes.
2026-08-31Merge pull request #297 from m1sk9/feat/release-v1.4.0Sho Sakuma
feat: Release LunaticChat v1.4.0
2026-08-30docs: Add v1.4.0 docSho Sakuma
2026-08-30fix(build): give nightly builds a version of their ownSho Sakuma
A nightly JAR was named after the bare release version, so a build from main and the release of the same base version were indistinguishable in the JAR file name, /plugins and bug reports; only build-info.properties knew the difference, and Velocity does not even ship that file. The x script tried to express this with -Pversion, but each module assigns its own version from paperVersion/velocityVersion, so the override never took effect. Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-10feat(paper): report /lc reload as a single-line resultSho Sakuma
The reply listed every setting that had moved and every setting that still needed a restart, as dotted keys. That buried the one bit that changes what the operator does next - whether they have to restart - under names they had just typed themselves and did not need read back to them. The detail is not lost: which settings moved was already written to the server log on every reload, which is the better home for it anyway, since a format change can be dated there long after the chat line has scrolled away. A pending restart now outranks "nothing changed" even when nothing could be applied. Reporting no change to someone who did edit the file would send them hunting for a typo they had not made. The failure path still names each unreadable setting and the reason it was rejected, because that is a list the operator cannot reconstruct and needs in order to fix the file.
2026-08-10feat(paper): add /lc reload to apply message formats without a restartSho Sakuma
Changing a message format meant taking the server down, because config.yml was read once in onEnable and every consumer held the value it was built with. Operators tune these formats far more often than anything else in the file, and a restart is a disproportionate price for a colour code. Only messageFormat is applied. The rest of config.yml settles things once, at startup - which services exist, which commands and listeners are registered, which files are opened - and none of that can be redone while the server runs: Paper registers commands only through its COMMANDS lifecycle event, Bukkit cannot unregister a listener, and the conversion cache saver keeps no task handle to cancel. Rebuilding the services would leave the old ones still wired up, so a changed setting the server cannot pick up is reported back as needing a restart rather than silently ignored. MessageFormatHolder is deliberately narrower than LunaticChatConfiguration: taking it says the value is live, taking the configuration says it was frozen at startup. A holder over the whole tree would hold a configuration matching no version of the file, since only messageFormat is ever swapped. Reload reads config.yml more strictly than startup does, because it has an option startup does not - leaving the running configuration alone. Startup falls a single unreadable setting back to its default so the server can come up; reload refuses the file, names every unreadable setting at once, and keeps what the server already had. A document holding no settings is refused for the same reason: it cannot be told apart from a config.yml caught halfway through being written, and resetting every format over that is worse than doing nothing. Closes #266 Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-05docs: name both plugin versions for cross-server direct messagesSho Sakuma
The badge read `v1.3.0~`, pointing at a Velocity release that does not exist. The feature needs both halves, and the Velocity half first shipped as 1.2.0 inside the unified v1.3.0 release, so a reader hunting for Velocity v1.3.0 finds nothing and cannot tell which proxy build carries the relay. Also refreshes the gradle.properties example, which still showed the versions current when it was written. Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-05docs: correct the cross-server DM server name and two related claimsSho Sakuma
The `@<server>` argument resolves against the server names registered in `velocity.toml`, not the `features.velocityIntegration.serverName` of the destination: PresenceTracker publishes `serverInfo.name` and CrossServerDirectMessageRelay matches the target against the same, so the previous text had it exactly backwards. Following it on a proxy where the two names differ produces SERVER_NOT_FOUND every time, and points the reader at the wrong file to fix. `serverName` still matters, for `{server}` and for recognising local players, so what it does is stated instead. Also corrects two claims made while widening these pages: - `/lcv status` reports only this server's protocol version, not both sides'. The Velocity bug template leaned on it as its most important field, so a reporter would have pasted output that cannot answer the compatibility question. It now also says to run it after a player has joined, since the handshake waits for one - the same caveat the README install steps needed. - Spies see pre-conversion text for direct messages only. Channel messages are converted before the handler runs, so spies get the same formatted string the members do. Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-05docs: correct the website where it had drifted from the implementationSho Sakuma
Several statements were wrong rather than merely thin, and each would have set the wrong expectation: - the conversion example implied romaji replaces the input, when the result is appended in parentheses and both are sent - the handshake was described as happening at startup, when it waits for the first player to join, so a DISCONNECTED status on an empty server read as a fault - cache eviction was called oldest-first, which the unordered in-memory map cannot provide - the Velocity settings table omitted crossServerDirectMessage - ConfigManager was described as reading Bukkit's FileConfiguration, and the settings storage as recovering from a backup that does not exist It also documents behaviour that had no mention anywhere: the `!` force-global prefix, that spy sees channel messages and not only DMs, the nightly build warnings, the overall 1000ms conversion budget that makes api.timeout above it ineffective, and the data files the plugin writes. Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-05docs: drop api.retryAttempts, which no longer existsSho Sakuma
The key is gone from config.yml, but four pages still documented it with a default of 2, so operators would keep setting something nothing reads. Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-19docs: add developer design/architecture guide (EN/JA) (#251)Sho Sakuma
* docs: add developer design/architecture guide (EN/JA) The docs site covered features and reference but had no entry point for the codebase's design. Add a Developer Guide section describing the module structure (engine shared kernel, platform-paper, platform-velocity), the protocol-version compatibility model, and the Service Container / Feature Gating pattern, so contributors can understand the architecture without reading the source first. Co-Authored-By: Claude <noreply@anthropic.com> * docs: mirror cross-server DM docs into English (#231) PR #231 added the cross-server direct messaging feature but updated only the Japanese docs. Port the same additions to the English pages (configuration, direct-message, velocity, commands) so both locales stay in sync. Co-Authored-By: Claude <noreply@anthropic.com> * style: apply biome formatting to ja.ts sidebar config The developer-guide sidebar entries were not biome-formatted, failing the build_docs CI check (format:check). Apply the formatter. Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
2026-06-12docs(website): make English the default localeSho Sakuma
Swap the website default locale from Japanese to English. English now lives at the site root (/), and Japanese moves under /ja/. Update locale config, nav/sidebar links, internal doc links, and asset relative paths accordingly. Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-06docs: clarify paper/velocity compatibilitySho Sakuma
Add a dynamic compatibility matrix (GitHub Releases + ProtocolVersion.kt at each tag) shown on the home page, download page, and a new reference doc. Split protocol theory and rolling-update rules out of the Velocity feature guide into the new compatibility reference, and simplify the download notice. Also set explicit GitHub release titles in the Paper / Velocity workflows so the awkward paper/v* tag prefix is not the user-facing label. Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-05docs(website): add v1 documentation pages and fix dark themeSho Sakuma
Add 12 documentation pages covering configuration, permissions, features (DM, channel chat, romaji conversion, Velocity integration, message logging, admin), and reference (commands, message format, player settings). Restructure sidebar for new docs layout. Fix dark theme rendering caused by :global(.dark) in DownloadCard.vue applying filter:invert(1) to html element. Fix download button colors for dark mode. Add protocol version compatibility notice to download page. Move favicon.ico to correct public directory. Co-Authored-By: Claude <noreply@anthropic.com>