From dfbfc3825851c89002761c241c561a13a728ea8b Mon Sep 17 00:00:00 2001 From: John Coffey Date: Fri, 25 Sep 2026 21:18:13 -0700 Subject: [PATCH] About: present inbuxa as the suite, not only the webmail The lead now says what inbuxa is: a mail server, its administration console and this webmail, installed together under the AGPL, with the name set apart in the brand teal. A new "The suite" table lists the mail server, the console (linked, for sessions that may administer), this webmail's version and inbuxa.org. 4 new strings in all 9 catalogues; the old webmail-only lead is dropped from them, since nothing looks it up any more. --- web/src/locales/de.ts | 6 +++++- web/src/locales/es.ts | 6 +++++- web/src/locales/fr.ts | 6 +++++- web/src/locales/ja.ts | 6 +++++- web/src/locales/nl.ts | 6 +++++- web/src/locales/pt-BR.ts | 6 +++++- web/src/locales/ru.ts | 6 +++++- web/src/locales/uk.ts | 6 +++++- web/src/locales/zh-Hans.ts | 6 +++++- web/src/styles/app.css | 2 ++ web/src/views/settings/AboutSettings.tsx | 18 ++++++++++++++++-- 11 files changed, 63 insertions(+), 11 deletions(-) diff --git a/web/src/locales/de.ts b/web/src/locales/de.ts index 27cc21a..b64fc11 100644 --- a/web/src/locales/de.ts +++ b/web/src/locales/de.ts @@ -1059,7 +1059,6 @@ export const catalog: Catalog = { "Select a conversation to read it here · Press {key} for shortcuts": "Wählen Sie eine Konversation, um sie hier zu lesen · {key} für Tastenkürzel", "Select a message to read it here · Press {key} for shortcuts": "Wählen Sie eine Nachricht, um sie hier zu lesen · {key} für Tastenkürzel", "Tip: press {key} on a conversation to apply labels. Search with {operator}.": "Tipp: Drücken Sie {key} auf einer Konversation, um Labels zu vergeben. Suchen Sie mit {operator}.", - "A fast, friendly, open-source webmail for {server}, built on JMAP.": "Eine schnelle, freundliche Open-Source-Webmail für {server}, auf JMAP aufgebaut.", "Defaults for the calendar views and new events.": "Vorgaben für die Kalenderansichten und neue Termine.", "Replies will go to this address instead of the From address": "Antworten gehen an diese Adresse statt an die Absenderadresse", "Replies to mail sent from this identity go here instead of the From address.": "Antworten auf Nachrichten von dieser Identität gehen hierhin statt an die Absenderadresse.", @@ -1740,6 +1739,11 @@ export const catalog: Catalog = { "To confirm, type {phrase}": "Zur Bestätigung {phrase} eingeben", "Turn off legacy protocols": "Ältere Mailprotokolle ausschalten", "Legacy mail protocols are off for your organization. Only {app} and JMAP apps can sign in.": "Ältere Mailprotokolle sind für Ihre Organisation ausgeschaltet. Nur {app} und JMAP-Apps können sich anmelden.", + // ── About: inbuxa, the suite ──────────────────────────────────── + "{inbuxa} is a complete mail suite: a mail server, the console that administers it, and this webmail, each its own program, installed together and free under the AGPL.": "{inbuxa} ist eine komplette Mail-Suite: ein Mailserver, die Konsole, mit der er verwaltet wird, und dieses Webmail – jedes ein eigenes Programm, gemeinsam installiert und frei unter der AGPL.", + "The suite": "Die Suite", + "Administration console": "Verwaltungskonsole", + "Webmail": "Webmail", // ── About: webmail and mail server nodes (inbuxa) ────────────── "Webmail node": "Webmail-Knoten", "Mail server node": "Mailserver-Knoten", diff --git a/web/src/locales/es.ts b/web/src/locales/es.ts index 531ac1f..7abc76f 100644 --- a/web/src/locales/es.ts +++ b/web/src/locales/es.ts @@ -1121,7 +1121,6 @@ export const catalog: Catalog = { "Select a conversation to read it here · Press {key} for shortcuts": "Seleccione una conversación para leerla aquí · {key} para los atajos", "Select a message to read it here · Press {key} for shortcuts": "Seleccione un mensaje para leerlo aquí · {key} para los atajos", "Tip: press {key} on a conversation to apply labels. Search with {operator}.": "Consejo: pulse {key} sobre una conversación para aplicar etiquetas. Busque con {operator}.", - "A fast, friendly, open-source webmail for {server}, built on JMAP.": "Un webmail libre, rápido y agradable para {server}, construido sobre JMAP.", "Defaults for the calendar views and new events.": "Valores predeterminados de las vistas del calendario y de los eventos nuevos.", "Replies will go to this address instead of the From address": "Las respuestas irán a esta dirección en lugar de a la del remitente", "Replies to mail sent from this identity go here instead of the From address.": "Las respuestas al correo enviado desde esta identidad llegan aquí en lugar de a la dirección del remitente.", @@ -1713,6 +1712,11 @@ export const catalog: Catalog = { "To confirm, type {phrase}": "Para confirmar, escriba {phrase}", "Turn off legacy protocols": "Desactivar los protocolos de correo heredados", "Legacy mail protocols are off for your organization. Only {app} and JMAP apps can sign in.": "Los protocolos de correo heredados están desactivados para su organización. Solo {app} y las aplicaciones JMAP pueden iniciar sesión.", + // ── About: inbuxa, the suite ──────────────────────────────────── + "{inbuxa} is a complete mail suite: a mail server, the console that administers it, and this webmail, each its own program, installed together and free under the AGPL.": "{inbuxa} es una suite de correo completa: un servidor de correo, la consola que lo administra y este webmail, cada uno un programa propio, instalados juntos y libres bajo la AGPL.", + "The suite": "La suite", + "Administration console": "Consola de administración", + "Webmail": "Webmail", // ── About: webmail and mail server nodes (inbuxa) ────────────── "Webmail node": "Nodo del webmail", "Mail server node": "Nodo del servidor de correo", diff --git a/web/src/locales/fr.ts b/web/src/locales/fr.ts index 5985751..bbdae6e 100644 --- a/web/src/locales/fr.ts +++ b/web/src/locales/fr.ts @@ -1126,7 +1126,6 @@ export const catalog: Catalog = { "Select a conversation to read it here · Press {key} for shortcuts": "Sélectionnez une conversation pour la lire ici · {key} pour les raccourcis", "Select a message to read it here · Press {key} for shortcuts": "Sélectionnez un message pour le lire ici · {key} pour les raccourcis", "Tip: press {key} on a conversation to apply labels. Search with {operator}.": "Astuce : appuyez sur {key} sur une conversation pour appliquer des libellés. Recherchez avec {operator}.", - "A fast, friendly, open-source webmail for {server}, built on JMAP.": "Un webmail libre, rapide et agréable pour {server}, bâti sur JMAP.", "Defaults for the calendar views and new events.": "Valeurs par défaut des vues d'agenda et des nouveaux événements.", "Replies will go to this address instead of the From address": "Les réponses iront à cette adresse plutôt qu'à l'adresse d'expédition", "Replies to mail sent from this identity go here instead of the From address.": "Les réponses aux messages envoyés depuis cette identité arrivent ici plutôt qu'à l'adresse d'expédition.", @@ -1718,6 +1717,11 @@ export const catalog: Catalog = { "To confirm, type {phrase}": "Pour confirmer, saisissez {phrase}", "Turn off legacy protocols": "Désactiver les protocoles de messagerie historiques", "Legacy mail protocols are off for your organization. Only {app} and JMAP apps can sign in.": "Les protocoles de messagerie historiques sont désactivés pour votre organisation. Seuls {app} et les applications JMAP peuvent se connecter.", + // ── About: inbuxa, the suite ──────────────────────────────────── + "{inbuxa} is a complete mail suite: a mail server, the console that administers it, and this webmail, each its own program, installed together and free under the AGPL.": "{inbuxa} est une suite de messagerie complète : un serveur de messagerie, la console qui l’administre et ce webmail, chacun étant un programme à part entière, installés ensemble et libres sous licence AGPL.", + "The suite": "La suite", + "Administration console": "Console d’administration", + "Webmail": "Webmail", // ── About: webmail and mail server nodes (inbuxa) ────────────── "Webmail node": "Nœud du webmail", "Mail server node": "Nœud du serveur de messagerie", diff --git a/web/src/locales/ja.ts b/web/src/locales/ja.ts index eb400b9..ae56c26 100644 --- a/web/src/locales/ja.ts +++ b/web/src/locales/ja.ts @@ -1046,7 +1046,6 @@ export const catalog: Catalog = { "Select a conversation to read it here · Press {key} for shortcuts": "スレッドを選ぶとここに表示されます · {key} でショートカット一覧", "Select a message to read it here · Press {key} for shortcuts": "メールを選ぶとここに表示されます · {key} でショートカット一覧", "Tip: press {key} on a conversation to apply labels. Search with {operator}.": "ヒント: スレッド上で {key} を押すとラベルを付けられます。検索には {operator} が使えます。", - "A fast, friendly, open-source webmail for {server}, built on JMAP.": "{server} のための、軽快で使いやすいオープンソースのウェブメール。JMAP で動作します。", // ── Filters, vacation, capability notices ────────────────────────── "Thanks for your message. I'm away until … and will reply when I'm back.": "メールをありがとうございます。……まで不在にしており、戻り次第ご返信いたします。", @@ -1721,6 +1720,11 @@ export const catalog: Catalog = { "To confirm, type {phrase}": "確認のため {phrase} と入力してください", "Turn off legacy protocols": "従来のメールプロトコルをオフにする", "Legacy mail protocols are off for your organization. Only {app} and JMAP apps can sign in.": "組織では従来のメールプロトコルがオフになっています。サインインできるのは {app} と JMAP アプリのみです。", + // ── About: inbuxa, the suite ──────────────────────────────────── + "{inbuxa} is a complete mail suite: a mail server, the console that administers it, and this webmail, each its own program, installed together and free under the AGPL.": "{inbuxa} は完全なメールスイートです。メールサーバー、それを管理するコンソール、そしてこのWebメール。それぞれ独立したプログラムで、まとめてインストールでき、AGPLのもとで自由に使えます。", + "The suite": "スイート", + "Administration console": "管理コンソール", + "Webmail": "Webメール", // ── About: webmail and mail server nodes (inbuxa) ────────────── "Webmail node": "Webメールのノード", "Mail server node": "メールサーバーのノード", diff --git a/web/src/locales/nl.ts b/web/src/locales/nl.ts index 9e2c028..5cb82f5 100644 --- a/web/src/locales/nl.ts +++ b/web/src/locales/nl.ts @@ -1118,7 +1118,6 @@ export const catalog: Catalog = { "Select a conversation to read it here · Press {key} for shortcuts": "Selecteer een gesprek om het hier te lezen · {key} voor sneltoetsen", "Select a message to read it here · Press {key} for shortcuts": "Selecteer een bericht om het hier te lezen · {key} voor sneltoetsen", "Tip: press {key} on a conversation to apply labels. Search with {operator}.": "Tip: druk op {key} bij een gesprek om labels toe te wijzen. Zoek met {operator}.", - "A fast, friendly, open-source webmail for {server}, built on JMAP.": "Een snelle, prettige, opensource webmail voor {server}, gebouwd op JMAP.", "Defaults for the calendar views and new events.": "Standaardwaarden voor de agendaweergaven en nieuwe afspraken.", "Replies will go to this address instead of the From address": "Antwoorden gaan naar dit adres in plaats van naar het afzenderadres", "Replies to mail sent from this identity go here instead of the From address.": "Antwoorden op post die vanaf deze identiteit is verzonden, komen hier aan in plaats van bij het afzenderadres.", @@ -1710,6 +1709,11 @@ export const catalog: Catalog = { "To confirm, type {phrase}": "Typ ter bevestiging {phrase}", "Turn off legacy protocols": "Verouderde mailprotocollen uitschakelen", "Legacy mail protocols are off for your organization. Only {app} and JMAP apps can sign in.": "Verouderde mailprotocollen zijn uitgeschakeld voor uw organisatie. Alleen {app} en JMAP-apps kunnen inloggen.", + // ── About: inbuxa, the suite ──────────────────────────────────── + "{inbuxa} is a complete mail suite: a mail server, the console that administers it, and this webmail, each its own program, installed together and free under the AGPL.": "{inbuxa} is een complete mailsuite: een mailserver, de console waarmee je hem beheert en deze webmail, elk een eigen programma, samen geïnstalleerd en vrij onder de AGPL.", + "The suite": "De suite", + "Administration console": "Beheerconsole", + "Webmail": "Webmail", // ── About: webmail and mail server nodes (inbuxa) ────────────── "Webmail node": "Webmailnode", "Mail server node": "Mailservernode", diff --git a/web/src/locales/pt-BR.ts b/web/src/locales/pt-BR.ts index c851fc6..dbd6ee9 100644 --- a/web/src/locales/pt-BR.ts +++ b/web/src/locales/pt-BR.ts @@ -1124,7 +1124,6 @@ export const catalog: Catalog = { "Select a conversation to read it here · Press {key} for shortcuts": "Selecione uma conversa para lê-la aqui · {key} para os atalhos", "Select a message to read it here · Press {key} for shortcuts": "Selecione uma mensagem para lê-la aqui · {key} para os atalhos", "Tip: press {key} on a conversation to apply labels. Search with {operator}.": "Dica: pressione {key} em uma conversa para aplicar marcadores. Pesquise com {operator}.", - "A fast, friendly, open-source webmail for {server}, built on JMAP.": "Um webmail livre, rápido e agradável para {server}, feito sobre JMAP.", "Defaults for the calendar views and new events.": "Padrões das visualizações da agenda e dos eventos novos.", "Replies will go to this address instead of the From address": "As respostas irão para este endereço em vez do endereço do remetente", "Replies to mail sent from this identity go here instead of the From address.": "As respostas às mensagens enviadas por esta identidade chegam aqui em vez do endereço do remetente.", @@ -1716,6 +1715,11 @@ export const catalog: Catalog = { "To confirm, type {phrase}": "Para confirmar, digite {phrase}", "Turn off legacy protocols": "Desativar os protocolos de e-mail legados", "Legacy mail protocols are off for your organization. Only {app} and JMAP apps can sign in.": "Os protocolos de e-mail legados estão desativados para sua organização. Só {app} e aplicativos JMAP podem entrar.", + // ── About: inbuxa, the suite ──────────────────────────────────── + "{inbuxa} is a complete mail suite: a mail server, the console that administers it, and this webmail, each its own program, installed together and free under the AGPL.": "{inbuxa} é uma suíte de e-mail completa: um servidor de e-mail, o console que o administra e este webmail, cada um um programa próprio, instalados juntos e livres sob a AGPL.", + "The suite": "A suíte", + "Administration console": "Console de administração", + "Webmail": "Webmail", // ── About: webmail and mail server nodes (inbuxa) ────────────── "Webmail node": "Nó do webmail", "Mail server node": "Nó do servidor de e-mail", diff --git a/web/src/locales/ru.ts b/web/src/locales/ru.ts index 623d52c..ea744ca 100644 --- a/web/src/locales/ru.ts +++ b/web/src/locales/ru.ts @@ -1123,7 +1123,6 @@ export const catalog: Catalog = { "Select a conversation to read it here · Press {key} for shortcuts": "Выберите цепочку, чтобы прочитать её здесь · {key} — сочетания клавиш", "Select a message to read it here · Press {key} for shortcuts": "Выберите письмо, чтобы прочитать его здесь · {key} — сочетания клавиш", "Tip: press {key} on a conversation to apply labels. Search with {operator}.": "Совет: нажмите {key} на цепочке, чтобы присвоить ярлыки. Ищите через {operator}.", - "A fast, friendly, open-source webmail for {server}, built on JMAP.": "Быстрая и удобная веб-почта с открытым кодом для {server}, построенная на JMAP.", "Defaults for the calendar views and new events.": "Значения по умолчанию для видов календаря и новых событий.", "Replies will go to this address instead of the From address": "Ответы будут приходить на этот адрес, а не на адрес отправителя", "Replies to mail sent from this identity go here instead of the From address.": "Ответы на письма из этого профиля приходят сюда, а не на адрес отправителя.", @@ -1715,6 +1714,11 @@ export const catalog: Catalog = { "To confirm, type {phrase}": "Для подтверждения введите {phrase}", "Turn off legacy protocols": "Отключить устаревшие почтовые протоколы", "Legacy mail protocols are off for your organization. Only {app} and JMAP apps can sign in.": "Устаревшие почтовые протоколы отключены для вашей организации. Входить могут только {app} и приложения JMAP.", + // ── About: inbuxa, the suite ──────────────────────────────────── + "{inbuxa} is a complete mail suite: a mail server, the console that administers it, and this webmail, each its own program, installed together and free under the AGPL.": "{inbuxa} — полноценный почтовый пакет: почтовый сервер, консоль для его администрирования и эта веб-почта. Каждый компонент — отдельная программа; устанавливаются они вместе и свободно распространяются по лицензии AGPL.", + "The suite": "Пакет", + "Administration console": "Консоль администрирования", + "Webmail": "Веб-почта", // ── About: webmail and mail server nodes (inbuxa) ────────────── "Webmail node": "Узел веб-почты", "Mail server node": "Узел почтового сервера", diff --git a/web/src/locales/uk.ts b/web/src/locales/uk.ts index a4347b6..f1fae58 100644 --- a/web/src/locales/uk.ts +++ b/web/src/locales/uk.ts @@ -1117,7 +1117,6 @@ export const catalog: Catalog = { "Select a conversation to read it here · Press {key} for shortcuts": "Виберіть листування, щоб прочитати його тут · {key} — сполучення клавіш", "Select a message to read it here · Press {key} for shortcuts": "Виберіть лист, щоб прочитати його тут · {key} — сполучення клавіш", "Tip: press {key} on a conversation to apply labels. Search with {operator}.": "Порада: натисніть {key} на листуванні, щоб додати мітки. Шукайте через {operator}.", - "A fast, friendly, open-source webmail for {server}, built on JMAP.": "Швидка та зручна вебпошта з відкритим кодом для {server}, побудована на JMAP.", "Defaults for the calendar views and new events.": "Значення за замовчуванням для виглядів календаря та нових подій.", "Replies will go to this address instead of the From address": "Відповіді надходитимуть на цю адресу, а не на адресу відправника", "Replies to mail sent from this identity go here instead of the From address.": "Відповіді на листи з цього профілю надходять сюди, а не на адресу відправника.", @@ -1709,6 +1708,11 @@ export const catalog: Catalog = { "To confirm, type {phrase}": "Для підтвердження введіть {phrase}", "Turn off legacy protocols": "Вимкнути застарілі поштові протоколи", "Legacy mail protocols are off for your organization. Only {app} and JMAP apps can sign in.": "Застарілі поштові протоколи вимкнено для вашої організації. Входити можуть лише {app} і програми JMAP.", + // ── About: inbuxa, the suite ──────────────────────────────────── + "{inbuxa} is a complete mail suite: a mail server, the console that administers it, and this webmail, each its own program, installed together and free under the AGPL.": "{inbuxa} — повноцінний поштовий пакет: поштовий сервер, консоль для його адміністрування і ця вебпошта. Кожен компонент — окрема програма; встановлюються вони разом і вільно поширюються за ліцензією AGPL.", + "The suite": "Пакет", + "Administration console": "Консоль адміністрування", + "Webmail": "Вебпошта", // ── About: webmail and mail server nodes (inbuxa) ────────────── "Webmail node": "Вузол вебпошти", "Mail server node": "Вузол поштового сервера", diff --git a/web/src/locales/zh-Hans.ts b/web/src/locales/zh-Hans.ts index db593c7..29b8c3d 100644 --- a/web/src/locales/zh-Hans.ts +++ b/web/src/locales/zh-Hans.ts @@ -1045,7 +1045,6 @@ export const catalog: Catalog = { "Select a conversation to read it here · Press {key} for shortcuts": "选择一个会话即可在此阅读 · 按 {key} 查看快捷键", "Select a message to read it here · Press {key} for shortcuts": "选择一封邮件即可在此阅读 · 按 {key} 查看快捷键", "Tip: press {key} on a conversation to apply labels. Search with {operator}.": "提示:在会话上按 {key} 可添加标签。使用 {operator} 搜索。", - "A fast, friendly, open-source webmail for {server}, built on JMAP.": "一款面向 {server} 的快速、友好的开源网页邮箱,基于 JMAP 构建。", // ── Filters, vacation, capability notices ────────────────────────── "Thanks for your message. I'm away until … and will reply when I'm back.": "感谢您的来信。我将外出至……,回来后会尽快回复。", @@ -1720,6 +1719,11 @@ export const catalog: Catalog = { "To confirm, type {phrase}": "请输入 {phrase} 以确认", "Turn off legacy protocols": "关闭传统邮件协议", "Legacy mail protocols are off for your organization. Only {app} and JMAP apps can sign in.": "您的组织已关闭传统邮件协议。只有 {app} 和 JMAP 应用可以登录。", + // ── About: inbuxa, the suite ──────────────────────────────────── + "{inbuxa} is a complete mail suite: a mail server, the console that administers it, and this webmail, each its own program, installed together and free under the AGPL.": "{inbuxa} 是一套完整的邮件套件:邮件服务器、管理它的控制台,以及这个网页邮箱。三者各自是独立的程序,一起安装,并以 AGPL 许可证自由使用。", + "The suite": "套件", + "Administration console": "管理控制台", + "Webmail": "网页邮箱", // ── About: webmail and mail server nodes (inbuxa) ────────────── "Webmail node": "网页邮箱节点", "Mail server node": "邮件服务器节点", diff --git a/web/src/styles/app.css b/web/src/styles/app.css index b6af138..06aefb2 100644 --- a/web/src/styles/app.css +++ b/web/src/styles/app.css @@ -1682,6 +1682,8 @@ select optgroup { background-color: var(--bg-elev); color: var(--fg); } .shortcut-grid h3 { margin: 0 0 6px; font-size: .9em; text-transform: uppercase; letter-spacing: .05em; color: var(--fg-faint); } .shortcut-row { display: flex; justify-content: space-between; align-items: center; padding: 4px 0; gap: 12px; } .shortcut-row .keys { display: flex; gap: 4px; } +/* ihasmail-inbuxa: the product name in a sentence, set apart in the brand teal. */ +.brand-inbuxa { color: #14b8a6; font-weight: 700; } .sessions-table { width: 100%; border-collapse: collapse; font-size: .92em; } .sessions-table th, .sessions-table td { text-align: left; padding: 8px 10px; border-bottom: 1px solid var(--border); } .sessions-table th { color: var(--fg-muted); font-weight: 600; font-size: .85em; } diff --git a/web/src/views/settings/AboutSettings.tsx b/web/src/views/settings/AboutSettings.tsx index 1ae9500..745b108 100644 --- a/web/src/views/settings/AboutSettings.tsx +++ b/web/src/views/settings/AboutSettings.tsx @@ -32,6 +32,8 @@ export function AboutSettings() { const nodeCell = (v: (n: Nodes) => string) => nodes === null ? t("Loading…") : nodes === "error" ? t("unavailable") : {v(nodes)}; const caps = Object.keys(session?.capabilities ?? {}); + // Only a session that may administer is told where the console is. + const adminUrl = session?.ihasmail?.server?.adminUrl ?? null; // A deployment running modified code should offer its own source, not ours. const sourceUrl = session?.ihasmail?.sourceUrl ?? DEFAULT_SOURCE_URL; return ( @@ -41,7 +43,9 @@ export function AboutSettings() { 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} })}

+ {/* inbuxa is the suite, not only this webmail: the product name here is + inbuxa's own, not APP_NAME. */} +

{tNode("{inbuxa} is a complete mail suite: a mail server, the console that administers it, and this webmail, each its own program, installed together and free under the AGPL.", { inbuxa: inbuxa })}

@@ -52,11 +56,21 @@ export function AboutSettings() {
{tNode("AGPL-3.0-or-later · {source}", { source: {sourceUrl.replace(/^https?:\/\//, "")} })}
+

{t("The suite")}

+ + + + {adminUrl && ( + + )} + + + +
{t("Mail server")}inbuxa
{t("Administration console")}{adminUrl.replace(/^https?:\/\//, "").replace(/\/$/, "")}
{t("Webmail")}v{APP_VERSION}
{t("Website")}inbuxa.org

{t("Server")}

- -- 2.54.0
{t("Signed in as")}{session?.username}
{t("Mail server")}inbuxa
{t("Webmail node")}{nodeCell((n) => n.webmail)}
{t("Mail server node")}{nodeCell((n) => mailNodeLabel(n.mailServer))}
{t("Accounts")}{Object.values(session?.accounts ?? {}).map((a) => a.name).join(", ")}