ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 50s
ci / ts / ts (packages + web) (push) Successful in 43s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 27s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m22s
- core: AuthSession keeps the access token in memory, refreshes it once for all parallel requests (single-flight) and retries them; refresh races between tabs are retried, reuse signs out; ApiError carries problem+json codes and field errors - web: TanStack Router with guards — guests go to /login, the bootstrap admin to /setup/admin, temporary passwords to /setup/password, admin pages by role - login, setup screens, Classic shell (top bar, role-based sidebar, empty player), settings: name, theme, language, password, devices - users admin: search, role filter, create with a one-time temporary password, reset, block, role change, delete as the policy allows; audit log for admins - ru/en strings for auth, admin and error codes; language and theme are saved in the profile Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
25 lines
1.3 KiB
JSON
25 lines
1.3 KiB
JSON
{
|
|
"login": {
|
|
"title": "Вход",
|
|
"subtitle": "Ваша музыка с вашего сервера",
|
|
"username": "Логин",
|
|
"password": "Пароль",
|
|
"submit": "Войти",
|
|
"bootstrap_hint": "Первый запуск: войдите как администратор. Пароль задан в BOOTSTRAP_ADMIN_PASSWORD или напечатан в логе сервиса api."
|
|
},
|
|
"setup": {
|
|
"admin_badge": "Первый вход администратора",
|
|
"admin_title": "Смените логин и пароль",
|
|
"admin_text": "Без этого шага доступ к серверу закрыт: стартовые данные администратора видны в логах и настройках.",
|
|
"password_badge": "Пароль сброшен",
|
|
"password_title": "Задайте новый пароль",
|
|
"password_text": "Вы вошли по временному паролю. Придумайте свой — временный больше не подойдёт.",
|
|
"new_username": "Новый логин",
|
|
"new_password": "Новый пароль",
|
|
"repeat_password": "Повторите пароль",
|
|
"min_length": "Не короче {{min}} символов",
|
|
"submit": "Сохранить и продолжить",
|
|
"logout": "Выйти"
|
|
}
|
|
}
|