Files
LambdaMail/services/webmail/messages/en.json
T
Lucas RayanandClaude Opus 5 3a82d82428 #22: fix the admin lockout, and the regressions the UI rewrite brought back
The console demanded a second factor and refused to open without one, but
enrolment lived on the other surface - so an operator whose only account
was the administrator had no way in. The password was already verified at
that point, so the refusal now carries a short-lived grant that permits
enrolling a factor and nothing else, and the admin login screen walks
through it: secret, confirmation, recovery codes, sign in. Two tests cover
it, including that the grant opens no other endpoint.

The rewrite also undid work that was already in place:

  - The postcss override was dropped and the advisory came back, along
    with a critical one in vitest. postcss is a direct dependency now, so
    the fix is the version plus an override scoped to Next's own copy;
    vitest moves to 3.2.7. The lockfile needed regenerating for either to
    take effect. Zero advisories now.

  - 100 language-lint violations: the admin console had been rewritten
    with its strings in Portuguese, hardcoded. That fails CI, and it also
    puts those strings beyond the reach of the translation bundles - an
    English or Spanish user would have read Portuguese. They are English
    in the source again.

  - The mail screen put a fixed 320px list beside the reader with no
    breakpoint, so on a phone the viewport overflowed and the message was
    a few pixels wide. One pane at a time below md, with a way back.

  - The icon-only navigation toggles had nothing for a screen reader to
    announce.

The layouts' own mobile navigation and every previously fixed behaviour
survived the rewrite - checked rather than assumed.

Also fixes a marker collision I introduced: the E2E helper locates the
repository by a migrations directory, and services/migrations satisfied
that one directory too early. It now requires the SQL to actually be
there.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-02 16:13:14 -03:00

149 lines
5.4 KiB
JSON

{
"common": {
"appName": "LambdaMail",
"userPortal": "Webmail",
"adminPortal": "Management Console",
"loading": "Loading...",
"save": "Save Changes",
"cancel": "Cancel",
"delete": "Delete",
"confirm": "Confirm",
"search": "Search",
"status": "Status",
"actions": "Actions",
"refresh": "Refresh",
"logout": "Log Out"
},
"auth": {
"userLoginTitle": "Webmail Sign In",
"adminLoginTitle": "Admin Console Sign In",
"emailLabel": "Email Address",
"passwordLabel": "Password",
"signInButton": "Sign In",
"totpCodeLabel": "6-Digit Authenticator Code",
"verifyCodeButton": "Verify Code",
"invalidCredentials": "Invalid email or password",
"mfaRequired": "Two-factor authentication code required"
},
"mail": {
"inbox": "Inbox",
"sent": "Sent",
"drafts": "Drafts",
"trash": "Trash",
"junk": "Spam",
"archive": "Archive",
"compose": "Compose Email",
"noMessages": "No messages in this folder",
"unreadCount": "{count, plural, =0 {No unread messages} one {# unread message} other {# unread messages}}",
"loadImages": "Load Remote Images",
"reply": "Reply",
"forward": "Forward",
"undoSend": "Undo Send ({seconds}s remaining)"
},
"settings": {
"title": "Account Settings",
"security": "Security & 2FA",
"appPasswords": "App Passwords",
"sessions": "Active Sessions",
"mfaStatus": "Two-Factor Authentication Status",
"mfaEnabled": "2FA is Active",
"mfaDisabled": "2FA is Disabled",
"enableMfa": "Enable 2FA",
"generateAppPassword": "Generate App Password",
"recoveryCodesTitle": "Recovery Codes",
"saveRecoveryCodes": "Save these recovery codes in a safe place. They will not be shown again.",
"language": "Language",
"signOut": "Sign out",
"langEn": "English",
"langPtBR": "Portuguese (Brazil)",
"langEs": "Spanish"
},
"admin": {
"dashboardTitle": "System Dashboard",
"domainsTitle": "Domains & DNS (13 Records)",
"mailboxesTitle": "Mailboxes & Accounts",
"aliasesTitle": "Aliases & Routing",
"queueTitle": "Outbound Delivery Queue",
"dmarcTitle": "DMARC Analytics",
"securityTitle": "Security & Audit Log",
"preflightTitle": "Preflight Diagnostics",
"reconcileDns": "Reconcile DNS Records",
"dnsStatusVerified": "VERIFIED",
"dnsStatusDrift": "DRIFT DETECTED",
"dnsStatusPartial": "PARTIAL",
"retryJob": "Retry Delivery",
"cancelJob": "Cancel Job",
"freezeDomain": "Freeze Destination"
},
"errors": {
"unauthorized": "Session expired or unauthorized",
"forbidden": "Access forbidden for this account surface",
"serverError": "Internal server error occurred"
},
"ui": {
"accountStatus": "Account Status",
"actions": "Actions",
"active": "ACTIVE",
"activeSessions": "Active Webmail Sessions",
"actor": "Actor / Account",
"actualRecord": "Actual DNS Record (Cloudflare)",
"allChecksPassed": "ALL CHECKS PASSED",
"appPasswordGenerated": "App Password Generated:",
"appPasswordsSection": "App Passwords (IMAP / SMTP Clients)",
"attempts": "Attempts",
"clientIp": "Client IP",
"copyPasswordNow": "Copy this password now. It will not be shown again.",
"coreInfra": "Core Infrastructure Status",
"currentSession": "Current Webmail Browser Session",
"daneVerified": "DANE / MTA-STS verified",
"destination": "Destination",
"diskUsed": "Disk Capacity Used",
"dkimResult": "DKIM Result",
"dkimAlignment": "DKIM Signature Alignment",
"dmarcEnforcement": "DMARC Policy Enforcement",
"domainVerification": "Domain Verification Status",
"emailAddress": "Email Address",
"eventAction": "Event Action",
"expectedValue": "Expected Specification Value",
"healthy": "HEALTHY",
"imapEngine": "IMAP Protocol Engine (143/993)",
"inboundVolume": "Inbound Volume (24h)",
"jobId": "Job ID",
"lastError": "Last Error",
"liveMetrics": "Live operational metrics for LambdaMail mail node.",
"localDisk": "Local disk storage driver",
"preflightTitle": "Mail Server Preflight Diagnostics",
"messageBody": "Message Body",
"messageVolume": "Message Volume",
"noAppPasswords": "No app passwords generated yet.",
"online": "ONLINE",
"outboundDelivered": "Outbound Delivered (24h)",
"queueDepth": "Outbound Queue Depth",
"postgresRunner": "Postgres job runner active",
"provisionMailbox": "Provision New Mailbox Account",
"recipient": "Recipient",
"recordName": "Record Name",
"reportingOrg": "Reporting Organization",
"scanners": "Rspamd Anti-Spam Scanner & ClamAV",
"sender": "Sender",
"smtpListener": "SMTP Protocols Listener (25/587/465)",
"sourceIp": "Source IP",
"spfRatio": "SPF Alignment Pass Ratio",
"spfResult": "SPF Result",
"storageQuota": "Storage Quota",
"subject": "Subject",
"targetObject": "Target Object",
"timestamp": "Timestamp",
"toRecipients": "To (Recipients)",
"totalEvaluated": "Total Evaluated Messages",
"twoFactorSection": "Two-Factor Authentication (TOTP RFC 6238)",
"watching": "WATCHING",
"passwordChanged": "Password changed",
"signOutOthers": "Sign out other sessions",
"changePassword": "Change password",
"currentPassword": "Current password",
"newPassword": "New password (min. 12 characters)",
"toggleMenu": "Toggle navigation menu"
}
}