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:
+10
-10
@@ -146,18 +146,18 @@
|
||||
},
|
||||
"protocol_handlers": {
|
||||
"title": "برنامههای پیشفرض",
|
||||
"description": "انتخاب کنید لینکهای ایمیل و تقویم در Bulwark باز شوند.",
|
||||
"description": "انتخاب کنید لینکهای ایمیل و تقویم در VNCmail+ باز شوند.",
|
||||
"unsupported": "این مرورگر از ثبت دستی پروتکل پشتیبانی نمیکند.",
|
||||
"mailto_label": "لینکهای ایمیل",
|
||||
"mailto_description": "باز کردن لینکهای mailto: در Bulwark",
|
||||
"mailto_description": "باز کردن لینکهای mailto: در VNCmail+",
|
||||
"protocol_open_mode_label": "هنگام باز کردن لینکهای پروتکل",
|
||||
"protocol_open_mode_description": "انتخاب کنید لینکها در تب جدید باز شوند یا نشست فعال.",
|
||||
"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": "ثبت مدیریت ایمیل درخواست شد",
|
||||
@@ -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": "ایمیل با موفقیت ارسال شد",
|
||||
@@ -1054,7 +1054,7 @@
|
||||
"title": "اعلانهای پسزمینه",
|
||||
"description": "دریافت اعلانهای سیستم برای ایمیل جدید",
|
||||
"relay_label": "رله push",
|
||||
"relay_desc": "پیشفرض رله میزبانی شده Bulwark",
|
||||
"relay_desc": "پیشفرض رله میزبانی شده VNCmail+",
|
||||
"relay_locked": "تنظیم شده توسط مدیر",
|
||||
"relay_locked_desc": "قابل تغییر نیست",
|
||||
"relay_placeholder": "https://notifications.relay.example.com",
|
||||
@@ -1713,7 +1713,7 @@
|
||||
"button": "وارد کردن"
|
||||
},
|
||||
"about": {
|
||||
"title": "Bulwark Webmail"
|
||||
"title": "VNCmail+"
|
||||
}
|
||||
},
|
||||
"sidebar_apps": {
|
||||
@@ -3055,7 +3055,7 @@
|
||||
"start_tour": "شروع تور"
|
||||
},
|
||||
"demo_welcome": {
|
||||
"title": "به Bulwark Mail خوش آمدید",
|
||||
"title": "به VNCmail+ خوش آمدید",
|
||||
"description": "یک سرویس ایمیل کامل را در مرورگر خود کاوش کنید.",
|
||||
"feature_email": "خواندن و نوشتن ایمیل",
|
||||
"feature_organize": "برچسبها، ستارهها و پوشهها",
|
||||
|
||||
Reference in New Issue
Block a user