feat(converter): add native release update checks - #37
Merged
VincentAdamNemessisX merged 2 commits intoAug 10, 2026
Merged
Conversation
VincentAdamNemessisX
force-pushed
the
feat/mh3g-converter-update-check
branch
from
August 10, 2026 08:27
9efdc20 to
24f2ef2
Compare
VincentAdamNemessisX
merged commit Aug 10, 2026
e84da09
into
fix/mh3g-002-talisman-records
7 checks passed
VincentAdamNemessisX
added a commit
that referenced
this pull request
Aug 10, 2026
* test(windows): satisfy current cfg clippy checks * fix(converter): align guide and appearance records * fix(mh3g): merge shared system gallery flags safely * test(mh3g): keep missing-target case clippy clean * fix(windows): validate installed MSVC toolchain files * feat(converter): add native release update checks (#37) * feat(converter): add native release update checks * fix(converter): avoid GitHub API rate-limit failures
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
MHToolkit/mh-save-synclatest stable GitHub Release at most once per local calendar day on first launch/releases/latestand reading the official Atom release feed firstRoot cause and fix evidence
The original implementation used the anonymous GitHub Release API as its only source and collapsed every non-200 response into a generic unexpected-response error. On the affected Mac/proxy, GitHub returned HTTP 403 with
X-RateLimit-Remaining: 0(60/60 anonymous requests consumed), while the official release redirect and Atom feed both remained reachable.The new normal path performs a one-byte ranged request to the official
/releases/latestURL, validates its final stable-tag URL, then matches that exact URL in the official Atom feed. This path does not consume the anonymous API quota.Privacy and failure behavior
The request contains only normal GitHub headers and the packaged converter version. No save bytes, selected paths, hashes, or user account data are sent. Requests use short timeouts. The daily attempt is recorded before networking so blocked GitHub access is not retried on every launch. All conversion controls remain usable during and after an automatic failure.
Verification
cargo test -p mh3g-save-convert— 215 passedx86_64-pc-windows-msvcClippy with-D warnings— passedswift test— 71 passed, including exact official Atom-entry parsing and spoof/missing-entry rejection/Applications/MH3G Save Converter.app, opened Settings, clicked Check for Updates, and observed You are up to date (GitHub: v0.0.16) on the same network where the API returned 4037984dafe6bd9b78ccadb097e1897bdde241c166f— passed (run 31372523550)git diff --check— passedRuntime boundary
Cemu was not launched and no real MLC was touched. The update-check UI was verified against the locally installed production App; save conversion runtime behavior is outside this PR's scope.
Dependency
This is intentionally stacked on #36 because it includes that PR's shared-system safety text and converter baseline. Retarget to
mainafter #36 merges.