summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
8 daysdocs: name the anthy engine in the project descriptionHEADmainCharlie Root
The tagline and both plugin descriptors now say that romaji conversion can run inside the server through anthy, so the engine is visible wherever the project describes itself: the README, the website hero and meta description, the API documentation, and the Paper and Velocity plugin descriptors.
8 daysfeat(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.
9 dayschore(deps): update dependency bun to v1.4.3 (#328)renovate[bot]
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
9 daysfix(deps): update dependency io.papermc.paper:paper-api to ↵renovate[bot]
v26.2.build.133-stable (#327) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
10 daysfix(deps): update kotlin monorepo to v2.4.21 (#326)renovate[bot]
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
11 dayschore(deps): update plugin org.jetbrains.kotlin.jvm to v2.4.21 (#325)renovate[bot]
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
11 dayschore(deps): update gradle to v9.8.1 (#324)renovate[bot]
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
12 daysfix(deps): update dependency io.papermc.paper:paper-api to ↵renovate[bot]
v26.2.build.132-stable (#323) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
13 daysfix(deps): update dependency io.papermc.paper:paper-api to ↵renovate[bot]
v26.2.build.130-stable (#322) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-01chore(deps): update dependency @biomejs/biome to v2.5.15 (#321)renovate[bot]
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-29Merge pull request #320 from m1sk9/docs/release-v1.5.0Sho Sakuma
Prepare Paper v1.5.0 and Velocity v1.3.1 releases
2026-09-28docs(changelog): add release notes for paper v1.5.0 and velocity v1.3.1Sho Sakuma
The GitHub Release and the Modrinth version both link to these pages, so they have to be deployed before the tags are pushed. Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-28chore: bump paper to 1.5.0 and velocity to 1.3.1Sho Sakuma
Paper gains new messageFormat placeholders, so it takes a minor bump. The Velocity side only relays the sender's world on an existing message, under a PATCH protocol bump, so it stays a patch release. Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-28Merge pull request #319 from m1sk9/feat/add-more-placeholderSho Sakuma
Add `{world}`, `{display_name}`, `{channel_id}` and `{role}` placeholders to chat formats
2026-09-28docs: describe the v1.5.0 placeholder changes and Velocity v1.3.1Sho Sakuma
The changelog still said {world} was always empty for direct messages from another server. Velocity needs a release to pass the new field on, so it gets its own heading under v1.5.0. Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-28feat: carry the sender's world in cross-server direct messagesSho Sakuma
{world} rendered empty for a direct message from another server, which left formats like "({world})" showing a bare pair of brackets. The relay now carries the sender's world as an optional field, so this is a PATCH bump (protocol 1.0.2) and either side can be updated first; an older sender or proxy still yields an empty value. The world is read once per message, so the sender, the spies and the relayed copy can no longer disagree if the sender changes worlds mid-way. Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-28fix(paper): splice display names as components and share role labelsSho Sakuma
Serializing the display name into the legacy text let its color run into everything after it, and legacy text cannot hold hex colors or hover and click events, so names styled by other plugins came out wrong. The name is now spliced into the parsed component instead. {role} is resolved only when the format uses it, since the default formats do not and it costs a member scan and a lookup per message. /lc channel status now shows the same localized role names instead of a second, hard-coded [OWNER] / [MOD] vocabulary that only one of the two places translated. Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-28docs: record the new chat placeholders under v1.5.0Sho Sakuma
New placeholders are a feature, so the next Paper release becomes a minor one. The unreleased v1.4.1 heading is renamed rather than kept alongside, since that patch release will not ship on its own. Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-28feat(paper): add world, display_name, channel_id and role chat placeholdersSho Sakuma
Operators asked for more of the sender's context in chat formats than the name alone. {world} covers direct messages and channel chat; the channel details and the sender's display name and role only exist for channel chat, so only that format accepts them. A direct message from another server renders {world} empty: the relay does not carry the sender's world, and adding it would need a protocol bump and a coordinated Velocity release for one placeholder. The renderer now accepts underscores so the snake_case names match as written. Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-28Merge remote-tracking branch 'origin/main' into feat/add-more-placeholderSho Sakuma
2026-09-28Merge pull request #318 from m1sk9/feat/start-preview-serverSho Sakuma
Add a start-preview-server skill for reaching debug servers from another machine
2026-09-28feat(claude): add start-preview-server skillSho Sakuma
Trying a build from another machine, typically the Windows Minecraft client, meant starting ./x, then working out by hand which address the Colima port forward is reachable on and whether the firewall lets it through. The skill does that and reports LAN and Tailscale addresses, and warns that the offline-mode server and RCON are open to anyone on that network. Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-28refactor(paper): render chat formats through one placeholder vocabularySho Sakuma
Placeholder names were spelled as string literals in three handlers, and each handler also chose its own way of turning the result into a Component. Adding a placeholder meant finding every call site by hand, with nothing to catch a format left without its value. ChatPlaceholder now owns the names, and each format has an entry point whose parameters are exactly the placeholders it accepts, so the compiler points at the callers when one is added. Substitution happens in a single pass, so a value that itself contains "{message}" is no longer replaced again by the next placeholder. All three formats now deserialize section signs into styles, which leaves what players see unchanged. Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-28Merge pull request #317 from m1sk9/ci/release-tag-schemeSho Sakuma
Tag each release with exactly one platform (Paper: vX.Y.Z, Velocity: velocity/vX.Y.Z)
2026-09-28docs: record the tag scheme change and the update checker fix in CHANGELOGSho Sakuma
The fix is a bug fix only, so it goes under a v1.4.1 heading. The tag scheme notes now say "up to v1.4.0" instead of naming v1.5.0, because the next Paper release is a patch and the boundary would otherwise point at a version that may never ship. Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-28feat(claude): add release-lc, create-release-note, test-integration and ↵Sho Sakuma
correction-docs skills release-lc replaces the release skill and carries a release through to a published GitHub Release, a listed Modrinth version and live release notes, since a pushed tag alone left drafts and broken links unnoticed. The other skills cover the steps around it: writing the site release notes from CHANGELOG.md, checking that the Paper and Velocity builds of the current tree still handshake, and auditing the docs site against the source. Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-28ci: tag each release with exactly one platformSho Sakuma
A vX.Y.Z tag used to ship both JARs under the Paper version number, so the Velocity version never appeared in a tag. Changelog download links guessed paper/ and velocity/ tags that did not exist and returned 404, and the same JAR resurfaced under several releases. Paper now releases on vX.Y.Z and Velocity on velocity/vX.Y.Z, which matches the CHANGELOG.md headings one to one. Paper keeps the bare form rather than moving to paper/vX.Y.Z because the update checker in already-deployed Paper builds only understands that form. Both workflows call a shared reusable workflow, since the two had drifted into near-identical copies. Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-28fix(paper): find the newest Paper release instead of trusting releases/latestSho Sakuma
The update checker read releases/latest and stripped a leading "v", so any release whose tag was not a bare vX.Y.Z (paper/v1.2.x, or a Velocity release published last) parsed as 0.x and no update was ever reported. It now lists recent releases and picks the highest Paper tag, skipping drafts, prereleases and non-Paper tags, so a Velocity-only release can no longer hide a Paper update. Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-25chore(deps): update gradle to v9.8.0 (#316)renovate[bot]
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-24fix(deps): update dependency io.papermc.paper:paper-api to ↵renovate[bot]
v26.2.build.129-stable (#315) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-22fix(deps): update dependency io.papermc.paper:paper-api to ↵renovate[bot]
v26.2.build.128-stable (#314) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-21fix(deps): update dependency io.papermc.paper:paper-api to ↵renovate[bot]
v26.2.build.127-stable (#313) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-20fix(deps): update dependency io.papermc.paper:paper-api to ↵renovate[bot]
v26.2.build.126-stable (#312) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-19fix(deps): update dependency io.papermc.paper:paper-api to ↵renovate[bot]
v26.2.build.125-stable (#311) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-16fix(deps): update ktor monorepo to v3.6.0 (#310)renovate[bot]
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-16chore(deps): update dependency @biomejs/biome to v2.5.14 (#309)renovate[bot]
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-16fix(deps): update dependency io.papermc.paper:paper-api to ↵renovate[bot]
v26.2.build.124-stable (#306) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-14fix(deps): update dependency com.velocitypowered:velocity-api to v4.2.0 (#305)renovate[bot]
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-13Merge pull request #304 from ↵Sho Sakuma
m1sk9/renovate/cloudnode-pro-modrinth-publish-digest chore(deps): update cloudnode-pro/modrinth-publish digest to 3870f66
2026-09-12chore(deps): update cloudnode-pro/modrinth-publish digest to 3870f66renovate[bot]
2026-09-10chore(deps): update dependency @biomejs/biome to v2.5.13 (#303)renovate[bot]
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-09fix(deps): update dependency io.papermc.paper:paper-api to ↵renovate[bot]
v26.2.build.123-stable (#302) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-07fix(deps): update kotlin monorepo to v2.4.20 (#301)renovate[bot]
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-05chore(deps): update dependency bun to v1.4.2 (#300)renovate[bot]
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-04chore(deps): update dependency bun to v1.4.1 (#299)renovate[bot]
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-03chore(deps): update dependency @biomejs/biome to v2.5.12 (#298)renovate[bot]
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-31Merge pull request #297 from m1sk9/feat/release-v1.4.0Sho Sakuma
feat: Release LunaticChat v1.4.0
2026-08-31Merge pull request #235 from ↵Sho Sakuma
m1sk9/renovate/cloudnode-pro-modrinth-publish-digest chore(deps): update cloudnode-pro/modrinth-publish digest to 203bc72
2026-08-31Merge pull request #296 from m1sk9/improve/debug-featureSho Sakuma
Add categorised debug logging with /lc debug and /lc dump, and a debug switch for the Velocity proxy
2026-08-30fix(paper): stop the command category logging on every tree buildSho Sakuma
Three findings from review of #296. Brigadier evaluates a `requires` predicate when it builds the command tree it sends to a player - on every join and every updateCommands() - not when someone is refused. The denial line sitting there put one entry per gated node per player in the log, burying the command results the category exists to show. It is dropped rather than moved: a hidden node is never reached by an execution, so there is no refusal path to log from. `all` was honoured by `debug: all` and `/lc debug all on` but not by `categories: [all]`, which resolved to an unknown name - leaving `enabled: true` with nothing switched on, reported as off by /lc status, explained only by a warning in the log. The word now lives in one place that all three read. Two dumps in the same second left one file, because the name is only accurate to the second and the write replaces. Reproducing a bug means dumping either side of the step that triggers it, so the second one now takes a suffix. Co-Authored-By: Claude <noreply@anthropic.com>