diff --git a/apps/web/src/components/settings/SystemInfoCard.tsx b/apps/web/src/components/settings/SystemInfoCard.tsx
index 8d92abed..0a9d5acc 100644
--- a/apps/web/src/components/settings/SystemInfoCard.tsx
+++ b/apps/web/src/components/settings/SystemInfoCard.tsx
@@ -200,7 +200,7 @@ export const SystemInfoCard = () => {
{infoItems.map((item) => (
{item.label}
-
+
{item.value}
diff --git a/apps/web/vite.config.ts b/apps/web/vite.config.ts
index 0d1221cc..9cdfce0f 100644
--- a/apps/web/vite.config.ts
+++ b/apps/web/vite.config.ts
@@ -39,7 +39,14 @@ const readLatestReleaseCommitTimestamp = () => {
const releaseTag = execSync('git describe --tags --abbrev=0 --match "v[0-9]*.[0-9]*.[0-9]*" HEAD', { encoding: "utf8" }).trim();
return execSync(`git log -1 --format=%cI ${releaseTag}`, { encoding: "utf8" }).trim();
} catch {
- return "";
+ // Workers Builds may check out the source without fetching tags. The
+ // package version is updated in the release-preparation commit, so its
+ // timestamp is the best local fallback for self-hosted builds.
+ try {
+ return execSync("git log -1 --format=%cI -- package.json", { encoding: "utf8" }).trim();
+ } catch {
+ return "";
+ }
}
};