diff --git a/frontend/components/advanced-tools/ServiceStatus.vue b/frontend/components/advanced-tools/ServiceStatus.vue index 6df18666..399545c5 100644 --- a/frontend/components/advanced-tools/ServiceStatus.vue +++ b/frontend/components/advanced-tools/ServiceStatus.vue @@ -214,6 +214,9 @@ const PROVIDERS = [ { id: 'linear', name: 'Linear', icon: 'simple-icons:linear' }, { id: 'stripe', name: 'Stripe', icon: 'simple-icons:stripe' }, { id: 'npm', name: 'npm', icon: 'ri:npmjs-line' }, + { id: 'perplexity', name: 'Perplexity', icon: 'ri:perplexity-line' }, + { id: 'canva', name: 'Canva', icon: 'simple-icons:canva' }, + { id: 'docker', name: 'Docker', icon: 'simple-icons:docker' }, ]; const placeholderSizes = [10, 7, 9, 6, 8]; diff --git a/frontend/data/changelog.json b/frontend/data/changelog.json index 2457995e..625b6629 100644 --- a/frontend/data/changelog.json +++ b/frontend/data/changelog.json @@ -2290,6 +2290,17 @@ "pt-BR": "Melhoria da experiência PWA no iOS" } }, + { + "type": "improve", + "change": { + "en": "Service Status now covers more well-known internet products", + "zh": "「服务可用性」高级工具新增更多知名互联网产品", + "zh-TW": "「服務可用性」進階工具新增更多知名網路產品", + "fr": "L'outil État des services couvre davantage de produits Internet connus", + "ru": "Инструмент «Состояние сервисов» охватывает больше известных интернет-продуктов", + "pt-BR": "A ferramenta Status dos serviços agora cobre mais produtos conhecidos da internet" + } + }, { "type": "fix", "change": { diff --git a/frontend/locales/en.json b/frontend/locales/en.json index 2d6bee94..4774c403 100644 --- a/frontend/locales/en.json +++ b/frontend/locales/en.json @@ -1082,7 +1082,7 @@ "EnhancedDnsLeakTest": "Captures every recursive resolver, with ECS and DNSSEC analysis", "RuleTestNote": "Check the rule settings of proxy software", "CensorshipCheck": "Check which countries a website is blocked in", - "ServiceStatus": "Check the live availability of well-known AI and developer services, and whether a recent incident explains the outage you're seeing", + "ServiceStatus": "Check the live availability of well-known internet products, and whether a recent incident explains the outage you're seeing", "Whois": "Search for domain/IP/ASN registration information", "AsnProfile": "View the full profile of any AS", "InvisibilityTest": "Check if you are using a proxy or VPN", @@ -1760,7 +1760,7 @@ }, "serviceStatus": { "Title": "Service Status", - "Note": "When a service won't open, it might not be your problem — the service itself could be down. Currently, people are using a lot of AI products, and when the AI product doesn't reply, they don't know if it's their problem or the service's problem. This section shows the live availability of well-known AI services; expand a card to see each sub-service's status and recent incidents.", + "Note": "When a service won't open, the problem might not be on your end — the service itself could be down. This section shows the live availability of well-known internet products, from AI assistants to developer platforms; expand a card to see each sub-service's status and recent incidents.", "Refresh": "Refresh Service Status", "LastChecked": "Last checked", "AllOperational": "All Systems Operational", diff --git a/frontend/locales/fr.json b/frontend/locales/fr.json index 09dd9b2c..f2088ff1 100644 --- a/frontend/locales/fr.json +++ b/frontend/locales/fr.json @@ -1082,7 +1082,7 @@ "EnhancedDnsLeakTest": "Capture tous les résolveurs récursifs avec analyse ECS et DNSSEC", "RuleTestNote": "Vérifiez les paramètres de règles du logiciel de proxy", "CensorshipCheck": "Vérifier dans quels pays un site est bloqué", - "ServiceStatus": "Vérifiez la disponibilité en temps réel des services d'IA et de développement connus, et si un incident récent explique la panne que vous constatez", + "ServiceStatus": "Vérifiez la disponibilité en temps réel de produits Internet connus, et si un incident récent explique la panne que vous constatez", "Whois": "Recherche d'informations sur l'enregistrement de domaine/IP/AS", "AsnProfile": "Consulter le profil complet de n'importe quel AS", "InvisibilityTest": "Vérifiez si vous utilisez un proxy ou un VPN", @@ -1760,7 +1760,7 @@ }, "serviceStatus": { "Title": "État des services", - "Note": "Quand un service ne s'ouvre pas, le problème ne vient pas forcément de vous — le service lui-même peut être en panne. Actuellement, les gens utilisent beaucoup de produits AI, et quand le produit AI ne répond pas, ils ne savent pas si c'est leur problème ou celui du service. Cette section affiche la disponibilité en temps réel de services AI populaires ; dépliez une carte pour voir l'état de chaque sous-service et les incidents récents.", + "Note": "Quand un service ne s'ouvre pas, le problème ne vient pas forcément de vous — le service lui-même peut être en panne. Cette section affiche la disponibilité en temps réel de produits Internet connus, des assistants IA aux plateformes pour développeurs ; dépliez une carte pour voir l'état de chaque sous-service et les incidents récents.", "Refresh": "Actualiser l'état des services", "LastChecked": "Dernière vérification", "AllOperational": "Tous les systèmes sont opérationnels", diff --git a/frontend/locales/pt-BR.json b/frontend/locales/pt-BR.json index 07c3f139..92025ad5 100644 --- a/frontend/locales/pt-BR.json +++ b/frontend/locales/pt-BR.json @@ -1082,7 +1082,7 @@ "EnhancedDnsLeakTest": "Captura todos os resolvedores recursivos, com análise de ECS e DNSSEC", "RuleTestNote": "Verifique as regras do software de proxy", "CensorshipCheck": "Verifique em quais países um site está bloqueado", - "ServiceStatus": "Verifique a disponibilidade ao vivo de serviços conhecidos de IA e desenvolvimento, e se um incidente recente explica a falha que você está vendo", + "ServiceStatus": "Verifique a disponibilidade ao vivo de produtos conhecidos da internet, e se um incidente recente explica a falha que você está vendo", "Whois": "Pesquise informações de registro de domínio/IP/AS", "AsnProfile": "Veja o perfil completo de qualquer AS", "InvisibilityTest": "Verifique se você está usando proxy ou VPN", @@ -1760,7 +1760,7 @@ }, "serviceStatus": { "Title": "Status dos serviços", - "Note": "Quando um serviço não abre, talvez o problema não seja seu — o próprio serviço pode estar fora do ar. Atualmente, muitas pessoas usam produtos de IA, e quando o produto de IA não responde, elas não sabem se é problema delas ou do serviço. Esta seção mostra a disponibilidade ao vivo de serviços conhecidos de IA; expanda um cartão para ver o status de cada subserviço e incidentes recentes.", + "Note": "Quando um serviço não abre, talvez o problema não seja seu — o próprio serviço pode estar fora do ar. Esta seção mostra a disponibilidade ao vivo de produtos conhecidos da internet, de assistentes de IA a plataformas para desenvolvedores; expanda um cartão para ver o status de cada subserviço e incidentes recentes.", "Refresh": "Atualizar status dos serviços", "LastChecked": "Última verificação", "AllOperational": "Sistemas operando normalmente", diff --git a/frontend/locales/ru.json b/frontend/locales/ru.json index 2db81c35..e4571154 100644 --- a/frontend/locales/ru.json +++ b/frontend/locales/ru.json @@ -1082,7 +1082,7 @@ "EnhancedDnsLeakTest": "Обнаруживает все рекурсивные резолверы и анализирует ECS и DNSSEC", "RuleTestNote": "Проверка правил прокси-программы", "CensorshipCheck": "Проверка блокировки сайта в каких странах", - "ServiceStatus": "Проверка доступности известных сервисов AI и разработчиков, а также недавних инцидентов, которые могут объяснить сбой", + "ServiceStatus": "Проверка доступности известных интернет-продуктов, а также недавних инцидентов, которые могут объяснить сбой", "Whois": "Поиск регистрационных сведений о домене, IP или AS", "AsnProfile": "Полный профиль любой AS", "InvisibilityTest": "Проверка использования прокси или VPN", @@ -1760,7 +1760,7 @@ }, "serviceStatus": { "Title": "Состояние сервисов", - "Note": "Если сервис не открывается, проблема может быть не у вас — возможно, он сам недоступен. Люди активно используют продукты AI и, когда продукт AI не отвечает, не всегда понимают, где возник сбой. Здесь показана текущая доступность известных AI-сервисов. Разверните карточку, чтобы увидеть состояние подсервисов и недавние инциденты.", + "Note": "Если сервис не открывается, проблема может быть не у вас — возможно, он сам недоступен. Здесь показана текущая доступность известных интернет-продуктов — от AI-ассистентов до платформ для разработчиков. Разверните карточку, чтобы увидеть состояние подсервисов и недавние инциденты.", "Refresh": "Обновить состояние сервисов", "LastChecked": "Последняя проверка", "AllOperational": "Все системы работают", diff --git a/frontend/locales/zh-TW.json b/frontend/locales/zh-TW.json index 155eabbf..8f637da0 100644 --- a/frontend/locales/zh-TW.json +++ b/frontend/locales/zh-TW.json @@ -1082,7 +1082,7 @@ "EnhancedDnsLeakTest": "找出所有正在使用的遞迴 DNS 解析器,並分析 ECS 與 DNSSEC", "RuleTestNote": "檢查代理軟體的規則設定", "CensorshipCheck": "檢查一個網站在全球哪些國家被封鎖", - "ServiceStatus": "檢視知名 AI 與開發者服務的即時可用性,確認你遇到的中斷是不是對方的故障", + "ServiceStatus": "檢視知名網路產品的即時可用性,確認你遇到的中斷是不是對方的故障", "Whois": "對網域名稱、IP 或 AS 號碼進行 Whois 查詢", "AsnProfile": "查看任意 AS 的完整檔案", "InvisibilityTest": "猜猜看我是否知道你掛了代理", @@ -1760,7 +1760,7 @@ }, "serviceStatus": { "Title": "服務可用性", - "Note": "當你打不開某些服務的時候,可能並不是你的問題,而是這些服務出故障了。目前,人們大量使用 AI 產品,並在 AI 產品沒有回覆的時候,不確定是自己的問題還是服務的問題。本板塊展示一些知名 AI 服務的即時可用狀態,展開卡片可檢視各子服務的狀態與最近的事故。", + "Note": "當你打不開某些服務的時候,問題可能並不在你這邊,而是服務本身出了故障。本板塊展示知名網路產品(從 AI 助理到開發者平台)的即時可用狀態;展開卡片可檢視各子服務的狀態與最近的事故。", "Refresh": "重新整理服務狀態", "LastChecked": "最後檢查", "AllOperational": "所有系統正常", diff --git a/frontend/locales/zh.json b/frontend/locales/zh.json index c7f3aa45..a152e48d 100644 --- a/frontend/locales/zh.json +++ b/frontend/locales/zh.json @@ -1082,7 +1082,7 @@ "EnhancedDnsLeakTest": "捕获所有递归解析器,并分析 ECS 与 DNSSEC", "RuleTestNote": "检查代理软件的规则设置", "CensorshipCheck": "检查一个网站在全球哪些国家被封锁", - "ServiceStatus": "查看知名 AI 与开发者服务的实时可用性,确认你遇到的中断是不是对方的故障", + "ServiceStatus": "查看知名互联网产品的实时可用性,确认你遇到的中断是不是对方的故障", "Whois": "对域名、IP 或 AS 号进行 Whois 查询", "AsnProfile": "查看任意 AS 的完整档案", "InvisibilityTest": "猜猜看我是否知道你挂了代理", @@ -1760,7 +1760,7 @@ }, "serviceStatus": { "Title": "服务可用性", - "Note": "当你打不开某些服务的时候,可能并不是你的问题,而是这些服务出故障了。当前,人们大量使用 AI 产品,并在 AI 产品没有回复的时候,不确定是自己的问题还是服务的问题。本板块展示一些知名 AI 服务的实时可用状态,展开卡片可查看各子服务的状态与最近的事故。", + "Note": "当你打不开某些服务的时候,问题可能并不在你这边,而是服务本身出了故障。本板块展示知名互联网产品(从 AI 助手到开发者平台)的实时可用状态;展开卡片可查看各子服务的状态与最近的事故。", "Refresh": "刷新服务状态", "LastChecked": "最后检查", "AllOperational": "所有系统正常", diff --git a/server/service-status-providers.js b/server/service-status-providers.js index f4be9b4c..5a62aa98 100644 --- a/server/service-status-providers.js +++ b/server/service-status-providers.js @@ -63,6 +63,9 @@ export const STATUS_PROVIDERS = [ id: 'npm', name: 'npm', api: 'https://status.npmjs.org', page: 'https://status.npmjs.org', components: { rename: { mvm98gtxvb9b: 'Official Website' } }, }, + { id: 'perplexity', name: 'Perplexity', api: 'https://status.perplexity.com', page: 'https://status.perplexity.com', platform: 'incident.io' }, + { id: 'canva', name: 'Canva', api: 'https://www.canvastatus.com', page: 'https://www.canvastatus.com' }, + { id: 'docker', name: 'Docker', api: 'https://www.dockerstatus.com', page: 'https://www.dockerstatus.com', platform: 'incident.io' }, ]; // Whitelist used by requireValidProviderId() — the per-provider detail diff --git a/server/service-status-store.js b/server/service-status-store.js index 4fd78cb6..07a463b5 100644 --- a/server/service-status-store.js +++ b/server/service-status-store.js @@ -3,7 +3,7 @@ // Rather than fetch upstream status pages on each visitor request, a single // background timer refreshes all providers every REFRESH_INTERVAL and keeps // the latest normalized snapshot in memory. Request handlers just read the -// snapshot — upstream load is constant (17 providers × 2 endpoints / 5 min, +// snapshot — upstream load is constant (20 providers × 2 endpoints / 5 min, // +1 per incident.io page) no matter how much traffic the site gets. // // Mirrors the bootstrap-at-boot + start-scheduler shape of the MaxMind / CAIDA