Add globalping extension#27466
Conversation
- Fix Prettier formatting - V1.0 - Add initial implementation of the Globalping Raycast extension (raycast#1) - Initial commit
|
Congratulations on your new Raycast extension! 🚀 We're currently experiencing a high volume of incoming requests. As a result, the initial review may take up to 10-15 business days. Once the PR is approved and merged, the extension will be available on our Store. |
Greptile SummaryThis PR adds the official Globalping extension, providing five network diagnostic commands (Ping, DNS, HTTP, Traceroute, MTR) with PKCE OAuth authentication, live-streaming probe results, a location picker backed by the Globalping probe catalogue, and Raycast Quicklink support. The implementation is well-structured overall, with proper AbortController handling, run-token guards to prevent stale state, and a serialized write queue for local storage. The only issue found is that Confidence Score: 4/5Safe to merge after addressing the manual type definitions; no runtime or security issues found. Only P2 style findings present — manual Preferences/Arguments interface definitions that should use auto-generated types. All core logic, auth, polling, and error handling look correct. src/utils/preferences.ts and all five command files (ping.tsx, dns.tsx, http.tsx, mtr.tsx, traceroute.tsx) for the manual type definitions. Important Files Changed
Prompt To Fix All With AIThis is a comment left during a code review.
Path: extensions/globalping/src/utils/preferences.ts
Line: 4-6
Comment:
**Manual `Preferences` and `Arguments` interfaces should use auto-generated types**
`ExtensionPreferences` is manually defined here rather than using the auto-generated `Preferences` type from `raycast-env.d.ts`. The same pattern repeats across all five command files — `ping.tsx`, `dns.tsx`, `http.tsx`, `mtr.tsx`, and `traceroute.tsx` each define their own local `interface Arguments`. When the extension runs, Raycast generates `Preferences` and per-command `Arguments.Ping`, `Arguments.Dns`, etc. in `raycast-env.d.ts`; manual definitions can silently diverge from the actual config.
Update the call site to:
```ts
const { probeCount } = getPreferenceValues<Preferences>();
```
For command files, replace e.g. `LaunchProps<{ arguments: Arguments }>` with `LaunchProps<{ arguments: Arguments.Ping }>`.
**Rule Used:** What: Don't manually define `Preferences` for `get... ([source](https://app.greptile.com/review/custom-context?memory=d93fc9fb-a45d-4479-a6a4-b1b4af98ebc8))
How can I resolve this? If you propose a fix, please make it concise.Reviews (1): Last reviewed commit: "Add globalping extension" | Re-trigger Greptile |
Description
This is the official Globalping by JSDelivr extension for Raycast.
Globalping is an open-source platform with 3,700+ globally distributed probes that lets anyone run network diagnostic tests from anywhere in the world. This extension brings the full power of the Globalping API directly into Raycast.
Commands
Ping — Compare latency, packet loss, and per-probe timing data from multiple locations
DNS — Resolve all supported DNS record types (A, AAAA, MX, TXT, CNAME, etc.) from distributed probes
HTTP — Run HEAD and GET requests from worldwide locations
Traceroute — Inspect the route to a target hop by hop
MTR — Combine latency and route data in a compact multi-hop view
Key features
OAuth authentication — Users sign in with their free Globalping account through Raycast's native OAuth flow (PKCE). No API keys to manage.
Smart location picker — Target probes by continent, country, city, US state, cloud provider (AWS, GCP, Azure, Oracle), ASN, network type, or just world
Live streaming results — Probe results stream into the list as they arrive
Raycast Quicklinks — Save any measurement as a reusable Quicklink with pre-filled target, location, DNS type, and HTTP method
Recent & popular locations — The extension remembers your most-used probe locations for quick re-runs
Cross-platform — Works on both macOS and Windows
Authentication
A free Globalping account is required. Sign-in happens automatically through Raycast's native OAuth flow when opening any command for the first time. No manual configuration needed.
Screencast
All Globalping commands with optional arguments
First view when you launch a command without any argument
Location picker — Target by country, city, cloud provider, ASN…
Ping — Latency results from multiple global probes
DNS — Resolve records from distributed locations
HTTP — HEAD/GET requests from worldwide probes
MTR — Combined latency and route data
Traceroute — Hop-by-hop route inspection
Checklist
npm run buildand tested this distribution build in Raycastassetsfolder are used by the extension itselfREADMEare placed outside of themetadatafolder