diff --git a/ui/src/components/account/shared/account-surface-card.tsx b/ui/src/components/account/shared/account-surface-card.tsx index 6641068d..8e680913 100644 --- a/ui/src/components/account/shared/account-surface-card.tsx +++ b/ui/src/components/account/shared/account-surface-card.tsx @@ -172,6 +172,8 @@ export function AccountSurfaceCard({ const { t } = useTranslation(); const identity = getAccountIdentityPresentation(accountId, email, tokenFile); const title = displayEmail || identity.email || accountId; + const sensitiveTitle = (value: string | null | undefined) => + privacyMode ? undefined : (value ?? undefined); const normalizedProvider = provider.toLowerCase(); const effectiveTier = resolveEffectiveTier(tier, quota); const effectiveCodexBadge = @@ -202,7 +204,7 @@ export function AccountSurfaceCard({ {normalizedProvider === 'codex' ? effectiveCodexBadge?.label && ( { + it('keeps sensitive account title attributes available outside privacy mode', () => { + const { container } = render( + + ); + + expect(screen.getByText('person@example.com')).toHaveAttribute('title', 'person@example.com'); + expect(container.querySelector('[title="Business"]')).toBeInTheDocument(); + expect(container.querySelector('[title="Workspace abcdef12"]')).toBeInTheDocument(); + }); + + it('removes sensitive account title attributes in privacy mode', () => { + const { container } = render( + <> + + + + ); + + expect(screen.getByText('person@example.com')).not.toHaveAttribute('title'); + expect(screen.getByText('codex@example.com')).not.toHaveAttribute('title'); + expect(container.querySelector('[title="Business"]')).not.toBeInTheDocument(); + expect(container.querySelector('[title="Workspace abcdef12"]')).not.toBeInTheDocument(); + expect(container.querySelector('[title*="Enterprise"]')).not.toBeInTheDocument(); + }); +});