Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .autopilot/runs/fleet-overview-filters.jsonl
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
{"type": "plan", "feature_id": "fleet-overview-filters", "goal": "Make the Remediation Fleet Overview default to actionable repos: two independent, combinable toggle filters \u2014 'only repos with open PRs' (openPrCount > 0) and 'only eligible repos' (eligible === true), both ON by default \u2014 each switchable to show all, with a distinct empty state when the filters hide every row.", "trunk": "main", "base": "develop", "autonomy": "pr_ci", "phases": [{"id": 0, "goal": "Default-actionable Fleet Overview: two combinable toggle filters (both ON by default) + a distinct filtered-empty state, with vitest specs and EN i18n.", "definition_of_done": ["cmd: make test-frontend passes, incl. new FleetOverview.test.tsx specs: default view hides a 0-PR repo AND an ineligible repo; toggling onlyWithPrs OFF reveals the 0-PR repo; toggling onlyEligible OFF reveals the ineligible repo; with both filters active and all rows excluded, the filtered-empty state renders; clearing filters restores rows.", "cmd: make lint-frontend passes; make format-check passes; pnpm --dir frontend type-check passes.", "grep: onlyWithPrs in frontend/src/components/remediation/FleetOverview.tsx", "grep: fleet.filters in frontend/public/locales/en/remediation.json", "grep:absent: TODO|FIXME in frontend/src/components/remediation/FleetOverview.tsx", "prose: no backend/API change \u2014 the filtering is purely client-side over the existing useFleetRemediation() rows; the loading/error/zero-repos branches are unchanged."]}, {"id": 1, "goal": "Internationalize the new fleet-filter keys across all 27 locales and keep the generated types in sync.", "definition_of_done": ["cmd: node scripts/i18n-coverage-report.js --check-missing reports no missing keys.", "cmd: node scripts/i18n-coverage-report.js --check --min-coverage 95 passes.", "cmd: make test-frontend passes (incl. the i18n translation-keys suite).", "cmd: make lint-frontend passes; make format-check passes.", "prose: no raw i18n keys render; interpolation-variable audit across locales is clean; brand/proper nouns are not translated; frontend/src/i18n/types.ts is regenerated in sync (CI 'Verify types are up-to-date' would pass) and no spaced locale directory exists."]}], "at": "2026-07-01T12:46:12-07:00"}
{"phase": 0, "mode": "pr_ci", "verdict": "PASSED", "skipped": [], "failed": [], "ci_attempts": 0, "pr": null, "accelerators": ["direct", "adversarial-review"], "marker": null, "at": "2026-07-01T13:00:04-07:00", "summary": "Fleet Overview default-actionable filters: two combinable toggles (onlyWithPrs/onlyEligible) both default ON over client-side filtered rows; distinct filtered-empty state w/ Show-all escape + always-visible toggles; a11y group role + aria-live. 13 FleetOverview specs (each filter revealed independently, round-trip, single-toggle escape, revealed-row preview), full suite 924 pass; lint/format/type clean. EN i18n only (fleet.filters.*); 27-locale translate is phase 1. Reviews: no correctness bugs; workflow's both-ON-default + i18n-fallback findings are WAD/phase-1-deferred per spec."}
7 changes: 7 additions & 0 deletions frontend/public/locales/ar/remediation.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@
"eligible": "صالح",
"empty": "لم يتم العثور على أي مستودعات.",
"error": "فشل تحميل نظرة عامة على الأسطول.",
"filters": {
"clear": "عرض جميع المستودعات",
"groupLabel": "مرشحات المستودع",
"noMatch": "لا توجد مستودعات تتطابق مع عوامل التصفية الحالية.",
"onlyEligible": "المستودعات المؤهلة فقط",
"onlyWithPrs": "المستودعات التي تحتوي على طلبات سحب مفتوحة فقط"
},
"notEligible": "غير مؤهل",
"preview": "معاينة",
"tableLabel": "حالة معالجة المستودع",
Expand Down
7 changes: 7 additions & 0 deletions frontend/public/locales/cs/remediation.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@
"eligible": "Oprávněný",
"empty": "Nenalezeny žádné repozitáře.",
"error": "Nepodařilo se načíst přehled flotily.",
"filters": {
"clear": "Zobrazit všechny repozitáře",
"groupLabel": "Filtry repozitáře",
"noMatch": "Aktuálním filtrům neodpovídají žádné repozitáře.",
"onlyEligible": "Pouze způsobilé repozitáře",
"onlyWithPrs": "Pouze repozitáře s otevřenými pull requesty"
},
"notEligible": "Nezpůsobilé",
"preview": "Náhled",
"tableLabel": "Stav sanace repozitáře",
Expand Down
7 changes: 7 additions & 0 deletions frontend/public/locales/da/remediation.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@
"eligible": "Berettiget",
"empty": "Ingen lagre fundet.",
"error": "Flådeoversigten kunne ikke indlæses.",
"filters": {
"clear": "Vis alle arkiver",
"groupLabel": "Filtre til arkivet",
"noMatch": "Ingen arkiver matcher de nuværende filtre.",
"onlyEligible": "Kun berettigede lagre",
"onlyWithPrs": "Kun arkiver med åbne pull-anmodninger"
},
"notEligible": "Ikke berettiget",
"preview": "Forhåndsvisning",
"tableLabel": "Status for afhjælpning af arkivet",
Expand Down
7 changes: 7 additions & 0 deletions frontend/public/locales/de/remediation.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@
"eligible": "Berechtigt",
"empty": "Keine Repositories gefunden.",
"error": "Die Flottenübersicht konnte nicht geladen werden.",
"filters": {
"clear": "Alle Repositories anzeigen",
"groupLabel": "Repository-Filter",
"noMatch": "Es gibt keine Repositories, die den aktuellen Filtern entsprechen.",
"onlyEligible": "Nur berechtigte Repositorien",
"onlyWithPrs": "Nur Repositories mit offenen Pull-Anfragen"
},
"notEligible": "Nicht berechtigt",
"preview": "Vorschau",
"tableLabel": "Repository-Sanierungsstatus",
Expand Down
7 changes: 7 additions & 0 deletions frontend/public/locales/en-GB/remediation.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@
"eligible": "Eligible",
"empty": "No repositories found.",
"error": "Failed to load the fleet overview.",
"filters": {
"clear": "Show all repositories",
"groupLabel": "Repository filters",
"noMatch": "No repositories match the current filters.",
"onlyEligible": "Only eligible repositories",
"onlyWithPrs": "Only repositories with open pull requests"
},
"notEligible": "Not eligible",
"preview": "Preview",
"tableLabel": "Repository remediation status",
Expand Down
7 changes: 7 additions & 0 deletions frontend/public/locales/en/remediation.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,13 @@
"policyState": "Policy",
"airGapped": "Air-gap",
"actions": "Actions"
},
"filters": {
"groupLabel": "Repository filters",
"onlyWithPrs": "Only repositories with open pull requests",
"onlyEligible": "Only eligible repositories",
"noMatch": "No repositories match the current filters.",
"clear": "Show all repositories"
}
},
"policyState": {
Expand Down
7 changes: 7 additions & 0 deletions frontend/public/locales/es-ES/remediation.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@
"eligible": "Elegible",
"empty": "No se encontraron repositorios.",
"error": "No se pudo cargar la descripción general de la flota.",
"filters": {
"clear": "Mostrar todos los repositorios",
"groupLabel": "Filtros del repositorio",
"noMatch": "No se encontraron repositorios que coincidan con los filtros actuales.",
"onlyEligible": "Solo repositorios elegibles",
"onlyWithPrs": "Solo repositorios con solicitudes de extracción abiertas"
},
"notEligible": "No elegible",
"preview": "Avance",
"tableLabel": "Estado de remediación del repositorio",
Expand Down
7 changes: 7 additions & 0 deletions frontend/public/locales/es-MX/remediation.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@
"eligible": "Elegible",
"empty": "No se encontraron repositorios.",
"error": "No se pudo cargar la descripción general de la flota.",
"filters": {
"clear": "Mostrar todos los repositorios",
"groupLabel": "Filtros del repositorio",
"noMatch": "No se encontraron repositorios que coincidan con los filtros actuales.",
"onlyEligible": "Solo repositorios elegibles",
"onlyWithPrs": "Solo repositorios con solicitudes de extracción abiertas"
},
"notEligible": "No elegible",
"preview": "Avance",
"tableLabel": "Estado de remediación del repositorio",
Expand Down
7 changes: 7 additions & 0 deletions frontend/public/locales/fi/remediation.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@
"eligible": "Tukikelpoinen",
"empty": "Ei löytynyt arkistoja.",
"error": "Kaluston yleiskatsauksen lataaminen epäonnistui.",
"filters": {
"clear": "Näytä kaikki tietovarastot",
"groupLabel": "Tietovaraston suodattimet",
"noMatch": "Yksikään arkisto ei vastaa nykyisiä suodattimia.",
"onlyEligible": "Vain kelvolliset arkistot",
"onlyWithPrs": "Vain avoimia pull-pyyntöjä sisältävät tietovarastot"
},
"notEligible": "Ei kelvollinen",
"preview": "Esikatselu",
"tableLabel": "Arkiston kunnostuksen tila",
Expand Down
7 changes: 7 additions & 0 deletions frontend/public/locales/fr/remediation.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@
"eligible": "Admissible",
"empty": "Aucun dépôt trouvé.",
"error": "Impossible de charger l'aperçu de la flotte.",
"filters": {
"clear": "Afficher tous les dépôts",
"groupLabel": "Filtres de dépôt",
"noMatch": "Aucun dépôt ne correspond aux filtres actuels.",
"onlyEligible": "Seuls les dépôts éligibles",
"onlyWithPrs": "Seuls les dépôts avec des demandes de fusion ouvertes"
},
"notEligible": "Non admissible",
"preview": "Aperçu",
"tableLabel": "État de la correction du référentiel",
Expand Down
7 changes: 7 additions & 0 deletions frontend/public/locales/he/remediation.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@
"eligible": "זכאי",
"empty": "לא נמצאו מאגרים.",
"error": "טעינת סקירת הצי נכשלה.",
"filters": {
"clear": "הצג את כל המאגרים",
"groupLabel": "מסנני מאגר",
"noMatch": "אין מאגרים התואמים את המסננים הנוכחיים.",
"onlyEligible": "רק מאגרים זכאים",
"onlyWithPrs": "רק מאגרים עם בקשות משיכה פתוחות"
},
"notEligible": "לא זכאי",
"preview": "תצוגה מקדימה",
"tableLabel": "סטטוס תיקון המאגר",
Expand Down
7 changes: 7 additions & 0 deletions frontend/public/locales/hi/remediation.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@
"eligible": "योग्य",
"empty": "कोई रिपॉजिटरी नहीं मिली।",
"error": "बेड़े का अवलोकन लोड करने में विफल।",
"filters": {
"clear": "सभी रिपॉजिटरी दिखाएँ",
"groupLabel": "रिपॉजिटरी फ़िल्टर",
"noMatch": "वर्तमान फ़िल्टरों से कोई रिपॉजिटरी मेल नहीं खाती।",
"onlyEligible": "केवल पात्र रिपॉजिटरी",
"onlyWithPrs": "केवल ओपन पुल रिक्वेस्ट वाले रिपॉजिटरी"
},
"notEligible": "पात्र नहीं है",
"preview": "पूर्व दर्शन",
"tableLabel": "रिपॉजिटरी सुधार स्थिति",
Expand Down
7 changes: 7 additions & 0 deletions frontend/public/locales/it/remediation.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@
"eligible": "Idoneo",
"empty": "Nessun repository trovato.",
"error": "Impossibile caricare la panoramica della flotta.",
"filters": {
"clear": "Mostra tutti i repository",
"groupLabel": "Filtri del repository",
"noMatch": "Nessun repository corrisponde ai filtri correnti.",
"onlyEligible": "Solo repository idonei",
"onlyWithPrs": "Solo repository con richieste di pull aperte"
},
"notEligible": "Non idoneo",
"preview": "Anteprima",
"tableLabel": "Stato di bonifica del repository",
Expand Down
7 changes: 7 additions & 0 deletions frontend/public/locales/ja/remediation.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@
"eligible": "適格",
"empty": "リポジトリが見つかりませんでした。",
"error": "艦隊概要の読み込みに失敗しました。",
"filters": {
"clear": "すべてのリポジトリを表示",
"groupLabel": "リポジトリフィルター",
"noMatch": "現在のフィルター条件に一致するリポジトリはありません。",
"onlyEligible": "対象となるリポジトリのみ",
"onlyWithPrs": "オープンなプルリクエストがあるリポジトリのみ"
},
"notEligible": "対象外",
"preview": "プレビュー",
"tableLabel": "リポジトリ修復状況",
Expand Down
7 changes: 7 additions & 0 deletions frontend/public/locales/ko/remediation.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@
"eligible": "자격이 있는",
"empty": "저장소를 찾을 수 없습니다.",
"error": "함대 개요를 불러오는 데 실패했습니다.",
"filters": {
"clear": "모든 저장소를 표시합니다",
"groupLabel": "저장소 필터",
"noMatch": "현재 필터와 일치하는 저장소가 없습니다.",
"onlyEligible": "자격 요건을 충족하는 저장소만 해당됩니다.",
"onlyWithPrs": "풀 리퀘스트가 열려 있는 저장소만 표시됩니다."
},
"notEligible": "자격 없음",
"preview": "시사",
"tableLabel": "저장소 복구 상태",
Expand Down
7 changes: 7 additions & 0 deletions frontend/public/locales/nl/remediation.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@
"eligible": "In aanmerking komend",
"empty": "Geen repositories gevonden.",
"error": "Het laden van het vlootoverzicht is mislukt.",
"filters": {
"clear": "Toon alle repositories",
"groupLabel": "Repositoryfilters",
"noMatch": "Er zijn geen repositories gevonden die aan de huidige filters voldoen.",
"onlyEligible": "Alleen in aanmerking komende repositories",
"onlyWithPrs": "Alleen repositories met openstaande pull requests"
},
"notEligible": "Niet in aanmerking komend",
"preview": "Voorbeeld",
"tableLabel": "Status van de herstelwerkzaamheden aan de repository",
Expand Down
7 changes: 7 additions & 0 deletions frontend/public/locales/no/remediation.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@
"eligible": "Berettiget",
"empty": "Ingen arkiver funnet.",
"error": "Kunne ikke laste inn flåteoversikten.",
"filters": {
"clear": "Vis alle arkiver",
"groupLabel": "Filtre for arkivet",
"noMatch": "Ingen arkiver samsvarer med de gjeldende filtrene.",
"onlyEligible": "Kun kvalifiserte arkiver",
"onlyWithPrs": "Bare arkiver med åpne pull-forespørsler"
},
"notEligible": "Ikke kvalifisert",
"preview": "Forhåndsvisning",
"tableLabel": "Status for utbedring av repositoriet",
Expand Down
7 changes: 7 additions & 0 deletions frontend/public/locales/pl/remediation.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@
"eligible": "Odpowiedni",
"empty": "Nie znaleziono repozytoriów.",
"error": "Nie udało się załadować przeglądu floty.",
"filters": {
"clear": "Pokaż wszystkie repozytoria",
"groupLabel": "Filtry repozytorium",
"noMatch": "Żadne repozytoria nie spełniają wymagań bieżących filtrów.",
"onlyEligible": "Tylko kwalifikujące się repozytoria",
"onlyWithPrs": "Tylko repozytoria z otwartymi prośbami o ściągnięcie"
},
"notEligible": "Nie kwalifikuje się",
"preview": "Zapowiedź",
"tableLabel": "Status naprawy repozytorium",
Expand Down
7 changes: 7 additions & 0 deletions frontend/public/locales/pt-BR/remediation.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@
"eligible": "Elegível",
"empty": "Nenhum repositório encontrado.",
"error": "Falha ao carregar a visão geral da frota.",
"filters": {
"clear": "Mostrar todos os repositórios",
"groupLabel": "Filtros de repositório",
"noMatch": "Nenhum repositório corresponde aos filtros atuais.",
"onlyEligible": "Somente repositórios elegíveis",
"onlyWithPrs": "Apenas repositórios com solicitações de pull abertas"
},
"notEligible": "Não elegível",
"preview": "Pré-visualização",
"tableLabel": "Status de remediação do repositório",
Expand Down
7 changes: 7 additions & 0 deletions frontend/public/locales/ru/remediation.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@
"eligible": "Имеющий право",
"empty": "Репозитории не найдены.",
"error": "Не удалось загрузить обзор флота.",
"filters": {
"clear": "Показать все репозитории",
"groupLabel": "Фильтры репозитория",
"noMatch": "Ни один репозиторий не соответствует текущим фильтрам.",
"onlyEligible": "Только подходящие репозитории",
"onlyWithPrs": "Только репозитории с открытыми запросами на слияние (pull requests)."
},
"notEligible": "Не подходит",
"preview": "Предварительный просмотр",
"tableLabel": "Статус восстановления репозитория",
Expand Down
7 changes: 7 additions & 0 deletions frontend/public/locales/sr/remediation.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@
"eligible": "Испуњава услове",
"empty": "Није пронађено ниједно спремиште.",
"error": "Учитавање прегледа возног парка није успело.",
"filters": {
"clear": "Прикажи све репозиторијуме",
"groupLabel": "Филтери спремишта",
"noMatch": "Ниједан репозиторијум не одговара тренутним филтерима.",
"onlyEligible": "Само подобна спремишта",
"onlyWithPrs": "Само репозиторијуми са отвореним захтевима за повлачење (pull requests)"
},
"notEligible": "Не испуњава услове",
"preview": "Преглед",
"tableLabel": "Статус санације спремишта",
Expand Down
7 changes: 7 additions & 0 deletions frontend/public/locales/sv/remediation.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@
"eligible": "Berättigad",
"empty": "Inga arkiv hittades.",
"error": "Det gick inte att läsa in översikten över flottan.",
"filters": {
"clear": "Visa alla arkiv",
"groupLabel": "Filter för arkivet",
"noMatch": "Inga arkiv matchar de aktuella filtren.",
"onlyEligible": "Endast behöriga arkiv",
"onlyWithPrs": "Endast arkiv med öppna pull requests"
},
"notEligible": "Inte berättigad",
"preview": "Förhandsvisning",
"tableLabel": "Status för sanering av arkivet",
Expand Down
7 changes: 7 additions & 0 deletions frontend/public/locales/th/remediation.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@
"eligible": "มีสิทธิ์",
"empty": "ไม่พบแหล่งเก็บข้อมูลใดๆ",
"error": "ไม่สามารถโหลดภาพรวมของฝูงบินได้",
"filters": {
"clear": "แสดงที่เก็บข้อมูลทั้งหมด",
"groupLabel": "ตัวกรองคลังข้อมูล",
"noMatch": "ไม่มีแหล่งเก็บข้อมูลใดตรงกับตัวกรองปัจจุบัน",
"onlyEligible": "เฉพาะแหล่งเก็บข้อมูลที่มีคุณสมบัติเหมาะสมเท่านั้น",
"onlyWithPrs": "เฉพาะ repository ที่มี pull request เปิดอยู่เท่านั้น"
},
"notEligible": "ไม่มีสิทธิ์",
"preview": "ตัวอย่าง",
"tableLabel": "สถานะการแก้ไขคลังเก็บข้อมูล",
Expand Down
7 changes: 7 additions & 0 deletions frontend/public/locales/tr/remediation.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@
"eligible": "Hak sahibi",
"empty": "Hiçbir depo bulunamadı.",
"error": "Filo genel görünümü yüklenemedi.",
"filters": {
"clear": "Tüm depoları göster",
"groupLabel": "Depo filtreleri",
"noMatch": "Mevcut filtrelere uyan hiçbir depo bulunamadı.",
"onlyEligible": "Yalnızca uygun depolar",
"onlyWithPrs": "Yalnızca açık çekme istekleri olan depolar"
},
"notEligible": "Uygun değil",
"preview": "Önizleme",
"tableLabel": "Depo düzeltme durumu",
Expand Down
7 changes: 7 additions & 0 deletions frontend/public/locales/vi/remediation.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@
"eligible": "Đạt chuẩn",
"empty": "Không tìm thấy kho lưu trữ nào.",
"error": "Không thể tải thông tin tổng quan về đội xe.",
"filters": {
"clear": "Hiển thị tất cả kho lưu trữ",
"groupLabel": "Bộ lọc kho lưu trữ",
"noMatch": "Không có kho lưu trữ nào phù hợp với các bộ lọc hiện tại.",
"onlyEligible": "Chỉ các kho lưu trữ đủ điều kiện",
"onlyWithPrs": "Chỉ những kho lưu trữ có yêu cầu kéo (pull request) đang mở mới được chấp nhận."
},
"notEligible": "Không đủ điều kiện",
"preview": "Xem trước",
"tableLabel": "Trạng thái khắc phục kho lưu trữ",
Expand Down
Loading