summaryrefslogtreecommitdiffstats
path: root/packages/meshbay-hub/src/meshbay_hub/api/hub.py
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/api/hub.py')
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/api/hub.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/api/hub.py b/packages/meshbay-hub/src/meshbay_hub/api/hub.py
index 6e2db9e..4aef93d 100644
--- a/packages/meshbay-hub/src/meshbay_hub/api/hub.py
+++ b/packages/meshbay-hub/src/meshbay_hub/api/hub.py
@@ -26,6 +26,22 @@ async def hub_pubkey():
return {"pk_hub_pem": hub_public_key_pem().decode()}
+# What an installed client must be, to talk to this hub.
+#
+# Until a client ships, the SPA and the hub deploy together and are always in
+# sync: a /v1/ response shape changes and app.js is fixed in the same commit.
+# The moment the interface is installed rather than served, an old client meets
+# a new hub — for the first time in this project's life — and there is no way to
+# fix it from here.
+#
+# `minimum` refuses; `recommended` warns. Both are stated so a client can tell a
+# user "update to keep using this" before it becomes "this stopped working".
+# Raise `minimum` only for a change a client genuinely cannot survive, and
+# remember store review latency makes that expensive on Android.
+MIN_CLIENT_VERSION = "0.1.0"
+RECOMMENDED_CLIENT_VERSION = "0.1.0"
+
+
@router.get("/version")
async def hub_version():
"""Version check endpoint for clients to detect updates."""
@@ -33,4 +49,11 @@ async def hub_version():
"hub": __version__,
"mnp": MNP_VERSION,
"mhp": MHP_VERSION,
+ # A client compares its own version against these before doing anything
+ # else. The browser SPA always matches the hub by construction and can
+ # ignore them.
+ "client": {
+ "minimum": MIN_CLIENT_VERSION,
+ "recommended": RECOMMENDED_CLIENT_VERSION,
+ },
}