- 51 fix agents covered every dirty batch from the round-1 verifiers: helper-function labels (roles, statuses, relative time), constant label maps (SETTINGS_SECTIONS, PROVIDER_INFO, EVENT_TYPE_LABELS), TUI help overlay + tab labels, toasts, placeholders, aria-labels - Inline markup flattened by round 1 restored with <Trans> (DbCorruptionBanner storage-docs link, UpdateAvailableBanner code chip) - Catalogs merged: +527 en keys across 5 locales; CLI bundles + app locale tree regenerated (6 locales) - All 23 sweep-caused test regressions fixed: delta vs the clean-main baseline is now zero (remaining 4 local failures reproduce identically on origin/main; CI-green upstream) - typecheck/lint clean; TUI 82/82, core locale 9/9 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
47 lines
1.6 KiB
TypeScript
47 lines
1.6 KiB
TypeScript
import "./UpdateAvailableBanner.css";
|
|
import { X } from "lucide-react";
|
|
import { useTranslation, Trans } from "react-i18next";
|
|
|
|
interface UpdateAvailableBannerProps {
|
|
latestVersion: string;
|
|
currentVersion: string;
|
|
onDismiss: () => void;
|
|
}
|
|
|
|
export function UpdateAvailableBanner({ latestVersion, currentVersion, onDismiss }: UpdateAvailableBannerProps) {
|
|
const { t } = useTranslation("app");
|
|
|
|
return (
|
|
<div className="update-available-banner" role="status" aria-live="polite">
|
|
<p className="update-available-banner__text">
|
|
<Trans
|
|
i18nKey="app:updateBanner.message"
|
|
defaults="Update available: v{{latestVersion}} (current: v{{currentVersion}}). Run <code>fn update</code> for an installed CLI, or pull this source checkout."
|
|
values={{ latestVersion, currentVersion }}
|
|
components={{ code: <code /> }}
|
|
/>{" "}
|
|
<a
|
|
className="update-available-banner__link"
|
|
href="https://github.com/Runfusion/Fusion/blob/main/CHANGELOG.md"
|
|
target="_blank"
|
|
rel="noreferrer"
|
|
>
|
|
{t("updateBanner.releaseNotes", "Release notes")}
|
|
</a>{" "}
|
|
·{" "}
|
|
<a className="update-available-banner__link" href="https://runfusion.ai" target="_blank" rel="noreferrer">
|
|
{t("updateBanner.learnMore", "Learn more")}
|
|
</a>
|
|
</p>
|
|
<button
|
|
type="button"
|
|
className="update-available-banner__dismiss touch-target"
|
|
aria-label={t("updateBanner.dismissLabel", "Dismiss update notice")}
|
|
onClick={onDismiss}
|
|
>
|
|
<X size={16} aria-hidden="true" />
|
|
</button>
|
|
</div>
|
|
);
|
|
}
|