diff --git a/packages/dashboard/app/components/DashboardLoader.tsx b/packages/dashboard/app/components/DashboardLoader.tsx index 6f2f90f6ef..4b4134c82f 100644 --- a/packages/dashboard/app/components/DashboardLoader.tsx +++ b/packages/dashboard/app/components/DashboardLoader.tsx @@ -75,12 +75,20 @@ export function DashboardLoader({ stage }: DashboardLoaderProps) { return versionUpdated; }); + /** + * FNXC:DashboardI18n 2026-06-20-23:20: + * FN-6822 requires the loader status region accessible name to carry inline English defaults so backend-less test i18next and pre-catalog first paint render the localized label instead of the raw key. + */ + const statusLabel = isVersionUpdate + ? t("dashboard.updatingMessage", "Updating Fusion dashboard") + : t("dashboard.loadingMessage", "Loading Fusion dashboard"); + return (
diff --git a/packages/dashboard/app/components/StashConflictModal.tsx b/packages/dashboard/app/components/StashConflictModal.tsx index 2cb9a3c949..6e1f7dafc4 100644 --- a/packages/dashboard/app/components/StashConflictModal.tsx +++ b/packages/dashboard/app/components/StashConflictModal.tsx @@ -85,6 +85,12 @@ export default function StashConflictModal({ const [error, setError] = useState(null); const [copyState, setCopyState] = useState<"idle" | "copied" | "failed">("idle"); + /** + * FNXC:StashConflictModalI18n 2026-06-20-23:22: + * FN-6822 requires the copy-reference accessible name to use the same inline English default for both the rendered button and the initial-focus selector so backend-less i18next does not expose raw keys or break focus targeting. + */ + const copyReferenceLabel = t("stash.copyReference", "Copy stash reference"); + useEffect(() => { if (open) { setRemainingConflicts(autostashOutcome === "failed" ? [] : conflictedFiles); @@ -103,7 +109,7 @@ export default function StashConflictModal({ const modalElement = modalRef.current; if (modalElement) { const focusable = getFocusableElements(modalElement); - const preferred = focusable.find((element) => element.getAttribute("aria-label") === t("stash.copyReference")) ?? focusable[0]; + const preferred = focusable.find((element) => element.getAttribute("aria-label") === copyReferenceLabel) ?? focusable[0]; if (preferred) { preferred.focus(); } else { @@ -156,7 +162,7 @@ export default function StashConflictModal({ } previousFocusRef.current = null; }; - }, [open, onClose]); + }, [copyReferenceLabel, open, onClose]); const stashDescriptor = useMemo(() => `Stash ref: ${shortSha(stashSha)} (${stashLabel})`, [stashLabel, stashSha]); @@ -241,7 +247,7 @@ export default function StashConflictModal({ ) : null}
{stashDescriptor} -