Skip to content

Add is-it-alive extension#28256

Open
Aler1x wants to merge 7 commits into
raycast:mainfrom
Aler1x:ext/is-it-alive
Open

Add is-it-alive extension#28256
Aler1x wants to merge 7 commits into
raycast:mainfrom
Aler1x:ext/is-it-alive

Conversation

@Aler1x
Copy link
Copy Markdown

@Aler1x Aler1x commented May 22, 2026

Description

Is It Alive? monitors status pages from Raycast so you can quickly check whether a service is down or if the problem is on your side.
Add status page URLs and get a color-coded list of monitored services with live status, active incidents, and component-level detail — without opening a browser tab.

Features

  • Single command — monitor all your status pages from one place
  • Auto-detection — supports Statuspage.io, incident.io, and Railway (e.g. GitHub, Vercel, Claude, OpenAI, Railway)
  • Site management — add, edit, and delete monitored sites (stored in local storage)
  • Detail view — overview, active incidents, per-component status, and 90-day uptime history charts

Supported providers

Provider Examples
Statuspage.io status.claude.com, GitHub, Vercel
incident.io status.openai.com
Railway status.railway.com

Provider detection runs automatically when you add a URL — no configuration required.

Screencast

Screenshots available in the metadata folder.

Checklist

- chore: license
- feat: add Raycast extension for monitoring status pages
- init: raycast extension
@raycastbot raycastbot added new extension Label for PRs with new extensions platform: macOS labels May 22, 2026
@raycastbot
Copy link
Copy Markdown
Collaborator

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.

@Aler1x Aler1x marked this pull request as ready for review May 22, 2026 15:15
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 22, 2026

Greptile Summary

This PR adds a new Is It Alive? Raycast extension that monitors status pages across four providers (Statuspage.io, incident.io, BetterStack, Railway) and displays color-coded status, active incidents, and 90-day uptime history charts inside Raycast.

  • Each provider gets its own adapter implementing a common StatusAdapter interface, with automatic detection on add; sites are persisted to local storage via useLocalStorage.
  • Uptime charts are rendered as inline SVG base64-encoded markdown images, and per-component history is built from incident data where direct API history isn't available.

Confidence Score: 4/5

Safe to merge after addressing the error-state interaction in the main list command that locks users out of the detail view on any transient network failure.

When a background re-poll fails, snapshotsError is set while keepPreviousData: true preserves the previous snapshots map. Because hasError is computed as Boolean(snapshot?.error || snapshotsError), every list item flips to the question-mark icon and 'Failed to load — retry' subtitle, and the snapshot && !hasError guard replaces 'View Status Details' with 'Refresh' for all items — even those with valid cached data.

src/check-status-pages.tsx — the hasError / action-selection logic needs to differentiate between a per-site error (snapshot.error) and a top-level re-fetch failure (snapshotsError) when previous data is still available.

Important Files Changed

Filename Overview
extensions/is-it-alive/src/check-status-pages.tsx Main list command; top-level snapshotsError incorrectly overrides valid previous snapshots from keepPreviousData, locking users out of the detail view on any transient re-fetch failure.
extensions/is-it-alive/src/hooks/use-sites.ts Site storage hook using useLocalStorage; all three mutators capture sites from the render closure rather than using functional updater form, which can lead to stale overwrites under concurrent state changes.
extensions/is-it-alive/src/adapters/incident-io.ts Incident.io adapter; HTML page and JSON API fetches bundled in the same Promise.all so an HTML-layer transient error discards valid API data, and the component-ID regex may miss non-uppercase IDs.
extensions/is-it-alive/src/adapters/railway.ts Railway adapter; getComponentDays now sorts before slicing, though getLatestDayStatus relies on that sort to pick the true latest day correctly.
extensions/is-it-alive/src/adapters/betterstack.ts BetterStack adapter; clean mapping from JSON:API response to internal types with proper error boundaries.
extensions/is-it-alive/src/adapters/statuspage.ts Statuspage.io adapter; fetches summary and incidents in parallel, builds 90-day history from incidents with correct severity ordering.
Prompt To Fix All With AI
Fix the following 1 code review issue. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 1
extensions/is-it-alive/src/check-status-pages.tsx:66-80
**Top-level error overrides valid previous snapshots**

`useCachedPromise` is configured with `keepPreviousData: true`, so when a re-fetch fails, `snapshots` still holds the last successful data while `snapshotsError` becomes truthy. The expression `Boolean(snapshot?.error || snapshotsError)` then makes `hasError = true` for every list item — even those with perfectly valid previous data. The rendered result is that every site shows the question-mark icon and "Failed to load — retry" subtitle, and the `snapshot && !hasError` guard replaces "View Status Details" with "Refresh" for all items. A transient network hiccup on any re-poll completely locks the user out of the detail view until a successful fetch.

Reviews (6): Last reviewed commit: "feat: add Better Stack status page adapt..." | Re-trigger Greptile

Comment thread extensions/is-it-alive/src/adapters/incident-io.ts
Comment thread extensions/is-it-alive/src/adapters/railway.ts
Comment thread extensions/is-it-alive/src/check-status-pages.tsx
Comment thread extensions/is-it-alive/src/types/index.ts Outdated
Comment thread extensions/is-it-alive/src/adapters/incident-io.ts Outdated
Comment thread extensions/is-it-alive/src/hooks/use-sites.ts
Support Better Stack status pages via /index.json detection and JSON:API parsing.

Co-authored-by: Cursor <cursoragent@cursor.com>
@Aler1x Aler1x force-pushed the ext/is-it-alive branch from 7c777fe to 9a3eca5 Compare May 25, 2026 13:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new extension Label for PRs with new extensions platform: macOS

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants