Skip to content

[pull] main from jason5ng32:main - #128

Merged
pull[bot] merged 29 commits into
Cosr-Backup:mainfrom
jason5ng32:main
Aug 31, 2026
Merged

pull[bot] merged 29 commits into
Cosr-Backup:mainfrom
jason5ng32:main

Conversation

@pull

@pull pull Bot commented Aug 31, 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 29 commits August 26, 2026 09:45
Co-authored-by: Codex <codex@openai.com>
Signed-off-by: WilliamK112 <164879897+WilliamK112@users.noreply.github.com>
Clarify Taiwan-facing terminology across IP details, WebRTC, DNS leak, advanced DNSSEC, ping, and MTR copy without changing the source meaning.\n\nCo-authored-by: OpenAI Codex <noreply@openai.com>
A weekday × hour heatmap of Cloudflare Radar HTTP traffic for the IP's
country, opened from a button beside the Country field. Country-level
rather than per-ASN because global ASNs have no single diurnal rhythm,
and ~250 cache keys let a 30-day edge cache absorb nearly every request.
Defaults to likely-human traffic with a switch for all traffic (the
other scope prefetches for instant flipping); hours render in the IP's
own timezone.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Verbatim markup move out of IpDetailPanel so the map lives at the same
component layer as CountryTraffic.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Split CountryTraffic and LocationMap into bare content panels plus
dialog shells, and turn the enableMap/enableCountryTraffic booleans
into mapMode/countryTrafficMode ('dialog' | 'inline' | 'off'). IPCard
keeps the dialogs; QueryIP — itself a Dialog, where stacking another
one is confusing — now offers both affordances as a single-select
Collapsible under the metadata grid, mirroring its ASN panels.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Fix(i18n): refine Traditional Chinese terminology
Feat(connectivity): add Germany country list
Co-authored-by: OpenAI Codex <codex@openai.com>
- Multi-list model in the connectivityLists preference
  (utils/connectivity-lists.js), migrated from the flat
  connectivityTargets / customConnectivityTargets eras; legacy keys
  kept for rollback, never written
- Header gains a list picker once a second list exists; in-page
  switching is per-visit, the startup list is a preference
- Curated imports pick a destination per list (or spin up a new list
  named after the preset); custom adds pick a destination once a
  second list exists
- Per-card retest moves to the latency figure (retry icon on failed
  cards); card titles optionally open the site in a new tab via a new
  setting, off by default (titles are plain text otherwise)
- Preferences gets a dedicated Connectivity section (default list +
  three switches) and a reworked two-line PrefRow layout that fixes
  vertical centering and tip wrapping
- List names allow 40 chars, truncated with an ellipsis where tight

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Feat(connectivity): add Music & Audio list
genius.com serves its favicon with Cross-Origin-Resource-Policy:
same-origin, so the browser blocks our cross-origin probe and the card
always reads as unreachable even though the site is fine. Musixmatch
covers the same lyrics ground and probes cleanly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…atched endpoint

/api/cfradar, /api/cfradar-traffic and /api/outages all proxied Cloudflare
Radar with their own route, guard wiring and cache TTL — every new Radar
dataset meant another copy of that boilerplate. All Radar data now rides
the single /api/cfradar route: ?view= dispatches over the RADAR_VIEWS
registry in common/cf-radar.js, where each view declares its guards,
edge-cache TTL and fetch function. cacheable() accepts a per-request TTL
resolver so 30-day profiles and the 1-hour outage feed share the route
without losing their cache behavior.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…iders

CAIDA's p2c-only walk missed how hypergiants actually reach the backbone
(settlement-free clique peering) and recursed into misinferred small
"providers", producing topologies unrelated to bgp.tools/Radar. Index p2p
rows, emit kind-tagged peering edges, and drop non-Tier-1 providers of
clique-adjacent nodes behind dual trusted bars.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Peering edges made star graphs (origin + 15+ Tier 1s) tall single columns
with per-edge lanes hatching the corridors. Take over positioning from
dagre (keep its layering/order): pin Tier 1s to one terminal column that
wraps into staggered sub-columns, stack and center columns, nudge
single-node columns crossed by skip edges, bundle edges per target, and
bend right after the source so long edges run at target height instead of
under boxes. Render peering dashed with legend entries in all full
locales, and release the Drawer's flex-1 hosts during capture so tall
graphs screenshot whole.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…e ASN panel

Three new Radar segments on the asn view: BGP route stats (IPv4/IPv6
prefix counts), AS relationships (upstream / downstream / peering counts,
falling back to the local CAIDA snapshot when Radar has no rows), and
speed-test aggregates shown as an "average connection quality" group with
a source tooltip.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Both ASN endpoints sit behind 30-day caches that also live in visitors'
browsers, where no purge reaches — a ?v= bump is the only way changed
payloads actually arrive. Start both at v=2.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Docs(readme): add CI workflow badge to all four READMEs
@pull pull Bot locked and limited conversation to collaborators Aug 31, 2026
@pull pull Bot added the ⤵️ pull label Aug 31, 2026
@pull
pull Bot merged commit 948fdd4 into Cosr-Backup:main Aug 31, 2026
3 of 4 checks passed
@4everland
4everland Bot requested a deployment to production August 31, 2026 06:27 Abandoned

This branch had an error being deployed

1 failed deployment
production 948fdd47 Deployed Aug 31, 2026 by pull[bot] via Push README to Docker Hub #16
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.

4 participants