diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 5039e03..3bab38f 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -11,6 +11,8 @@ services: - IMAGE_DIR=/data/images - SEARXNG_URL=http://searxng:8080 - NODE_ENV=production + # Im Header als kleine Versionsnummer unter dem Logo angezeigt. + - KOCHWAS_TAG=${KOCHWAS_TAG:-dev} depends_on: - searxng restart: unless-stopped diff --git a/src/routes/+layout.server.ts b/src/routes/+layout.server.ts new file mode 100644 index 0000000..8a6d14f --- /dev/null +++ b/src/routes/+layout.server.ts @@ -0,0 +1,8 @@ +import type { LayoutServerLoad } from './$types'; +import { env } from '$env/dynamic/private'; + +export const load: LayoutServerLoad = () => { + return { + version: env.KOCHWAS_TAG ?? 'dev' + }; +}; diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 646eb86..f460a8a 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -19,7 +19,7 @@ import { registerServiceWorker } from '$lib/client/sw-register'; import { SearchStore } from '$lib/client/search.svelte'; - let { children } = $props(); + let { data, children } = $props(); const navStore = new SearchStore({ pageSize: 30, @@ -115,7 +115,10 @@
{#if $page.url.pathname === '/'} - Kochwas +
+ Kochwas + {data.version} +
{:else} @@ -307,6 +310,13 @@ padding: 0.6rem 1rem; position: relative; } + .brand-stack { + display: flex; + flex-direction: column; + align-items: flex-start; + line-height: 1; + flex-shrink: 0; + } .brand { font-size: 1.15rem; font-weight: 700; @@ -314,6 +324,13 @@ color: #2b6a3d; flex-shrink: 0; } + .version { + margin-top: 2px; + font-size: 0.65rem; + color: #9aa8a0; + font-variant-numeric: tabular-nums; + letter-spacing: 0.02em; + } .home-back { display: inline-flex; align-items: center; @@ -544,7 +561,7 @@ } @media (max-width: 520px) { /* App-Icon auf engen Screens komplett aus — die Suche bekommt den Platz. */ - .brand { + .brand-stack { display: none; } .nav-link {