From 4618f7656ee6e0bd3e2381cd15fab5c116c89a5c Mon Sep 17 00:00:00 2001 From: John Coffey Date: Wed, 26 Aug 2026 10:16:59 -0700 Subject: [PATCH] Show the version on the sign-in page too It was only on the About page, which is behind a sign-in -- so the one place a version is most often wanted, when something is wrong and nobody can get in, was the one place it could not be read. It sits next to the AGPL source link deliberately. Section 13's offer is for the source of *this* build, and naming the build is what turns that into something a person can act on rather than a link to whatever main happens to be. A bug report can name the build without signing in, too. Worth being deliberate about: this is pre-authentication, so anyone who can reach the instance can read it. That is a real disclosure -- it tells an unauthenticated visitor exactly which build to look up. It is being accepted rather than overlooked: ihasmail is AGPL with its source already linked from that same line, so the version narrows nothing that reading the source would not, and the sign-in page already names the software. --- README.md | 2 +- web/src/views/Login.tsx | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ad0a89a..4c463b5 100644 --- a/README.md +++ b/README.md @@ -153,7 +153,7 @@ Open http://localhost:5173 in dev (or http://localhost:8080 for the production b ### Version numbers -`ihasmail v2.16.57`, as shown in Settings › About and by `/api/health`: +`ihasmail v2.16.57`, shown on the sign-in page, in Settings › About, and by `/api/health`: | | | | --- | --- | diff --git a/web/src/views/Login.tsx b/web/src/views/Login.tsx index c5d831d..12fff9b 100644 --- a/web/src/views/Login.tsx +++ b/web/src/views/Login.tsx @@ -3,6 +3,7 @@ import { Eye, EyeOff, LogIn, ShieldCheck } from "lucide-react"; import { useSession } from "@/store/session"; import { ApiError } from "@/jmap/client"; import { DEFAULT_SOURCE_URL } from "@/lib/source"; +import { APP_VERSION } from "@/lib/version"; export function LoginPage() { const login = useSession((s) => s.login); @@ -94,7 +95,13 @@ export function LoginPage() { {busy ? "Signing in…" : "Sign in"}

- ihasmail by linuxexpert.org + {/* + The version sits next to the source link on purpose: the AGPL's + offer is for the source of *this* build, and a version makes that + offer something a person can actually act on. It also means a bug + report names the build without anyone having to sign in to find it. + */} + ihasmail v{APP_VERSION} by linuxexpert.org {" · "} AGPL-3.0 source