aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-common/src/meshbay_common
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-10-09 12:16:51 +0200
committerChristophe Besson <cbesson@gmail.com>2026-10-09 12:17:38 +0200
commit4ae61dc4e1dcca6ae24131fcd9acc55124e3c0af (patch)
tree44fd15f6175ade9b0b884f846dfd9d66e2b3bc80 /packages/meshbay-common/src/meshbay_common
parent6832df6177ad973ad0e1b4f0a49d7a6da06c6e04 (diff)
downloadmeshbay-4ae61dc4e1dcca6ae24131fcd9acc55124e3c0af.tar.gz
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 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-common/src/meshbay_common')
-rw-r--r--packages/meshbay-common/src/meshbay_common/__init__.py6
-rw-r--r--packages/meshbay-common/src/meshbay_common/adminop.py4
-rw-r--r--packages/meshbay-common/src/meshbay_common/protocol.py4
3 files changed, 13 insertions, 1 deletions
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