diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-08-11 14:55:52 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-08-11 14:55:52 +0200 |
| commit | cc90dc943fcd0e7bbf52674fb3f95ff097026f4a (patch) | |
| tree | 6315a5e966c027c50b92d59e60c4b506a418143e /packages/meshbay-hub/src/meshbay_hub/static/i18n.js | |
| parent | edde9e441fb6b84e9d56215d6e2a8d9338b8f962 (diff) | |
| download | meshbay-cc90dc943fcd0e7bbf52674fb3f95ff097026f4a.tar.gz | |
feat: Phase 10b — Self-service UI (group create/join, upload, IndexedDB, search)
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 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/i18n.js')
| -rw-r--r-- | packages/meshbay-hub/src/meshbay_hub/static/i18n.js | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/i18n.js b/packages/meshbay-hub/src/meshbay_hub/static/i18n.js index 11543fd..0ec7d4a 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/i18n.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/i18n.js @@ -63,11 +63,15 @@ const en = { 'explore.search': 'Search groups...', 'explore.loading': 'Loading...', 'explore.empty': 'No public groups available.', + 'explore.create_group': 'Create group', + 'explore.join': 'Join', + 'explore.member': 'Joined', // Group page 'group.default_name': 'Group', 'group.tab_files': 'Files', 'group.tab_chat': 'Chat', + 'group.tab_members': 'Members', 'group.filter': 'Filter files...', 'group.col_name': 'Name', 'group.col_size': 'Size', @@ -80,6 +84,8 @@ const en = { 'group.dl_failed': 'Download failed: {err}', 'group.offline_title': 'No nodes are currently online for this group.', 'group.offline_hint': 'Files will appear when a node hosting this group connects.', + 'group.upload': 'Upload', + 'group.uploading': 'Uploading...', 'group.err_transport': 'Transport module not loaded', // Status @@ -120,6 +126,7 @@ const en = { 'settings.notifications': 'Notifications', // Sidebar + 'sidebar.create_group': 'Create group', 'sidebar.settings': 'Settings', 'sidebar.admin': 'Admin', @@ -183,9 +190,43 @@ const en = { 'admin.btn_unblock': 'Unblock', // Notifications + // Create group + 'create_group.title': 'Create Group', + 'create_group.name': 'Group name', + 'create_group.visibility': 'Visibility', + 'create_group.private': 'Private', + 'create_group.public': 'Public', + 'create_group.join_policy': 'Join policy', + 'create_group.invite': 'Invite only', + 'create_group.open': 'Open (anyone can join)', + 'create_group.submit': 'Create', + 'create_group.creating': 'Creating...', + + // Members + 'members.col_role': 'Role', + 'members.admin': 'Admin', + 'members.member': 'Member', + 'members.invite_title': 'Invite member', + 'members.username_placeholder': 'Username', + 'members.invite_btn': 'Invite', + 'notif.title': 'Notifications', 'notif.empty': 'No notifications', 'notif.mark_all_read': 'Mark all read', + + // Sidebar + 'sidebar.search': 'Search files', + + // Status + 'status.cached': '{n} cached files', + + // Search + 'search.title': 'Search Files', + 'search.placeholder': 'Search across all groups...', + 'search.no_results': 'No files match your search.', + 'search.col_group': 'Group', + 'search.result_count': '{n} files found', + 'search.hint': 'Search file names across all cached group indexes.', }; // ── Locale registry ───────────────────────────────────────────────────────── |