From fc5dfe2f0f8f4e18e5fcbe03c337a55facccbc56 Mon Sep 17 00:00:00 2001 From: Till JS Date: Sat, 21 Mar 2026 12:40:57 +0100 Subject: [PATCH] feat: show build date/time on login screen across all apps MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add BUILD_TIME and BUILD_HASH exports to all version.ts files - Add getBuildDefines() to all vite.config.ts for compile-time injection - Add buildTime prop to shared LoginPage component - Display formatted date/time next to version number (e.g. "v1.0.0 · 21.03.2026 10:30") - Add app.d.ts type declarations for __BUILD_TIME__ and __BUILD_HASH__ Co-Authored-By: Claude Opus 4.6 (1M context) --- apps/calendar/apps/web/src/app.d.ts | 2 ++ apps/calendar/apps/web/src/lib/version.ts | 3 +++ .../web/src/routes/(auth)/login/+page.svelte | 3 ++- apps/calendar/apps/web/vite.config.ts | 5 ++++- apps/chat/apps/web/src/app.d.ts | 3 +++ apps/chat/apps/web/src/lib/version.ts | 3 +++ .../web/src/routes/(auth)/login/+page.svelte | 3 ++- apps/chat/apps/web/vite.config.ts | 5 ++++- apps/clock/apps/web/src/app.d.ts | 2 ++ apps/clock/apps/web/src/lib/version.ts | 3 +++ .../web/src/routes/(auth)/login/+page.svelte | 3 ++- apps/clock/apps/web/vite.config.ts | 5 ++++- apps/contacts/apps/web/src/app.d.ts | 2 ++ apps/contacts/apps/web/src/lib/version.ts | 3 +++ .../web/src/routes/(auth)/login/+page.svelte | 3 ++- apps/contacts/apps/web/vite.config.ts | 5 ++++- apps/context/apps/web/vite.config.ts | 5 ++++- apps/manacore/apps/web/src/app.d.ts | 3 +++ apps/manacore/apps/web/src/lib/version.ts | 3 +++ .../web/src/routes/(auth)/login/+page.svelte | 3 ++- apps/manacore/apps/web/vite.config.ts | 5 ++++- apps/manadeck/apps/web/src/app.d.ts | 3 +++ apps/manadeck/apps/web/src/lib/version.ts | 3 +++ .../web/src/routes/(auth)/login/+page.svelte | 3 ++- apps/manadeck/apps/web/vite.config.ts | 5 ++++- apps/matrix/apps/web/src/app.d.ts | 3 +++ apps/matrix/apps/web/src/lib/version.ts | 3 +++ apps/mukke/apps/web/src/lib/version.ts | 3 +++ .../web/src/routes/(auth)/login/+page.svelte | 3 ++- apps/nutriphi/apps/web/src/app.d.ts | 2 ++ apps/nutriphi/apps/web/src/lib/version.ts | 3 +++ .../web/src/routes/(auth)/login/+page.svelte | 3 ++- apps/nutriphi/apps/web/vite.config.ts | 5 ++++- apps/photos/apps/web/src/app.d.ts | 2 ++ apps/photos/apps/web/src/lib/version.ts | 3 +++ .../web/src/routes/(auth)/login/+page.svelte | 3 ++- apps/photos/apps/web/vite.config.ts | 5 ++++- apps/picture/apps/web/src/app.d.ts | 3 +++ apps/picture/apps/web/src/lib/version.ts | 3 +++ .../apps/web/src/routes/auth/login/+page.svelte | 3 ++- apps/picture/apps/web/vite.config.ts | 5 ++++- apps/planta/apps/web/src/app.d.ts | 2 ++ apps/planta/apps/web/src/lib/version.ts | 3 +++ .../web/src/routes/(auth)/login/+page.svelte | 3 ++- apps/planta/apps/web/vite.config.ts | 5 ++++- apps/presi/apps/web/src/app.d.ts | 2 ++ apps/presi/apps/web/src/lib/version.ts | 3 +++ .../web/src/routes/(auth)/login/+page.svelte | 3 ++- apps/presi/apps/web/vite.config.ts | 5 ++++- apps/questions/apps/web/src/app.d.ts | 3 +++ apps/questions/apps/web/src/lib/version.ts | 3 +++ .../web/src/routes/(auth)/login/+page.svelte | 3 ++- apps/questions/apps/web/vite.config.ts | 5 ++++- apps/skilltree/apps/web/src/app.d.ts | 3 +++ apps/skilltree/apps/web/src/lib/version.ts | 3 +++ .../web/src/routes/(auth)/login/+page.svelte | 3 ++- apps/skilltree/apps/web/vite.config.ts | 5 ++++- apps/storage/apps/web/src/app.d.ts | 2 ++ apps/storage/apps/web/src/lib/version.ts | 3 +++ apps/storage/apps/web/vite.config.ts | 5 ++++- apps/todo/apps/web/src/app.d.ts | 2 ++ apps/todo/apps/web/src/lib/version.ts | 3 +++ .../web/src/routes/(auth)/login/+page.svelte | 3 ++- apps/todo/apps/web/vite.config.ts | 5 ++++- apps/zitare/apps/web/src/app.d.ts | 2 ++ apps/zitare/apps/web/src/lib/version.ts | 3 +++ .../web/src/routes/(auth)/login/+page.svelte | 3 ++- apps/zitare/apps/web/vite.config.ts | 5 ++++- .../shared-auth-ui/src/pages/LoginPage.svelte | 16 +++++++++++++++- 69 files changed, 210 insertions(+), 34 deletions(-) create mode 100644 apps/calendar/apps/web/src/app.d.ts create mode 100644 apps/clock/apps/web/src/app.d.ts create mode 100644 apps/contacts/apps/web/src/app.d.ts create mode 100644 apps/nutriphi/apps/web/src/app.d.ts create mode 100644 apps/photos/apps/web/src/app.d.ts create mode 100644 apps/planta/apps/web/src/app.d.ts create mode 100644 apps/presi/apps/web/src/app.d.ts create mode 100644 apps/storage/apps/web/src/app.d.ts create mode 100644 apps/todo/apps/web/src/app.d.ts create mode 100644 apps/zitare/apps/web/src/app.d.ts diff --git a/apps/calendar/apps/web/src/app.d.ts b/apps/calendar/apps/web/src/app.d.ts new file mode 100644 index 000000000..c269fca6f --- /dev/null +++ b/apps/calendar/apps/web/src/app.d.ts @@ -0,0 +1,2 @@ +declare const __BUILD_HASH__: string; +declare const __BUILD_TIME__: string; diff --git a/apps/calendar/apps/web/src/lib/version.ts b/apps/calendar/apps/web/src/lib/version.ts index 9c2e447ab..4f221f09f 100644 --- a/apps/calendar/apps/web/src/lib/version.ts +++ b/apps/calendar/apps/web/src/lib/version.ts @@ -1 +1,4 @@ export const APP_VERSION = '1.0.0'; +export const BUILD_TIME: string = + typeof __BUILD_TIME__ !== 'undefined' ? __BUILD_TIME__ : new Date().toISOString(); +export const BUILD_HASH: string = typeof __BUILD_HASH__ !== 'undefined' ? __BUILD_HASH__ : 'dev'; diff --git a/apps/calendar/apps/web/src/routes/(auth)/login/+page.svelte b/apps/calendar/apps/web/src/routes/(auth)/login/+page.svelte index c268746b3..82ccc224c 100644 --- a/apps/calendar/apps/web/src/routes/(auth)/login/+page.svelte +++ b/apps/calendar/apps/web/src/routes/(auth)/login/+page.svelte @@ -9,7 +9,7 @@ import { authStore } from '$lib/stores/auth.svelte'; import AppSlider from '$lib/components/AppSlider.svelte'; import LanguageSelector from '$lib/components/LanguageSelector.svelte'; - import { APP_VERSION } from '$lib/version'; + import { APP_VERSION, BUILD_TIME } from '$lib/version'; import '$lib/i18n'; // Get redirect URL from query params or sessionStorage (set by AuthGateModal) @@ -68,6 +68,7 @@ {verified} {initialEmail} version={APP_VERSION} + buildTime={BUILD_TIME} > {#snippet headerControls()} diff --git a/apps/calendar/apps/web/vite.config.ts b/apps/calendar/apps/web/vite.config.ts index 57e935fc0..89245d998 100644 --- a/apps/calendar/apps/web/vite.config.ts +++ b/apps/calendar/apps/web/vite.config.ts @@ -4,7 +4,7 @@ import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; import { SvelteKitPWA } from '@vite-pwa/sveltekit'; import { createOfflineFirstPWAConfig } from '@manacore/shared-pwa'; -import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; +import { MANACORE_SHARED_PACKAGES, getBuildDefines } from '@manacore/shared-vite-config'; export default defineConfig({ plugins: [ @@ -34,4 +34,7 @@ export default defineConfig({ include: ['src/**/*.test.ts'], globals: true, }, + define: { + ...getBuildDefines(), + }, }); diff --git a/apps/chat/apps/web/src/app.d.ts b/apps/chat/apps/web/src/app.d.ts index 399f192fd..2ae80f0cd 100644 --- a/apps/chat/apps/web/src/app.d.ts +++ b/apps/chat/apps/web/src/app.d.ts @@ -1,3 +1,6 @@ +declare const __BUILD_HASH__: string; +declare const __BUILD_TIME__: string; + // See https://svelte.dev/docs/kit/types#app.d.ts // for information about these interfaces diff --git a/apps/chat/apps/web/src/lib/version.ts b/apps/chat/apps/web/src/lib/version.ts index a41a82ec7..083910420 100644 --- a/apps/chat/apps/web/src/lib/version.ts +++ b/apps/chat/apps/web/src/lib/version.ts @@ -1 +1,4 @@ export const APP_VERSION = '0.3.0'; +export const BUILD_TIME: string = + typeof __BUILD_TIME__ !== 'undefined' ? __BUILD_TIME__ : new Date().toISOString(); +export const BUILD_HASH: string = typeof __BUILD_HASH__ !== 'undefined' ? __BUILD_HASH__ : 'dev'; diff --git a/apps/chat/apps/web/src/routes/(auth)/login/+page.svelte b/apps/chat/apps/web/src/routes/(auth)/login/+page.svelte index 48e5137b0..808e7ec26 100644 --- a/apps/chat/apps/web/src/routes/(auth)/login/+page.svelte +++ b/apps/chat/apps/web/src/routes/(auth)/login/+page.svelte @@ -9,7 +9,7 @@ import { authStore } from '$lib/stores/auth.svelte'; import AppSlider from '$lib/components/AppSlider.svelte'; import LanguageSelector from '$lib/components/LanguageSelector.svelte'; - import { APP_VERSION } from '$lib/version'; + import { APP_VERSION, BUILD_TIME } from '$lib/version'; import '$lib/i18n'; // Dev credentials - pre-filled in development mode @@ -76,6 +76,7 @@ {initialEmail} {initialPassword} version={APP_VERSION} + buildTime={BUILD_TIME} > {#snippet headerControls()} diff --git a/apps/chat/apps/web/vite.config.ts b/apps/chat/apps/web/vite.config.ts index 46f95999b..2d683aa52 100644 --- a/apps/chat/apps/web/vite.config.ts +++ b/apps/chat/apps/web/vite.config.ts @@ -2,7 +2,7 @@ import { sveltekit } from '@sveltejs/kit/vite'; import { SvelteKitPWA } from '@vite-pwa/sveltekit'; import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; -import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; +import { MANACORE_SHARED_PACKAGES, getBuildDefines } from '@manacore/shared-vite-config'; import { createPWAConfig } from '@manacore/shared-pwa'; export default defineConfig({ @@ -29,4 +29,7 @@ export default defineConfig({ optimizeDeps: { exclude: [...MANACORE_SHARED_PACKAGES, 'marked'], }, + define: { + ...getBuildDefines(), + }, }); diff --git a/apps/clock/apps/web/src/app.d.ts b/apps/clock/apps/web/src/app.d.ts new file mode 100644 index 000000000..c269fca6f --- /dev/null +++ b/apps/clock/apps/web/src/app.d.ts @@ -0,0 +1,2 @@ +declare const __BUILD_HASH__: string; +declare const __BUILD_TIME__: string; diff --git a/apps/clock/apps/web/src/lib/version.ts b/apps/clock/apps/web/src/lib/version.ts index 60861a95f..d63b4cfef 100644 --- a/apps/clock/apps/web/src/lib/version.ts +++ b/apps/clock/apps/web/src/lib/version.ts @@ -1 +1,4 @@ export const APP_VERSION = '0.2.0'; +export const BUILD_TIME: string = + typeof __BUILD_TIME__ !== 'undefined' ? __BUILD_TIME__ : new Date().toISOString(); +export const BUILD_HASH: string = typeof __BUILD_HASH__ !== 'undefined' ? __BUILD_HASH__ : 'dev'; diff --git a/apps/clock/apps/web/src/routes/(auth)/login/+page.svelte b/apps/clock/apps/web/src/routes/(auth)/login/+page.svelte index ac0a7765d..6ae8b40bf 100644 --- a/apps/clock/apps/web/src/routes/(auth)/login/+page.svelte +++ b/apps/clock/apps/web/src/routes/(auth)/login/+page.svelte @@ -7,7 +7,7 @@ import { getLoginTranslations } from '@manacore/shared-i18n'; import { ClockLogo } from '@manacore/shared-branding'; import { authStore } from '$lib/stores/auth.svelte'; - import { APP_VERSION } from '$lib/version'; + import { APP_VERSION, BUILD_TIME } from '$lib/version'; import '$lib/i18n'; // Read verification status from query params (set after email verification) @@ -66,4 +66,5 @@ {verified} {initialEmail} version={APP_VERSION} + buildTime={BUILD_TIME} /> diff --git a/apps/clock/apps/web/vite.config.ts b/apps/clock/apps/web/vite.config.ts index 0f2897fac..b82ef0e7e 100644 --- a/apps/clock/apps/web/vite.config.ts +++ b/apps/clock/apps/web/vite.config.ts @@ -2,7 +2,7 @@ import { sveltekit } from '@sveltejs/kit/vite'; import { defineConfig } from 'vite'; import { SvelteKitPWA } from '@vite-pwa/sveltekit'; import { createPWAConfig } from '@manacore/shared-pwa'; -import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; +import { MANACORE_SHARED_PACKAGES, getBuildDefines } from '@manacore/shared-vite-config'; export default defineConfig({ plugins: [ @@ -27,4 +27,7 @@ export default defineConfig({ optimizeDeps: { exclude: [...MANACORE_SHARED_PACKAGES], }, + define: { + ...getBuildDefines(), + }, }); diff --git a/apps/contacts/apps/web/src/app.d.ts b/apps/contacts/apps/web/src/app.d.ts new file mode 100644 index 000000000..c269fca6f --- /dev/null +++ b/apps/contacts/apps/web/src/app.d.ts @@ -0,0 +1,2 @@ +declare const __BUILD_HASH__: string; +declare const __BUILD_TIME__: string; diff --git a/apps/contacts/apps/web/src/lib/version.ts b/apps/contacts/apps/web/src/lib/version.ts index 9c2e447ab..4f221f09f 100644 --- a/apps/contacts/apps/web/src/lib/version.ts +++ b/apps/contacts/apps/web/src/lib/version.ts @@ -1 +1,4 @@ export const APP_VERSION = '1.0.0'; +export const BUILD_TIME: string = + typeof __BUILD_TIME__ !== 'undefined' ? __BUILD_TIME__ : new Date().toISOString(); +export const BUILD_HASH: string = typeof __BUILD_HASH__ !== 'undefined' ? __BUILD_HASH__ : 'dev'; diff --git a/apps/contacts/apps/web/src/routes/(auth)/login/+page.svelte b/apps/contacts/apps/web/src/routes/(auth)/login/+page.svelte index fbdb1bdbc..af14d7c36 100644 --- a/apps/contacts/apps/web/src/routes/(auth)/login/+page.svelte +++ b/apps/contacts/apps/web/src/routes/(auth)/login/+page.svelte @@ -9,7 +9,7 @@ import { authStore } from '$lib/stores/auth.svelte'; import AppSlider from '$lib/components/AppSlider.svelte'; import LanguageSelector from '$lib/components/LanguageSelector.svelte'; - import { APP_VERSION } from '$lib/version'; + import { APP_VERSION, BUILD_TIME } from '$lib/version'; import '$lib/i18n'; // Get redirect URL from query params or sessionStorage @@ -65,6 +65,7 @@ {verified} {initialEmail} version={APP_VERSION} + buildTime={BUILD_TIME} > {#snippet headerControls()} diff --git a/apps/contacts/apps/web/vite.config.ts b/apps/contacts/apps/web/vite.config.ts index 64eb78a6c..815bdbd80 100644 --- a/apps/contacts/apps/web/vite.config.ts +++ b/apps/contacts/apps/web/vite.config.ts @@ -3,7 +3,7 @@ import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; import { SvelteKitPWA } from '@vite-pwa/sveltekit'; import { createPWAConfig } from '@manacore/shared-pwa'; -import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; +import { MANACORE_SHARED_PACKAGES, getBuildDefines } from '@manacore/shared-vite-config'; /// export default defineConfig({ @@ -34,4 +34,7 @@ export default defineConfig({ include: ['src/**/*.test.ts'], globals: true, }, + define: { + ...getBuildDefines(), + }, }); diff --git a/apps/context/apps/web/vite.config.ts b/apps/context/apps/web/vite.config.ts index 14db96e84..539cf4c33 100644 --- a/apps/context/apps/web/vite.config.ts +++ b/apps/context/apps/web/vite.config.ts @@ -2,7 +2,7 @@ import { sveltekit } from '@sveltejs/kit/vite'; import { defineConfig } from 'vite'; import { SvelteKitPWA } from '@vite-pwa/sveltekit'; import { createPWAConfig } from '@manacore/shared-pwa'; -import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; +import { MANACORE_SHARED_PACKAGES, getBuildDefines } from '@manacore/shared-vite-config'; export default defineConfig({ plugins: [ @@ -27,4 +27,7 @@ export default defineConfig({ optimizeDeps: { exclude: [...MANACORE_SHARED_PACKAGES], }, + define: { + ...getBuildDefines(), + }, }); diff --git a/apps/manacore/apps/web/src/app.d.ts b/apps/manacore/apps/web/src/app.d.ts index 1476def65..d9d6fc6b5 100644 --- a/apps/manacore/apps/web/src/app.d.ts +++ b/apps/manacore/apps/web/src/app.d.ts @@ -1,3 +1,6 @@ +declare const __BUILD_HASH__: string; +declare const __BUILD_TIME__: string; + /** * App type declarations for ManaCore web app * diff --git a/apps/manacore/apps/web/src/lib/version.ts b/apps/manacore/apps/web/src/lib/version.ts index 60861a95f..d63b4cfef 100644 --- a/apps/manacore/apps/web/src/lib/version.ts +++ b/apps/manacore/apps/web/src/lib/version.ts @@ -1 +1,4 @@ export const APP_VERSION = '0.2.0'; +export const BUILD_TIME: string = + typeof __BUILD_TIME__ !== 'undefined' ? __BUILD_TIME__ : new Date().toISOString(); +export const BUILD_HASH: string = typeof __BUILD_HASH__ !== 'undefined' ? __BUILD_HASH__ : 'dev'; diff --git a/apps/manacore/apps/web/src/routes/(auth)/login/+page.svelte b/apps/manacore/apps/web/src/routes/(auth)/login/+page.svelte index eed582800..85509b672 100644 --- a/apps/manacore/apps/web/src/routes/(auth)/login/+page.svelte +++ b/apps/manacore/apps/web/src/routes/(auth)/login/+page.svelte @@ -8,7 +8,7 @@ import AppSlider from '$lib/components/AppSlider.svelte'; import LanguageSelector from '$lib/components/LanguageSelector.svelte'; import { authStore } from '$lib/stores/auth.svelte'; - import { APP_VERSION } from '$lib/version'; + import { APP_VERSION, BUILD_TIME } from '$lib/version'; // Get translations based on current locale const translations = $derived(getLoginTranslations($locale || 'de')); @@ -44,6 +44,7 @@ {verified} {initialEmail} version={APP_VERSION} + buildTime={BUILD_TIME} > {#snippet headerControls()} diff --git a/apps/manacore/apps/web/vite.config.ts b/apps/manacore/apps/web/vite.config.ts index a3cefbb2d..ec127b4fe 100644 --- a/apps/manacore/apps/web/vite.config.ts +++ b/apps/manacore/apps/web/vite.config.ts @@ -3,7 +3,7 @@ import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; import { SvelteKitPWA } from '@vite-pwa/sveltekit'; import { createPWAConfig } from '@manacore/shared-pwa'; -import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; +import { MANACORE_SHARED_PACKAGES, getBuildDefines } from '@manacore/shared-vite-config'; export default defineConfig({ plugins: [ @@ -32,4 +32,7 @@ export default defineConfig({ optimizeDeps: { exclude: [...MANACORE_SHARED_PACKAGES], }, + define: { + ...getBuildDefines(), + }, }); diff --git a/apps/manadeck/apps/web/src/app.d.ts b/apps/manadeck/apps/web/src/app.d.ts index da08e6da5..8e8e79928 100644 --- a/apps/manadeck/apps/web/src/app.d.ts +++ b/apps/manadeck/apps/web/src/app.d.ts @@ -1,3 +1,6 @@ +declare const __BUILD_HASH__: string; +declare const __BUILD_TIME__: string; + // See https://svelte.dev/docs/kit/types#app.d.ts // for information about these interfaces declare global { diff --git a/apps/manadeck/apps/web/src/lib/version.ts b/apps/manadeck/apps/web/src/lib/version.ts index 60861a95f..d63b4cfef 100644 --- a/apps/manadeck/apps/web/src/lib/version.ts +++ b/apps/manadeck/apps/web/src/lib/version.ts @@ -1 +1,4 @@ export const APP_VERSION = '0.2.0'; +export const BUILD_TIME: string = + typeof __BUILD_TIME__ !== 'undefined' ? __BUILD_TIME__ : new Date().toISOString(); +export const BUILD_HASH: string = typeof __BUILD_HASH__ !== 'undefined' ? __BUILD_HASH__ : 'dev'; diff --git a/apps/manadeck/apps/web/src/routes/(auth)/login/+page.svelte b/apps/manadeck/apps/web/src/routes/(auth)/login/+page.svelte index 1f8573ea8..ef2c3d87b 100644 --- a/apps/manadeck/apps/web/src/routes/(auth)/login/+page.svelte +++ b/apps/manadeck/apps/web/src/routes/(auth)/login/+page.svelte @@ -8,7 +8,7 @@ import AppSlider from '$lib/components/AppSlider.svelte'; import LanguageSelector from '$lib/components/LanguageSelector.svelte'; import { authStore } from '$lib/stores/auth.svelte'; - import { APP_VERSION } from '$lib/version'; + import { APP_VERSION, BUILD_TIME } from '$lib/version'; // Get translations based on current locale const translations = $derived(getLoginTranslations($locale || 'de')); @@ -44,6 +44,7 @@ {verified} {initialEmail} version={APP_VERSION} + buildTime={BUILD_TIME} > {#snippet headerControls()} diff --git a/apps/manadeck/apps/web/vite.config.ts b/apps/manadeck/apps/web/vite.config.ts index f11e75b1c..9dc2f1570 100644 --- a/apps/manadeck/apps/web/vite.config.ts +++ b/apps/manadeck/apps/web/vite.config.ts @@ -3,7 +3,7 @@ import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; import { SvelteKitPWA } from '@vite-pwa/sveltekit'; import { createPWAConfig } from '@manacore/shared-pwa'; -import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; +import { MANACORE_SHARED_PACKAGES, getBuildDefines } from '@manacore/shared-vite-config'; export default defineConfig({ plugins: [ @@ -28,4 +28,7 @@ export default defineConfig({ optimizeDeps: { exclude: [...MANACORE_SHARED_PACKAGES], }, + define: { + ...getBuildDefines(), + }, }); diff --git a/apps/matrix/apps/web/src/app.d.ts b/apps/matrix/apps/web/src/app.d.ts index b15512ca1..db149168c 100644 --- a/apps/matrix/apps/web/src/app.d.ts +++ b/apps/matrix/apps/web/src/app.d.ts @@ -1,3 +1,6 @@ +declare const __BUILD_HASH__: string; +declare const __BUILD_TIME__: string; + // See https://svelte.dev/docs/kit/types#app.d.ts // for information about these interfaces declare global { diff --git a/apps/matrix/apps/web/src/lib/version.ts b/apps/matrix/apps/web/src/lib/version.ts index 60861a95f..d63b4cfef 100644 --- a/apps/matrix/apps/web/src/lib/version.ts +++ b/apps/matrix/apps/web/src/lib/version.ts @@ -1 +1,4 @@ export const APP_VERSION = '0.2.0'; +export const BUILD_TIME: string = + typeof __BUILD_TIME__ !== 'undefined' ? __BUILD_TIME__ : new Date().toISOString(); +export const BUILD_HASH: string = typeof __BUILD_HASH__ !== 'undefined' ? __BUILD_HASH__ : 'dev'; diff --git a/apps/mukke/apps/web/src/lib/version.ts b/apps/mukke/apps/web/src/lib/version.ts index 60861a95f..d63b4cfef 100644 --- a/apps/mukke/apps/web/src/lib/version.ts +++ b/apps/mukke/apps/web/src/lib/version.ts @@ -1 +1,4 @@ export const APP_VERSION = '0.2.0'; +export const BUILD_TIME: string = + typeof __BUILD_TIME__ !== 'undefined' ? __BUILD_TIME__ : new Date().toISOString(); +export const BUILD_HASH: string = typeof __BUILD_HASH__ !== 'undefined' ? __BUILD_HASH__ : 'dev'; diff --git a/apps/mukke/apps/web/src/routes/(auth)/login/+page.svelte b/apps/mukke/apps/web/src/routes/(auth)/login/+page.svelte index 4f29f3567..4c331921d 100644 --- a/apps/mukke/apps/web/src/routes/(auth)/login/+page.svelte +++ b/apps/mukke/apps/web/src/routes/(auth)/login/+page.svelte @@ -6,7 +6,7 @@ import { getLoginTranslations } from '@manacore/shared-i18n'; import { MukkeLogo } from '@manacore/shared-branding'; import { authStore } from '$lib/stores/auth.svelte'; - import { APP_VERSION } from '$lib/version'; + import { APP_VERSION, BUILD_TIME } from '$lib/version'; // Get redirect URL from query params or sessionStorage const redirectTo = $derived.by(() => { @@ -62,4 +62,5 @@ {verified} {initialEmail} version={APP_VERSION} + buildTime={BUILD_TIME} /> diff --git a/apps/nutriphi/apps/web/src/app.d.ts b/apps/nutriphi/apps/web/src/app.d.ts new file mode 100644 index 000000000..c269fca6f --- /dev/null +++ b/apps/nutriphi/apps/web/src/app.d.ts @@ -0,0 +1,2 @@ +declare const __BUILD_HASH__: string; +declare const __BUILD_TIME__: string; diff --git a/apps/nutriphi/apps/web/src/lib/version.ts b/apps/nutriphi/apps/web/src/lib/version.ts index 60861a95f..d63b4cfef 100644 --- a/apps/nutriphi/apps/web/src/lib/version.ts +++ b/apps/nutriphi/apps/web/src/lib/version.ts @@ -1 +1,4 @@ export const APP_VERSION = '0.2.0'; +export const BUILD_TIME: string = + typeof __BUILD_TIME__ !== 'undefined' ? __BUILD_TIME__ : new Date().toISOString(); +export const BUILD_HASH: string = typeof __BUILD_HASH__ !== 'undefined' ? __BUILD_HASH__ : 'dev'; diff --git a/apps/nutriphi/apps/web/src/routes/(auth)/login/+page.svelte b/apps/nutriphi/apps/web/src/routes/(auth)/login/+page.svelte index d5b1c1938..6915611f0 100644 --- a/apps/nutriphi/apps/web/src/routes/(auth)/login/+page.svelte +++ b/apps/nutriphi/apps/web/src/routes/(auth)/login/+page.svelte @@ -7,7 +7,7 @@ import { locale } from 'svelte-i18n'; import { NutriPhiLogo } from '@manacore/shared-branding'; import { authStore } from '$lib/stores/auth.svelte'; - import { APP_VERSION } from '$lib/version'; + import { APP_VERSION, BUILD_TIME } from '$lib/version'; import '$lib/i18n'; // Get redirect URL from query params or sessionStorage @@ -64,4 +64,5 @@ {verified} {initialEmail} version={APP_VERSION} + buildTime={BUILD_TIME} /> diff --git a/apps/nutriphi/apps/web/vite.config.ts b/apps/nutriphi/apps/web/vite.config.ts index 4e15048c8..518b20e36 100644 --- a/apps/nutriphi/apps/web/vite.config.ts +++ b/apps/nutriphi/apps/web/vite.config.ts @@ -3,7 +3,7 @@ import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; import { SvelteKitPWA } from '@vite-pwa/sveltekit'; import { createPWAConfig } from '@manacore/shared-pwa'; -import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; +import { MANACORE_SHARED_PACKAGES, getBuildDefines } from '@manacore/shared-vite-config'; export default defineConfig({ plugins: [ @@ -28,4 +28,7 @@ export default defineConfig({ optimizeDeps: { exclude: [...MANACORE_SHARED_PACKAGES, '@nutriphi/shared'], }, + define: { + ...getBuildDefines(), + }, }); diff --git a/apps/photos/apps/web/src/app.d.ts b/apps/photos/apps/web/src/app.d.ts new file mode 100644 index 000000000..c269fca6f --- /dev/null +++ b/apps/photos/apps/web/src/app.d.ts @@ -0,0 +1,2 @@ +declare const __BUILD_HASH__: string; +declare const __BUILD_TIME__: string; diff --git a/apps/photos/apps/web/src/lib/version.ts b/apps/photos/apps/web/src/lib/version.ts index 60861a95f..d63b4cfef 100644 --- a/apps/photos/apps/web/src/lib/version.ts +++ b/apps/photos/apps/web/src/lib/version.ts @@ -1 +1,4 @@ export const APP_VERSION = '0.2.0'; +export const BUILD_TIME: string = + typeof __BUILD_TIME__ !== 'undefined' ? __BUILD_TIME__ : new Date().toISOString(); +export const BUILD_HASH: string = typeof __BUILD_HASH__ !== 'undefined' ? __BUILD_HASH__ : 'dev'; diff --git a/apps/photos/apps/web/src/routes/(auth)/login/+page.svelte b/apps/photos/apps/web/src/routes/(auth)/login/+page.svelte index fb716c1d0..3d8afeec9 100644 --- a/apps/photos/apps/web/src/routes/(auth)/login/+page.svelte +++ b/apps/photos/apps/web/src/routes/(auth)/login/+page.svelte @@ -6,7 +6,7 @@ import { LoginPage } from '@manacore/shared-auth-ui'; import { getLoginTranslations } from '@manacore/shared-i18n'; import { authStore } from '$lib/stores/auth.svelte'; - import { APP_VERSION } from '$lib/version'; + import { APP_VERSION, BUILD_TIME } from '$lib/version'; import '$lib/i18n'; let redirectTo = $state('/'); @@ -55,4 +55,5 @@ {verified} {initialEmail} version={APP_VERSION} + buildTime={BUILD_TIME} /> diff --git a/apps/photos/apps/web/vite.config.ts b/apps/photos/apps/web/vite.config.ts index 84f4a2492..062ccd95b 100644 --- a/apps/photos/apps/web/vite.config.ts +++ b/apps/photos/apps/web/vite.config.ts @@ -3,7 +3,7 @@ import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; import { SvelteKitPWA } from '@vite-pwa/sveltekit'; import { createPWAConfig } from '@manacore/shared-pwa'; -import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; +import { MANACORE_SHARED_PACKAGES, getBuildDefines } from '@manacore/shared-vite-config'; export default defineConfig({ plugins: [ @@ -28,4 +28,7 @@ export default defineConfig({ optimizeDeps: { exclude: [...MANACORE_SHARED_PACKAGES], }, + define: { + ...getBuildDefines(), + }, }); diff --git a/apps/picture/apps/web/src/app.d.ts b/apps/picture/apps/web/src/app.d.ts index da08e6da5..8e8e79928 100644 --- a/apps/picture/apps/web/src/app.d.ts +++ b/apps/picture/apps/web/src/app.d.ts @@ -1,3 +1,6 @@ +declare const __BUILD_HASH__: string; +declare const __BUILD_TIME__: string; + // See https://svelte.dev/docs/kit/types#app.d.ts // for information about these interfaces declare global { diff --git a/apps/picture/apps/web/src/lib/version.ts b/apps/picture/apps/web/src/lib/version.ts index a41a82ec7..083910420 100644 --- a/apps/picture/apps/web/src/lib/version.ts +++ b/apps/picture/apps/web/src/lib/version.ts @@ -1 +1,4 @@ export const APP_VERSION = '0.3.0'; +export const BUILD_TIME: string = + typeof __BUILD_TIME__ !== 'undefined' ? __BUILD_TIME__ : new Date().toISOString(); +export const BUILD_HASH: string = typeof __BUILD_HASH__ !== 'undefined' ? __BUILD_HASH__ : 'dev'; diff --git a/apps/picture/apps/web/src/routes/auth/login/+page.svelte b/apps/picture/apps/web/src/routes/auth/login/+page.svelte index 93b8a54fe..aa727a3e3 100644 --- a/apps/picture/apps/web/src/routes/auth/login/+page.svelte +++ b/apps/picture/apps/web/src/routes/auth/login/+page.svelte @@ -8,7 +8,7 @@ import AppSlider from '$lib/components/AppSlider.svelte'; import LanguageSelector from '$lib/components/LanguageSelector.svelte'; import { authStore } from '$lib/stores/auth.svelte'; - import { APP_VERSION } from '$lib/version'; + import { APP_VERSION, BUILD_TIME } from '$lib/version'; import { onMount } from 'svelte'; import { PUBLIC_GOOGLE_CLIENT_ID, PUBLIC_APPLE_CLIENT_ID } from '$env/static/public'; @@ -68,6 +68,7 @@ {verified} {initialEmail} version={APP_VERSION} + buildTime={BUILD_TIME} > {#snippet headerControls()} diff --git a/apps/picture/apps/web/vite.config.ts b/apps/picture/apps/web/vite.config.ts index b4f996b2a..dcf66a534 100644 --- a/apps/picture/apps/web/vite.config.ts +++ b/apps/picture/apps/web/vite.config.ts @@ -3,7 +3,7 @@ import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; import { SvelteKitPWA } from '@vite-pwa/sveltekit'; import { createPWAConfig } from '@manacore/shared-pwa'; -import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; +import { MANACORE_SHARED_PACKAGES, getBuildDefines } from '@manacore/shared-vite-config'; export default defineConfig({ plugins: [ @@ -28,4 +28,7 @@ export default defineConfig({ optimizeDeps: { exclude: [...MANACORE_SHARED_PACKAGES], }, + define: { + ...getBuildDefines(), + }, }); diff --git a/apps/planta/apps/web/src/app.d.ts b/apps/planta/apps/web/src/app.d.ts new file mode 100644 index 000000000..c269fca6f --- /dev/null +++ b/apps/planta/apps/web/src/app.d.ts @@ -0,0 +1,2 @@ +declare const __BUILD_HASH__: string; +declare const __BUILD_TIME__: string; diff --git a/apps/planta/apps/web/src/lib/version.ts b/apps/planta/apps/web/src/lib/version.ts index 49a6ced3e..360404f66 100644 --- a/apps/planta/apps/web/src/lib/version.ts +++ b/apps/planta/apps/web/src/lib/version.ts @@ -1 +1,4 @@ export const APP_VERSION = '0.1.0'; +export const BUILD_TIME: string = + typeof __BUILD_TIME__ !== 'undefined' ? __BUILD_TIME__ : new Date().toISOString(); +export const BUILD_HASH: string = typeof __BUILD_HASH__ !== 'undefined' ? __BUILD_HASH__ : 'dev'; diff --git a/apps/planta/apps/web/src/routes/(auth)/login/+page.svelte b/apps/planta/apps/web/src/routes/(auth)/login/+page.svelte index cacf8bf73..a01146fb1 100644 --- a/apps/planta/apps/web/src/routes/(auth)/login/+page.svelte +++ b/apps/planta/apps/web/src/routes/(auth)/login/+page.svelte @@ -7,7 +7,7 @@ import { locale } from 'svelte-i18n'; import { PlantaLogo } from '@manacore/shared-branding'; import { authStore } from '$lib/stores/auth.svelte'; - import { APP_VERSION } from '$lib/version'; + import { APP_VERSION, BUILD_TIME } from '$lib/version'; import '$lib/i18n'; // Get redirect URL from query params or sessionStorage @@ -64,4 +64,5 @@ {verified} {initialEmail} version={APP_VERSION} + buildTime={BUILD_TIME} /> diff --git a/apps/planta/apps/web/vite.config.ts b/apps/planta/apps/web/vite.config.ts index b4a4e8213..a293fce82 100644 --- a/apps/planta/apps/web/vite.config.ts +++ b/apps/planta/apps/web/vite.config.ts @@ -3,7 +3,7 @@ import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; import { SvelteKitPWA } from '@vite-pwa/sveltekit'; import { createPWAConfig } from '@manacore/shared-pwa'; -import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; +import { MANACORE_SHARED_PACKAGES, getBuildDefines } from '@manacore/shared-vite-config'; export default defineConfig({ plugins: [ @@ -28,4 +28,7 @@ export default defineConfig({ optimizeDeps: { exclude: [...MANACORE_SHARED_PACKAGES, '@planta/shared'], }, + define: { + ...getBuildDefines(), + }, }); diff --git a/apps/presi/apps/web/src/app.d.ts b/apps/presi/apps/web/src/app.d.ts new file mode 100644 index 000000000..c269fca6f --- /dev/null +++ b/apps/presi/apps/web/src/app.d.ts @@ -0,0 +1,2 @@ +declare const __BUILD_HASH__: string; +declare const __BUILD_TIME__: string; diff --git a/apps/presi/apps/web/src/lib/version.ts b/apps/presi/apps/web/src/lib/version.ts index 60861a95f..d63b4cfef 100644 --- a/apps/presi/apps/web/src/lib/version.ts +++ b/apps/presi/apps/web/src/lib/version.ts @@ -1 +1,4 @@ export const APP_VERSION = '0.2.0'; +export const BUILD_TIME: string = + typeof __BUILD_TIME__ !== 'undefined' ? __BUILD_TIME__ : new Date().toISOString(); +export const BUILD_HASH: string = typeof __BUILD_HASH__ !== 'undefined' ? __BUILD_HASH__ : 'dev'; diff --git a/apps/presi/apps/web/src/routes/(auth)/login/+page.svelte b/apps/presi/apps/web/src/routes/(auth)/login/+page.svelte index cbba8f45f..806e2689d 100644 --- a/apps/presi/apps/web/src/routes/(auth)/login/+page.svelte +++ b/apps/presi/apps/web/src/routes/(auth)/login/+page.svelte @@ -8,7 +8,7 @@ import { auth } from '$lib/stores/auth.svelte'; import AppSlider from '$lib/components/AppSlider.svelte'; import LanguageSelector from '$lib/components/LanguageSelector.svelte'; - import { APP_VERSION } from '$lib/version'; + import { APP_VERSION, BUILD_TIME } from '$lib/version'; import '$lib/i18n'; // Get redirect URL from query params @@ -52,6 +52,7 @@ {verified} {initialEmail} version={APP_VERSION} + buildTime={BUILD_TIME} > {#snippet headerControls()} diff --git a/apps/presi/apps/web/vite.config.ts b/apps/presi/apps/web/vite.config.ts index e8c43c0a3..09f14d96f 100644 --- a/apps/presi/apps/web/vite.config.ts +++ b/apps/presi/apps/web/vite.config.ts @@ -4,7 +4,7 @@ import { defineConfig } from 'vite'; import path from 'path'; import { SvelteKitPWA } from '@vite-pwa/sveltekit'; import { createPWAConfig } from '@manacore/shared-pwa'; -import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; +import { MANACORE_SHARED_PACKAGES, getBuildDefines } from '@manacore/shared-vite-config'; export default defineConfig({ plugins: [ @@ -39,4 +39,7 @@ export default defineConfig({ optimizeDeps: { exclude: [...MANACORE_SHARED_PACKAGES], }, + define: { + ...getBuildDefines(), + }, }); diff --git a/apps/questions/apps/web/src/app.d.ts b/apps/questions/apps/web/src/app.d.ts index 743f07b2e..6788e7f2a 100644 --- a/apps/questions/apps/web/src/app.d.ts +++ b/apps/questions/apps/web/src/app.d.ts @@ -1,3 +1,6 @@ +declare const __BUILD_HASH__: string; +declare const __BUILD_TIME__: string; + // See https://kit.svelte.dev/docs/types#app // for information about these interfaces declare global { diff --git a/apps/questions/apps/web/src/lib/version.ts b/apps/questions/apps/web/src/lib/version.ts index 49a6ced3e..360404f66 100644 --- a/apps/questions/apps/web/src/lib/version.ts +++ b/apps/questions/apps/web/src/lib/version.ts @@ -1 +1,4 @@ export const APP_VERSION = '0.1.0'; +export const BUILD_TIME: string = + typeof __BUILD_TIME__ !== 'undefined' ? __BUILD_TIME__ : new Date().toISOString(); +export const BUILD_HASH: string = typeof __BUILD_HASH__ !== 'undefined' ? __BUILD_HASH__ : 'dev'; diff --git a/apps/questions/apps/web/src/routes/(auth)/login/+page.svelte b/apps/questions/apps/web/src/routes/(auth)/login/+page.svelte index 0ba49b23d..143431679 100644 --- a/apps/questions/apps/web/src/routes/(auth)/login/+page.svelte +++ b/apps/questions/apps/web/src/routes/(auth)/login/+page.svelte @@ -8,7 +8,7 @@ import { QuestionsLogo } from '@manacore/shared-branding'; import { authStore } from '$lib/stores/auth.svelte'; import { apiClient } from '$lib/api/client'; - import { APP_VERSION } from '$lib/version'; + import { APP_VERSION, BUILD_TIME } from '$lib/version'; import '$lib/i18n'; // Get redirect URL from query params or sessionStorage @@ -70,4 +70,5 @@ {verified} {initialEmail} version={APP_VERSION} + buildTime={BUILD_TIME} /> diff --git a/apps/questions/apps/web/vite.config.ts b/apps/questions/apps/web/vite.config.ts index 328af2bba..248acd87f 100644 --- a/apps/questions/apps/web/vite.config.ts +++ b/apps/questions/apps/web/vite.config.ts @@ -3,7 +3,7 @@ import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; import { SvelteKitPWA } from '@vite-pwa/sveltekit'; import { createPWAConfig } from '@manacore/shared-pwa'; -import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; +import { MANACORE_SHARED_PACKAGES, getBuildDefines } from '@manacore/shared-vite-config'; export default defineConfig({ plugins: [ @@ -28,4 +28,7 @@ export default defineConfig({ optimizeDeps: { exclude: [...MANACORE_SHARED_PACKAGES], }, + define: { + ...getBuildDefines(), + }, }); diff --git a/apps/skilltree/apps/web/src/app.d.ts b/apps/skilltree/apps/web/src/app.d.ts index da08e6da5..8e8e79928 100644 --- a/apps/skilltree/apps/web/src/app.d.ts +++ b/apps/skilltree/apps/web/src/app.d.ts @@ -1,3 +1,6 @@ +declare const __BUILD_HASH__: string; +declare const __BUILD_TIME__: string; + // See https://svelte.dev/docs/kit/types#app.d.ts // for information about these interfaces declare global { diff --git a/apps/skilltree/apps/web/src/lib/version.ts b/apps/skilltree/apps/web/src/lib/version.ts index 60861a95f..d63b4cfef 100644 --- a/apps/skilltree/apps/web/src/lib/version.ts +++ b/apps/skilltree/apps/web/src/lib/version.ts @@ -1 +1,4 @@ export const APP_VERSION = '0.2.0'; +export const BUILD_TIME: string = + typeof __BUILD_TIME__ !== 'undefined' ? __BUILD_TIME__ : new Date().toISOString(); +export const BUILD_HASH: string = typeof __BUILD_HASH__ !== 'undefined' ? __BUILD_HASH__ : 'dev'; diff --git a/apps/skilltree/apps/web/src/routes/(auth)/login/+page.svelte b/apps/skilltree/apps/web/src/routes/(auth)/login/+page.svelte index 22493e2e9..a053cb526 100644 --- a/apps/skilltree/apps/web/src/routes/(auth)/login/+page.svelte +++ b/apps/skilltree/apps/web/src/routes/(auth)/login/+page.svelte @@ -8,7 +8,7 @@ import { SkillTreeLogo } from '@manacore/shared-branding'; import { authStore } from '$lib/stores/auth.svelte'; import { apiClient } from '$lib/api/client'; - import { APP_VERSION } from '$lib/version'; + import { APP_VERSION, BUILD_TIME } from '$lib/version'; import '$lib/i18n'; // Get redirect URL from query params or sessionStorage @@ -70,4 +70,5 @@ {verified} {initialEmail} version={APP_VERSION} + buildTime={BUILD_TIME} /> diff --git a/apps/skilltree/apps/web/vite.config.ts b/apps/skilltree/apps/web/vite.config.ts index bdced4816..23ac0a5f9 100644 --- a/apps/skilltree/apps/web/vite.config.ts +++ b/apps/skilltree/apps/web/vite.config.ts @@ -3,7 +3,7 @@ import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; import { SvelteKitPWA } from '@vite-pwa/sveltekit'; import { createPWAConfig } from '@manacore/shared-pwa'; -import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; +import { MANACORE_SHARED_PACKAGES, getBuildDefines } from '@manacore/shared-vite-config'; export default defineConfig({ plugins: [ @@ -28,4 +28,7 @@ export default defineConfig({ optimizeDeps: { exclude: [...MANACORE_SHARED_PACKAGES], }, + define: { + ...getBuildDefines(), + }, }); diff --git a/apps/storage/apps/web/src/app.d.ts b/apps/storage/apps/web/src/app.d.ts new file mode 100644 index 000000000..c269fca6f --- /dev/null +++ b/apps/storage/apps/web/src/app.d.ts @@ -0,0 +1,2 @@ +declare const __BUILD_HASH__: string; +declare const __BUILD_TIME__: string; diff --git a/apps/storage/apps/web/src/lib/version.ts b/apps/storage/apps/web/src/lib/version.ts index 60861a95f..d63b4cfef 100644 --- a/apps/storage/apps/web/src/lib/version.ts +++ b/apps/storage/apps/web/src/lib/version.ts @@ -1 +1,4 @@ export const APP_VERSION = '0.2.0'; +export const BUILD_TIME: string = + typeof __BUILD_TIME__ !== 'undefined' ? __BUILD_TIME__ : new Date().toISOString(); +export const BUILD_HASH: string = typeof __BUILD_HASH__ !== 'undefined' ? __BUILD_HASH__ : 'dev'; diff --git a/apps/storage/apps/web/vite.config.ts b/apps/storage/apps/web/vite.config.ts index 5ea6266a5..d07f25a7d 100644 --- a/apps/storage/apps/web/vite.config.ts +++ b/apps/storage/apps/web/vite.config.ts @@ -4,7 +4,7 @@ import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; import { SvelteKitPWA } from '@vite-pwa/sveltekit'; import { createPWAConfig } from '@manacore/shared-pwa'; -import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; +import { MANACORE_SHARED_PACKAGES, getBuildDefines } from '@manacore/shared-vite-config'; export default defineConfig({ plugins: [ @@ -34,4 +34,7 @@ export default defineConfig({ include: ['src/**/*.test.ts'], globals: true, }, + define: { + ...getBuildDefines(), + }, }); diff --git a/apps/todo/apps/web/src/app.d.ts b/apps/todo/apps/web/src/app.d.ts new file mode 100644 index 000000000..c269fca6f --- /dev/null +++ b/apps/todo/apps/web/src/app.d.ts @@ -0,0 +1,2 @@ +declare const __BUILD_HASH__: string; +declare const __BUILD_TIME__: string; diff --git a/apps/todo/apps/web/src/lib/version.ts b/apps/todo/apps/web/src/lib/version.ts index 9c2e447ab..4f221f09f 100644 --- a/apps/todo/apps/web/src/lib/version.ts +++ b/apps/todo/apps/web/src/lib/version.ts @@ -1 +1,4 @@ export const APP_VERSION = '1.0.0'; +export const BUILD_TIME: string = + typeof __BUILD_TIME__ !== 'undefined' ? __BUILD_TIME__ : new Date().toISOString(); +export const BUILD_HASH: string = typeof __BUILD_HASH__ !== 'undefined' ? __BUILD_HASH__ : 'dev'; diff --git a/apps/todo/apps/web/src/routes/(auth)/login/+page.svelte b/apps/todo/apps/web/src/routes/(auth)/login/+page.svelte index 2d305e1ff..1dc0a04bb 100644 --- a/apps/todo/apps/web/src/routes/(auth)/login/+page.svelte +++ b/apps/todo/apps/web/src/routes/(auth)/login/+page.svelte @@ -9,7 +9,7 @@ import { authStore } from '$lib/stores/auth.svelte'; import AppSlider from '$lib/components/AppSlider.svelte'; import LanguageSelector from '$lib/components/LanguageSelector.svelte'; - import { APP_VERSION } from '$lib/version'; + import { APP_VERSION, BUILD_TIME } from '$lib/version'; // Get redirect URL from query params or sessionStorage (set by AuthGateModal) const redirectTo = $derived.by(() => { @@ -67,6 +67,7 @@ {verified} {initialEmail} version={APP_VERSION} + buildTime={BUILD_TIME} > {#snippet headerControls()} diff --git a/apps/todo/apps/web/vite.config.ts b/apps/todo/apps/web/vite.config.ts index ee3e8c104..33fc11fcc 100644 --- a/apps/todo/apps/web/vite.config.ts +++ b/apps/todo/apps/web/vite.config.ts @@ -4,7 +4,7 @@ import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; import { SvelteKitPWA } from '@vite-pwa/sveltekit'; import { createPWAConfig } from '@manacore/shared-pwa'; -import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; +import { MANACORE_SHARED_PACKAGES, getBuildDefines } from '@manacore/shared-vite-config'; export default defineConfig({ plugins: [ @@ -34,4 +34,7 @@ export default defineConfig({ include: ['src/**/*.test.ts'], globals: true, }, + define: { + ...getBuildDefines(), + }, }); diff --git a/apps/zitare/apps/web/src/app.d.ts b/apps/zitare/apps/web/src/app.d.ts new file mode 100644 index 000000000..c269fca6f --- /dev/null +++ b/apps/zitare/apps/web/src/app.d.ts @@ -0,0 +1,2 @@ +declare const __BUILD_HASH__: string; +declare const __BUILD_TIME__: string; diff --git a/apps/zitare/apps/web/src/lib/version.ts b/apps/zitare/apps/web/src/lib/version.ts index 60861a95f..d63b4cfef 100644 --- a/apps/zitare/apps/web/src/lib/version.ts +++ b/apps/zitare/apps/web/src/lib/version.ts @@ -1 +1,4 @@ export const APP_VERSION = '0.2.0'; +export const BUILD_TIME: string = + typeof __BUILD_TIME__ !== 'undefined' ? __BUILD_TIME__ : new Date().toISOString(); +export const BUILD_HASH: string = typeof __BUILD_HASH__ !== 'undefined' ? __BUILD_HASH__ : 'dev'; diff --git a/apps/zitare/apps/web/src/routes/(auth)/login/+page.svelte b/apps/zitare/apps/web/src/routes/(auth)/login/+page.svelte index 9cc166be4..afd9da0b7 100644 --- a/apps/zitare/apps/web/src/routes/(auth)/login/+page.svelte +++ b/apps/zitare/apps/web/src/routes/(auth)/login/+page.svelte @@ -8,7 +8,7 @@ import { ZitareLogo } from '@manacore/shared-branding'; import { authStore } from '$lib/stores/auth.svelte'; import LanguageSelector from '$lib/components/LanguageSelector.svelte'; - import { APP_VERSION } from '$lib/version'; + import { APP_VERSION, BUILD_TIME } from '$lib/version'; import '$lib/i18n'; // Get redirect URL from query params or sessionStorage @@ -65,6 +65,7 @@ {verified} {initialEmail} version={APP_VERSION} + buildTime={BUILD_TIME} > {#snippet headerControls()} diff --git a/apps/zitare/apps/web/vite.config.ts b/apps/zitare/apps/web/vite.config.ts index 6e1cb64b0..e9331fc93 100644 --- a/apps/zitare/apps/web/vite.config.ts +++ b/apps/zitare/apps/web/vite.config.ts @@ -2,7 +2,7 @@ import { sveltekit } from '@sveltejs/kit/vite'; import { defineConfig } from 'vite'; import { SvelteKitPWA } from '@vite-pwa/sveltekit'; import { createPWAConfig } from '@manacore/shared-pwa'; -import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; +import { MANACORE_SHARED_PACKAGES, getBuildDefines } from '@manacore/shared-vite-config'; export default defineConfig({ plugins: [ @@ -26,4 +26,7 @@ export default defineConfig({ optimizeDeps: { exclude: [...MANACORE_SHARED_PACKAGES, '@zitare/content'], }, + define: { + ...getBuildDefines(), + }, }); diff --git a/packages/shared-auth-ui/src/pages/LoginPage.svelte b/packages/shared-auth-ui/src/pages/LoginPage.svelte index 3a3c5e83d..dcf293f5f 100644 --- a/packages/shared-auth-ui/src/pages/LoginPage.svelte +++ b/packages/shared-auth-ui/src/pages/LoginPage.svelte @@ -93,6 +93,8 @@ initialPassword?: string; /** App version string to display */ version?: string; + /** Build timestamp (ISO string) to display next to version */ + buildTime?: string; } let { @@ -118,6 +120,7 @@ initialEmail = '', initialPassword = '', version = '', + buildTime = '', }: Props = $props(); const t = $derived({ ...defaultTranslations, ...translations }); @@ -547,7 +550,18 @@ {/if} {#if version} -

v{version}

+

+ v{version}{#if buildTime} + · {new Date(buildTime).toLocaleDateString('de-DE', { + day: '2-digit', + month: '2-digit', + year: 'numeric', + })} + {new Date(buildTime).toLocaleTimeString('de-DE', { + hour: '2-digit', + minute: '2-digit', + })}{/if} +

{/if}