diff --git a/Dockerfile b/Dockerfile index 8705062..d963268 100644 --- a/Dockerfile +++ b/Dockerfile @@ -54,11 +54,13 @@ WORKDIR /workspace ARG VITE_API_BASE_URL="" ARG VITE_KEYCLOAK_ISSUER="" ARG VITE_KEYCLOAK_CLIENT_ID="fieldlens" +ARG VITE_APP_RELEASE="0.1.0" ARG FIELDLENS_VERSION="dev" ENV VITE_API_BASE_URL=$VITE_API_BASE_URL ENV VITE_KEYCLOAK_ISSUER=$VITE_KEYCLOAK_ISSUER ENV VITE_KEYCLOAK_CLIENT_ID=$VITE_KEYCLOAK_CLIENT_ID +ENV VITE_APP_RELEASE=$VITE_APP_RELEASE ENV VITE_APP_VERSION=$FIELDLENS_VERSION COPY package.json ./ diff --git a/packages/fieldlens-core/src/features/settings/SettingsView.tsx b/packages/fieldlens-core/src/features/settings/SettingsView.tsx index f1ed805..53915dd 100644 --- a/packages/fieldlens-core/src/features/settings/SettingsView.tsx +++ b/packages/fieldlens-core/src/features/settings/SettingsView.tsx @@ -51,6 +51,9 @@ export function SettingsView({ storageStatus, updateAvailable, isUpdating, updat } const storageLabel = storageStatus === 'persistent' ? 'Durable' : storageStatus === 'checking' ? 'Checking' : storageStatus === 'unsupported' ? 'Browser managed' : 'Best effort' + const releaseVersion = (import.meta.env.VITE_APP_RELEASE || '0.1.0').trim() + const rawBuildId = (import.meta.env.VITE_APP_VERSION || 'dev').trim() + const buildId = /^[0-9a-f]{12,}$/i.test(rawBuildId) ? rawBuildId.slice(0, 8) : rawBuildId return (
@@ -87,6 +90,7 @@ export function SettingsView({ storageStatus, updateAvailable, isUpdating, updat

Application

PWA lifecycle

+
App versionBuild {buildId}
v{releaseVersion}
{updateAvailable ? 'Update available' : 'Service worker active'}{updateError || (isUpdating ? 'Installing the latest build…' : updateAvailable ? 'A newer build is ready.' : 'Updates are managed by the PWA service worker.')}