From 4ae61dc4e1dcca6ae24131fcd9acc55124e3c0af Mon Sep 17 00:00:00 2001 From: Christophe Besson Date: Fri, 9 Oct 2026 12:16:51 +0200 Subject: feat: let the operator purge a group's chat (MNP 6.1) Signed chat_purge from the Chat settings deletes every stored message; epoch keys and attachments stay. The ack is broadcast so open chat panels empty. Co-Authored-By: Claude Opus 5.5 --- packages/meshbay-common/src/meshbay_common/__init__.py | 6 +++++- packages/meshbay-common/src/meshbay_common/adminop.py | 4 ++++ packages/meshbay-common/src/meshbay_common/protocol.py | 4 ++++ 3 files changed, 13 insertions(+), 1 deletion(-) (limited to 'packages/meshbay-common') diff --git a/packages/meshbay-common/src/meshbay_common/__init__.py b/packages/meshbay-common/src/meshbay_common/__init__.py index dac5871..e8a9579 100644 --- a/packages/meshbay-common/src/meshbay_common/__init__.py +++ b/packages/meshbay-common/src/meshbay_common/__init__.py @@ -272,5 +272,9 @@ __version__ = "0.19.0" # `node_status`, `node_settings_set`, `roster_read`, `denylist_read`, # `denylist_clear`, `node_reload` — whose work the Node page and the CLI do over # loopback. -MNP_VERSION = "6.0" +# +# 6.1 (2026-10-08) adds the signed `chat_purge` / `chat_purge_ack`: the operator +# deletes a group's stored chat. Additive — a 6.0 node answers nothing, as for +# any unknown type, and nothing else changes. The floor stays at 4.0. +MNP_VERSION = "6.1" MHP_VERSION = "0.1" diff --git a/packages/meshbay-common/src/meshbay_common/adminop.py b/packages/meshbay-common/src/meshbay_common/adminop.py index bd7a439..f59b420 100644 --- a/packages/meshbay-common/src/meshbay_common/adminop.py +++ b/packages/meshbay-common/src/meshbay_common/adminop.py @@ -107,6 +107,10 @@ OP_SEARCH_LISTED = "search_listed" # There is no op for *enabling* chat encryption. It is not a setting — MNP 2.0 # has no plaintext chat to fall back to. OP_CHAT_EPOCH = "chat_epoch" +# Delete every stored message of a group's chat (MNP 6.1). The subject is the +# group id, like chat_epoch. Epoch keys and attachments stay: an attachment is a +# file in a shared folder, and removing it is the Files app's business. +OP_CHAT_PURGE = "chat_purge" OP_ROOT_EJECT = "root_eject" OP_ROOT_PLUG = "root_plug" # Also gone with 6.0, because no client ever sent them: `gek_rotate`, diff --git a/packages/meshbay-common/src/meshbay_common/protocol.py b/packages/meshbay-common/src/meshbay_common/protocol.py index c048b8d..5073b66 100644 --- a/packages/meshbay-common/src/meshbay_common/protocol.py +++ b/packages/meshbay-common/src/meshbay_common/protocol.py @@ -244,6 +244,10 @@ class MNP: # key without having to reconnect. CHAT_EPOCH = "chat_epoch" CHAT_EPOCH_ACK = "chat_epoch_ack" + # Operator → node: delete the group's stored chat. The ack is broadcast so + # every open chat panel empties without reloading (MNP 6.1). + CHAT_PURGE = "chat_purge" + CHAT_PURGE_ACK = "chat_purge_ack" ROOT_EJECT = "root_eject" # operator → node: mark removable root as ejected ROOT_EJECT_ACK = "root_eject_ack" ROOT_PLUG = "root_plug" # operator → node: re-enable an ejected root -- cgit v1.2.3