[pull] main from jason5ng32:main - #118
Merged
Merged
Conversation
The upstream answers 200 with `location: null` for addresses it cannot place (anycast ranges, bogons), so destructuring it and reading `.city` threw and the whole source returned 500. Guard it the way `asn` already was, and export the normalizer so the degraded shape is covered by tests. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The engine's queued timers deliver a last measurement after onFinish or onUnmounted already nulled the reference, so updateProgress threw on `testEngine.results`. Match the optional-chaining guard its sibling updateSpeedInRealTime has carried all along. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Seven call sites hand-split trace bodies with the same lines.find +
split("=") pattern; extract utils/parse-trace.js and route them all
through it. The parser trims keys and values, so bodies re-serialized
with CRLF by middleboxes no longer leak a trailing "\r" into the IP.
SpeedTest's invalid-IP throw now carries a self-describing detail
(no-ip-line / empty-value / length + tail charcode) to tell response
tampering apart from format surprises.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
… choice The geolocation fallback used to rewrite the stored preference on every successful fallback and disable failing sources for the session, so a transient error changed what the user had picked and struck sources out of the Preferences picker. Now ipDBs.enabled is derived purely from the /api/configs flags the moment they arrive (replacing the 4s timer in Preferences.vue), runtime failures just walk to the next source with a one-time toast, and the stored preference is only rewritten when it points at a source that is no longer configured — migrated to the nearest available one, also announced via toast, in all four locales. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
encodeURIComponent turned IPv6 colons into %3A, which some RIR delegate servers (e.g. IDNIC behind APNIC's redirect) reject with a 400. Colons are legal in a URL path and the guard layer already ensures a well-formed IP, so build the query URL with the literal address. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Shortcuts are for high-frequency actions: remove the Command Line API (x), About (a) and Preferences (p) bindings, and give the share-report dialog the freed-up slot as e (export). The defineExpose hooks and template refs that existed only for the removed bindings go with them; locale descriptions follow in all four languages. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )