Добавляет zh-CN, fa, ar, tr, uk, be, vi, uz локали (81 ключ, идентичная
структура) к существующим en/ru; ToggleLanguge.tsx переделан из
бинарного ru/en тумблера в выпадающий список всех 10 языков.
TelegramWeb.tsx был полностью на захардкоженном русском несмотря на импорт
useTranslation — переведён на i18n-ключи. rtlLanguages.ts выносит список
RTL-языков в отдельный .ts-файл (именованный импорт из .js падал на
allowJs). App.tsx реактивно переключает document.dir/lang при смене языка.
Логические CSS-свойства (ps-/pe-/start-/end-/border-e) вместо физических
в badge/button/dialog/select и BurgerMenu — Flexbox иначе визуально
переворачивает детей под dir=rtl, ломая анимацию бургер-меню.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Home теперь рендерится только когда isLoggedIn — до этого юзер видит
полноэкранный Login (анонимно/seed/Telegram), а не экран подключения; кнопка
VPN дополнительно блокируется на уровне VpnControl как defense-in-depth.
isLoggedIn — отдельный персистентный флаг, не совпадает с фактом наличия
фонового Ghost-токена (тот может тихо появиться до явного логина).
Заодно: matrix-engine в package.json указывал на путь другого пользователя
(/home/kirill/...) — поправил под текущую машину; прогнал `tauri icon`,
чтобы Android больше не показывал дефолтный логотип Tauri (иконка никогда не
генерировалась для этой платформы); dev-узел Singapore (DEV_IP) переведён на
порт 8443 вслед за прокси.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
New non-blocking login panel on the Home screen (seed backup/restore +
Telegram magic-link via the bot deep-link, polled through the new backend
endpoints) — uses its own popover instead of a full-screen Dialog so the
burger menu stays clickable while it's open. VpnStats now shows a used/limit
usage bar backed by a new useUsageStore.
Also registers tauri-plugin-shell (needed to open the t.me deep-link) and
threads an optional auth token from the app down through TunnelConfig to the
proxy client (desktop + Android), for instances running --require-auth.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>