summaryrefslogtreecommitdiffstats
path: root/packages/meshbay-common/src/meshbay_common/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-common/src/meshbay_common/__init__.py')
-rw-r--r--packages/meshbay-common/src/meshbay_common/__init__.py17
1 files changed, 14 insertions, 3 deletions
diff --git a/packages/meshbay-common/src/meshbay_common/__init__.py b/packages/meshbay-common/src/meshbay_common/__init__.py
index b3e24e3..ca4c6eb 100644
--- a/packages/meshbay-common/src/meshbay_common/__init__.py
+++ b/packages/meshbay-common/src/meshbay_common/__init__.py
@@ -90,8 +90,19 @@ __version__ = "0.11.0"
# makes the *next* breaking change cost a refusal message instead of a second
# flag day. `MNP_MIN_SUPPORTED` in `handshake.py` is the other half.
#
+# **2.0 (2026-09-07): chat is encrypted, and there is no way to turn it off.**
+# A MAJOR bump because it is a real break: a 1.x peer cannot produce a sealed
+# chat message and cannot read one, so it is refused at the handshake with
+# `version_too_old` rather than connecting and then failing to speak. Expressing
+# the break in the version is what makes it a stated refusal instead of a
+# conversation that silently does not work — `MNP_MIN_SUPPORTED` moves with it.
+#
+# There is deliberately no per-group switch. Every node in existence is a test
+# node, so an opt-in flag would buy nothing and cost a compatibility path to
+# maintain; existing node data is migrated by `QE/migrate-chat-encryption.py`.
+#
# The index at rest, `index_progress` (counters only, never a path — see
-# `groupbox.py` and daemon.py `_push_index_progress`), chat, and file content
-# on the operator's disk are all deliberately unchanged.
-MNP_VERSION = "1.1"
+# `groupbox.py` and daemon.py `_push_index_progress`), and file content on the
+# operator's disk are all deliberately unchanged.
+MNP_VERSION = "2.0"
MHP_VERSION = "0.1"