From cc90dc943fcd0e7bbf52674fb3f95ff097026f4a Mon Sep 17 00:00:00 2001 From: Christophe Besson Date: Tue, 11 Aug 2026 14:55:52 +0200 Subject: feat: Phase 10b — Self-service UI (group create/join, upload, IndexedDB, search) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Six self-service features for the web SPA: - Group creation UI with GEK auto-generation (AES-256-GCM ECIES) - Member management + invite by username (GEK wrapping for invitee) - Open group self-join flow (POST /v1/groups/{id}/join) - File upload client→node (FILE_UPLOAD MNP type, .uploads/ staging) - IndexedDB caching of group file indexes (instant display on revisit) - Cross-group file search (SearchPage, pure client-side on cached indexes) 11 new tests (166 total): 8 group self-service + 3 AES GEK wrap/unwrap. Co-Authored-By: Claude Opus 4.6 --- packages/meshbay-hub/src/meshbay_hub/static/transport.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'packages/meshbay-hub/src/meshbay_hub/static/transport.js') diff --git a/packages/meshbay-hub/src/meshbay_hub/static/transport.js b/packages/meshbay-hub/src/meshbay_hub/static/transport.js index de93b2d..2f6680e 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/transport.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/transport.js @@ -175,6 +175,18 @@ class MeshBayTransport { return msg; } + async uploadChunk(filename, chunkIndex, totalChunks, data) { + const msg = await this._sendAndWait({ + type: 'file_upload', + v: '0.1', + filename, + chunk_index: chunkIndex, + total_chunks: totalChunks, + data: data, + }); + return msg; + } + close() { if (this._channel) this._channel.close(); if (this._pc) this._pc.close(); -- cgit v1.2.3