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": ""
},