feat: polish toolbar, live online count via SSE + emulator 3-state
- Add emulator status 3-state (unknown/green/red) with tooltip - Extract shared primary button style/constants for DRY toolbar code - Add emulatorUnknown translations to all 25 locales - Bump Next.js to 16.3.4 - Fix RCON delivery timeout caching (15s TTL / shared across clients) - Who's-online tooltip throttled to max 1 request per 30s
This commit is contained in:
1 parent
67b67798b9
commit
a30e4af32e
28 files changed
+115
-79
No files matched your search
@@ -400,17 +400,28 @@ export function ClientView({
|
||||
boxShadow: "inset 0 1px 0 rgba(255,255,255,0.20)",
|
||||
}}
|
||||
role="status"
|
||||
aria-label={
|
||||
emulatorOk === null
|
||||
? tToolbar("emulatorUnknown")
|
||||
: emulatorOk
|
||||
? tToolbar("emulatorOnline")
|
||||
: tToolbar("emulatorOffline")
|
||||
}
|
||||
title={
|
||||
emulatorOk === false
|
||||
? tToolbar("emulatorOffline")
|
||||
: tToolbar("emulatorOnline")
|
||||
emulatorOk === null
|
||||
? tToolbar("emulatorUnknown")
|
||||
: emulatorOk
|
||||
? tToolbar("emulatorOnline")
|
||||
: tToolbar("emulatorOffline")
|
||||
}
|
||||
>
|
||||
<span className="relative flex h-2.5 w-2.5">
|
||||
{emulatorOk === false ? (
|
||||
<span className="relative inline-flex rounded-full h-2.5 w-2.5 bg-destructive ring-2 ring-destructive/30 shadow-[0_0_8px_rgba(239,68,68,0.8)]" />
|
||||
) : (
|
||||
{emulatorOk === null ? (
|
||||
<span className="relative inline-flex rounded-full h-2.5 w-2.5 bg-muted-foreground ring-2 ring-muted-foreground/30" />
|
||||
) : emulatorOk ? (
|
||||
<span className="relative inline-flex rounded-full h-2.5 w-2.5 bg-success ring-2 ring-success/30 shadow-[0_0_8px_rgba(52,211,153,0.8)]" />
|
||||
) : (
|
||||
<span className="relative inline-flex rounded-full h-2.5 w-2.5 bg-destructive ring-2 ring-destructive/30 shadow-[0_0_8px_rgba(239,68,68,0.8)]" />
|
||||
)}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
"dragToMove": "اسحب للتحريك",
|
||||
"hide": "إخفاء الشريط",
|
||||
"fullscreenExit": "الخروج من ملء الشاشة",
|
||||
"show": "إظهار الشريط"
|
||||
"show": "إظهار الشريط",
|
||||
"emulatorUnknown": "حالة المحاكي غير معروفة"
|
||||
}
|
||||
}
|
||||
@@ -3274,6 +3274,7 @@
|
||||
"dragToMove": "Влачете за преместване",
|
||||
"hide": "Скрий лентата",
|
||||
"fullscreenExit": "Изход от цял екран",
|
||||
"show": "Покажи лентата"
|
||||
"show": "Покажи лентата",
|
||||
"emulatorUnknown": "Състоянието на емулатора е неизвестно"
|
||||
}
|
||||
}
|
||||
@@ -3274,6 +3274,7 @@
|
||||
"dragToMove": "Přetažením přesunete",
|
||||
"hide": "Skrýt lištu",
|
||||
"fullscreenExit": "Ukončit celou obrazovku",
|
||||
"show": "Zobrazit lištu"
|
||||
"show": "Zobrazit lištu",
|
||||
"emulatorUnknown": "Stav emulátoru neznámý"
|
||||
}
|
||||
}
|
||||
@@ -3274,6 +3274,7 @@
|
||||
"dragToMove": "Træk for at flytte",
|
||||
"hide": "Skjul værktøjslinje",
|
||||
"fullscreenExit": "Afslut fuldskærm",
|
||||
"show": "Vis værktøjslinje"
|
||||
"show": "Vis værktøjslinje",
|
||||
"emulatorUnknown": "Emulatorstatus ukendt"
|
||||
}
|
||||
}
|
||||
@@ -3275,6 +3275,7 @@
|
||||
"dragToMove": "Ziehen zum Verschieben",
|
||||
"hide": "Leiste ausblenden",
|
||||
"fullscreenExit": "Vollbild beenden",
|
||||
"show": "Leiste anzeigen"
|
||||
"show": "Leiste anzeigen",
|
||||
"emulatorUnknown": "Emulatorstatus unbekannt"
|
||||
}
|
||||
}
|
||||
@@ -3274,6 +3274,7 @@
|
||||
"dragToMove": "Σύρετε για μετακίνηση",
|
||||
"hide": "Απόκρυψη γραμμής",
|
||||
"fullscreenExit": "Έξοδος από πλήρη οθόνη",
|
||||
"show": "Εμφάνιση γραμμής"
|
||||
"show": "Εμφάνιση γραμμής",
|
||||
"emulatorUnknown": "Άγνωστη κατάσταση εξομοιωτή"
|
||||
}
|
||||
}
|
||||
@@ -3333,6 +3333,7 @@
|
||||
"dragToMove": "Drag to move",
|
||||
"hide": "Hide toolbar",
|
||||
"fullscreenExit": "Exit fullscreen",
|
||||
"show": "Show toolbar"
|
||||
"show": "Show toolbar",
|
||||
"emulatorUnknown": "Emulator status unknown"
|
||||
}
|
||||
}
|
||||
@@ -3275,6 +3275,7 @@
|
||||
"dragToMove": "Arrastra para mover",
|
||||
"hide": "Ocultar barra",
|
||||
"fullscreenExit": "Salir de pantalla completa",
|
||||
"show": "Mostrar barra"
|
||||
"show": "Mostrar barra",
|
||||
"emulatorUnknown": "Estado del emulador desconocido"
|
||||
}
|
||||
}
|
||||
@@ -21,6 +21,7 @@
|
||||
"dragToMove": "Vedä liikuttaaksesi",
|
||||
"hide": "Piilota työkalupalkki",
|
||||
"fullscreenExit": "Lopeta koko näyttö",
|
||||
"show": "Näytä työkalupalkki"
|
||||
"show": "Näytä työkalupalkki",
|
||||
"emulatorUnknown": "Emulaattorin tila tuntematon"
|
||||
}
|
||||
}
|
||||
@@ -3275,6 +3275,7 @@
|
||||
"dragToMove": "Glissez pour déplacer",
|
||||
"hide": "Masquer la barre",
|
||||
"fullscreenExit": "Quitter le plein écran",
|
||||
"show": "Afficher la barre"
|
||||
"show": "Afficher la barre",
|
||||
"emulatorUnknown": "État de l'émulateur inconnu"
|
||||
}
|
||||
}
|
||||
@@ -3274,6 +3274,7 @@
|
||||
"dragToMove": "Povucite za pomicanje",
|
||||
"hide": "Sakrij traku",
|
||||
"fullscreenExit": "Izađi iz cijelog zaslona",
|
||||
"show": "Prikaži traku"
|
||||
"show": "Prikaži traku",
|
||||
"emulatorUnknown": "Status emulatora nepoznat"
|
||||
}
|
||||
}
|
||||
@@ -3274,6 +3274,7 @@
|
||||
"dragToMove": "Húzás a mozgatáshoz",
|
||||
"hide": "Sáv elrejtése",
|
||||
"fullscreenExit": "Kilépés a teljes képernyőből",
|
||||
"show": "Sáv megjelenítése"
|
||||
"show": "Sáv megjelenítése",
|
||||
"emulatorUnknown": "Az emulátor állapota ismeretlen"
|
||||
}
|
||||
}
|
||||
@@ -3332,6 +3332,7 @@
|
||||
"dragToMove": "Trascina per spostare",
|
||||
"hide": "Nascondi barra",
|
||||
"fullscreenExit": "Esci dalla schermo intero",
|
||||
"show": "Mostra barra"
|
||||
"show": "Mostra barra",
|
||||
"emulatorUnknown": "Stato dell'emulatore sconosciuto"
|
||||
}
|
||||
}
|
||||
@@ -21,6 +21,7 @@
|
||||
"dragToMove": "ドラッグして移動",
|
||||
"hide": "ツールバーを隠す",
|
||||
"fullscreenExit": "全画面を終了",
|
||||
"show": "ツールバーを表示"
|
||||
"show": "ツールバーを表示",
|
||||
"emulatorUnknown": "エミュレータの状態が不明です"
|
||||
}
|
||||
}
|
||||
@@ -3277,6 +3277,7 @@
|
||||
"dragToMove": "Sleep om te verplaatsen",
|
||||
"hide": "Werkbalk verbergen",
|
||||
"fullscreenExit": "Volledig scherm afsluiten",
|
||||
"show": "Werkbalk tonen"
|
||||
"show": "Werkbalk tonen",
|
||||
"emulatorUnknown": "Emulatorstatus onbekend"
|
||||
}
|
||||
}
|
||||
@@ -3274,6 +3274,7 @@
|
||||
"dragToMove": "Dra for å flytte",
|
||||
"hide": "Skjul verktøylinje",
|
||||
"fullscreenExit": "Avslutt fullskjerm",
|
||||
"show": "Vis verktøylinje"
|
||||
"show": "Vis verktøylinje",
|
||||
"emulatorUnknown": "Emulatorstatus ukjent"
|
||||
}
|
||||
}
|
||||
@@ -3275,6 +3275,7 @@
|
||||
"dragToMove": "Przeciągnij, aby przenieść",
|
||||
"hide": "Ukryj pasek",
|
||||
"fullscreenExit": "Zamknij pełny ekran",
|
||||
"show": "Pokaż pasek"
|
||||
"show": "Pokaż pasek",
|
||||
"emulatorUnknown": "Status emulatora nieznany"
|
||||
}
|
||||
}
|
||||
@@ -3275,6 +3275,7 @@
|
||||
"dragToMove": "Arraste para mover",
|
||||
"hide": "Ocultar barra",
|
||||
"fullscreenExit": "Sair da tela cheia",
|
||||
"show": "Mostrar barra"
|
||||
"show": "Mostrar barra",
|
||||
"emulatorUnknown": "Estado do emulador desconhecido"
|
||||
}
|
||||
}
|
||||
@@ -3274,6 +3274,7 @@
|
||||
"dragToMove": "Trageți pentru a muta",
|
||||
"hide": "Ascunde bara",
|
||||
"fullscreenExit": "Ieșiți din ecran complet",
|
||||
"show": "Afișați bara"
|
||||
"show": "Afișați bara",
|
||||
"emulatorUnknown": "Starea emulatorului necunoscută"
|
||||
}
|
||||
}
|
||||
@@ -3273,6 +3273,7 @@
|
||||
"dragToMove": "Перетащите, чтобы переместить",
|
||||
"hide": "Скрыть панель",
|
||||
"fullscreenExit": "Выйти из полноэкранного режима",
|
||||
"show": "Показать панель"
|
||||
"show": "Показать панель",
|
||||
"emulatorUnknown": "Состояние эмулятора неизвестно"
|
||||
}
|
||||
}
|
||||
@@ -3274,6 +3274,7 @@
|
||||
"dragToMove": "Potiahnite na presun",
|
||||
"hide": "Skryť panel",
|
||||
"fullscreenExit": "Ukončiť celú obrazovku",
|
||||
"show": "Zobraziť panel"
|
||||
"show": "Zobraziť panel",
|
||||
"emulatorUnknown": "Stav emulátora neznámy"
|
||||
}
|
||||
}
|
||||
@@ -3274,6 +3274,7 @@
|
||||
"dragToMove": "Превуците да померите",
|
||||
"hide": "Сакриј траку",
|
||||
"fullscreenExit": "Изађи из целог екрана",
|
||||
"show": "Прикажи траку"
|
||||
"show": "Прикажи траку",
|
||||
"emulatorUnknown": "Статус емулатора непознат"
|
||||
}
|
||||
}
|
||||
@@ -3274,6 +3274,7 @@
|
||||
"dragToMove": "Dra för att flytta",
|
||||
"hide": "Dölj verktygsfält",
|
||||
"fullscreenExit": "Avsluta helskärm",
|
||||
"show": "Visa verktygsfält"
|
||||
"show": "Visa verktygsfält",
|
||||
"emulatorUnknown": "Emulatorstatus okänd"
|
||||
}
|
||||
}
|
||||
@@ -3275,6 +3275,7 @@
|
||||
"dragToMove": "Taşımak için sürükleyin",
|
||||
"hide": "Araç çubuğunu gizle",
|
||||
"fullscreenExit": "Tam ekrandan çık",
|
||||
"show": "Araç çubuğunu göster"
|
||||
"show": "Araç çubuğunu göster",
|
||||
"emulatorUnknown": "Emülatör durumu bilinmiyor"
|
||||
}
|
||||
}
|
||||
@@ -3274,6 +3274,7 @@
|
||||
"dragToMove": "Перетягніть, щоб перемістити",
|
||||
"hide": "Сховати панель",
|
||||
"fullscreenExit": "Вийти з повноекранного режиму",
|
||||
"show": "Показати панель"
|
||||
"show": "Показати панель",
|
||||
"emulatorUnknown": "Стан емулятора невідомий"
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user