From 6922a92b69e8cccb06a5300f4976213371eac13a Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 10 Nov 2025 14:19:27 -0600 Subject: [PATCH] feat: show update version info (#23698) * feat: show update version info * Apply suggestions from code review Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com> --------- Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com> --- i18n/en.json | 1 + .../side-bar/server-status.svelte | 48 +++++++++++++++++-- web/src/lib/utils.ts | 2 + web/src/routes/+layout.svelte | 4 +- 4 files changed, 48 insertions(+), 7 deletions(-) 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) => {