diff --git a/docs/assets/img/anonymous-dark-1200.webp b/docs/assets/img/anonymous-dark-1200.webp
index e373df1..5e1ad1b 100644
Binary files a/docs/assets/img/anonymous-dark-1200.webp and b/docs/assets/img/anonymous-dark-1200.webp differ
diff --git a/docs/assets/img/anonymous-dark-2000.webp b/docs/assets/img/anonymous-dark-2000.webp
index dcd662b..7fa2f50 100644
Binary files a/docs/assets/img/anonymous-dark-2000.webp and b/docs/assets/img/anonymous-dark-2000.webp differ
diff --git a/docs/assets/img/anonymous-dark.png b/docs/assets/img/anonymous-dark.png
index 5b75727..57dbc0c 100644
Binary files a/docs/assets/img/anonymous-dark.png and b/docs/assets/img/anonymous-dark.png differ
diff --git a/docs/assets/img/anonymous-light-1200.webp b/docs/assets/img/anonymous-light-1200.webp
index 28c0972..7778f80 100644
Binary files a/docs/assets/img/anonymous-light-1200.webp and b/docs/assets/img/anonymous-light-1200.webp differ
diff --git a/docs/assets/img/anonymous-light-2000.webp b/docs/assets/img/anonymous-light-2000.webp
index 9c1dd06..2fed61c 100644
Binary files a/docs/assets/img/anonymous-light-2000.webp and b/docs/assets/img/anonymous-light-2000.webp differ
diff --git a/docs/assets/img/anonymous-light.png b/docs/assets/img/anonymous-light.png
index 6265441..68cea0a 100644
Binary files a/docs/assets/img/anonymous-light.png and b/docs/assets/img/anonymous-light.png differ
diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte
index fc111ec..7a88a7b 100644
--- a/frontend/src/App.svelte
+++ b/frontend/src/App.svelte
@@ -4,6 +4,21 @@
import { initEventListeners, destroyEventListeners } from './lib/events';
import { activeView, serverStatus } from './lib/stores';
import { anonymous, toggleAnonymous } from './lib/anonymize';
+ import AnonymousBanner from './components/AnonymousBanner.svelte';
+
+ // The mode can be switched from the sidebar button or from the settings
+ // panel, and the sidebar button sits directly above the settings one —
+ // which is how someone turns it on without meaning to. Saying so at the
+ // moment it changes is what turns a mystery back into a mode.
+ let lastAnonymous = $anonymous;
+ $: if ($anonymous !== lastAnonymous) {
+ lastAnonymous = $anonymous;
+ if ($anonymous) {
+ toastInfo($_('anonymous.active'));
+ } else {
+ toastSuccess($_('anonymous.off'));
+ }
+ }
import { theme, toggleTheme } from './lib/theme';
import ServerControls from './components/ServerControls.svelte';
import FilterBar from './components/FilterBar.svelte';
@@ -19,7 +34,7 @@
import CloseDialog from './components/CloseDialog.svelte';
import UnlockScreen from './components/UnlockScreen.svelte';
import { isEncryptionLocked, getUpdateConfig, isCAKeyUnencrypted } from './lib/api';
- import { toastError } from './lib/toast';
+ import { toastError, toastInfo, toastSuccess } from './lib/toast';
import { updateStore } from './lib/updateStore';
import UpdateBanner from './components/UpdateBanner.svelte';
@@ -205,6 +220,7 @@
+{/if}
+
+
diff --git a/frontend/src/lib/i18n/de.json b/frontend/src/lib/i18n/de.json
index df8b9f0..3b48e7d 100644
--- a/frontend/src/lib/i18n/de.json
+++ b/frontend/src/lib/i18n/de.json
@@ -377,6 +377,9 @@
},
"anonymous": {
"active": "Anonymer Modus ist aktiv",
+ "banner": "Hostnamen, Adressen, Benutzernamen und Domains auf dem Bildschirm sind Platzhalter, nicht die empfangenen Werte. Gespeicherte Daten bleiben unverändert.",
+ "showReal": "Echte Werte anzeigen",
+ "off": "Anonymer Modus ist aus",
"disable": "Anonymen Modus deaktivieren",
"enable": "Anonymen Modus aktivieren",
"hint": "Ersetzt Hostnamen, Adressen, Benutzernamen, Domains und E-Mail-Adressen durch feste Platzhalter, damit ein Screenshot geteilt werden kann. Nur die Anzeige — gespeicherte Daten und Exporte bleiben unverändert.",
diff --git a/frontend/src/lib/i18n/en.json b/frontend/src/lib/i18n/en.json
index d2fca86..0d2ecf5 100644
--- a/frontend/src/lib/i18n/en.json
+++ b/frontend/src/lib/i18n/en.json
@@ -377,6 +377,9 @@
},
"anonymous": {
"active": "Anonymous mode is on",
+ "banner": "Hostnames, addresses, user names and domains on screen are stand-ins, not the values received. Stored data is unchanged.",
+ "showReal": "Show real values",
+ "off": "Anonymous mode is off",
"disable": "Disable anonymous mode",
"enable": "Enable anonymous mode",
"hint": "Replaces hostnames, addresses, usernames, domains and e-mail addresses with stable stand-ins, so a screenshot can be shared. Display only — stored data and exports are unchanged.",
diff --git a/frontend/src/lib/i18n/es.json b/frontend/src/lib/i18n/es.json
index c629dfa..de27fd9 100644
--- a/frontend/src/lib/i18n/es.json
+++ b/frontend/src/lib/i18n/es.json
@@ -377,6 +377,9 @@
},
"anonymous": {
"active": "Modo anónimo activo",
+ "banner": "Los nombres de host, direcciones, cuentas y dominios en pantalla son sustitutos, no los valores recibidos. Los datos guardados no cambian.",
+ "showReal": "Mostrar los valores reales",
+ "off": "Modo anónimo desactivado",
"disable": "Desactivar modo anónimo",
"enable": "Activar modo anónimo",
"hint": "Sustituye nombres de host, direcciones, usuarios, dominios y correos por alias estables, para poder compartir una captura. Solo la visualización — los datos almacenados y las exportaciones no cambian.",
diff --git a/frontend/src/lib/i18n/fr.json b/frontend/src/lib/i18n/fr.json
index b233ec6..6f0750c 100644
--- a/frontend/src/lib/i18n/fr.json
+++ b/frontend/src/lib/i18n/fr.json
@@ -377,6 +377,9 @@
},
"anonymous": {
"active": "Mode anonyme actif",
+ "banner": "Les noms d’hôtes, adresses, comptes et domaines affichés sont des substituts, pas les valeurs reçues. Les données enregistrées sont inchangées.",
+ "showReal": "Afficher les vraies valeurs",
+ "off": "Mode anonyme désactivé",
"disable": "Désactiver le mode anonyme",
"enable": "Activer le mode anonyme",
"hint": "Remplace les noms d’hôte, adresses, identifiants, domaines et adresses e-mail par des substituts stables, pour pouvoir partager une capture d’écran. Affichage uniquement — les données stockées et les exports sont inchangés.",
diff --git a/frontend/src/lib/i18n/it.json b/frontend/src/lib/i18n/it.json
index 181509e..06c2bc3 100644
--- a/frontend/src/lib/i18n/it.json
+++ b/frontend/src/lib/i18n/it.json
@@ -377,6 +377,9 @@
},
"anonymous": {
"active": "Modalità anonima attiva",
+ "banner": "Nomi host, indirizzi, account e domini a schermo sono sostituti, non i valori ricevuti. I dati salvati restano invariati.",
+ "showReal": "Mostra i valori reali",
+ "off": "Modalità anonima disattivata",
"disable": "Disattiva modalità anonima",
"enable": "Attiva modalità anonima",
"hint": "Sostituisce nomi host, indirizzi, utenti, domini ed e-mail con segnaposto stabili, per poter condividere uno screenshot. Solo visualizzazione — i dati memorizzati e le esportazioni restano invariati.",
diff --git a/frontend/src/lib/i18n/ja.json b/frontend/src/lib/i18n/ja.json
index c46729e..85ac96b 100644
--- a/frontend/src/lib/i18n/ja.json
+++ b/frontend/src/lib/i18n/ja.json
@@ -377,6 +377,9 @@
},
"anonymous": {
"active": "匿名モードが有効です",
+ "banner": "画面上のホスト名、アドレス、アカウント、ドメインは代替値であり、受信した値ではありません。保存済みデータはそのままです。",
+ "showReal": "実際の値を表示",
+ "off": "匿名モードはオフです",
"disable": "匿名モードを無効にする",
"enable": "匿名モードを有効にする",
"hint": "ホスト名、アドレス、ユーザー名、ドメイン、メールアドレスを安定した代替値に置き換え、スクリーンショットを共有できるようにします。表示のみ — 保存されたデータとエクスポートは変更されません。",
diff --git a/frontend/src/lib/i18n/pt.json b/frontend/src/lib/i18n/pt.json
index ca0687d..5fda477 100644
--- a/frontend/src/lib/i18n/pt.json
+++ b/frontend/src/lib/i18n/pt.json
@@ -377,6 +377,9 @@
},
"anonymous": {
"active": "Modo anónimo ativo",
+ "banner": "Os nomes de anfitrião, endereços, contas e domínios apresentados são substitutos, não os valores recebidos. Os dados guardados não mudam.",
+ "showReal": "Mostrar os valores reais",
+ "off": "Modo anónimo desativado",
"disable": "Desativar modo anónimo",
"enable": "Ativar modo anónimo",
"hint": "Substitui nomes de host, endereços, utilizadores, domínios e e-mails por substitutos estáveis, para poder partilhar uma captura de ecrã. Apenas a apresentação — os dados guardados e as exportações não mudam.",
diff --git a/frontend/src/lib/i18n/zh.json b/frontend/src/lib/i18n/zh.json
index 2772519..1230847 100644
--- a/frontend/src/lib/i18n/zh.json
+++ b/frontend/src/lib/i18n/zh.json
@@ -377,6 +377,9 @@
},
"anonymous": {
"active": "匿名模式已开启",
+ "banner": "屏幕上的主机名、地址、账户和域名均为替代值,而非接收到的值。已存储的数据不变。",
+ "showReal": "显示真实值",
+ "off": "匿名模式已关闭",
"disable": "禁用匿名模式",
"enable": "启用匿名模式",
"hint": "将主机名、地址、用户名、域名和电子邮件替换为固定的替代值,以便分享截图。仅影响显示 — 已存储的数据和导出不会改变。",