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": "既定のアプリ",
"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": "このサイトが閉じているときに新着メールのシステム通知を受信します。Bulwark プッシュリレー経由で配信され、リレーがメール内容を見ることはありません。",
"description": "このサイトが閉じているときに新着メールのシステム通知を受信します。VNCmail+ プッシュリレー経由で配信され、リレーがメール内容を見ることはありません。",
"disable": "無効化",
"enable": "有効化",
"ios_hint": "iOS では、最初にサイトをホーム画面にインストールしてください。Safari はインストールされた PWA にのみ Web Push を配信します。",
"reenable": "再登録",
"relay_desc": "デフォルトはホストされた Bulwark リレーです。セルフホストする場合のみ変更してください。",
"relay_desc": "デフォルトはホストされた VNCmail+ リレーです。セルフホストする場合のみ変更してください。",
"relay_label": "プッシュリレー",
"relay_locked": "管理者が設定",
"relay_locked_desc": "プッシュリレーの URL は管理者によって設定されており、変更できません。",
@@ -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": "タグ・スター・フォルダ",