feat(encryption): MFA at-rest encryption auto-bootstrap with status UI (#1219) (#1231)

chore(i18n): extend parity gate to all locales with strict/info tiers

  Previously the script only inspected en/zh-CN/zh-TW, leaving de/fr/it/ja/pt-BR
  drift invisible. Now locales are auto-discovered from src/i18n/locales/, and a
  STRICT list (de, zh-CN, zh-TW — currently in parity) gates CI while the rest
  report informationally until their drift is caught up. ja notably has 27 real
  placeholder bugs worth fixing before promotion to strict.
This commit is contained in:
Sn0rrii
2026-05-08 09:01:51 +02:00
committed by GitHub
parent bb03a2b373
commit 90743cfa39
32 changed files with 12242 additions and 98 deletions
+17
View File
@@ -2809,6 +2809,22 @@ export interface LDAPStatus {
ldap_configured: boolean;
}
export interface EncryptionRowCounts {
oidc_providers: number;
user_totp: number;
}
export interface EncryptionStatus {
key_configured: boolean;
key_source: 'env' | 'file' | 'generated' | 'none';
legacy_plaintext_rows: EncryptionRowCounts;
encrypted_rows: EncryptionRowCounts;
decryption_broken: boolean;
// B2: count of rows skipped during the last legacy re-encryption migration.
// Surfaced via a yellow secondary banner in SecurityStatusCard.
migration_error_count: number;
}
export interface LDAPTestResponse {
success: boolean;
message: string;
@@ -2871,6 +2887,7 @@ export const api = {
getAdvancedAuthStatus: () => request<AdvancedAuthStatus>('/auth/advanced-auth/status'),
// LDAP Authentication
getLDAPStatus: () => request<LDAPStatus>('/auth/ldap/status'),
getEncryptionStatus: () => request<EncryptionStatus>('/auth/encryption-status'),
testLDAP: () =>
request<LDAPTestResponse>('/auth/ldap/test', {
method: 'POST',