diff --git a/.changeset/fn-7804-mobile-settings-version.md b/.changeset/fn-7804-mobile-settings-version.md new file mode 100644 index 0000000000..d917cc8403 --- /dev/null +++ b/.changeset/fn-7804-mobile-settings-version.md @@ -0,0 +1,7 @@ +--- +"@runfusion/fusion": patch +--- + +summary: Mobile Settings footer shows the compact "v0.x" version instead of the full word. +category: fix +dev: SettingsModal picks settings.footer.versionShort ("v{{version}}") when viewportMode === "mobile". diff --git a/packages/dashboard/app/components/SettingsModal.tsx b/packages/dashboard/app/components/SettingsModal.tsx index b7475baf80..4a66330d81 100644 --- a/packages/dashboard/app/components/SettingsModal.tsx +++ b/packages/dashboard/app/components/SettingsModal.tsx @@ -3856,7 +3856,15 @@ export function SettingsModal({ aria-label={t("settings.footer.checkUpdates", "Check for updates")} title={t("settings.footer.checkUpdates", "Check for updates")} > - {t("settings.footer.version", "Version {{version}}", { version: appVersion })} + {/* + FNXC:Settings 2026-07-10-21:33: + Mobile Settings footer needs the compact v{{version}} label to preserve horizontal space; desktop and tablet keep the full Version {{version}} word. + */} + + {viewportMode === "mobile" + ? t("settings.footer.versionShort", "v{{version}}", { version: appVersion }) + : t("settings.footer.version", "Version {{version}}", { version: appVersion })} + )} diff --git a/packages/dashboard/app/components/__tests__/settings-mobile.test.tsx b/packages/dashboard/app/components/__tests__/settings-mobile.test.tsx index 64639fc113..d2f0c6f58f 100644 --- a/packages/dashboard/app/components/__tests__/settings-mobile.test.tsx +++ b/packages/dashboard/app/components/__tests__/settings-mobile.test.tsx @@ -226,20 +226,32 @@ describe("SettingsModal mobile adaptations", () => { expect(updateSettings).not.toHaveBeenCalled(); }); - it("renders the app version label in mobile layout", async () => { + it("renders the compact app version label in mobile layout", async () => { mockSettingsViewport(true); - const { findByText, container } = render(); + const { findByText, queryByText, container } = render(); await waitFor(() => expect(fetchSettings).toHaveBeenCalled()); - const version = await findByText("Version 1.2.3"); + const version = await findByText("v1.2.3"); const modalActions = container.querySelector(".modal-actions"); const modalHeader = container.querySelector(".modal-header"); expect(version).toBeTruthy(); + expect(queryByText("Version 1.2.3")).toBeNull(); expect(modalActions?.contains(version)).toBe(true); expect(modalHeader?.contains(version)).toBe(false); }); + it("keeps the full app version label outside the mobile viewport", async () => { + mockSettingsViewport(false); + const { findByText, queryByText, container } = render(); + await waitFor(() => expect(fetchSettings).toHaveBeenCalled()); + + const version = await findByText("Version 1.2.3"); + expect(version).toBeTruthy(); + expect(queryByText("v1.2.3")).toBeNull(); + expect(container.querySelector(".modal-actions")?.contains(version)).toBe(true); + }); + it("keeps update-check button clickable from the standalone and embedded mobile footers", async () => { mockSettingsViewport(true); const user = userEvent.setup(); diff --git a/packages/i18n/locales/en/app.json b/packages/i18n/locales/en/app.json index e98f5e2380..331f883bf4 100644 --- a/packages/i18n/locales/en/app.json +++ b/packages/i18n/locales/en/app.json @@ -5806,6 +5806,7 @@ "footer": { "help": "Help", "version": "Version {{version}}", + "versionShort": "v{{version}}", "checkUpdates": "Check for updates", "helpDiscussions": "Help and discussions" }, diff --git a/packages/i18n/locales/fr/app.json b/packages/i18n/locales/fr/app.json index a839867d2d..c58e688829 100644 --- a/packages/i18n/locales/fr/app.json +++ b/packages/i18n/locales/fr/app.json @@ -5796,6 +5796,7 @@ "footer": { "help": "Aide", "version": "Version {{version}}", + "versionShort": "v{{version}}", "checkUpdates": "", "helpDiscussions": "" },