- Every version depends on org.saturnclient:emotes-fabric
(${emotes_version}+<mc>, bundled). playEmote plays Saturn's emotes
through it, and sneaking stops your own emote and tells the server.
Emotes now work on 1.21.6+ too, where player-animation-lib was
commented out.
- Removed every player-animation-lib and bendy-lib reference: the KoSmX
repository, the dependencies, the player_anim properties, and the old
(partly commented out) code in SaturnProviderImpl and KeyInputHandler.
- Build: Loom 1.15 -> 1.17.21 (the emotes jar is built with 1.17 and
older Loom refuses it), Gradle 9.3 -> 9.8 (needed by Loom 1.17), and
sourceSets moved out of the dependencies block in the root build.gradle,
which Gradle 9.8 rejects.
- common: points at the emote-library branch (saturnclientmc/common#5).
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Reference logo.png from the repo instead of the dead raw.github URL
(the logo lives in the common submodule, which Gitea can't serve from
a relative path, so a copy sits next to screenshot.png)
- Drop the section emojis and horizontal-rule separators
- Add supported versions, the built-in mods, installation (Modrinth,
releases), network use (Mojang session sign-in; the access token never
reaches the Saturn server), building from source with submodules, and
a pointer to the version guide for multi-version changes
Co-Authored-By: Claude Opus 5.5 <[email protected]>
A merge to master re-ran the same compile the PR had just done. Keep
the pull_request trigger and drop the push-to-master one.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- setup-java v4 is deprecated; use v5 (still with `cache: gradle`,
which works once job containers can reach the runner's cache server).
- Enable Gradle's build cache (org.gradle.caching) so unchanged
compilations are restored from cache instead of re-run.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- scripts/port.sh ports a change made under versions/<from>/src to the
other versions with `git apply --3way`: clean where files match,
normal conflicts only where a version really differs. Supports
uncommitted changes or --commit, --to, --dry-run, and detects changes
already applied.
- .gitea/workflows/check.yml compiles every version on pull requests and
pushes to master (--continue reports all failing versions).
- VERSION_GUIDE.md documents the layout, porting, and adding a version.
Closes#17, closes#18
Co-Authored-By: Claude Opus 5.5 <[email protected]>
actions/setup-python can only install Python on GitHub's Ubuntu images,
so it fails on this runner's job image ("version 3.12 ... was not found
for this operating system"). Every Gitea runner has Node, since it runs
JavaScript actions, so port the publisher to a dependency-free Node
script (fetch/FormData/Blob) and drop the setup step. Behaviour is
unchanged.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
"Publish to Modrinth" (workflow_dispatch, tag + dry_run inputs) takes the
jars the Release workflow attached to a Gitea release and creates one
Modrinth version per jar: version_number <version>+<mc>, that Minecraft
version, fabric loader, Fabric API as a required dependency, the release
notes as the changelog, and alpha/beta/release from the tag. It doesn't
rebuild, skips versions already on Modrinth, and downloads jars through
the public URL (Gitea's reported URLs use its internal ROOT_URL).
Needs a MODRINTH_TOKEN secret with the "Create versions" scope.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
gitea:3000 isn't resolvable from act_runner's job containers, which run
on their own Docker network. With the panorama downscaled in common the
jars are ~45 MB, under the Cloudflare tunnel's 100 MB request limit, so
upload through github.server_url again. Fail with a readable error
before uploading if any jar is 100 MB or more.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The Cloudflare tunnel in front of git.selimaj.dev rejects the jar
uploads with 413 Payload Too Large. Call the API at http://gitea:3000
instead, look the release up by tag, and add a workflow_dispatch trigger
that builds a given tag and attaches the jars to its existing release.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The release workflow no longer overrides mod_version from the tag.
Instead it fails early unless the release tag (optionally prefixed with
"v") matches mod_version in gradle.properties, so released jars always
report the same version as the code the version check sees.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
On a published release, build all versions with buildAll using the tag
as the mod version, and upload build/allJars/*.jar to the release.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Implement SaturnProvider.getModVersion() (Fabric mod metadata) and
showWarning() (15 s SystemToast) in every version
- Bump mod_version to 0.1.0-beta3, the first version on the new
Mojang session-server authentication
- Point common at its merge commit for the new auth flow and version check
Fixes#7
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Replace JitPack (which can no longer build session-java since its GitHub
repo is gone) with the Gitea package registry in every build file, move
to dev.selimaj:session-java:0.2.0, and bump common for server reconnect
and request timeouts.
Fixes#4, fixes#5.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
TabListMixin @Overwrote PlayerListEntry.getDisplayName() and always
returned the bare profile name, dropping server-set display names (rank
prefixes, colours) and, by never returning null, vanilla's team
decoration, for every player. Inject at RETURN instead: non-Saturn
players keep the original value, and Saturn players get the icon in
front of the original name, or the team-decorated profile name when the
server set none.
Also bump common for the player-lookup and thread-safety fixes.
Fixes#3. Refs #2, #6.
Co-Authored-By: Claude Opus 5.5 <[email protected]>