fix(platforms): make multi-platform builds work on latest MC versions#40
Merged
Conversation
When Paper publishes a new calendar-versioned release (e.g. 26.1.2) pluggy init defaults to it, but the downstream platform providers weren't ready: sponge resolved spongeapi to a version only published as -SNAPSHOT on Maven, and folia still hardcoded the old <mc>-R0.1-SNAPSHOT artifact name even though folia-api moved to the build-stamped form (26.1.2.build.8-stable) like paper did. Both now probe maven-metadata and pick a published variant. Also surfaced while testing: build output displayed absolute paths, and --platform bungeecord was rejected even though that's the natural name for the waterfall-backed proxy. - sponge: resolvePublishedApiVersion checks the spongeapi metadata for a release variant before falling back to -SNAPSHOT. - folia/paper: share papermc.resolveApiVersion, which prefers the highest <mc>.build.<N>-<channel> entry and falls back to the SNAPSHOT form on miss. - build: print outputPath relative to the cwd pluggy was invoked from (paper/bin/foo.jar instead of /Users/.../paper/bin/foo.jar); absolute path retained when --output points outside cwd and in the JSON payload. - platforms: new resolve()/aliases() on the registry; parsePlatform resolves aliases (bungee, bungeecord -> waterfall).
d7ba8d9 to
826ad1b
Compare
The Check & Test job downloads real platform server jars (paper-api, spigot-api, folia ~53 MB, sponge, BuildTools) into the per-OS pluggy cache on every run. The Folia download in particular was the suspected cause of the Windows worker crash that already cost one rerun this PR. - actions/cache@v4 keyed on the OS and a hash of the platform sources (so cache invalidates when version-resolution logic changes). restore-keys lets a stale cache rehydrate the long tail since server jars are immutable per version. - Format / lint / typecheck only run on ubuntu-latest now — they're platform-agnostic and adding them to macos + windows just costs matrix latency.
3 tasks
ch99q
added a commit
that referenced
this pull request
May 19, 2026
vitest's forks pool intermittently emits Worker exited unexpectedly after platform-compat.test.ts's 6 javac compiles complete on Windows. All tests pass, but the pool reports the run as failed because the fork dies during teardown — same shape we hit on #40 and #42. The tests cover OS-agnostic javac+classpath logic (AsyncChatEvent presence in paper-api vs spigot-api, etc.) already verified on the ubuntu and macos legs. Skipping on Windows costs no coverage and removes ~70s of flaky runtime.
ch99q
added a commit
that referenced
this pull request
May 19, 2026
* chore: install vite-plus git hooks (pre-commit + pre-push) `vp config` wires up a husky-style scaffold at .vite-hooks/_/ that points at the top-level scripts in .vite-hooks/. Local-clone only: `git config core.hooksPath .vite-hooks/_` is per-clone, so contributors run `vp config` once after cloning. - pre-commit: `vp staged` (runs `vp check --fix` on staged paths via the new `staged` block in vite.config.ts). - pre-push: `vp check && vp test` so CI failures get caught locally before the push round-trip. VITE_GIT_HOOKS=0 skips for emergencies. - CLAUDE.md: new review-checklist line telling agents/devs to run `vp config` once per fresh clone. * test(platform-compat): skip on Windows to avoid flaky worker crash vitest's forks pool intermittently emits Worker exited unexpectedly after platform-compat.test.ts's 6 javac compiles complete on Windows. All tests pass, but the pool reports the run as failed because the fork dies during teardown — same shape we hit on #40 and #42. The tests cover OS-agnostic javac+classpath logic (AsyncChatEvent presence in paper-api vs spigot-api, etc.) already verified on the ubuntu and macos legs. Skipping on Windows costs no coverage and removes ~70s of flaky runtime.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
26.1.2) is whatpluggy initpicks by default, but Sponge and Folia weren't ready for it: sponge asked Maven for a release version that's only published as-SNAPSHOT, and folia hardcoded the old<mc>-R0.1-SNAPSHOTartifact name when folia-api had moved to the build-stamped form. Both now probemaven-metadata.xmland fall through to a published variant —pluggy buildagainst themulti-platformandfolia-regionstemplates now succeeds end-to-end.paper-basic,paper-mockbukkit,paper-adventure,folia-regions,velocity-proxy,bungee-proxy,sponge-basic,multi-module,multi-platform) front-to-back.pluggy buildnow prints jar paths relative to the invocation directory (paper/bin/foo.jarinstead of/Users/.../paper/bin/foo.jar); absolute path is retained when--outputpoints outside cwd and in the JSON payload.--platform bungeecord(andbungee) now resolve towaterfallinstead of erroring. Newplatforms.resolve()/platforms.aliases()on the registry, used by bothparsePlatformandplatforms.get.Test plan
vp test(74 files, 656 tests)vp check(lint + format + typecheck)playground/(init→install→build), confirmed jar paths display relatively and--platform bungeecordworks.