The percentage used finished/seen task counts, which hit the 99% cap as soon
as the first tasks finished and then stayed there while new tasks were still
being discovered. Use the "total" property announced by the sync task as the
denominator and count finished file downloads; stay indeterminate until known.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01TiBPbVGBHNHdzqfq1L5tch
- Home: join/update button turns the bottom card into an in-place progress
view (percent, thin bar, downloaded size/speed, cancel, four-step indicator,
error + retry). ClientSyncProgress mirrors the existing task executor.
- Label "Start Game" -> "进入服务器" (en: Join Server) in en/zh_Hans/zh_Hant.
- Settings merged into one page: General / Game / Help cards; Java management
and About open as sub pages.
- About trimmed; system/device/runtime info moved into "Copy diagnostics".
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01TiBPbVGBHNHdzqfq1L5tch
Compare the installed server-manifest version and file hashes with fileApi on the home page, and switch the Start button to Update when a differential sync is needed. Also persist the remote pack version after completion.
Co-authored-by: Cursor <[email protected]>
Bring in ensureClientAndJoin so first install and updates are triggered by the home Start/Join button, not by opening the launcher. Differential updates still run on the launch completion path.
Co-authored-by: Cursor <[email protected]>
BMCLAPI 302-redirects to CDNs (sakura.sld.tw, cernet) that are TLS-blocked on
many mainland networks, leaving the official origins as the only fallback and
stalling launches at the 1.7.10 asset index with 0 B/s. The VPS now hosts the
pack's full dependency set; try it first with BMCLAPI as fallback.
MojangJavaDownloadTask never called updateProgress, so its progress bar stayed
indeterminate while the hidden LZMA-decompress and cache-copy steps wrote files
to disk. Players saw 0KB speed and a frozen-looking bar and restarted the
launcher. Append a progress callback after each file completes so the bar
advances through download/decompress/copy phases; the download logic is unchanged.
files.prismlauncher.org resets the TLS handshake from mainland China and
BMCLAPI does not mirror its repackaged log4j-fixed artifacts, aborting TDLM
installs at Lwjgl3ifyApplyTask. Redirect that maven to the self-hosted client
mirror (fileApi root + /maven), keeping Prism as fallback. The log4j-api/core
2.0-beta9-fixed jars are hosted on the VPS with matching SHA-1.
HMC-22: the home Join/Start button runs fileApi install when needed,
then joins. Differential updates stay on the launch completion path.
Remove the instance-management sidebar entry and stop opening the
modpack install wizard from startup, empty launch, or drag-drop.
- #8: do not import MultiMC PreLaunch/Wrapper/JVM overrides from packs
- #9: filter dangerous +jvmArgs from MultiMC patches / lwjgl3ify
- #10: cap HTTP body reads at 16 MiB
- #11: guard FileUtils.copyDirectory against path escape
- #12: allow only http/https/mailto in openLink
- #13: follow authlib api-location only on same-host HTTPS
Keep secrets.TDLM_PACK_TOKEN (same name as pack.yml); document that it
is currently a TDLMPack repo secret while MAVEN_* are org-level.
Fall back to github.token so release can proceed after merge without a
new HMCL-only secret when the pack token is promoted or unavailable.
Add a TDLMPack-oriented publish workflow (nest API, same pattern as
TDLMPack pack.yml) plus docs for the exact consume URLs. Pack builds
still do not Maven-resolve the launcher.
Match ForestryMC/IC2: Gitea uses setup-gradle cache-provider external
with no whole-home actions/cache. Keep wrapper-only cache so restores
stay small on the Windows Docker runner.
The apparent checkstyle stall was :HMCL:test stuck after
GtkPlatformFactory Internal Error (xvfb without libgtk). Install GTK/X11
deps, use software prism, and bound Platform.startup in test launchers.
Nest actions/gradle-actions@v5 rejects cache-provider; v6 supports it
(and defaults to enhanced — keep Gitea on external). Cache ~/apt-cache
so xvfb debs can skip apt-get update when Actions cache is available.
Match ForestryMC/IC2 setup-build: cache-jdk, and use setup-gradle
cache-provider basic on GitHub / external on Gitea (avoids ECONNREFUSED
to GitHub cache). Cache ~/.gradle caches+wrapper via actions/cache.
act resolves uses: gradle/actions/* to git.nest…/gradle/actions, which
is not available. Sibling mirrors live under the actions org as
actions/gradle-actions (mirror of github.com/gradle/actions).
A launcher run from the repository root downloads Mojang Java into java/, and it was
picked up by git add -A in e12c7e53f. The files stay in history.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Wire fixed fileApi first-install/update, and apply the pack's tdlm/lwjgl3ify MultiMC companion on install and launch.
Co-authored-by: Cursor <[email protected]>
Pushes to feature branches built twice (push and pull request) and Check Codes
repeated the compile in a second workflow. Build now runs only on main, tags and
pull requests, cancels older runs of the same ref, folds checkstyle and
checkTranslations into the single Gradle invocation, caches the wrapper download
and skips apt when xvfb is installed.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>