From 83abfea172d09d6e730859f3028f3cb6870136c5 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Tue, 10 Nov 2026 14:13:23 -0700 Subject: A community's admin taps a message and removes its author, with everything they said. "can i have some control as a chat group admin to click on a message and see an option to remove the user and all their messages from the group?" (Adam, 2026-11-10). The message sheet gains "Remove and their messages" for the owner on anyone else's message; a first tap asks ("for everyone? Tap again"), the second does it. It is the owner's ban list (CORD-04 vsk 4): one owner-signed edition naming every removed key, which the app, the public /chat page and other Concord clients already fold: those authors' messages, old and new, drop out and they leave the member list. The list is replaced whole, so setBanned asks the relays for the control stream first and builds on the newest edition (banlistHead/makeBanlist chain version and hash), stopping if the relays hand back nothing. The member list shows the admin who was removed, each with Restore. Offered only where the app holds the control stream's signing key (the built-in community and ones founded here). Removed people no longer light a room's unread dot. And the control fold now lets only the owner's editions compete for a head: any member holds the control stream's key in a public community, and a higher-versioned edition of their own used to shadow the owner's ban list, name or channels (dropped, leaving nothing). tools/chat-remove-member-test.js runs it against a relay inside the test Co-Authored-By: Claude Fable 5.2 --- src/locales/it.json | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/locales/it.json') diff --git a/src/locales/it.json b/src/locales/it.json index 30b05a8..112296f 100644 --- a/src/locales/it.json +++ b/src/locales/it.json @@ -490,6 +490,12 @@ "publicChatOpenApp": "Partecipa alla chat", "publicChatLoading": "Caricamento messaggi…", "msgDelete": "Elimina messaggio", + "msgBan": "Rimuovi {name} e i suoi messaggi", + "msgBanConfirm": "Rimuovere {name} per tutti? Tocca di nuovo", + "msgBanned": "{name} rimosso", + "msgUnbanned": "{name} ripristinato", + "msgBannedHead": "Rimossi da questa community", + "msgUnban": "Ripristina", "msgNoIdentity": "Il tuo signer nostr non è connesso. Riconnettilo per inviare a tuo nome", "msgSendFailed": "Nessun relay ha accettato il messaggio", "msgLockedChat": "Il tuo portafoglio è bloccato, quindi non può firmare i messaggi.", -- cgit v1.2.3