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": "在 Bulwark 中打开 mailto: 链接,并预先填好撰写窗口。",
|
||||
"mailto_description": "在 VNCmail+ 中打开 mailto: 链接,并预先填好撰写窗口。",
|
||||
"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": "在 Bulwark 中打开 webcal: 链接,并预先填好日历订阅对话框。",
|
||||
"webcal_description": "在 VNCmail+ 中打开 webcal: 链接,并预先填好日历订阅对话框。",
|
||||
"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 移动应用。在此生成二维码,然后在应用的登录界面扫描。",
|
||||
"description": "无需输入任何内容即可登录 VNCmail+ 移动应用。在此生成二维码,然后在应用的登录界面扫描。",
|
||||
"generate": "显示二维码",
|
||||
"regenerate": "显示新的二维码",
|
||||
"instructions": "打开 Bulwark Mail 应用,在登录界面点按\"扫描二维码\",然后将相机对准此处。",
|
||||
"instructions": "打开 VNCmail+ 应用,在登录界面点按\"扫描二维码\",然后将相机对准此处。",
|
||||
"expires_in": "此二维码将在 {seconds} 秒后过期,且只能使用一次。",
|
||||
"expired": "此二维码已过期。",
|
||||
"generating": "生成中…",
|
||||
@@ -1706,7 +1706,7 @@
|
||||
"button": "导入"
|
||||
},
|
||||
"about": {
|
||||
"title": "Bulwark 网页邮箱"
|
||||
"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