From 7e3418079c8b62e9849e33d25a08afcbf2ae51e5 Mon Sep 17 00:00:00 2001
From: John Coffey
Date: Tue, 22 Sep 2026 15:19:25 -0700
Subject: [PATCH] Write the name in lowercase where people see it
The brand is lowercase inbuxa. This changes the setup wizard's welcome and
completion text, the logo's accessible name, the version line in the top bar,
the document title, the legacy-protocols screens and banner, the protocol
table's JMAP row, one help text, and the issuer new authenticator enrollments
are labeled with.
Keys are ids here, not English text, so nothing moved: each catalog value and
its inline fallback changed together. This console ships English only, so
there is no other catalog to follow. Comments, identifiers and env var names
are untouched.
---
src/components/bootstrap/BootstrapWizard.tsx | 6 +++---
src/components/common/Logo.tsx | 2 +-
src/components/forms/OtpAuthField.tsx | 2 +-
src/components/layout/TopBar.tsx | 2 +-
src/features/hardening/LegacyProtocolsBanner.tsx | 4 ++--
src/features/hardening/LegacyProtocolsPage.tsx | 6 +++---
src/features/hardening/TenantLegacyProtocols.tsx | 2 +-
src/features/hardening/parts.tsx | 10 +++++-----
src/features/hardening/protocolPolicy.ts | 2 +-
src/help/texts.ts | 2 +-
src/hooks/useDocumentTitle.ts | 2 +-
src/i18n/en.json | 10 +++++-----
12 files changed, 25 insertions(+), 25 deletions(-)
diff --git a/src/components/bootstrap/BootstrapWizard.tsx b/src/components/bootstrap/BootstrapWizard.tsx
index 72cef8e..fdf9013 100644
--- a/src/components/bootstrap/BootstrapWizard.tsx
+++ b/src/components/bootstrap/BootstrapWizard.tsx
@@ -336,7 +336,7 @@ export function BootstrapWizard() {
-
{t('bootstrap.welcome', 'Welcome to INBUXA')}
+
{t('bootstrap.welcome', 'Welcome to inbuxa')}
{t('bootstrap.welcomeSubtitle', "Let's get your server set up.")}
@@ -471,7 +471,7 @@ function SuccessScreen({
'bootstrap.credentialsCreated',
'Your administrator account has been created. Write these down now: the password will not be shown again.',
)
- : t('bootstrap.configuredSuccessfully', 'INBUXA has been configured successfully.')}
+ : t('bootstrap.configuredSuccessfully', 'inbuxa has been configured successfully.')}
@@ -503,7 +503,7 @@ function SuccessScreen({
{t('bootstrap.nextStepLabel', 'Next step:')} {' '}
{t(
'bootstrap.nextStepBody',
- 'restart INBUXA for the new configuration to take effect. Once restarted, sign in with the credentials above to continue administering your server.',
+ 'restart inbuxa for the new configuration to take effect. Once restarted, sign in with the credentials above to continue administering your server.',
)}
diff --git a/src/components/common/Logo.tsx b/src/components/common/Logo.tsx
index e621728..8ab300d 100644
--- a/src/components/common/Logo.tsx
+++ b/src/components/common/Logo.tsx
@@ -20,7 +20,7 @@ export function DefaultLogo() {
diff --git a/src/components/forms/OtpAuthField.tsx b/src/components/forms/OtpAuthField.tsx
index fd73a25..74cf3d4 100644
--- a/src/components/forms/OtpAuthField.tsx
+++ b/src/components/forms/OtpAuthField.tsx
@@ -38,7 +38,7 @@ function buildOtpAuthUrl(totp: OTPAuth.TOTP): string {
function generateTotp(): { totp: OTPAuth.TOTP; url: string } {
const totp = new OTPAuth.TOTP({
- issuer: 'INBUXA',
+ issuer: 'inbuxa',
label: 'account',
algorithm: 'SHA1',
digits: 6,
diff --git a/src/components/layout/TopBar.tsx b/src/components/layout/TopBar.tsx
index fc091c3..43a9527 100644
--- a/src/components/layout/TopBar.tsx
+++ b/src/components/layout/TopBar.tsx
@@ -104,7 +104,7 @@ export function TopBar() {
- {t('version.label', 'INBUXA Admin {{version}}', { version: __APP_VERSION__ })}
+ {t('version.label', 'inbuxa Admin {{version}}', { version: __APP_VERSION__ })}
diff --git a/src/features/hardening/LegacyProtocolsBanner.tsx b/src/features/hardening/LegacyProtocolsBanner.tsx
index f737611..eb9a7ae 100644
--- a/src/features/hardening/LegacyProtocolsBanner.tsx
+++ b/src/features/hardening/LegacyProtocolsBanner.tsx
@@ -62,10 +62,10 @@ export function LegacyProtocolsBanner() {
{t('legacyProtocols.bannerLead', 'Legacy mail protocols are')}{' '}
{t('legacyProtocols.bannerOff', 'off')} {' '}
{off === 'server'
- ? t('legacyProtocols.bannerTail', 'on this server. Only INBUXA webmail and JMAP apps can sign in.')
+ ? t('legacyProtocols.bannerTail', 'on this server. Only inbuxa webmail and JMAP apps can sign in.')
: t(
'legacyProtocols.bannerTailTenant',
- 'for your organization. Only INBUXA webmail and JMAP apps can sign in.',
+ 'for your organization. Only inbuxa webmail and JMAP apps can sign in.',
)}
{off === 'server' && (
diff --git a/src/features/hardening/LegacyProtocolsPage.tsx b/src/features/hardening/LegacyProtocolsPage.tsx
index 19b0cff..403650a 100644
--- a/src/features/hardening/LegacyProtocolsPage.tsx
+++ b/src/features/hardening/LegacyProtocolsPage.tsx
@@ -115,7 +115,7 @@ export function LegacyProtocolsPage() {
{t(
'legacyProtocols.subtitle',
- 'Turn off IMAP, POP3, ManageSieve and sending from mail apps, so that only INBUXA webmail and JMAP apps can reach this server.',
+ 'Turn off IMAP, POP3, ManageSieve and sending from mail apps, so that only inbuxa webmail and JMAP apps can reach this server.',
)}
@@ -206,7 +206,7 @@ function StatusCard({
{off
- ? t('legacyProtocols.statusOffBody', 'Only INBUXA webmail and JMAP apps can sign in.')
+ ? t('legacyProtocols.statusOffBody', 'Only inbuxa webmail and JMAP apps can sign in.')
: t('legacyProtocols.statusOnBody', 'Mail apps can use IMAP, POP3 and ManageSieve.')}
{policy.changedAt !== null && (
<>
@@ -276,7 +276,7 @@ function ProtocolTable({ rows, off }: { rows: ProtocolRow[]; off: boolean }) {
{t(
'legacyProtocols.lockNote',
- 'Incoming mail (SMTP) and INBUXA webmail (JMAP) are locked open: closing them would stop mail arriving and lock everyone out, including you.',
+ 'Incoming mail (SMTP) and inbuxa webmail (JMAP) are locked open: closing them would stop mail arriving and lock everyone out, including you.',
)}
diff --git a/src/features/hardening/TenantLegacyProtocols.tsx b/src/features/hardening/TenantLegacyProtocols.tsx
index c8d86bc..14f122c 100644
--- a/src/features/hardening/TenantLegacyProtocols.tsx
+++ b/src/features/hardening/TenantLegacyProtocols.tsx
@@ -102,7 +102,7 @@ export function TenantLegacyProtocols({ tenantId }: { tenantId: string }) {
{off
? t(
'legacyProtocols.tenantOff',
- 'Off for {{organization}}. Only INBUXA webmail and JMAP apps can sign in to its domains.',
+ 'Off for {{organization}}. Only inbuxa webmail and JMAP apps can sign in to its domains.',
{ organization: name },
)
: t(
diff --git a/src/features/hardening/parts.tsx b/src/features/hardening/parts.tsx
index cc11527..4a9d373 100644
--- a/src/features/hardening/parts.tsx
+++ b/src/features/hardening/parts.tsx
@@ -128,7 +128,7 @@ export function Statement({ scope }: { scope: StatementScope }) {
return (
- {t('legacyProtocols.statementTitle', 'Only INBUXA webmail and JMAP apps will work.')}
+ {t('legacyProtocols.statementTitle', 'Only inbuxa webmail and JMAP apps will work.')}
{scope.kind === 'server'
@@ -152,7 +152,7 @@ export function Statement({ scope }: { scope: StatementScope }) {
{t(
'legacyProtocols.statementFilters',
- 'Filters managed from a mail app (ManageSieve) will stop working. Filters set in INBUXA webmail keep working.',
+ 'Filters managed from a mail app (ManageSieve) will stop working. Filters set in inbuxa webmail keep working.',
)}
@@ -164,7 +164,7 @@ export function Statement({ scope }: { scope: StatementScope }) {
{t(
'legacyProtocols.statementWebmail',
- 'People keep full access through INBUXA webmail, which can be installed as an app on phones and computers.',
+ 'People keep full access through inbuxa webmail, which can be installed as an app on phones and computers.',
)}
@@ -183,7 +183,7 @@ export function Statement({ scope }: { scope: StatementScope }) {
{t(
'legacyProtocols.statementSubmission',
- 'Sending from mail apps (SMTP submission) will stop working, but its ports stay open: mail apps will be told they cannot sign in. Incoming mail (SMTP) and INBUXA webmail (JMAP) are not affected and cannot be turned off here.',
+ 'Sending from mail apps (SMTP submission) will stop working, but its ports stay open: mail apps will be told they cannot sign in. Incoming mail (SMTP) and inbuxa webmail (JMAP) are not affected and cannot be turned off here.',
)}
{scope.kind === 'server' && (
@@ -191,7 +191,7 @@ export function Statement({ scope }: { scope: StatementScope }) {
{t('legacyProtocols.firewallLead', 'This does not change your firewall or port forwarding.')} {' '}
{t(
'legacyProtocols.firewallBody',
- 'INBUXA stops answering on these ports; anything that still routes them to this server — firewall rules, NAT port-forwards, a load balancer or proxy — is yours to reconcile.',
+ 'inbuxa stops answering on these ports; anything that still routes them to this server — firewall rules, NAT port-forwards, a load balancer or proxy — is yours to reconcile.',
)}
)}
diff --git a/src/features/hardening/protocolPolicy.ts b/src/features/hardening/protocolPolicy.ts
index c083b71..7363c0b 100644
--- a/src/features/hardening/protocolPolicy.ts
+++ b/src/features/hardening/protocolPolicy.ts
@@ -244,7 +244,7 @@ export function protocolRows(policy: ProtocolPolicy, listeners: PolicyListener[]
},
// Incoming mail and JMAP are never the switch's to close (LP-3, "Not affected, ever").
{ key: 'smtp', label: 'SMTP (incoming mail)', state: 'locked', ports: [] },
- { key: 'jmap', label: 'JMAP (INBUXA webmail)', state: 'locked', ports: [] },
+ { key: 'jmap', label: 'JMAP (inbuxa webmail)', state: 'locked', ports: [] },
];
}
diff --git a/src/help/texts.ts b/src/help/texts.ts
index 364a627..36674bf 100644
--- a/src/help/texts.ts
+++ b/src/help/texts.ts
@@ -104,7 +104,7 @@ export const PAGE_HELP: Record = {
about: 'Named sets of permissions. Give a role to a person to let them do more, or less.',
},
'x:OAuthClient': {
- about: 'Apps allowed to sign people in through this server, like INBUXA webmail and INBUXA Admin.',
+ about: 'Apps allowed to sign people in through this server, like inbuxa webmail and inbuxa Admin.',
},
'x:DkimSignature': {
about: 'The keys that sign outgoing mail so receivers can check it really came from you.',
diff --git a/src/hooks/useDocumentTitle.ts b/src/hooks/useDocumentTitle.ts
index 0fb397e..d5edf1c 100644
--- a/src/hooks/useDocumentTitle.ts
+++ b/src/hooks/useDocumentTitle.ts
@@ -9,7 +9,7 @@
import { useEffect } from 'react';
-const APP_NAME = 'INBUXA Admin';
+const APP_NAME = 'inbuxa Admin';
export function useDocumentTitle(title?: string | null) {
useEffect(() => {
diff --git a/src/i18n/en.json b/src/i18n/en.json
index 2013e35..f0c63f8 100644
--- a/src/i18n/en.json
+++ b/src/i18n/en.json
@@ -15,7 +15,7 @@
"bootstrap": {
"clipboardBlocked": "Your browser blocked clipboard access.",
"complete": "Setup complete",
- "configuredSuccessfully": "INBUXA has been configured successfully.",
+ "configuredSuccessfully": "inbuxa has been configured successfully.",
"copyFailed": "Copy failed",
"credentialsCreated": "Your administrator account has been created. Write these down now: the password will not be shown again.",
"emptyForm": "Setup form is empty. The server did not return any bootstrap fields.",
@@ -23,11 +23,11 @@
"failedToLoad": "Failed to load bootstrap state.",
"finishSetup": "Finish setup",
"loadingSetup": "Loading setup...",
- "nextStepBody": "restart INBUXA for the new configuration to take effect. Once restarted, sign in with the credentials above to continue administering your server.",
+ "nextStepBody": "restart inbuxa for the new configuration to take effect. Once restarted, sign in with the credentials above to continue administering your server.",
"nextStepLabel": "Next step:",
"noConfirm": "The server did not confirm the update.",
"stepOf": "Step {{current}} of {{total}}",
- "welcome": "Welcome to INBUXA",
+ "welcome": "Welcome to inbuxa",
"welcomeSubtitle": "Let's get your server set up."
},
"common": {
@@ -295,11 +295,11 @@
},
"logo": {
"alt": "Logo",
- "inbuxaAlt": "INBUXA"
+ "inbuxaAlt": "inbuxa"
},
"logout": "Logout",
"version": {
- "label": "INBUXA Admin {{version}}"
+ "label": "inbuxa Admin {{version}}"
},
"nav": {
"layoutLegacy": "Legacy",
--
2.54.0