fix(ui): design critique overhaul — a11y, honest metrics, i18n repair (critique 2026-08-30)
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 2m51s

P0 a11y: keyboard-accessible dropzone (role/tabIndex/Enter-Space), ARIA
combobox + listbox pattern for language selector, role=switch on glossary
toggle, role=status live region on notifications, aria-labels on password
toggles, visible-on-focus close buttons, RTL logical positioning (start-*).

Trust: third-party Memento promo removed from translate page, sidebar and
all 13 locales; fabricated stats (99.9%, Turbo, computed layout-integrity
bars) replaced with real measurements incl. API estimated remaining time;
silent download failure now surfaces an error notification.

Honesty: fake 100-byte file injections removed (format chips are now
informational); cancel-that-doesn't renamed 'Back to start' with hint;
Enterprise contact placeholder replaced with contact@wordly.art.

i18n: t() no longer returns raw keys (empty string + defaultValue support,
~30 dead || fallbacks now work); ~170 new keys EN+FR across new reviews/
teams namespaces, glossaries context tab, translate monitor, settings,
services, pricing, landing, fileUploader; split-key italic titles replace
lastIndexOf() surgery (zh/ja-safe); key-audit script added 0 missing.

Flow: active job persisted across refresh with polling resume (24h TTL);
client-side recent-jobs history with review links; review page linked from
complete state; settings/services added to dashboard nav; Business/
Enterprise regain glossary access (tier gate unified).

Typeset (sober-tool direction): 7.5-9px labels raised to 10-12px, /30
opacity to /45-/55, uppercase tracking reduced, trust footer legible,
country flags removed from language switcher, localized dates.

Cleanup: 5 orphaned translate components, dead site header/footer,
fossil tailwind.config.js, PipelineStepper, duplicate pill+H1 titles,
two-step confirm for cache clear, dead landing footer links.

Verified: next build exit 0, vitest 9/9, eslint 64 errors = HEAD
(no regression, -3 warnings), detector 4 -> 3 findings.
This commit is contained in:
2026-08-30 21:44:53 +02:00
parent 1a67241ad5
commit 50047ea8a2
79 changed files with 878 additions and 1590 deletions

View File

@@ -89,5 +89,25 @@
"translate.preserveLayoutDesc": "Conserver la mise en page",
"translate.textOnly": "Texte brut",
"translate.textOnlyDesc": "Traduction rapide du texte uniquement",
"translate.unavailableStandard": "Indisponible en mode Standard (IA uniquement)"
"translate.unavailableStandard": "Indisponible en mode Standard (IA uniquement)",
"translate.header.aiActiveTitle": "Analyse IA",
"translate.header.aiActiveAccent": "active",
"translate.header.completedTitleBase": "Traduction",
"translate.header.completedTitleAccent": "terminée",
"translate.header.translateDocBase": "Traduire",
"translate.header.translateDocAccent": "un document",
"translate.header.workspace": "Espace de traduction",
"translate.monitor.source": "Source",
"translate.monitor.target": "Cible",
"translate.monitor.engine": "Moteur",
"translate.stat.progress": "progression",
"translate.stat.remaining": "temps restant",
"translate.stat.elapsed": "temps écoulé",
"translate.leaveScreen": "Revenir à l'accueil",
"translate.leaveScreenHint": "La traduction continue en arrière-plan.",
"translate.reviewCta": "Relire segment par segment",
"translate.downloadFailed": "Le téléchargement a échoué. Réessayez.",
"translate.recent.title": "Traductions récentes",
"translate.recent.review": "Relire",
"translate.upload.ariaDropzone": "Déposer un document : glisser-déposer ou appuyer sur Entrée pour parcourir"
}