feat(theme): ship exactly 2 themes (SRC default + VNClagoon); rebrand user-facing VNCmail+
Product decision 2026-08-05: exactly SRC (default) and VNClagoon ship as selectable themes. Everything else (Qui, Nord, Catppuccin, Solarized, Roundcube Elastic, Aurora Glass) is hidden via ThemePolicy.disabledBuiltinThemes rather than deleted - cheap to re-enable later, zero code lost. Also removed the hardcoded "Default/Bulwark" theme card from the Settings > Themes grid (product wants exactly 2 theme choices, not 3). Separately, found and fixed real "still says Bulwark" branding gaps: - All 24 locale files: "Bulwark"/"Bulwark Mail"/"Bulwark Webmail" -> "VNCmail+" in every user-facing string (verified via the translations test, which only checks structural key parity across locales, not content - a straight string swap is safe against it. 48/48 still pass). - PWA manifest fallback app name, package.json description/author. - Demo mode fixtures: the "Welcome to Bulwark Mail!" email and identity signature a first-time demo user actually sees. - The demo empty-state's logo was hardcoded to a literal Bulwark SVG file regardless of active theme - a real bug, not just stale text, since lib/theme-logo.ts's resolveThemeLogo() already exists and is already used correctly by the login page and nav rail for exactly this (theme-aware SRC mark / VNClagoon wordmark). Wired the same helper in here instead of a hardcoded path. NOT touched: internal code comments referencing "Bulwark" as historical/ attribution context (e.g. design-rationale comments explaining why a value differs from Bulwark's original) - those are harmless and a full-repo sweep of every comment wasn't the ask. Verified: typecheck clean, lint clean, translations test 48/48 passing.
This commit is contained in:
+15
-15
@@ -146,18 +146,18 @@
|
||||
},
|
||||
"protocol_handlers": {
|
||||
"title": "Приложения по умолчанию",
|
||||
"description": "Выберите, должны ли ссылки электронной почты и календаря открываться в Bulwark. Технически Bulwark регистрируется как обработчик протокола для ссылок mailto: и webcal:.",
|
||||
"description": "Выберите, должны ли ссылки электронной почты и календаря открываться в VNCmail+. Технически VNCmail+ регистрируется как обработчик протокола для ссылок mailto: и webcal:.",
|
||||
"unsupported": "Этот браузер или это соединение не поддерживает ручную регистрацию обработчиков протоколов. Возможно, установленное PWA всё же можно использовать через настройки браузера или системы.",
|
||||
"mailto_label": "Ссылки электронной почты",
|
||||
"mailto_description": "Открывает ссылки mailto: в Bulwark с предварительно заполненным редактором письма.",
|
||||
"mailto_description": "Открывает ссылки mailto: в VNCmail+ с предварительно заполненным редактором письма.",
|
||||
"protocol_open_mode_label": "При открытии ссылок протоколов",
|
||||
"protocol_open_mode_description": "Выберите, будет ли Bulwark открывать ссылки mailto: и webcal: в новой вкладке или повторно использовать открытую сессию. Для варианта с активной сессией нужно разрешение на уведомления, чтобы можно было нажать на резервное уведомление и вывести Bulwark на передний план, если браузер блокирует фокус.",
|
||||
"protocol_open_mode_description": "Выберите, будет ли VNCmail+ открывать ссылки mailto: и webcal: в новой вкладке или повторно использовать открытую сессию. Для варианта с активной сессией нужно разрешение на уведомления, чтобы можно было нажать на резервное уведомление и вывести VNCmail+ на передний план, если браузер блокирует фокус.",
|
||||
"protocol_open_mode_active_session": "Открывать в активной сессии, если возможно",
|
||||
"protocol_open_mode_new_tab": "Всегда открывать новую вкладку",
|
||||
"focus_notification_title": "Открыть Bulwark",
|
||||
"focus_notification_body": "Ссылка была открыта в Bulwark. Нажмите, чтобы вывести окно на передний план.",
|
||||
"focus_notification_title": "Открыть VNCmail+",
|
||||
"focus_notification_body": "Ссылка была открыта в VNCmail+. Нажмите, чтобы вывести окно на передний план.",
|
||||
"webcal_label": "Ссылки календаря",
|
||||
"webcal_description": "Открывает ссылки webcal: в Bulwark с предварительно заполненным диалогом подписки на календарь.",
|
||||
"webcal_description": "Открывает ссылки webcal: в VNCmail+ с предварительно заполненным диалогом подписки на календарь.",
|
||||
"register_mailto": "Зарегистрировать почтовое приложение",
|
||||
"register_webcal": "Зарегистрировать приложение календаря",
|
||||
"mailto_registered": "Запрошена регистрация обработчика электронной почты",
|
||||
@@ -165,7 +165,7 @@
|
||||
"registration_failed": "Не удалось зарегистрировать обработчик протокола",
|
||||
"opening_mailto": "Открытие редактора...",
|
||||
"opening_webcal": "Открытие календаря...",
|
||||
"browser_note": "Браузер или операционная система может запросить подтверждение и может потребовать, чтобы Bulwark был установлен, прежде чем его можно будет выбрать приложением по умолчанию.",
|
||||
"browser_note": "Браузер или операционная система может запросить подтверждение и может потребовать, чтобы VNCmail+ был установлен, прежде чем его можно будет выбрать приложением по умолчанию.",
|
||||
"select_account_title": "Выберите аккаунт",
|
||||
"select_mailto_account": "Выберите, в каком аккаунте открыть эту ссылку электронной почты.",
|
||||
"select_webcal_account": "Выберите, в каком аккаунте открыть эту ссылку календаря.",
|
||||
@@ -738,9 +738,9 @@
|
||||
"app_title": "Веб-почта",
|
||||
"reconnecting": "Соединение потеряно. Попытка переподключения…",
|
||||
"rate_limited_title": "Аутентификация на сервере временно ограничена.",
|
||||
"rate_limited_detail": "Bulwark приостановил фоновые запросы, чтобы избежать блокировки. Повтор через {seconds}с.",
|
||||
"rate_limited_detail": "VNCmail+ приостановил фоновые запросы, чтобы избежать блокировки. Повтор через {seconds}с.",
|
||||
"rate_limited_action_title": "Запрос приостановлен, чтобы избежать блокировки.",
|
||||
"rate_limited_action_detail": "Bulwark ждет окончания серверного тайм-аута перед отправкой новых аутентифицированных запросов. Повторите через {seconds}с."
|
||||
"rate_limited_action_detail": "VNCmail+ ждет окончания серверного тайм-аута перед отправкой новых аутентифицированных запросов. Повторите через {seconds}с."
|
||||
},
|
||||
"notifications": {
|
||||
"email_sent": "Письмо успешно отправлено",
|
||||
@@ -1074,12 +1074,12 @@
|
||||
"push": {
|
||||
"confirm_disable_message": "Это устройство перестанет получать оповещения, когда сайт закрыт.",
|
||||
"confirm_disable_title": "Отключить фоновые уведомления?",
|
||||
"description": "Получайте системные уведомления о новых письмах, когда этот сайт закрыт. Доставляется через push-релей Bulwark; релей никогда не видит содержимое писем.",
|
||||
"description": "Получайте системные уведомления о новых письмах, когда этот сайт закрыт. Доставляется через push-релей VNCmail+; релей никогда не видит содержимое писем.",
|
||||
"disable": "Отключить",
|
||||
"enable": "Включить",
|
||||
"ios_hint": "В iOS сначала установите сайт на главный экран – Safari доставляет Web Push только установленным PWA.",
|
||||
"reenable": "Перерегистрировать",
|
||||
"relay_desc": "По умолчанию используется размещённый релей Bulwark. Меняйте только если хостите самостоятельно.",
|
||||
"relay_desc": "По умолчанию используется размещённый релей VNCmail+. Меняйте только если хостите самостоятельно.",
|
||||
"relay_label": "Push-релей",
|
||||
"relay_locked": "Установлено администратором",
|
||||
"relay_locked_desc": "URL push-релея установлен вашим администратором и не может быть изменён.",
|
||||
@@ -1528,10 +1528,10 @@
|
||||
},
|
||||
"link_device": {
|
||||
"title": "Привязать мобильное приложение",
|
||||
"description": "Войдите в мобильное приложение Bulwark Mail без ввода данных. Создайте здесь QR-код и отсканируйте его на экране входа в приложении.",
|
||||
"description": "Войдите в мобильное приложение VNCmail+ без ввода данных. Создайте здесь QR-код и отсканируйте его на экране входа в приложении.",
|
||||
"generate": "Показать QR-код",
|
||||
"regenerate": "Показать новый код",
|
||||
"instructions": "Откройте приложение Bulwark Mail, нажмите \"Сканировать QR-код\" на экране входа и наведите камеру сюда.",
|
||||
"instructions": "Откройте приложение VNCmail+, нажмите \"Сканировать QR-код\" на экране входа и наведите камеру сюда.",
|
||||
"expires_in": "Срок действия кода истечёт через {seconds} секунд. Его можно использовать только один раз.",
|
||||
"expired": "Срок действия кода истёк.",
|
||||
"generating": "Создание…",
|
||||
@@ -1706,7 +1706,7 @@
|
||||
"button": "Импортировать"
|
||||
},
|
||||
"about": {
|
||||
"title": "Bulwark Webmail"
|
||||
"title": "VNCmail+"
|
||||
}
|
||||
},
|
||||
"sidebar_apps": {
|
||||
@@ -3032,7 +3032,7 @@
|
||||
"start_tour": "Начать тур"
|
||||
},
|
||||
"demo_welcome": {
|
||||
"title": "Добро пожаловать в Bulwark Mail",
|
||||
"title": "Добро пожаловать в VNCmail+",
|
||||
"description": "Откройте для себя полнофункциональный веб-клиент электронной почты - прямо в браузере. Все данные хранятся на вашем устройстве, поэтому вы можете смело всё проверить.",
|
||||
"feature_email": "Чтение и написание писем",
|
||||
"feature_organize": "Метки, звёздочки и папки",
|
||||
|
||||
Reference in New Issue
Block a user