summaryrefslogtreecommitdiffstats
path: root/packages/meshbay-node/src/meshbay_node/transport
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-08-11 16:16:32 +0200
committerChristophe Besson <cbesson@gmail.com>2026-08-11 16:16:32 +0200
commitf74e2c0d527354072a5064d2dac8f73494ec8b49 (patch)
treed93d835b50f4513af30268f9d2c2570acd57e9bd /packages/meshbay-node/src/meshbay_node/transport
parentb50750466622dd6cda0fc084d39dfce000ad0081 (diff)
downloadmeshbay-f74e2c0d527354072a5064d2dac8f73494ec8b49.tar.gz
feat: chat notifications via hub, file delete, upload fix, cached display, inline thumbnails
Backend: - Chat store persists sender_name (SQLite migration, no more UUID display) - FILE_DELETE / FILE_DELETE_ACK MNP types — node admin can delete files - Node sends chat_notify to hub WS — hub creates notifications for offline members - Hub revocation.py handles chat_notify, creates per-member notifications Frontend: - Upload chunk size 64KB (was 1MB) — fixes WebRTC DataChannel max-message-size - Show cached files immediately while WebRTC connects - ChatImage component — inline image thumbnails in chat (download+decrypt) - File delete action in menu (group admin, with confirm dialog) - Member panel: "Owner" label instead of confusing "Group admin" - Create group page: hint about needing a node - Refresh index after chat attachment upload Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-node/src/meshbay_node/transport')
-rw-r--r--packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py b/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py
index 15c8f66..1d10aa8 100644
--- a/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py
+++ b/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py
@@ -298,6 +298,18 @@ class WebRTCPeerSession:
except Exception:
pass
+ hub_ws = self._ctx.get("hub_ws")
+ if hub_ws and self._group_id:
+ try:
+ import json as _json
+ asyncio.ensure_future(hub_ws.send(_json.dumps({
+ "type": "chat_notify",
+ "group_id": self._group_id,
+ "sender_name": sender_name,
+ })))
+ except Exception:
+ pass
+
self._send({"type": "ack", "v": MNP_VERSION})
def _do_chat_history(self, msg: dict) -> None: