feat(native): a proxy's sign-in page in the app has a way out and says what cannot work there

Behind Pangolin or authentik the app shows the proxy's sign-in page itself, and
nothing on it led back to the address screen: a failed passkey left users stuck
on every launch. A bar over that page now offers to change the server and says
that passkeys and security keys do not work there, as a web view cannot use them
for a domain the app is not tied to. It steps aside while the keyboard is up.
On iOS the page also gets the room the keyboard takes, so a button under it can
be scrolled into view. The address screen hands the bar its words in the user's
language when it connects.
This commit is contained in:
Maurice
2026-11-10 09:36:50 +01:00
parent 1454b58ea1
commit 0b3d2873c2
36 changed files with 322 additions and 3 deletions
+2
View File
@@ -19,6 +19,8 @@ const native: TranslationStrings = {
'native.offline.hint': 'تعذّر على TREK الوصول إلى {server}. تحقق من اتصالك ثم حاول مرة أخرى.',
'native.offline.retry': 'إعادة المحاولة',
'native.changeServer': 'تغيير الخادم',
'native.signInBar.hint':
'لا تعمل مفاتيح المرور ومفاتيح الأمان على هذه الصفحة داخل التطبيق. سجّل الدخول بكلمة مرور، أو اسمح للتطبيق بتجاوز الوكيل.',
'native.login.failed': 'تعذّر تسجيل الدخول. يرجى المحاولة مرة أخرى.',
'native.handoff.title': 'المتابعة في التطبيق',
'native.handoff.hint': 'لقد سجّلت الدخول باسم {name}. افتح تطبيق TREK لإكمال تسجيل الدخول هناك.',
+2
View File
@@ -19,6 +19,8 @@ const native: TranslationStrings = {
'native.offline.hint': 'TREK {server} ünvanına çata bilmədi. Bağlantınızı yoxlayın və yenidən cəhd edin.',
'native.offline.retry': 'Yenidən cəhd et',
'native.changeServer': 'Serveri dəyiş',
'native.signInBar.hint':
'Passkey və təhlükəsizlik açarları tətbiqdə bu səhifədə işləmir. Parolla daxil olun və ya tətbiqi proksinizdən keçirin.',
'native.login.failed': 'Daxil olmaq alınmadı. Zəhmət olmasa, yenidən cəhd edin.',
'native.handoff.title': 'Tətbiqdə davam edin',
'native.handoff.hint': 'Siz {name} kimi daxil olmusunuz. Girişi orada tamamlamaq üçün TREK tətbiqini açın.',
+2
View File
@@ -19,6 +19,8 @@ const native: TranslationStrings = {
'native.offline.hint': 'O TREK não conseguiu acessar {server}. Verifique sua conexão e tente novamente.',
'native.offline.retry': 'Tentar novamente',
'native.changeServer': 'Trocar de servidor',
'native.signInBar.hint':
'Passkeys e chaves de segurança não funcionam nesta página no app. Entre com uma senha ou libere o app no seu proxy.',
'native.login.failed': 'Não foi possível entrar. Tente novamente.',
'native.handoff.title': 'Continuar no app',
'native.handoff.hint': 'Você entrou como {name}. Abra o app TREK para concluir o login por lá.',
+2
View File
@@ -19,6 +19,8 @@ const native: TranslationStrings = {
'native.offline.hint': 'TREK no ha pogut connectar amb {server}. Comprova la connexió i torna-ho a provar.',
'native.offline.retry': 'Torna-ho a provar',
'native.changeServer': 'Canvia de servidor',
'native.signInBar.hint':
'Les claus d’accés i les claus de seguretat no funcionen en aquesta pàgina dins l’app. Inicia la sessió amb una contrasenya o deixa passar l’app pel teu proxy.',
'native.login.failed': 'No s’ha pogut iniciar la sessió. Torna-ho a provar.',
'native.handoff.title': 'Continua a l’app',
'native.handoff.hint': 'Has iniciat la sessió com a {name}. Obre l’app de TREK per acabar d’iniciar-hi la sessió.',
+2
View File
@@ -19,6 +19,8 @@ const native: TranslationStrings = {
'native.offline.hint': 'TREK se nepodařilo spojit s {server}. Zkontrolujte připojení a zkuste to znovu.',
'native.offline.retry': 'Zkusit znovu',
'native.changeServer': 'Změnit server',
'native.signInBar.hint':
'Přístupové klíče a bezpečnostní klíče na této stránce v aplikaci nefungují. Přihlaste se heslem, nebo aplikaci propusťte přes svůj proxy.',
'native.login.failed': 'Přihlášení se nezdařilo. Zkuste to prosím znovu.',
'native.handoff.title': 'Pokračovat v aplikaci',
'native.handoff.hint': 'Jste přihlášeni jako {name}. Otevřete aplikaci TREK a dokončete přihlášení v ní.',
+2
View File
@@ -20,6 +20,8 @@ const native: TranslationStrings = {
'native.offline.hint': 'TREK konnte {server} nicht erreichen. Prüfe deine Verbindung und versuche es erneut.',
'native.offline.retry': 'Erneut versuchen',
'native.changeServer': 'Server wechseln',
'native.signInBar.hint':
'Passkeys und Sicherheitsschlüssel funktionieren auf dieser Seite in der App nicht. Melde dich mit Passwort an oder lass die App an deinem Proxy vorbei.',
'native.login.failed': 'Die Anmeldung hat nicht geklappt. Bitte versuche es erneut.',
'native.handoff.title': 'Weiter in der App',
'native.handoff.hint': 'Du bist als {name} angemeldet. Öffne die TREK-App, um die Anmeldung dort abzuschließen.',
+2
View File
@@ -19,6 +19,8 @@ const native: TranslationStrings = {
'native.offline.hint': 'TREK could not reach {server}. Check your connection and try again.',
'native.offline.retry': 'Try again',
'native.changeServer': 'Change server',
'native.signInBar.hint':
'Passkeys and security keys do not work on this page in the app. Sign in with a password, or let the app through your proxy.',
'native.login.failed': 'Signing in did not work. Please try again.',
'native.handoff.title': 'Continue in the app',
'native.handoff.hint': 'You are signed in as {name}. Open the TREK app to finish signing in there.',
+2
View File
@@ -19,6 +19,8 @@ const native: TranslationStrings = {
'native.offline.hint': 'TREK no pudo conectar con {server}. Revisa tu conexión e inténtalo de nuevo.',
'native.offline.retry': 'Reintentar',
'native.changeServer': 'Cambiar de servidor',
'native.signInBar.hint':
'Las llaves de acceso y las llaves de seguridad no funcionan en esta página dentro de la app. Inicia sesión con una contraseña o deja pasar la app por tu proxy.',
'native.login.failed': 'No se pudo iniciar sesión. Inténtalo de nuevo.',
'native.handoff.title': 'Continuar en la app',
'native.handoff.hint': 'Has iniciado sesión como {name}. Abre la app de TREK para terminar de iniciar sesión allí.',
+2
View File
@@ -19,6 +19,8 @@ const native: TranslationStrings = {
'native.offline.hint': 'TREK ei jõudnud serverini {server}. Kontrolli oma ühendust ja proovi uuesti.',
'native.offline.retry': 'Proovi uuesti',
'native.changeServer': 'Vaheta serverit',
'native.signInBar.hint':
'Pääsuvõtmed ja turvavõtmed ei tööta sellel lehel rakenduses. Logi sisse parooliga või lase rakendus oma puhverserverist läbi.',
'native.login.failed': 'Sisselogimine ei õnnestunud. Palun proovi uuesti.',
'native.handoff.title': 'Jätka rakenduses',
'native.handoff.hint': 'Oled sisse logitud kui {name}. Ava TREKi rakendus, et sisselogimine seal lõpetada.',
+2
View File
@@ -19,6 +19,8 @@ const native: TranslationStrings = {
'native.offline.hint': 'TREK n’a pas pu joindre {server}. Vérifiez votre connexion et réessayez.',
'native.offline.retry': 'Réessayer',
'native.changeServer': 'Changer de serveur',
'native.signInBar.hint':
'Les clés d’accès et les clés de sécurité ne fonctionnent pas sur cette page dans l’application. Connectez-vous avec un mot de passe ou laissez passer l’application par votre proxy.',
'native.login.failed': 'La connexion n’a pas abouti. Veuillez réessayer.',
'native.handoff.title': 'Continuer dans l’application',
'native.handoff.hint':
+2
View File
@@ -20,6 +20,8 @@ const native: TranslationStrings = {
'native.offline.hint': 'Το TREK δεν μπόρεσε να συνδεθεί στο {server}. Ελέγξτε τη σύνδεσή σας και δοκιμάστε ξανά.',
'native.offline.retry': 'Δοκιμάστε ξανά',
'native.changeServer': 'Αλλαγή διακομιστή',
'native.signInBar.hint':
'Τα passkeys και τα κλειδιά ασφαλείας δεν λειτουργούν σε αυτή τη σελίδα μέσα στην εφαρμογή. Συνδεθείτε με κωδικό ή αφήστε την εφαρμογή να περνά από τον διακομιστή μεσολάβησης.',
'native.login.failed': 'Η σύνδεση δεν ολοκληρώθηκε. Δοκιμάστε ξανά.',
'native.handoff.title': 'Συνέχεια στην εφαρμογή',
'native.handoff.hint': 'Έχετε συνδεθεί ως {name}. Ανοίξτε την εφαρμογή TREK για να ολοκληρώσετε εκεί τη σύνδεση.',
+2
View File
@@ -19,6 +19,8 @@ const native: TranslationStrings = {
'native.offline.hint': 'TREK לא הצליח להגיע אל {server}. בדקו את החיבור ונסו שוב.',
'native.offline.retry': 'נסו שוב',
'native.changeServer': 'החלפת שרת',
'native.signInBar.hint':
'מפתחות גישה ומפתחות אבטחה לא עובדים בדף הזה באפליקציה. התחבר עם סיסמה, או אפשר לאפליקציה לעבור דרך ה־proxy שלך.',
'native.login.failed': 'ההתחברות נכשלה. אנא נסו שוב.',
'native.handoff.title': 'המשך באפליקציה',
'native.handoff.hint': 'אתם מחוברים בתור {name}. פתחו את אפליקציית TREK כדי להשלים שם את ההתחברות.',
+2
View File
@@ -19,6 +19,8 @@ const native: TranslationStrings = {
'native.offline.hint': 'A TREK nem érte el ezt: {server}. Ellenőrizd a kapcsolatot, és próbáld újra.',
'native.offline.retry': 'Újra',
'native.changeServer': 'Szerver módosítása',
'native.signInBar.hint':
'A jelkulcsok és a biztonsági kulcsok ezen az oldalon nem működnek az alkalmazásban. Jelentkezz be jelszóval, vagy engedd át az alkalmazást a proxyn.',
'native.login.failed': 'A bejelentkezés nem sikerült. Próbáld újra.',
'native.handoff.title': 'Folytatás az alkalmazásban',
'native.handoff.hint':
+2
View File
@@ -19,6 +19,8 @@ const native: TranslationStrings = {
'native.offline.hint': 'TREK tidak dapat menjangkau {server}. Periksa koneksimu dan coba lagi.',
'native.offline.retry': 'Coba lagi',
'native.changeServer': 'Ganti server',
'native.signInBar.hint':
'Passkey dan kunci keamanan tidak berfungsi di halaman ini dalam aplikasi. Masuk dengan kata sandi, atau izinkan aplikasi melewati proxy Anda.',
'native.login.failed': 'Gagal masuk. Silakan coba lagi.',
'native.handoff.title': 'Lanjutkan di aplikasi',
'native.handoff.hint': 'Kamu masuk sebagai {name}. Buka aplikasi TREK untuk menyelesaikan proses masuk di sana.',
+2
View File
@@ -20,6 +20,8 @@ const native: TranslationStrings = {
'native.offline.hint': 'TREK non è riuscito a raggiungere {server}. Controlla la connessione e riprova.',
'native.offline.retry': 'Riprova',
'native.changeServer': 'Cambia server',
'native.signInBar.hint':
'Le passkey e le chiavi di sicurezza non funzionano su questa pagina nell’app. Accedi con una password o lascia passare l’app dal tuo proxy.',
'native.login.failed': 'L’accesso non è riuscito. Riprova.',
'native.handoff.title': 'Continua nell’app',
'native.handoff.hint': 'Hai effettuato l’accesso come {name}. Apri l’app TREK per completare lì l’accesso.',
+1
View File
@@ -17,6 +17,7 @@ const native: TranslationStrings = {
'native.offline.hint': 'TREK は {server} に接続できませんでした。接続を確認して、もう一度お試しください。',
'native.offline.retry': '再試行',
'native.changeServer': 'サーバーを変更',
'native.signInBar.hint': 'このページではアプリ内でパスキーとセキュリティキーを使えません。パスワードでサインインするか、プロキシでアプリを通過させてください。',
'native.login.failed': 'ログインできませんでした。もう一度お試しください。',
'native.handoff.title': 'アプリで続行',
'native.handoff.hint': '{name} としてログインしています。TREK アプリを開いて、そちらでログインを完了してください。',
+1
View File
@@ -17,6 +17,7 @@ const native: TranslationStrings = {
'native.offline.hint': 'TREK이 {server}에 연결하지 못했습니다. 연결 상태를 확인한 후 다시 시도하세요.',
'native.offline.retry': '다시 시도',
'native.changeServer': '서버 변경',
'native.signInBar.hint': '이 페이지에서는 앱 안에서 패스키와 보안 키를 사용할 수 없습니다. 비밀번호로 로그인하거나 프록시에서 앱을 통과시키세요.',
'native.login.failed': '로그인하지 못했습니다. 다시 시도하세요.',
'native.handoff.title': '앱에서 계속',
'native.handoff.hint': '{name}(으)로 로그인되어 있습니다. TREK 앱을 열어 로그인을 완료하세요.',
+2
View File
@@ -19,6 +19,8 @@ const native: TranslationStrings = {
'native.offline.hint': 'TREK kon {server} niet bereiken. Controleer je verbinding en probeer het opnieuw.',
'native.offline.retry': 'Opnieuw proberen',
'native.changeServer': 'Server wijzigen',
'native.signInBar.hint':
'Passkeys en beveiligingssleutels werken op deze pagina niet in de app. Meld je aan met een wachtwoord of laat de app door je proxy.',
'native.login.failed': 'Inloggen is niet gelukt. Probeer het opnieuw.',
'native.handoff.title': 'Verder in de app',
'native.handoff.hint': 'Je bent ingelogd als {name}. Open de TREK-app om daar het inloggen af te ronden.',
+2
View File
@@ -19,6 +19,8 @@ const native: TranslationStrings = {
'native.offline.hint': 'TREK nie mógł połączyć się z {server}. Sprawdź połączenie i spróbuj ponownie.',
'native.offline.retry': 'Spróbuj ponownie',
'native.changeServer': 'Zmień serwer',
'native.signInBar.hint':
'Klucze dostępu i klucze bezpieczeństwa nie działają na tej stronie w aplikacji. Zaloguj się hasłem albo przepuść aplikację przez swój serwer proxy.',
'native.login.failed': 'Logowanie się nie powiodło. Spróbuj ponownie.',
'native.handoff.title': 'Kontynuuj w aplikacji',
'native.handoff.hint': 'Zalogowano jako {name}. Otwórz aplikację TREK, aby tam dokończyć logowanie.',
+2
View File
@@ -19,6 +19,8 @@ const native: TranslationStrings = {
'native.offline.hint': 'TREK не удалось подключиться к {server}. Проверьте подключение и повторите попытку.',
'native.offline.retry': 'Повторить',
'native.changeServer': 'Сменить сервер',
'native.signInBar.hint':
'Ключи доступа и ключи безопасности не работают на этой странице в приложении. Войдите с паролем или пропустите приложение через свой прокси.',
'native.login.failed': 'Не удалось войти. Попробуйте ещё раз.',
'native.handoff.title': 'Продолжить в приложении',
'native.handoff.hint': 'Вы вошли как {name}. Откройте приложение TREK, чтобы завершить вход в нём.',
+2
View File
@@ -19,6 +19,8 @@ const native: TranslationStrings = {
'native.offline.hint': 'TREK sa nepodarilo spojiť so serverom {server}. Skontrolujte pripojenie a skúste to znova.',
'native.offline.retry': 'Skúsiť znova',
'native.changeServer': 'Zmeniť server',
'native.signInBar.hint':
'Prístupové kľúče a bezpečnostné kľúče na tejto stránke v aplikácii nefungujú. Prihláste sa heslom alebo aplikáciu prepustite cez svoj proxy.',
'native.login.failed': 'Prihlásenie sa nepodarilo. Skúste to, prosím, znova.',
'native.handoff.title': 'Pokračovať v aplikácii',
'native.handoff.hint': 'Ste prihlásení ako {name}. Otvorte aplikáciu TREK a dokončite prihlásenie v nej.',
+2
View File
@@ -20,6 +20,8 @@ const native: TranslationStrings = {
'native.offline.hint': 'TREK kunde inte nå {server}. Kontrollera din anslutning och försök igen.',
'native.offline.retry': 'Försök igen',
'native.changeServer': 'Byt server',
'native.signInBar.hint':
'Nyckelpass och säkerhetsnycklar fungerar inte på den här sidan i appen. Logga in med lösenord eller släpp igenom appen i din proxy.',
'native.login.failed': 'Inloggningen misslyckades. Försök igen.',
'native.handoff.title': 'Fortsätt i appen',
'native.handoff.hint': 'Du är inloggad som {name}. Öppna TREK-appen för att slutföra inloggningen där.',
+2
View File
@@ -19,6 +19,8 @@ const native: TranslationStrings = {
'native.offline.hint': 'TREK เข้าถึง {server} ไม่ได้ โปรดตรวจสอบการเชื่อมต่อแล้วลองอีกครั้ง',
'native.offline.retry': 'ลองอีกครั้ง',
'native.changeServer': 'เปลี่ยนเซิร์ฟเวอร์',
'native.signInBar.hint':
'พาสคีย์และคีย์ความปลอดภัยใช้ไม่ได้บนหน้านี้ในแอป ลงชื่อเข้าใช้ด้วยรหัสผ่าน หรืออนุญาตให้แอปผ่านพร็อกซีของคุณ',
'native.login.failed': 'เข้าสู่ระบบไม่สำเร็จ โปรดลองอีกครั้ง',
'native.handoff.title': 'ดำเนินการต่อในแอป',
'native.handoff.hint': 'คุณเข้าสู่ระบบในชื่อ {name} เปิดแอป TREK เพื่อเข้าสู่ระบบให้เสร็จสิ้นที่นั่น',
+2
View File
@@ -19,6 +19,8 @@ const native: TranslationStrings = {
'native.offline.hint': 'TREK, {server} adresine ulaşamadı. Bağlantını kontrol edip tekrar dene.',
'native.offline.retry': 'Tekrar dene',
'native.changeServer': 'Sunucuyu değiştir',
'native.signInBar.hint':
'Geçiş anahtarları ve güvenlik anahtarları uygulamada bu sayfada çalışmaz. Parolayla giriş yapın veya uygulamayı proxy’nizden geçirin.',
'native.login.failed': 'Giriş yapılamadı. Lütfen tekrar dene.',
'native.handoff.title': 'Uygulamada devam et',
'native.handoff.hint': '{name} olarak giriş yaptın. Girişi tamamlamak için TREK uygulamasını aç.',
+2
View File
@@ -19,6 +19,8 @@ const native: TranslationStrings = {
'native.offline.hint': 'TREK не вдалося підключитися до {server}. Перевірте з’єднання та спробуйте ще раз.',
'native.offline.retry': 'Спробувати ще раз',
'native.changeServer': 'Змінити сервер',
'native.signInBar.hint':
'Ключі доступу та ключі безпеки не працюють на цій сторінці в застосунку. Увійдіть із паролем або пропустіть застосунок через свій проксі.',
'native.login.failed': 'Не вдалося увійти. Спробуйте ще раз.',
'native.handoff.title': 'Продовжити в застосунку',
'native.handoff.hint': 'Ви увійшли як {name}. Відкрийте застосунок TREK, щоб завершити вхід у ньому.',
+2
View File
@@ -20,6 +20,8 @@ const native: TranslationStrings = {
'native.offline.hint': 'TREK không thể kết nối tới {server}. Hãy kiểm tra kết nối và thử lại.',
'native.offline.retry': 'Thử lại',
'native.changeServer': 'Đổi máy chủ',
'native.signInBar.hint':
'Khóa truy cập và khóa bảo mật không hoạt động trên trang này trong ứng dụng. Hãy đăng nhập bằng mật khẩu hoặc cho ứng dụng đi qua proxy của bạn.',
'native.login.failed': 'Đăng nhập không thành công. Vui lòng thử lại.',
'native.handoff.title': 'Tiếp tục trong ứng dụng',
'native.handoff.hint': 'Bạn đã đăng nhập với tên {name}. Mở ứng dụng TREK để hoàn tất đăng nhập ở đó.',
+1
View File
@@ -17,6 +17,7 @@ const native: TranslationStrings = {
'native.offline.hint': 'TREK 無法連線到 {server}。請檢查網路連線後再試一次。',
'native.offline.retry': '再試一次',
'native.changeServer': '更換伺服器',
'native.signInBar.hint': '在 App 中,此頁面無法使用通行密鑰和安全金鑰。請使用密碼登入,或讓 App 略過你的代理伺服器。',
'native.login.failed': '登入未成功,請再試一次。',
'native.handoff.title': '在 App 中繼續',
'native.handoff.hint': '你已以 {name} 身分登入。請開啟 TREK App,在那裡完成登入。',
+1
View File
@@ -17,6 +17,7 @@ const native: TranslationStrings = {
'native.offline.hint': 'TREK 无法连接到 {server}。请检查网络连接后重试。',
'native.offline.retry': '重试',
'native.changeServer': '更换服务器',
'native.signInBar.hint': '在应用中,此页面无法使用通行密钥和安全密钥。请使用密码登录,或让应用绕过你的代理。',
'native.login.failed': '登录未成功,请重试。',
'native.handoff.title': '在应用中继续',
'native.handoff.hint': '你已以 {name} 身份登录。请打开 TREK 应用,在那里完成登录。',