Skip to content

feat: move to Minecraft 26.3 and fix audit findings - #22

Open
ishaanko wants to merge 3 commits into
mainfrom
feat/minecraft-26.3
Open

ishaanko wants to merge 3 commits into
mainfrom
feat/minecraft-26.3

Conversation

@ishaanko

@ishaanko ishaanko commented Sep 16, 2026

Copy link
Copy Markdown
Owner

Problem

Minecraft 26.3 is out, and the mod did not compile against it: 26.3 replaced GLFW and tinyfd with SDL3 (the folder picker used tinyfd), and Util.OS.openPath is gone. Mod Menu has no 26.3 release yet, so a hard dependency on it would block every install.

A full audit of every source file also found a set of real defects. The worst ones: a .gitignore inside a world (common in datapacks) silently dropped files from Git snapshots and then failed every backup of that world; secret redaction ran over parsed git output, so a world named Secret: Base produced an unreadable snapshot manifest; the credential filter rejected ordinary names such as Task100% Done, so those worlds could never finish a ZIP backup, and rejected config paths such as Disk-90% at load time after accepting them at save time.

Fix

  • Toolchain: Minecraft 26.3, Fabric Loader 0.19.5, Fabric API 0.160.5+26.3, Loom 1.18.1, Gradle 9.7.1, Checkstyle 14.1.0. The folder picker uses the SDL3 dialog that ships with the game, opened on the main thread. Blaze3D.openPath opens folders. Mod Menu is suggests, and the title-screen icon reaches the mod without it.
  • Git: git add --force so excludes never drop world files; pattern redaction only on displayed text and truncated output; bounded repository lock wait; temp trees always removed; core.longpaths on; Git 2.29 or newer required and reported by the tool probe.
  • Model and config: the encoded-credential hint needs a real percent escape; ZIP filenames fall back to a generic segment for text the filter flags; save runs the same credential check as load; the schema 4 migration keeps per-world ZIP folders; local Git remote paths accept punctuation such as apostrophes.
  • Recovery and management: batch delete hands back the tokens of worlds that never started; cleanup no longer throws on a record with a failed destination and treats an already-gone archive as deleted; batch delete reports a pending remote deletion as partial, not complete.
  • Portability: destination-inside-world checks compare file identity for case-insensitive disks; restores work on volumes that refuse xattrs or report zero free space; metadata files use \n on every platform; catalog and inventory ceilings raised past 64 MiB; orphaned capture markers are reclaimed.
  • Client: crash guard on the client tick and on import screen buttons; scheduled polling no longer consumes a due tick that it then skips; ZIP override checkbox keeps the typed path; an unopenable settings file is reported instead of showing editable defaults; browser capability polling runs off the render thread; plain click and "Select all" behave as documented; storage screen Back and Escape wait while busy; the pause-screen icon returns to the screen it came from; preview dates follow the locale.
  • Junk: dead methods and constructors, duplicated digest helpers, fully qualified names, an unreachable catch, and a redundant progress wrapper removed.

Every behavior change has a focused test. ./gradlew build passes with 490 tests. Not verified in game.

Changes made by Claude Fable 5.1 running in Claude Code through T3 Code.

🤖 Generated with Claude Code

Update the toolchain to Minecraft 26.3, Fabric Loader 0.19.5, Fabric API
0.160.5, Loom 1.18.1, and Gradle 9.7.1. Minecraft 26.3 replaced GLFW and
tinyfd with SDL3, so the folder picker now uses the SDL dialog, and
Util.OS.openPath became Blaze3D.openPath. Mod Menu has no 26.3 release yet,
so it is now optional.

Fix the defects a full source audit found, with tests for each behavior
change: .gitignore files dropping world files from Git snapshots, secret
redaction corrupting the snapshot manifest, the credential filter rejecting
ordinary world names and config paths, batch delete burning confirmation
tokens of worlds that never started, cleanup failing on records with a
failed destination, the schema 4 migration dropping per-world ZIP folders,
plus the smaller portability, crash, and settings-screen fixes listed in
CHANGELOG.md. Remove dead code and duplicated helpers found on the way.
@github-actions github-actions Bot added the size:XXL 1,000+ effective changed lines (test files excluded in mixed PRs). label Sep 16, 2026
@greptile-apps

greptile-apps Bot commented Sep 16, 2026

Copy link
Copy Markdown

RetriggerConfidence Score: 5/5

Safe to merge.

Summary

Updates WorldArchive for Minecraft 26.3 and completes the follow-up fixes for Git tool validation, batch backup deletion recovery, and transient world ZIP override state.

Reviews (3) · Last reviewed commit: "fix(recovery): keep a delete token consu..."

Comment thread src/main/java/dev/ishaanko/worldarchive/storage/git/GitToolProbe.java Outdated
@ishaanko ishaanko changed the title feat: move to Minecraft 26.3 and fix the 1.0 audit findings feat: move to Minecraft 26.3 and fix audit findings Sep 16, 2026
Also drop the world page's transient ZIP override state when the settings
draft is replaced, so Restore defaults clears the checkbox.
A zero-destination backup removes its catalog record and then rethrows on
cancellation, so handing its token back let a retry fail forever. Also bound
the digits the Git version probe accepts.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL 1,000+ effective changed lines (test files excluded in mixed PRs).

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant