feat(engines): frame uninstalled engines as headroom, not failures (#1531)
The catalogue's group captions read "Available" / "Not installed", which renders a fresh install (3 of 16 engines ready) as a mostly-broken app. The sections now say "Ready to use" / "Add more engines", and the unavailable-row details toggle asks "What it needs" instead of "Why unavailable?" — same information, framed as headroom to unlock. Council outcome (first-run seat): unavailable engines must read as more you could install, never as brokenness. Keys added to all 21 locales. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
9832fbd693
commit
f81ace68d1
@@ -11,6 +11,7 @@ the frozen-backend fallback mirror it for their toolchains.
|
||||
**Highlights**
|
||||
|
||||
- Switch TTS, ASR and LLM engines from the status bar or workspace, with ready-only choices, memory status and environment-pin protection. (#1530)
|
||||
- The engine catalogue frames uninstalled engines as "Add more engines" with a "What it needs" explainer, instead of a wall of unavailable rows. (#1531)
|
||||
- Docker/server mode now requires an API key for remote changes and side-effectful admin checks across workers, engines, media tools, MCP, pronunciation, diagnostics, and LLM providers. (#1525)
|
||||
- The unified Support page no longer throws while opening a section in browsers or test environments without `scrollIntoView`. (#1525)
|
||||
- A faster, cleaner Dub workspace for multilingual production (#1489)
|
||||
|
||||
@@ -815,7 +815,11 @@ export default function EngineCompatibilityMatrix({
|
||||
MUTED,
|
||||
)}
|
||||
>
|
||||
{b.available ? t('engines.available') : t('engines.notInstalled')}
|
||||
{/* Section framing, not status: "ready to use" vs "add
|
||||
more" frames the grey majority as headroom to unlock
|
||||
rather than a mostly-broken app (13 of 16 rows read as
|
||||
failures under a plain "Not installed" caption). */}
|
||||
{b.available ? t('engines.sectionReady') : t('engines.sectionMore')}
|
||||
</div>
|
||||
)}
|
||||
<div
|
||||
|
||||
@@ -677,7 +677,9 @@
|
||||
"activeEngine": "نشط {{family}}: {{engine}}",
|
||||
"engineCompatLabel": "{{family}} توافق المحرك",
|
||||
"active": "نشط",
|
||||
"whyUnavailable": "لماذا غير متوفر؟",
|
||||
"whyUnavailable": "ما الذي يحتاجه",
|
||||
"sectionReady": "جاهزة للاستخدام",
|
||||
"sectionMore": "أضف المزيد من المحركات",
|
||||
"lastError": "الخطأ الأخير: {{error}}",
|
||||
"installedAndReady": "مثبتة وجاهزة",
|
||||
"notInstalled": "غير مثبت",
|
||||
|
||||
@@ -677,7 +677,9 @@
|
||||
"activeEngine": "Aktiv {{family}}: {{engine}}",
|
||||
"engineCompatLabel": "{{family}} Motorkompatibilität",
|
||||
"active": "aktiv",
|
||||
"whyUnavailable": "Warum nicht verfügbar?",
|
||||
"whyUnavailable": "Was benötigt wird",
|
||||
"sectionReady": "Einsatzbereit",
|
||||
"sectionMore": "Weitere Motoren hinzufügen",
|
||||
"lastError": "Letzter Fehler: {{error}}",
|
||||
"installedAndReady": "Installiert und fertig",
|
||||
"notInstalled": "Nicht installiert",
|
||||
|
||||
@@ -1971,7 +1971,9 @@
|
||||
"activeEngine": "Active {{family}}: {{engine}}",
|
||||
"engineCompatLabel": "{{family}} engine compatibility",
|
||||
"active": "active",
|
||||
"whyUnavailable": "Why unavailable?",
|
||||
"whyUnavailable": "What it needs",
|
||||
"sectionReady": "Ready to use",
|
||||
"sectionMore": "Add more engines",
|
||||
"lastError": "Last error: {{error}}",
|
||||
"installedAndReady": "Installed and ready",
|
||||
"notInstalled": "Not installed",
|
||||
|
||||
@@ -677,7 +677,9 @@
|
||||
"activeEngine": "Activo {{family}}: {{engine}}",
|
||||
"engineCompatLabel": "{{family}} compatibilidad del motor",
|
||||
"active": "activo",
|
||||
"whyUnavailable": "¿Por qué no está disponible?",
|
||||
"whyUnavailable": "Qué necesita",
|
||||
"sectionReady": "Listos para usar",
|
||||
"sectionMore": "Añadir más motores",
|
||||
"lastError": "Último error: {{error}}",
|
||||
"installedAndReady": "Instalado y listo",
|
||||
"notInstalled": "No instalado",
|
||||
|
||||
@@ -677,7 +677,9 @@
|
||||
"activeEngine": "Actif {{family}} : {{engine}}",
|
||||
"engineCompatLabel": "Compatibilité moteur {{family}}",
|
||||
"active": "actif",
|
||||
"whyUnavailable": "Pourquoi indisponible ?",
|
||||
"whyUnavailable": "Ce qu'il lui faut",
|
||||
"sectionReady": "Prêts à l'emploi",
|
||||
"sectionMore": "Ajouter d'autres moteurs",
|
||||
"lastError": "Dernière erreur : {{error}}",
|
||||
"installedAndReady": "Installé et prêt",
|
||||
"notInstalled": "Non installé",
|
||||
|
||||
@@ -677,7 +677,9 @@
|
||||
"activeEngine": "सक्रिय {{family}}: {{engine}}",
|
||||
"engineCompatLabel": "{{family}} इंजन अनुकूलता",
|
||||
"active": "सक्रिय",
|
||||
"whyUnavailable": "अनुपलब्ध क्यों?",
|
||||
"whyUnavailable": "इसे क्या चाहिए",
|
||||
"sectionReady": "उपयोग के लिए तैयार",
|
||||
"sectionMore": "और इंजन जोड़ें",
|
||||
"lastError": "अंतिम त्रुटि: {{error}}",
|
||||
"installedAndReady": "स्थापित और तैयार",
|
||||
"notInstalled": "स्थापित नहीं",
|
||||
|
||||
@@ -677,7 +677,9 @@
|
||||
"activeEngine": "Aktif {{family}}: {{engine}}",
|
||||
"engineCompatLabel": "{{family}} kompatibilitas mesin",
|
||||
"active": "aktif",
|
||||
"whyUnavailable": "Mengapa tidak tersedia?",
|
||||
"whyUnavailable": "Apa yang dibutuhkan",
|
||||
"sectionReady": "Siap digunakan",
|
||||
"sectionMore": "Tambahkan mesin lainnya",
|
||||
"lastError": "Kesalahan terakhir: {{error}}",
|
||||
"installedAndReady": "Terpasang dan siap",
|
||||
"notInstalled": "Tidak dipasang",
|
||||
|
||||
@@ -677,7 +677,9 @@
|
||||
"activeEngine": "Attivo {{family}}: {{engine}}",
|
||||
"engineCompatLabel": "{{family}} compatibilità motore",
|
||||
"active": "attivo",
|
||||
"whyUnavailable": "Perché non disponibile?",
|
||||
"whyUnavailable": "Cosa serve",
|
||||
"sectionReady": "Pronti all'uso",
|
||||
"sectionMore": "Aggiungi altri motori",
|
||||
"lastError": "Ultimo errore: {{error}}",
|
||||
"installedAndReady": "Installato e pronto",
|
||||
"notInstalled": "Non installato",
|
||||
|
||||
@@ -677,7 +677,9 @@
|
||||
"activeEngine": "アクティブ {{family}}: {{engine}}",
|
||||
"engineCompatLabel": "{{family}} エンジンの互換性",
|
||||
"active": "アクティブな",
|
||||
"whyUnavailable": "なぜ利用できないのでしょうか?",
|
||||
"whyUnavailable": "必要なもの",
|
||||
"sectionReady": "すぐに使える",
|
||||
"sectionMore": "エンジンを追加",
|
||||
"lastError": "最後のエラー: {{error}}",
|
||||
"installedAndReady": "インストールされて準備完了",
|
||||
"notInstalled": "インストールされていません",
|
||||
|
||||
@@ -677,7 +677,9 @@
|
||||
"activeEngine": "활성 {{family}}: {{engine}}",
|
||||
"engineCompatLabel": "{{family}} 엔진 호환성",
|
||||
"active": "활성",
|
||||
"whyUnavailable": "왜 사용할 수 없나요?",
|
||||
"whyUnavailable": "필요한 것",
|
||||
"sectionReady": "바로 사용 가능",
|
||||
"sectionMore": "엔진 추가",
|
||||
"lastError": "마지막 오류: {{error}}",
|
||||
"installedAndReady": "설치 및 준비 완료",
|
||||
"notInstalled": "설치되지 않음",
|
||||
|
||||
@@ -677,7 +677,9 @@
|
||||
"activeEngine": "Actief {{family}}: {{engine}}",
|
||||
"engineCompatLabel": "{{family}} motorcompatibiliteit",
|
||||
"active": "actief",
|
||||
"whyUnavailable": "Waarom niet beschikbaar?",
|
||||
"whyUnavailable": "Wat het nodig heeft",
|
||||
"sectionReady": "Klaar voor gebruik",
|
||||
"sectionMore": "Meer motoren toevoegen",
|
||||
"lastError": "Laatste fout: {{error}}",
|
||||
"installedAndReady": "Geïnstalleerd en klaar",
|
||||
"notInstalled": "Niet geïnstalleerd",
|
||||
|
||||
@@ -677,7 +677,9 @@
|
||||
"activeEngine": "Aktywny {{family}}: {{engine}}",
|
||||
"engineCompatLabel": "{{family}} kompatybilność silnika",
|
||||
"active": "aktywny",
|
||||
"whyUnavailable": "Dlaczego niedostępne?",
|
||||
"whyUnavailable": "Czego potrzebuje",
|
||||
"sectionReady": "Gotowe do użycia",
|
||||
"sectionMore": "Dodaj więcej silników",
|
||||
"lastError": "Ostatni błąd: {{error}}",
|
||||
"installedAndReady": "Zainstalowany i gotowy",
|
||||
"notInstalled": "Nie zainstalowano",
|
||||
|
||||
@@ -677,7 +677,9 @@
|
||||
"activeEngine": "Ativo {{family}}: {{engine}}",
|
||||
"engineCompatLabel": "{{family}} compatibilidade do motor",
|
||||
"active": "ativo",
|
||||
"whyUnavailable": "Por que indisponível?",
|
||||
"whyUnavailable": "O que falta",
|
||||
"sectionReady": "Prontos para usar",
|
||||
"sectionMore": "Adicionar mais motores",
|
||||
"lastError": "Último erro: {{error}}",
|
||||
"installedAndReady": "Instalado e pronto",
|
||||
"notInstalled": "Não instalado",
|
||||
|
||||
@@ -677,7 +677,9 @@
|
||||
"activeEngine": "Активен {{family}}: {{engine}}",
|
||||
"engineCompatLabel": "Совместимость с двигателем {{family}}",
|
||||
"active": "активный",
|
||||
"whyUnavailable": "Почему недоступен?",
|
||||
"whyUnavailable": "Что нужно",
|
||||
"sectionReady": "Готовы к использованию",
|
||||
"sectionMore": "Добавить больше двигателей",
|
||||
"lastError": "Последняя ошибка: {{error}}",
|
||||
"installedAndReady": "Установлен и готов",
|
||||
"notInstalled": "Не установлено",
|
||||
|
||||
@@ -677,7 +677,9 @@
|
||||
"activeEngine": "Aktiv {{family}}: {{engine}}",
|
||||
"engineCompatLabel": "{{family}} motorkompatibilitet",
|
||||
"active": "aktiv",
|
||||
"whyUnavailable": "Varför inte tillgänglig?",
|
||||
"whyUnavailable": "Vad som krävs",
|
||||
"sectionReady": "Redo att använda",
|
||||
"sectionMore": "Lägg till fler motorer",
|
||||
"lastError": "Senaste fel: {{error}}",
|
||||
"installedAndReady": "Installerad och klar",
|
||||
"notInstalled": "Ej installerad",
|
||||
|
||||
@@ -677,7 +677,9 @@
|
||||
"activeEngine": "ใช้งาน {{family}}: {{engine}}",
|
||||
"engineCompatLabel": "{{family}} ความเข้ากันได้ของเครื่องยนต์",
|
||||
"active": "ใช้งานอยู่",
|
||||
"whyUnavailable": "ทำไมไม่พร้อมใช้งาน?",
|
||||
"whyUnavailable": "สิ่งที่ต้องมี",
|
||||
"sectionReady": "พร้อมใช้งาน",
|
||||
"sectionMore": "เพิ่มเครื่องยนต์อื่น ๆ",
|
||||
"lastError": "ข้อผิดพลาดครั้งล่าสุด: {{error}}",
|
||||
"installedAndReady": "ติดตั้งแล้วพร้อม",
|
||||
"notInstalled": "ไม่ได้ติดตั้ง",
|
||||
|
||||
@@ -677,7 +677,9 @@
|
||||
"activeEngine": "Etkin {{family}}: {{engine}}",
|
||||
"engineCompatLabel": "{{family}} motor uyumluluğu",
|
||||
"active": "aktif",
|
||||
"whyUnavailable": "Neden kullanılamıyor?",
|
||||
"whyUnavailable": "Neye ihtiyacı var",
|
||||
"sectionReady": "Kullanıma hazır",
|
||||
"sectionMore": "Daha fazla motor ekle",
|
||||
"lastError": "Son hata: {{error}}",
|
||||
"installedAndReady": "Kurulu ve hazır",
|
||||
"notInstalled": "Kurulu değil",
|
||||
|
||||
@@ -677,7 +677,9 @@
|
||||
"activeEngine": "Активний {{family}}: {{engine}}",
|
||||
"engineCompatLabel": "{{family}} сумісність з двигуном",
|
||||
"active": "активний",
|
||||
"whyUnavailable": "Чому недоступний?",
|
||||
"whyUnavailable": "Що потрібно",
|
||||
"sectionReady": "Готові до використання",
|
||||
"sectionMore": "Додати більше двигунів",
|
||||
"lastError": "Остання помилка: {{error}}",
|
||||
"installedAndReady": "Встановлено і готово",
|
||||
"notInstalled": "Не встановлено",
|
||||
|
||||
@@ -677,7 +677,9 @@
|
||||
"activeEngine": "Đang hoạt động {{family}}: {{engine}}",
|
||||
"engineCompatLabel": "{{family}} khả năng tương thích động cơ",
|
||||
"active": "hoạt động",
|
||||
"whyUnavailable": "Tại sao không có sẵn?",
|
||||
"whyUnavailable": "Cần những gì",
|
||||
"sectionReady": "Sẵn sàng sử dụng",
|
||||
"sectionMore": "Thêm động cơ khác",
|
||||
"lastError": "Lỗi cuối cùng: {{error}}",
|
||||
"installedAndReady": "Đã cài đặt và sẵn sàng",
|
||||
"notInstalled": "Chưa được cài đặt",
|
||||
|
||||
@@ -634,7 +634,9 @@
|
||||
"activeEngine": "当前 {{family}}:{{engine}}",
|
||||
"engineCompatLabel": "{{family}} 引擎兼容性",
|
||||
"active": "当前",
|
||||
"whyUnavailable": "为什么不可用?",
|
||||
"whyUnavailable": "所需条件",
|
||||
"sectionReady": "即可使用",
|
||||
"sectionMore": "添加更多引擎",
|
||||
"lastError": "最后一个错误:{{error}}",
|
||||
"installedAndReady": "安装并准备就绪",
|
||||
"notInstalled": "未安装",
|
||||
|
||||
@@ -677,7 +677,9 @@
|
||||
"activeEngine": "活動 {{family}}:{{engine}}",
|
||||
"engineCompatLabel": "{{family}} 引擎相容性",
|
||||
"active": "活躍的",
|
||||
"whyUnavailable": "為什麼不可用?",
|
||||
"whyUnavailable": "所需條件",
|
||||
"sectionReady": "隨時可用",
|
||||
"sectionMore": "新增更多引擎",
|
||||
"lastError": "最後一個錯誤:{{error}}",
|
||||
"installedAndReady": "安裝並準備就緒",
|
||||
"notInstalled": "未安裝",
|
||||
|
||||
Reference in New Issue
Block a user