INBUXA's name and site where the webmail still said ihasmail
- The sign-in footer names the build "INBUXA webmail" and links to
inbuxa.org, next to its AGPL source link.
- About gives the INBUXA webmail version, and credits ihasmail on a line
of its own.
- The user menu's "About ihasmail" is "About INBUXA", to inbuxa.org. The
Documentation entry pointed at ihasmail's docs; it's gone until INBUXA
has documentation of its own.
- The startup log says "mail server:" rather than naming the server
software.
"About INBUXA" and "Built on {ihasmail}" are translated in all nine
catalogues.
This commit is contained in:
+1
-1
@@ -7,7 +7,7 @@ async function main() {
|
|||||||
const app = createApp();
|
const app = createApp();
|
||||||
const server = serve({ fetch: app.fetch, hostname: config.host, port: config.port }, (info) => {
|
const server = serve({ fetch: app.fetch, hostname: config.host, port: config.port }, (info) => {
|
||||||
console.log(`[ihasmail] ${config.appName} listening on http://${info.address}:${info.port}`);
|
console.log(`[ihasmail] ${config.appName} listening on http://${info.address}:${info.port}`);
|
||||||
console.log(`[ihasmail] upstream Stalwart: ${config.stalwartUrl}`);
|
console.log(`[ihasmail] mail server: ${config.stalwartUrl}`);
|
||||||
console.log(`[ihasmail] static dir: ${config.staticDir}`);
|
console.log(`[ihasmail] static dir: ${config.staticDir}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -832,6 +832,8 @@ export const catalog: Catalog = {
|
|||||||
"Default mail app": "Standard-E-Mail-Programm",
|
"Default mail app": "Standard-E-Mail-Programm",
|
||||||
"Documentation": "Dokumentation",
|
"Documentation": "Dokumentation",
|
||||||
"About ihasmail": "Über ihasmail",
|
"About ihasmail": "Über ihasmail",
|
||||||
|
"About INBUXA": "Über INBUXA",
|
||||||
|
"Built on {ihasmail}": "Basiert auf {ihasmail}",
|
||||||
"Server": "Server",
|
"Server": "Server",
|
||||||
"Server capabilities": "Server-Funktionen",
|
"Server capabilities": "Server-Funktionen",
|
||||||
"Accounts": "Konten",
|
"Accounts": "Konten",
|
||||||
|
|||||||
@@ -828,6 +828,8 @@ export const catalog: Catalog = {
|
|||||||
"Default mail app": "Aplicación de correo predeterminada",
|
"Default mail app": "Aplicación de correo predeterminada",
|
||||||
"Documentation": "Documentación",
|
"Documentation": "Documentación",
|
||||||
"About ihasmail": "Acerca de ihasmail",
|
"About ihasmail": "Acerca de ihasmail",
|
||||||
|
"About INBUXA": "Acerca de INBUXA",
|
||||||
|
"Built on {ihasmail}": "Basado en {ihasmail}",
|
||||||
"About": "Acerca de",
|
"About": "Acerca de",
|
||||||
"Server": "Servidor",
|
"Server": "Servidor",
|
||||||
"Server capabilities": "Funciones del servidor",
|
"Server capabilities": "Funciones del servidor",
|
||||||
|
|||||||
@@ -834,6 +834,8 @@ export const catalog: Catalog = {
|
|||||||
"Default mail app": "Application de messagerie par défaut",
|
"Default mail app": "Application de messagerie par défaut",
|
||||||
"Documentation": "Documentation",
|
"Documentation": "Documentation",
|
||||||
"About ihasmail": "À propos de ihasmail",
|
"About ihasmail": "À propos de ihasmail",
|
||||||
|
"About INBUXA": "À propos d’INBUXA",
|
||||||
|
"Built on {ihasmail}": "Basé sur {ihasmail}",
|
||||||
"About": "À propos",
|
"About": "À propos",
|
||||||
"Server": "Serveur",
|
"Server": "Serveur",
|
||||||
"Server capabilities": "Fonctionnalités du serveur",
|
"Server capabilities": "Fonctionnalités du serveur",
|
||||||
|
|||||||
@@ -828,6 +828,8 @@ export const catalog: Catalog = {
|
|||||||
"Default mail app": "既定のメールアプリ",
|
"Default mail app": "既定のメールアプリ",
|
||||||
"Documentation": "ドキュメント",
|
"Documentation": "ドキュメント",
|
||||||
"About ihasmail": "ihasmail について",
|
"About ihasmail": "ihasmail について",
|
||||||
|
"About INBUXA": "INBUXA について",
|
||||||
|
"Built on {ihasmail}": "{ihasmail} をベースに構築",
|
||||||
"About": "情報",
|
"About": "情報",
|
||||||
"Server": "サーバー",
|
"Server": "サーバー",
|
||||||
"Server capabilities": "サーバーの機能",
|
"Server capabilities": "サーバーの機能",
|
||||||
|
|||||||
@@ -827,6 +827,8 @@ export const catalog: Catalog = {
|
|||||||
"Default mail app": "Standaard e-mailprogramma",
|
"Default mail app": "Standaard e-mailprogramma",
|
||||||
"Documentation": "Documentatie",
|
"Documentation": "Documentatie",
|
||||||
"About ihasmail": "Over ihasmail",
|
"About ihasmail": "Over ihasmail",
|
||||||
|
"About INBUXA": "Over INBUXA",
|
||||||
|
"Built on {ihasmail}": "Gebouwd op {ihasmail}",
|
||||||
"About": "Over",
|
"About": "Over",
|
||||||
"Server": "Server",
|
"Server": "Server",
|
||||||
"Server capabilities": "Servermogelijkheden",
|
"Server capabilities": "Servermogelijkheden",
|
||||||
|
|||||||
@@ -831,6 +831,8 @@ export const catalog: Catalog = {
|
|||||||
"Default mail app": "Aplicativo de e-mail padrão",
|
"Default mail app": "Aplicativo de e-mail padrão",
|
||||||
"Documentation": "Documentação",
|
"Documentation": "Documentação",
|
||||||
"About ihasmail": "Sobre o ihasmail",
|
"About ihasmail": "Sobre o ihasmail",
|
||||||
|
"About INBUXA": "Sobre o INBUXA",
|
||||||
|
"Built on {ihasmail}": "Baseado no {ihasmail}",
|
||||||
"About": "Sobre",
|
"About": "Sobre",
|
||||||
"Server": "Servidor",
|
"Server": "Servidor",
|
||||||
"Server capabilities": "Recursos do servidor",
|
"Server capabilities": "Recursos do servidor",
|
||||||
|
|||||||
@@ -831,6 +831,8 @@ export const catalog: Catalog = {
|
|||||||
"Default mail app": "Почтовая программа по умолчанию",
|
"Default mail app": "Почтовая программа по умолчанию",
|
||||||
"Documentation": "Документация",
|
"Documentation": "Документация",
|
||||||
"About ihasmail": "О программе ihasmail",
|
"About ihasmail": "О программе ihasmail",
|
||||||
|
"About INBUXA": "О программе INBUXA",
|
||||||
|
"Built on {ihasmail}": "Основано на {ihasmail}",
|
||||||
"About": "О программе",
|
"About": "О программе",
|
||||||
"Server": "Сервер",
|
"Server": "Сервер",
|
||||||
"Server capabilities": "Возможности сервера",
|
"Server capabilities": "Возможности сервера",
|
||||||
|
|||||||
@@ -825,6 +825,8 @@ export const catalog: Catalog = {
|
|||||||
"Default mail app": "Поштова програма за замовчуванням",
|
"Default mail app": "Поштова програма за замовчуванням",
|
||||||
"Documentation": "Документація",
|
"Documentation": "Документація",
|
||||||
"About ihasmail": "Про ihasmail",
|
"About ihasmail": "Про ihasmail",
|
||||||
|
"About INBUXA": "Про INBUXA",
|
||||||
|
"Built on {ihasmail}": "Створено на основі {ihasmail}",
|
||||||
"About": "Про програму",
|
"About": "Про програму",
|
||||||
"Server": "Сервер",
|
"Server": "Сервер",
|
||||||
"Server capabilities": "Можливості сервера",
|
"Server capabilities": "Можливості сервера",
|
||||||
|
|||||||
@@ -827,6 +827,8 @@ export const catalog: Catalog = {
|
|||||||
"Default mail app": "默认邮件应用",
|
"Default mail app": "默认邮件应用",
|
||||||
"Documentation": "文档",
|
"Documentation": "文档",
|
||||||
"About ihasmail": "关于 ihasmail",
|
"About ihasmail": "关于 ihasmail",
|
||||||
|
"About INBUXA": "关于 INBUXA",
|
||||||
|
"Built on {ihasmail}": "基于 {ihasmail} 构建",
|
||||||
"About": "关于",
|
"About": "关于",
|
||||||
"Server": "服务器",
|
"Server": "服务器",
|
||||||
"Server capabilities": "服务器功能",
|
"Server capabilities": "服务器功能",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { lazy, Suspense, useEffect, useRef, useState, type ReactNode } from "react";
|
import { lazy, Suspense, useEffect, useRef, useState, type ReactNode } from "react";
|
||||||
import { Link, useLocation } from "wouter";
|
import { Link, useLocation } from "wouter";
|
||||||
import { BookOpen, Calendar, ChevronsUpDown, FolderOpen, Globe, HelpCircle, LogOut, Mail, Menu as MenuIcon, Moon, PenSquare, Plus, RefreshCw, Settings, ShieldCheck, Sun, Upload, Users, X } from "lucide-react";
|
import { Calendar, ChevronsUpDown, FolderOpen, Globe, HelpCircle, LogOut, Mail, Menu as MenuIcon, Moon, PenSquare, Plus, RefreshCw, Settings, ShieldCheck, Sun, Upload, Users, X } from "lucide-react";
|
||||||
import { useSession } from "@/store/session";
|
import { useSession } from "@/store/session";
|
||||||
import { withBase } from "@/lib/basePath";
|
import { withBase } from "@/lib/basePath";
|
||||||
import { DEFAULT_APP_NAME } from "@/lib/brand";
|
import { DEFAULT_APP_NAME } from "@/lib/brand";
|
||||||
@@ -187,11 +187,12 @@ export function AppShell({ children }: { children: ReactNode }) {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<MenuSep />
|
<MenuSep />
|
||||||
<MenuItem icon={<BookOpen size={16} />} label={t("Documentation")} href="https://docs.ihasmail.org" external />
|
|
||||||
{/* The project site. It is linked from the login screen footer, which
|
{/* The project site. It is linked from the login screen footer, which
|
||||||
is a page a signed-in user never sees again -- so from inside the
|
is a page a signed-in user never sees again -- so from inside the
|
||||||
app there was no way back to it. */}
|
app there was no way back to it.
|
||||||
<MenuItem icon={<Globe size={16} />} label={t("About ihasmail")} href="https://ihasmail.org" external />
|
ihasmail-inbuxa: INBUXA's site, and no Documentation entry until
|
||||||
|
INBUXA has documentation of its own to point at. */}
|
||||||
|
<MenuItem icon={<Globe size={16} />} label={t("About INBUXA")} href="https://inbuxa.org" external />
|
||||||
<MenuItem icon={<Settings size={16} />} label={t("Settings")} onClick={() => navigate("/settings")} />
|
<MenuItem icon={<Settings size={16} />} label={t("Settings")} onClick={() => navigate("/settings")} />
|
||||||
{/* Only for an account whose Stalwart role manages other accounts.
|
{/* Only for an account whose Stalwart role manages other accounts.
|
||||||
Nobody else is shown an entry that would open onto refusals. */}
|
Nobody else is shown an entry that would open onto refusals. */}
|
||||||
|
|||||||
@@ -151,9 +151,10 @@ export function LoginPage() {
|
|||||||
One <p> with a break rather than two: .foot carries a 20px
|
One <p> with a break rather than two: .foot carries a 20px
|
||||||
margin-top, which a second paragraph would repeat as a gap.
|
margin-top, which a second paragraph would repeat as a gap.
|
||||||
*/}
|
*/}
|
||||||
<span className="notranslate" translate="no">ihasmail v{APP_VERSION}</span>
|
{/* ihasmail-inbuxa: this build is INBUXA's webmail, and its site is INBUXA's. */}
|
||||||
|
<span className="notranslate" translate="no">INBUXA webmail v{APP_VERSION}</span>
|
||||||
<br />
|
<br />
|
||||||
<a href="https://ihasmail.org" target="_blank" rel="noopener noreferrer">{t("ihasmail.org")}</a>
|
<a href="https://inbuxa.org" target="_blank" rel="noopener noreferrer" className="notranslate" translate="no">inbuxa.org</a>
|
||||||
{" · "}
|
{" · "}
|
||||||
<a href={withBase(SOURCE_ARCHIVE)} target="_blank" rel="noopener noreferrer">{t("AGPL-3.0 source")}</a>
|
<a href={withBase(SOURCE_ARCHIVE)} target="_blank" rel="noopener noreferrer">{t("AGPL-3.0 source")}</a>
|
||||||
{" "}
|
{" "}
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ export function AboutSettings() {
|
|||||||
// The exact source of this build, written next to the app by the build.
|
// The exact source of this build, written next to the app by the build.
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
{/* ihasmail-inbuxa: INBUXA's webmail, built on ihasmail, whose version
|
{/* ihasmail-inbuxa: INBUXA's webmail, built on ihasmail. The version and
|
||||||
and source stay here as its credit and the AGPL's offer. */}
|
source are this build's, the AGPL's offer; ihasmail keeps its credit. */}
|
||||||
<h1>{t("About INBUXA webmail")}</h1>
|
<h1>{t("About INBUXA webmail")}</h1>
|
||||||
<p className="lead">{tNode("A fast, friendly, open-source webmail for {server}, built on JMAP.", { server: <span className="notranslate" translate="no">INBUXA</span> })}</p>
|
<p className="lead">{tNode("A fast, friendly, open-source webmail for {server}, built on JMAP.", { server: <span className="notranslate" translate="no">INBUXA</span> })}</p>
|
||||||
<div className="row" style={{ gap: 16, alignItems: "center", marginBottom: 16 }}>
|
<div className="row" style={{ gap: 16, alignItems: "center", marginBottom: 16 }}>
|
||||||
@@ -20,7 +20,8 @@ export function AboutSettings() {
|
|||||||
<div>
|
<div>
|
||||||
<InbuxaWordmark height={26} />
|
<InbuxaWordmark height={26} />
|
||||||
{/* A product name and a version string: neither is a word to translate. */}
|
{/* A product name and a version string: neither is a word to translate. */}
|
||||||
<div style={{ fontWeight: 700 }} className="notranslate" translate="no">ihasmail v{APP_VERSION}</div>
|
<div style={{ fontWeight: 700 }} className="notranslate" translate="no">INBUXA webmail v{APP_VERSION}</div>
|
||||||
|
<div className="hint">{tNode("Built on {ihasmail}", { ihasmail: <a href="https://ihasmail.org" target="_blank" rel="noopener noreferrer" className="notranslate" translate="no">ihasmail</a> })}</div>
|
||||||
<div className="hint">{tNode("AGPL-3.0-or-later · {source}", { source: <a href={withBase(SOURCE_ARCHIVE)} target="_blank" rel="noopener noreferrer" className="notranslate" translate="no">source.tar.gz ({SOURCE_ID})</a> })}</div>
|
<div className="hint">{tNode("AGPL-3.0-or-later · {source}", { source: <a href={withBase(SOURCE_ARCHIVE)} target="_blank" rel="noopener noreferrer" className="notranslate" translate="no">source.tar.gz ({SOURCE_ID})</a> })}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user