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
+13 -13
View File
@@ -146,18 +146,18 @@
},
"protocol_handlers": {
"title": "Výchozí aplikace",
"description": "Zvolte, zda se mají e-mailové a kalendářové odkazy otevírat v Bulwarku. Technicky se Bulwark registruje jako obslužná aplikace protokolu pro odkazy mailto: a webcal:.",
"description": "Zvolte, zda se mají e-mailové a kalendářové odkazy otevírat v VNCmail+u. Technicky se VNCmail+ registruje jako obslužná aplikace protokolu pro odkazy mailto: a webcal:.",
"unsupported": "Tento prohlížeč nebo toto připojení nepodporuje ruční registraci obslužné aplikace protokolu. Nainstalovanou PWA můžete případně použít přes nastavení prohlížeče nebo systému.",
"mailto_label": "E-mailové odkazy",
"mailto_description": "Otevře odkazy mailto: v Bulwarku s předvyplněným editorem zprávy.",
"mailto_description": "Otevře odkazy mailto: v VNCmail+u s předvyplněným editorem zprávy.",
"protocol_open_mode_label": "Při otevírání odkazů protokolů",
"protocol_open_mode_description": "Zvolte, zda má Bulwark otevírat odkazy mailto: a webcal: v nové kartě, nebo znovu použít otevřenou relaci. Volba aktivní relace vyžaduje oprávnění k oznámením, abyste mohli kliknout na záložní oznámení a přenést Bulwark do popředí, pokud prohlížeč blokuje fokus.",
"protocol_open_mode_description": "Zvolte, zda má VNCmail+ otevírat odkazy mailto: a webcal: v nové kartě, nebo znovu použít otevřenou relaci. Volba aktivní relace vyžaduje oprávnění k oznámením, abyste mohli kliknout na záložní oznámení a přenést VNCmail+ do popředí, pokud prohlížeč blokuje fokus.",
"protocol_open_mode_active_session": "Otevřít v aktivní relaci, pokud je to možné",
"protocol_open_mode_new_tab": "Vždy otevřít novou kartu",
"focus_notification_title": "Otevřít Bulwark",
"focus_notification_body": "Odkaz byl otevřen v Bulwarku. Kliknutím přenesete okno do popředí.",
"focus_notification_title": "Otevřít VNCmail+",
"focus_notification_body": "Odkaz byl otevřen v VNCmail+u. Kliknutím přenesete okno do popředí.",
"webcal_label": "Kalendářové odkazy",
"webcal_description": "Otevře odkazy webcal: v Bulwarku s předvyplněným dialogem pro odběr kalendáře.",
"webcal_description": "Otevře odkazy webcal: v VNCmail+u s předvyplněným dialogem pro odběr kalendáře.",
"register_mailto": "Registrovat e-mailovou aplikaci",
"register_webcal": "Registrovat kalendářovou aplikaci",
"mailto_registered": "Registrace obsluhy e-mailových odkazů byla vyžádána",
@@ -165,7 +165,7 @@
"registration_failed": "Registrace obslužné aplikace protokolu selhala",
"opening_mailto": "Otevírá se editor...",
"opening_webcal": "Otevírá se kalendář...",
"browser_note": "Prohlížeč nebo operační systém vás může požádat o potvrzení a může vyžadovat, aby byl Bulwark nainstalovaný, než jej půjde vybrat jako výchozí aplikaci.",
"browser_note": "Prohlížeč nebo operační systém vás může požádat o potvrzení a může vyžadovat, aby byl VNCmail+ nainstalovaný, než jej půjde vybrat jako výchozí aplikaci.",
"select_account_title": "Vybrat účet",
"select_mailto_account": "Vyberte účet, ve kterém se má tento e-mailový odkaz otevřít.",
"select_webcal_account": "Vyberte účet, ve kterém se má tento kalendářový odkaz otevřít.",
@@ -1074,12 +1074,12 @@
"push": {
"confirm_disable_message": "Toto zařízení přestane přijímat upozornění, když je web zavřený.",
"confirm_disable_title": "Zakázat oznámení na pozadí?",
"description": "Přijímat systémová oznámení o nové poště, když je tento web zavřený. Doručováno přes push relay Bulwark; relay nikdy nevidí obsah pošty.",
"description": "Přijímat systémová oznámení o nové poště, když je tento web zavřený. Doručováno přes push relay VNCmail+; relay nikdy nevidí obsah pošty.",
"disable": "Zakázat",
"enable": "Povolit",
"ios_hint": "Na iOS nejprve nainstalujte web na domovskou obrazovku Safari doručuje Web Push pouze nainstalovaným PWA.",
"reenable": "Znovu zaregistrovat",
"relay_desc": "Výchozí je hostovaný relay Bulwark. Změňte pouze pokud používáte vlastní hosting.",
"relay_desc": "Výchozí je hostovaný relay VNCmail+. Změňte pouze pokud používáte vlastní hosting.",
"relay_label": "Push relay",
"relay_locked": "Nastaveno administrátorem",
"relay_locked_desc": "URL push relay byla nastavena administrátorem a nelze ji změnit.",
@@ -1528,10 +1528,10 @@
},
"link_device": {
"title": "Propojit mobilní aplikaci",
"description": "Přihlaste se do mobilní aplikace Bulwark Mail bez psaní. Vygenerujte zde QR kód a naskenujte jej na přihlašovací obrazovce aplikace.",
"description": "Přihlaste se do mobilní aplikace VNCmail+ bez psaní. Vygenerujte zde QR kód a naskenujte jej na přihlašovací obrazovce aplikace.",
"generate": "Zobrazit QR kód",
"regenerate": "Zobrazit nový kód",
"instructions": "Otevřete aplikaci Bulwark Mail, na přihlašovací obrazovce klepněte na \"Naskenovat QR kód\" a namiřte fotoaparát sem.",
"instructions": "Otevřete aplikaci VNCmail+, na přihlašovací obrazovce klepněte na \"Naskenovat QR kód\" a namiřte fotoaparát sem.",
"expires_in": "Tento kód vyprší za {seconds} sekund. Lze jej použít pouze jednou.",
"expired": "Platnost tohoto kódu vypršela.",
"generating": "Generování…",
@@ -1706,7 +1706,7 @@
"button": "Importovat"
},
"about": {
"title": "Bulwark Webmail"
"title": "VNCmail+"
}
},
"sidebar_apps": {
@@ -3032,7 +3032,7 @@
"start_tour": "Spustit průvodce"
},
"demo_welcome": {
"title": "Vítejte v Bulwark Mail",
"title": "Vítejte v VNCmail+",
"description": "Prozkoumejte plně funkčního webového e-mailového klienta - přímo v prohlížeči. Všechna data zůstávají na vašem zařízení, takže můžete bez obav vše otestovat.",
"feature_email": "Čtěte a pište e-maily",
"feature_organize": "Štítky, hvězdičky a složky",