Skip to content

[pull] main from jason5ng32:main - #118

Merged
pull[bot] merged 12 commits into
Cosr-Backup:mainfrom
jason5ng32:main
Jul 30, 2026
Merged

[pull] main from jason5ng32:main#118
pull[bot] merged 12 commits into
Cosr-Backup:mainfrom
jason5ng32:main

Conversation

@pull

@pull pull Bot commented Jul 30, 2026

Copy link
Copy Markdown

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 : )

jason5ng32 and others added 12 commits July 28, 2026 22:23
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>
@pull pull Bot locked and limited conversation to collaborators Jul 30, 2026
@pull pull Bot added the ⤵️ pull label Jul 30, 2026
@pull
pull Bot merged commit b7cd871 into Cosr-Backup:main Jul 30, 2026
1 check passed
@4everland
4everland Bot requested a deployment to production July 30, 2026 06:27 Abandoned
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant