Skip to content

feat: add endpoint reachability checker page - #643

Merged
AbhishekDoshi26 merged 14 commits into
mainfrom
feat/endpoint-reachability-checker
Sep 3, 2026
Merged

feat: add endpoint reachability checker page#643
AbhishekDoshi26 merged 14 commits into
mainfrom
feat/endpoint-reachability-checker

Conversation

@AbhishekDoshi26

Copy link
Copy Markdown
Member

Closes #472

Summary

Adds an interactive Endpoint Reachability page under the System section
that lets users verify connectivity to all Shorebird endpoints directly from
their browser or mobile device — without needing any tooling installed.

Changes

New: src/components/EndpointChecker.astro

An interactive Astro component that:

  • Lists all 6 Shorebird endpoints with their descriptions
  • Checks them in parallel using no-cors HEAD requests (works from any
    browser/device without CORS issues)
  • Shows per-endpoint status badges: Not checkedChecking…
    Reachable / Unreachable
  • Animates the status dot while checking
  • Displays a colour-coded summary bar when all checks are complete
  • Uses a 10-second timeout per endpoint

New: src/content/docs/system/endpoint-reachability.mdx

A docs page under System that:

  • Embeds the EndpointChecker component at the top
  • Explains what each endpoint is used for (table)
  • Clarifies that any HTTP response (including 4xx/5xx) means reachable —
    only a network-level failure (

Closes #472

- Add  component that lets users check all
  Shorebird endpoints in parallel from their browser. Each endpoint is
  probed with a no-cors HEAD request so the tool works from any device
  (phone, desktop, restricted network) without CORS issues.

- Add  page that embeds the checker,
  explains what each endpoint is used for, and provides remediation
  steps when an endpoint is unreachable.

- Update  ("Can you use Shorebird in your country?")
  to link to the new page.
- Use is:global styles so they apply to JS-generated DOM nodes
- Pill-shaped badges with colour-coded states (idle/checking/reachable/unreachable)
- Animated pulsing dot while checking
- Light and dark mode colour variants
- Clean row layout with monospace URL + muted description
- Accent-coloured button with focus ring and active scale
--sl-color-accent-high resolves to gray-100 (near-white) in dark mode,
causing the button to flash white on hover. Replace with a darkened
color-mix of the accent colour instead.
The solid bg-sidebar background made the 1px row separator above appear
as a dark line floating at the top of the hover area. A subtle accent
tint blends with both the separator and the page background, eliminating
the false 'top padding' effect.
With border-bottom, the separator belongs to the row ABOVE the hovered
one, so it shows as a dark stripe at the top edge of the hover area.

Switching to border-top means the separator belongs to the hovered row
itself. We then set border-top-color: transparent on :hover and on the
immediately following row (:hover + .ec-row) to eliminate the dark
stripe, giving a seamless edge-to-edge hover highlight.
Starlight's .sl-markdown-content :where(div) rule injects margin-bottom
on all div elements inside the content area, including the dynamically
created ec-row and ec-row-info divs. This caused bottom spacing and
broke vertical centering. Explicit margin: 0 overrides it.
- Replace all em-dashes (—) with commas or full stops
- Remove the 'Check Shorebird status' step pointing to
  status.shorebird.dev which does not exist
- Renumber remediation steps from 4 down to 3
The tool checks network-level reachability, not HTTP correctness.
storage.googleapis.com returns 400 and cdn.shorebird.cloud returns 405
for HEAD / — both are valid HTTP responses that confirm the server is
reachable. Update the note to make this explicit.
- Add cspell:ignore comment for 'white-space' CSS property which is
  flagged as a forbidden word by the very_good_dictionaries forbidden
  list
- Capitalise 'shorebird' -> 'Shorebird' in the endpoint table to satisfy
  Vale.Terms proper-noun check
The endpoint URLs in backtick code spans are scanned by Vale.Terms
(unlike link destinations, which Vale skips). The existing TokenIgnores
entries in .vale.ini only cover link-href contexts, so they don't help
here. Using vale off/on HTML comments is the standard approach for
tables/code where lowercase is intentional.
- Replace backtick code-span URLs with markdown links in the table.
  Link destinations are skipped by Vale so lowercase 'shorebird' in
  hrefs is never flagged. This also fixes the MDX build error caused
  by <!-- vale off --> (invalid JSX) and {/* vale off */} (not
  recognised as a Vale directive).
- Add auth.shorebird.dev, download.shorebird.dev, cdn.shorebird.cloud
  to TokenIgnores in .vale.ini so Vale.Terms doesn't flag the link
  text for the three endpoints not previously covered.
@AbhishekDoshi26
AbhishekDoshi26 merged commit ccf04eb into main Sep 3, 2026
5 checks passed
@AbhishekDoshi26
AbhishekDoshi26 deleted the feat/endpoint-reachability-checker branch September 3, 2026 15:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: Add a page which checks reachability of all our endpoints

2 participants