aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-hub/src/meshbay_hub/static/i18n.js
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-08-11 14:55:52 +0200
committerChristophe Besson <cbesson@gmail.com>2026-08-11 14:55:52 +0200
commitcc90dc943fcd0e7bbf52674fb3f95ff097026f4a (patch)
tree6315a5e966c027c50b92d59e60c4b506a418143e /packages/meshbay-hub/src/meshbay_hub/static/i18n.js
parentedde9e441fb6b84e9d56215d6e2a8d9338b8f962 (diff)
downloadmeshbay-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.js41
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 ─────────────────────────────────────────────────────────