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:
Bernd Rodler
2026-08-05 23:43:19 +02:00
parent 3f99a2fc9e
commit bde9f14832
31 changed files with 416 additions and 404 deletions
+15 -15
View File
@@ -146,18 +146,18 @@
},
"protocol_handlers": {
"title": "Varsayılan uygulamalar",
"description": "E-posta ve takvim bağlantılarının Bulwark'ta açılıp açılmayacağını seçin. Teknik olarak Bulwark, mailto: ve webcal: bağlantıları için protokol işleyicisi olarak kaydolur.",
"description": "E-posta ve takvim bağlantılarının VNCmail+'ta açılıp açılmayacağını seçin. Teknik olarak VNCmail+, mailto: ve webcal: bağlantıları için protokol işleyicisi olarak kaydolur.",
"unsupported": "Bu tarayıcı veya bağlantı manuel protokol işleyicisi kaydını desteklemiyor. Yüklü PWA'yı yine de tarayıcı veya işletim sistemi ayarlarından kullanabilirsiniz.",
"mailto_label": "E-posta bağlantıları",
"mailto_description": "mailto: bağlantılarını Bulwark'ta önceden doldurulmuş düzenleyiciyle açın.",
"mailto_description": "mailto: bağlantılarını VNCmail+'ta önceden doldurulmuş düzenleyiciyle açın.",
"protocol_open_mode_label": "Protokol bağlantıları açılırken",
"protocol_open_mode_description": "Bulwark'ın mailto: ve webcal: bağlantılarını yeni bir sekmede açmasını mı yoksa açık bir oturumu yeniden kullanmasını mı istediğinizi seçin. Etkin oturum seçeneği, tarayıcı odağı engellerse Bulwark'ı öne getirmek için yedek bildirime tıklayabilmeniz amacıyla bildirim izni gerektirir.",
"protocol_open_mode_description": "VNCmail+'ın mailto: ve webcal: bağlantılarını yeni bir sekmede açmasını mı yoksa açık bir oturumu yeniden kullanmasını mı istediğinizi seçin. Etkin oturum seçeneği, tarayıcı odağı engellerse VNCmail+'ı öne getirmek için yedek bildirime tıklayabilmeniz amacıyla bildirim izni gerektirir.",
"protocol_open_mode_active_session": "Mümkünse etkin oturumda aç",
"protocol_open_mode_new_tab": "Her zaman yeni sekme aç",
"focus_notification_title": "Bulwark'ı aç",
"focus_notification_body": "Bağlantı Bulwark'ta açıldı. Pencereyi öne getirmek için tıklayın.",
"focus_notification_title": "VNCmail+'ı aç",
"focus_notification_body": "Bağlantı VNCmail+'ta açıldı. Pencereyi öne getirmek için tıklayın.",
"webcal_label": "Takvim bağlantıları",
"webcal_description": "webcal: bağlantılarını Bulwark'ta önceden doldurulmuş takvim aboneliği penceresiyle açın.",
"webcal_description": "webcal: bağlantılarını VNCmail+'ta önceden doldurulmuş takvim aboneliği penceresiyle açın.",
"register_mailto": "E-posta uygulaması olarak kaydet",
"register_webcal": "Takvim uygulaması olarak kaydet",
"mailto_registered": "E-posta işleyicisi kaydı istendi",
@@ -165,7 +165,7 @@
"registration_failed": "Protokol işleyicisi kaydı başarısız oldu",
"opening_mailto": "Düzenleyici açılıyor...",
"opening_webcal": "Takvim açılıyor...",
"browser_note": "Tarayıcınız veya işletim sisteminiz bunu onaylamanızı isteyebilir ve Bulwark'ın varsayılan uygulama olarak seçilebilmesi için yüklenmiş olmasını gerektirebilir.",
"browser_note": "Tarayıcınız veya işletim sisteminiz bunu onaylamanızı isteyebilir ve VNCmail+'ın varsayılan uygulama olarak seçilebilmesi için yüklenmiş olmasını gerektirebilir.",
"select_account_title": "Hesap seç",
"select_mailto_account": "Bu e-posta bağlantısını hangi hesabın açacağını seçin.",
"select_webcal_account": "Bu takvim bağlantısını hangi hesabın açacağını seçin.",
@@ -738,9 +738,9 @@
"app_title": "Webmail",
"reconnecting": "Bağlantı kesildi. Yeniden bağlanılmaya çalışılıyor…",
"rate_limited_title": "Sunucu kimlik doğrulaması geçici olarak hız sınırlamasına tabi.",
"rate_limited_detail": "Hesap kilitlenmesini önlemek için Bulwark arka plan isteklerini duraklattı. {seconds} saniye içinde yeniden deneniyor.",
"rate_limited_detail": "Hesap kilitlenmesini önlemek için VNCmail+ arka plan isteklerini duraklattı. {seconds} saniye içinde yeniden deneniyor.",
"rate_limited_action_title": "Kilitlenmeyi önlemek için istek duraklatıldı.",
"rate_limited_action_detail": "Bulwark, daha fazla kimlik doğrulama isteği göndermeden önce sunucunun soğuma süresinin bitmesini bekliyor. {seconds} saniye içinde tekrar deneyin."
"rate_limited_action_detail": "VNCmail+, daha fazla kimlik doğrulama isteği göndermeden önce sunucunun soğuma süresinin bitmesini bekliyor. {seconds} saniye içinde tekrar deneyin."
},
"notifications": {
"email_sent": "E-posta başarıyla gönderildi",
@@ -1074,12 +1074,12 @@
"push": {
"confirm_disable_message": "Bu cihaz, site kapalıyken uyarı almayı durduracak.",
"confirm_disable_title": "Arka plan bildirimleri devre dışı bırakılsın mı?",
"description": "Bu site kapalıyken yeni postalar için sistem bildirimleri alın. Bulwark push röle aracılığıyla iletilir; röle posta içeriğini asla görmez.",
"description": "Bu site kapalıyken yeni postalar için sistem bildirimleri alın. VNCmail+ push röle aracılığıyla iletilir; röle posta içeriğini asla görmez.",
"disable": "Devre dışı bırak",
"enable": "Etkinleştir",
"ios_hint": "iOS'ta önce siteyi ana ekranınıza yükleyin Safari Web Push'u yalnızca yüklü PWA'lara teslim eder.",
"reenable": "Yeniden kaydet",
"relay_desc": "Varsayılan olarak barındırılan Bulwark rölesini kullanır. Yalnızca kendiniz barındırıyorsanız değiştirin.",
"relay_desc": "Varsayılan olarak barındırılan VNCmail+ rölesini kullanır. Yalnızca kendiniz barındırıyorsanız değiştirin.",
"relay_label": "Push röle",
"relay_locked": "Yönetici tarafından ayarlandı",
"relay_locked_desc": "Push röle URL'si yöneticiniz tarafından ayarlandı ve değiştirilemez.",
@@ -1528,10 +1528,10 @@
},
"link_device": {
"title": "Mobil uygulamayı bağla",
"description": "Hiçbir şey yazmadan Bulwark Mail mobil uygulamasında oturum açın. Burada bir QR kodu oluşturun ve uygulamanın giriş ekranından tarayın.",
"description": "Hiçbir şey yazmadan VNCmail+ mobil uygulamasında oturum açın. Burada bir QR kodu oluşturun ve uygulamanın giriş ekranından tarayın.",
"generate": "QR kodunu göster",
"regenerate": "Yeni kod göster",
"instructions": "Bulwark Mail uygulamasını açın, giriş ekranında \"QR kodu tara\" seçeneğine dokunun ve kameranızı buraya doğrultun.",
"instructions": "VNCmail+ uygulamasını açın, giriş ekranında \"QR kodu tara\" seçeneğine dokunun ve kameranızı buraya doğrultun.",
"expires_in": "Bu kodun süresi {seconds} saniye içinde dolacak. Yalnızca bir kez kullanılabilir.",
"expired": "Bu kodun süresi doldu.",
"generating": "Oluşturuluyor…",
@@ -1706,7 +1706,7 @@
"button": "İçe Aktar"
},
"about": {
"title": "Bulwark Webmail"
"title": "VNCmail+"
}
},
"sidebar_apps": {
@@ -3055,7 +3055,7 @@
"start_tour": "Turu Başlat"
},
"demo_welcome": {
"title": "Bulwark Mail'e Hoş Geldiniz",
"title": "VNCmail+'e Hoş Geldiniz",
"description": "Tam özellikli bir web posta istemcisini doğrudan tarayıcınızda keşfedin. Tüm veriler cihazınızda kalır, her şeyi özgürce test edin.",
"feature_email": "E-posta oku ve oluştur",
"feature_organize": "Etiketler, yıldızlar ve klasörler",