diff --git a/i18n/en.json b/i18n/en.json
index 6117e30106..f0b10d2ac1 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -1414,6 +1414,7 @@
"new_pin_code": "New PIN code",
"new_pin_code_subtitle": "This is your first time accessing the locked folder. Create a PIN code to securely access this page",
"new_timeline": "New Timeline",
+ "new_update": "New update",
"new_user_created": "New user created",
"new_version_available": "NEW VERSION AVAILABLE",
"newest_first": "Newest first",
diff --git a/web/src/lib/components/shared-components/side-bar/server-status.svelte b/web/src/lib/components/shared-components/side-bar/server-status.svelte
index 5c70955f60..b678bc5507 100644
--- a/web/src/lib/components/shared-components/side-bar/server-status.svelte
+++ b/web/src/lib/components/shared-components/side-bar/server-status.svelte
@@ -1,7 +1,9 @@
info && modalManager.show(ServerAboutModal, { versions, info })}
- class="dark:text-immich-gray flex gap-1"
+ class="dark:text-immich-gray flex gap-1 place-items-center place-content-center"
>
{#if isMain}
{info?.sourceRef}
@@ -69,3 +86,26 @@
{/if}
+
+{#if releaseInfo}
+
+
+
+
+
+ {releaseInfo.availableVersion}
+
+
+
+ {$t('new_update')}!
+
+
+
+{/if}
diff --git a/web/src/lib/utils.ts b/web/src/lib/utils.ts
index 65510352c1..6e0a216477 100644
--- a/web/src/lib/utils.ts
+++ b/web/src/lib/utils.ts
@@ -400,3 +400,5 @@ export const getReleaseType = (
return 'none';
};
+
+export const semverToName = ({ major, minor, patch }: ServerVersionResponseDto) => `v${major}.${minor}.${patch}`;
diff --git a/web/src/routes/+layout.svelte b/web/src/routes/+layout.svelte
index f5d4619943..bd0029735c 100644
--- a/web/src/routes/+layout.svelte
+++ b/web/src/routes/+layout.svelte
@@ -17,9 +17,8 @@
websocketStore,
type ReleaseEvent,
} from '$lib/stores/websocket';
- import { copyToClipboard, getReleaseType } from '$lib/utils';
+ import { copyToClipboard, getReleaseType, semverToName } from '$lib/utils';
import { isAssetViewerRoute } from '$lib/utils/navigation';
- import type { ServerVersionResponseDto } from '@immich/sdk';
import { modalManager, setTranslations } from '@immich/ui';
import { onMount, type Snippet } from 'svelte';
import { t } from 'svelte-i18n';
@@ -78,7 +77,6 @@
}
});
- const semverToName = ({ major, minor, patch }: ServerVersionResponseDto) => `v${major}.${minor}.${patch}`;
const { release } = websocketStore;
const handleRelease = async (release?: ReleaseEvent) => {