import { useSession } from "@/store/session"; import { useAppName } from "@/lib/brand"; import { client } from "@/jmap/client"; import { APP_VERSION } from "@/lib/version"; import { DEFAULT_SOURCE_URL } from "@/lib/source"; import { withBase } from "@/lib/basePath"; import { t, tNode } from "@/lib/i18n"; import { InbuxaWordmark } from "@/ui/InbuxaWordmark"; export function AboutSettings() { const appName = useAppName(); const session = useSession((s) => s.session); const caps = Object.keys(session?.capabilities ?? {}); // A deployment running modified code should offer its own source, not ours. const sourceUrl = session?.ihasmail?.sourceUrl ?? DEFAULT_SOURCE_URL; return (
{/* ihasmail-inbuxa: INBUXA's webmail, built on ihasmail. The version and source are this build's, the AGPL's offer; ihasmail keeps its credit. The name comes from APP_NAME now, so a renamed deployment is named here too. */}

{t("About {app}", { app: appName })}

{tNode("A fast, friendly, open-source webmail for {server}, built on JMAP.", { server: {appName} })}

{/* A product name and a version string: neither is a word to translate. */}
{appName} webmail v{APP_VERSION}
{tNode("Built on {project}", { project: ihasmail })}
{tNode("AGPL-3.0-or-later · {source}", { source: {sourceUrl.replace(/^https?:\/\//, "")} })}

{t("Server")}

{t("Signed in as")}{session?.username}
{t("Mail server")}INBUXA
{t("Accounts")}{Object.values(session?.accounts ?? {}).map((a) => a.name).join(", ")}
{t("Max upload")}{t("{size} MB", { size: Math.round(client.maxSizeUpload / 1048576) })}
{t("Image privacy proxy")}{session?.ihasmail?.imageProxy ? t("enabled") : t("disabled")}

{t("This webmail works with the INBUXA mail server, and sign-in refuses a server that doesn't offer what it needs.")}

{tNode("{app}'s own version is the date of the commit it was built from, followed by where that commit came from: {example} was built from a commit dated the 30th of August 2026 that arrived through pull request 129. A commit that did not come through one carries its short SHA instead — {sha}. The version deliberately says nothing about the mail server; what this build needs from the server is the line above.", { example: v2026.8.30+pr129, sha: +g1fa6578 }, { app: appName })}

{t("Server capabilities")}

{caps.map((c) => {c.replace("urn:ietf:params:jmap:", "")})}
); }